Fundrise · OpenAPI Overlay 1.0.0
API Evangelist enhancements for the Fundrise Connect API
12 actions
12 updates
update
extends
openapi/fundrise-connect-openapi.yml
Generated by API Evangelist
Written by API Evangelist tooling for Fundrise's API. It is a proposal applied on top of the contract, not a document Fundrise publishes.
What the actions change
x-apievangelist-notex-apievangelist-subjectx-idempotentx-idempotency-fieldx-apievangelist-consequencex-apievangelist-preconditionsx-apievangelist-providerx-apievangelist-api
Targets 11
$.info
$.servers
$.components.schemas.FundriseConnectError
$.components.schemas.Identifier
$.components.securitySchemes.PartnerBasicAuthentication
$.components.securitySchemes.ClientBearerAuthentication
$.paths['/v1/client'].post
$.paths['/v1/account/{accountId}/investment'].post
$.paths['/v1/account/{accountId}/liquidation'].post
$.paths['/v1/account/{accountId}/holdings'].get
$.paths['/v1/account/{accountId}/transactions'].get
OpenAPI Overlay
overlay: 1.0.0
info:
title: API Evangelist enhancements for the Fundrise Connect API
version: 1.0.0
extends: openapi/fundrise-connect-openapi.yml
x-generated: '2026-08-04'
x-method: generated
x-source: >-
Derived from the Fundrise-published OpenAPI 3.1.0 plus the artifacts in this repository.
This overlay records API Evangelist's enhancements only — it never mutates the harvested
specification. Every value below is grounded in something Fundrise publishes.
actions:
- target: $.info
description: Attach API Evangelist provenance and cross-links to the artifacts derived from this spec.
update:
x-apievangelist-provider: fundrise
x-apievangelist-api: fundrise:fundrise-connect
x-apievangelist-source: https://connect.fundrise.com/
x-apievangelist-harvested: '2026-08-04'
x-apievangelist-harvest-note: >-
The specification is not served at a standalone URL. It is embedded as the
__redoc_state.spec.data object inside the Redocly documentation bundle at
https://connect.fundrise.com/ and was extracted verbatim from there.
x-apievangelist-artifacts:
authentication: authentication/fundrise-authentication.yml
scopes: scopes/fundrise-scopes.yml
conventions: conventions/fundrise-conventions.yml
errors: errors/fundrise-problem-types.yml
rate_limits: rate-limits/fundrise-rate-limits.yml
lifecycle: lifecycle/fundrise-lifecycle.yml
conformance: conformance/fundrise-conformance.yml
sandbox: sandbox/fundrise-sandbox.yml
data_model: data-model/fundrise-data-model.yml
agentic_access: agentic-access/fundrise-agentic-access.yml
skills: skills/_index.yml
arazzo: arazzo/fundrise-onboard-client-and-invest.yml
- target: $.servers
description: >-
Record the production host. The published spec declares only the sandbox server, so a
client generated from it defaults to test mode. The production host is not invented —
it is the token_endpoint published in Fundrise's own OIDC discovery document.
update:
x-apievangelist-production-host: https://api.fundrise.com
x-apievangelist-production-host-evidence: >-
token_endpoint of https://fundrise.com/.well-known/openid-configuration (HTTP 200,
fetched 2026-08-04)
x-apievangelist-note: >-
servers[] contains only the Sandbox entry. Adding the production server to the
published spec would remove a real integration hazard.
- target: $.info
description: Record the cross-cutting runtime semantics captured in conventions/, as machine-readable extensions.
update:
x-idempotency:
supported: true
mechanism: request-body-field
field: partnerReferenceId
header: null
operations:
- CreateClient
- PlaceInvestment
conflict_status: 409
x-request-tracing:
response_header: Request-Id
error_body_field: referenceId
x-versioning:
scheme: uri-path
current: v1
x-rate-limiting:
enforced: true
dimensions: [per-Client, per-HTTP-method]
published_limits: false
throttle_status_declared: false
x-pagination:
supported: false
- target: $.components.schemas.FundriseConnectError
description: Mark the vendor error envelope and note the deviation from RFC 9457.
update:
x-apievangelist-error-envelope: true
x-apievangelist-rfc9457: false
x-apievangelist-note: >-
Served as application/json rather than application/problem+json. referenceId is the
only required member and is the value to quote to connect@fundrise.com.
- target: $.components.schemas.Identifier
description: Note that all entity identifiers share one opaque string type.
update:
x-apievangelist-note: >-
Every entity id — clientId, offeringId, transactionId, documentId, acknowledgmentId —
resolves to this single opaque string schema. There is no typed prefix convention, so
identifiers are not self-describing and must be tracked with their entity type.
- target: $.components.securitySchemes.PartnerBasicAuthentication
description: Flag the credential-handling obligations Fundrise states in prose.
update:
x-apievangelist-subject: Partner
x-apievangelist-credential-handling: >-
Encrypted at rest, access restricted to calling services, never exposed to a Client
or Client device.
- target: $.components.securitySchemes.ClientBearerAuthentication
description: Record that this bearer token is OAuth-issued and how it is obtained.
update:
x-apievangelist-subject: Client
x-apievangelist-token-source: POST /v1/oauth/token (GetAccessToken)
x-apievangelist-grant: refresh_token
x-apievangelist-refresh-token-expiry: none
x-apievangelist-note: >-
Modelled as an http bearer scheme rather than an oauth2 scheme with declared flows,
so generated clients receive no flow metadata even though a real OAuth exchange
backs it.
- target: $.paths['/v1/client'].post
description: Mark the idempotent create and its duplicate signal.
update:
x-idempotent: true
x-idempotency-field: partnerReferenceId
x-duplicate-status: 409
x-apievangelist-note: >-
A 409 means the partnerReferenceId is already known to Fundrise and the Client
exists. Treat it as a successful no-op — do not retry with a new key.
- target: $.paths['/v1/account/{accountId}/investment'].post
description: Mark the highest-consequence operation in the API.
update:
x-idempotent: true
x-idempotency-field: partnerReferenceId
x-apievangelist-consequence: financial
x-apievangelist-preconditions:
- GetOfferings
- GetOfferingDocuments
- GetInvestmentAcknowledgments
x-apievangelist-note: >-
Moves real money into a private-market fund. The Client must first have been shown
and have digitally accepted the offering's documents and acknowledgments;
acknowledgedDocumentIds is a required field, so the disclosure step is a contract
precondition, not a courtesy. amount must fall between the offering's
minimumInvestmentAmount and maximumInvestmentAmount, enforced per Transaction.
- target: $.paths['/v1/account/{accountId}/liquidation'].post
description: Mark the liquidation operation as financially consequential.
update:
x-apievangelist-consequence: financial
x-apievangelist-preconditions:
- GetLiquidationAcknowledgments
- GetHoldings
x-apievangelist-note: >-
Sells shares back for dollars. allAcknowledgmentsAccepted is required. Check
HoldingResponse.liquidable before offering the action — not every holding can be
liquidated on demand.
- target: $.paths['/v1/account/{accountId}/holdings'].get
description: Note the freshness contract and the empty-portfolio response.
update:
x-apievangelist-freshness: daily
x-apievangelist-note: >-
Values update daily with appreciation and accruing dividends, so responses are not
real-time. A 204 is returned when the Client has no holdings yet — handle it as an
empty portfolio, not an error.
- target: $.paths['/v1/account/{accountId}/transactions'].get
description: Flag the unbounded collection.
update:
x-apievangelist-note: >-
Returns a bare array with no pagination parameters. This is the collection most
likely to grow without bound over an account's life, and there is no published way
to page or filter it by date.