openapi: 3.1.0 servers: - description: Sandbox url: https://sandbox.fundrise.com info: title: Fundrise Connect (External API) version: 1.0.0 contact: name: Fundrise Connect Support Team email: connect@fundrise.com description: "### Introduction\nFundrise is a Fintech company democratizing access to alternative assets through technology. This API represents a prototype of Fundrise Connect, which is our external\ \ API for providing Client onboarding and investment into our alternative assets. To get started, contact the support team via connect@fundrise.com\ \ or view our getting access documentation.

The API is organized around REST. Our API has predictable resource-oriented URLs, accepts form-encoded request\ \ bodies, returns JSON-encoded responses, and uses standard HTTP response codes, authentication, and verbs.

Throughout this document, the following terminology will be used:\n - Client:\ \ This refers to an End-User or customer that a Partner onboards onto Fundrise for investing in Fundrise assets.\n - Partner: This refers to a company working with Fundrise to provide\ \ their End-Users or customers access to Fundrise assets.\n\n### Errors\nFundrise uses conventional HTTP response codes to indicate the success or failure of an API request. In general:\n - Codes in\ \ the 2xx range indicate success. \n - Codes in the 4xx range indicate an error that failed given the information provided (e.g., a required parameter was omitted, a charge failed, etc.). \n - Codes\ \ in the 5xx range indicate an error with Fundrise's servers (these are rare).\n\nSome 4xx errors that could be handled programmatically (e.g., an address is invalid) include an error code that briefly\ \ explains the error reported. These errors that can be handled programmatically have error codes in the error response. Endpoints that have programmatically resolvable errors have those codes defined\ \ in their schema definitions.\n### Request IDs \nEach API request has an associated request identifier. You can find this value in the response headers, under `Request-Id`. This error will also be\ \ present in the error response body under the field `referenceId`. If you need to contact us about a specific request, providing the request identifier will ensure the fastest possible resolution.\n\ ### Idempotency \nFor some POST endpoints, we require a Partner idempotency key to ensure operations are not duplicated. For both Client creation and Investment placement, we require a `partnerReferenceId`\ \ to ensure that Investments and Clients are not duplicated in our system.\n### Versioning\nAPI endpoints are versioned with path versioning. Each endpoint contains a version path parameter e.g. (`/v1/...`).\ \ To release new functionality without impacting existing customers, we will version endpoints and increment version numbers accordingly.

When endpoints are staged to be deprecated, Partners\ \ will be given ample time to integrate with new versions according to our service agreement. Partners should expect to receive communications related to deprecation timelines. \n### Rate limiting\n\ We enforce rate limiting on our public API to avoid DoS (denial of service) issues. This rate limiting is enforced per Client and per HTTP method. If you are running into rate limiting issues, please\ \ contact the support team via connect@fundrise.com." x-logo: url: https://d10cq78zmnjvsx.cloudfront.net/interface/logo-hz-color.svg backgroundColor: '#FFFFFF' altText: Fundrise href: . tags: - name: Authentication description: "### Getting access \nTo get started, please contact the support team via connect@fundrise.com.\n### Terminology\n - Client:\ \ This refers to an End-User or customer that a Partner onboards onto Fundrise for investing in Fundrise assets.\n - Partner: This refers to a company working with Fundrise to provide\ \ their End-Users or customers access to Fundrise assets.\n\n### Access issues\nTo ensure a safe, secure platform, Fundrise imposes strict access controls to all APIs. As such, there may be services\ \ or capabilities documented that are inaccessible with current permissions. Contact the support team via connect@fundrise.com to gain\ \ permissions for additional endpoints or to receive customized support for specific issues or concerns.\n### Security Models\nFundrise's API supports two different HTTP security schemes:\n- PartnerBasicAuthentication\n\ - ClientBearerAuthentication\n\nThe appropriate security scheme per endpoint is identified in the documentation. \nPartnerBasicAuthentication and ClientBearerAuthentication use values that should be\ \ treated as sensitive data. Fundrise requires encrypted storage of these values with necessary controls to limit access. All information returned must be treated in full compliance to the end-user\ \ agreements.\n\n#### PartnerBasicAuthentication \nAccess an endpoint using Partner credentials in HTTP Header. \n\n PartnerBasicAuthentication is enforced by HTTP Basic Authentication. A Partner username\ \ and password will be provided by Fundrise support. \n The Partner password should be stored securely. At a minimum, it should be encrypted at-rest and access restricted to services making requests\ \ to the Fundrise API.\n The Partner password should not be exposed to a Client or any of their devices. If the password is compromised please contact Fundrise support.\n\n\n#### ClientBearerAuthentication\ \ \nAccess an endpoint using an OAuth access token associated with a specific Client. \n\n ClientBearerAuthentication is enforced by HTTP Bearer Authentication and requires an OAuth access token. \n\ \ Since access tokens are scoped to specific Clients, they identify and authenticate the Client in a request.\n\n\n Access tokens can be obtained in Get Access Token requests by using the refresh token flow.\n OAuth refresh token are issued on Client Creation and scoped specifically to that\ \ Client.\n The refresh tokens will not expire and should be stored securely after Client creation. At a minimum, refresh tokens should be encrypted at-rest and access restricted to services making\ \ requests to the Fundrise API.\n Refresh tokens should not be exposed to a Client or any of their devices." - name: Offerings description: "The Offerings API contains information about all Offerings available via Fundrise Connect and documents associated with those offerings. Each Offering has a status indicating whether or\ \ not they are available for investment. An `OPEN` status means the Offering is ready for investment, while the `CLOSED` status indicates it is unavailable. \nThe response also contains the investment\ \ minimums and maximums for the specific fund. Currently open funds have $10 minimums and $100,000 maximums. Both minimum and maximum are enforced per Transaction.\n\ The Offering ID is the foreign key referenced in the Place Investment operation to indicate which Offering the user is investing in." - name: Clients description: 'The Clients API provides operations for creating new Clients and updating fields for existing Clients. The Client represents an End-User of the platform. Newly created Clients will have exactly one account with a single `accountId`. This `accountId` is used in the Place Investment step of this flow. Currently multiple accounts are not supported in the system, but is on our long term roadmap to build.' - name: Acknowledgments description: The Acknowledgments API provides acknowledgments needed to place Investments and Liquidations. - name: Investments description: The Investment APIs provide operations for placing and cancelling Investments in various Offerings on behalf of an authenticated Client. - name: Liquidations description: The Liquidations APIs provide operations for a Client to place a Liquidation request. A Liquidation request results in selling shares in exchange for dollars. - name: Transactions description: The Transactions API provides operations for fetching Transactions (individual or bulk) on behalf of authenticated Clients. - name: Holdings description: The Holdings API contains up-to-date information about the status and performance of a Client's holdings in Fundrise. This endpoint may be used to fetch holding information after a Client's initial Transaction has been completed. The response from this endpoint will update daily with underlying changes in appreciation and accruing dividends. - name: Tax Forms description: The Tax Form API provides operations for fetching tax document information for a given tax year. - name: Workflow Example description: "The following example provides a step-by-step explanation of the sequential calls involved in the process of onboarding a new Client and placing an Investment in an Offering. This example\ \ is intended to be a high level overview for illustrative purposes and is subject to modification pending future refinements to this spec.\n\n## Create A Client\n\n### 1. Create Client\nClient creation\ \ is required to perform any operations on this platform. Clients are created via the Create Client operation.\n\nThe operation linked defines a\ \ variety of fields that must be passed in order to create a Client. Of particular note is the `partnerReferenceId`, which should be a unique identifier used within your own application to identify\ \ this individual. This `partnerReferenceId` helps Fundrise to create a unique identifier for this Client that is specific to your institution.\n\nUpon successful creation, a response body will be\ \ returned containing a `clientId`, `refreshToken`, and a list of `accounts`, each having a single field: `accountId`. \n\nNewly created Clients will have exactly one account with a single `accountId`.\ \ This `accountId` is used in the Place Investment step of this flow. Currently multiple accounts are not supported in the system, but is on our long term roadmap to build.\n\nThe `refreshToken` will\ \ be used in the next step of the flow to fetch an access token. You will need to use this value to fetch access tokens, so please store the refresh token securely. Access tokens will be required\ \ for all future operations requiring ClientBearerAuthentication as they are used to identify and authenticate a Client in a request.\n\n## Obtain An Access Token\n\n### 2. Get Access Token\nThe `refreshToken`\ \ returned from the prior step should be passed to the Get Access Token operation to fetch an access token. The access token serves to identify\ \ a specific Client and authenticate requests. This access token will need to be passed in the Authentication header of all subsequent requests made in this flow.\n\n## Place An Investment\n### 3. Obtain\ \ Offering ID\nIn order to place an Investment an `offeringId` must be obtained. The Get Offerings operation returns all Offerings eligible for\ \ Investment through this API. The `id` of one of the returned Offerings in the response body will need to be passed to the next operation in the flow.\n### 4. Get Offering Documents\nBefore an Investment\ \ can be placed, it is required to present the Client with all relevant documents and disclosures relevant to the particular Offering. The Get Offering Documents operation takes the Offering `id` from step #3 as a parameter to determine and return all relevant documents. The IDs of those documents must be passed along in the post\ \ body of the Investment placement step as the field `acknowledgedDocumentIds` .\n### 5. Get Investment Acknowledgments\nBefore an Investment can be placed, it is required to present the Client with\ \ all relevant acknowledgments relevant to the particular Offering. The Get Investment Acknowledgments operation takes the\ \ Offering `id` from step #3 as a parameter to determine and return all relevant acknowledgments. These agreements must be presented to the End-User and digitally signed. Digitally signing means the\ \ Partner platform must display associated checkboxes for each acknowledgement and require the user to check them to proceed. \n### 6. Place Investment\nOnce the Client has been presented with\ \ the relevant documents and acknowledgments, an Investment can be placed via the Place Investment operation. This operation takes an `accountId`\ \ (referenced in the the Create Client step) as a request parameter. In addition to this `accountId` a request body must be sent containing the `acknowledgedDocumentIds` from Step 4,\ \ the previously referenced `offeringId` and an `amount` in US Dollars representing the dollar value of shares that will be purchased." components: parameters: AccountIdPath: name: accountId in: path required: true schema: type: integer format: int64 description: The account ID (returned by the Create Client operation or the Get Client operation) associated with the request. LiquidableQuery: name: liquidable in: query required: false description: A filter for requesting only holdings which are eligible for Liquidation. schema: type: boolean OfferingIdPath: name: offeringId in: path required: true schema: $ref: '#/components/schemas/Identifier' description: The Offering ID (returned by the Get Offerings operation) associated with the request. OfferingIdQuery: name: offeringId in: query required: false schema: $ref: '#/components/schemas/Identifier' description: The Offering ID (returned by the Get Offerings operation) associated with the request. OfferingIdsQuery: name: offeringIds in: query required: true schema: type: array items: $ref: '#/components/schemas/Identifier' description: The Offering IDs (returned by the Get Offerings operation) associated with the request. ShareLiquidationRequestIdPath: name: shareLiquidationRequestId in: path required: true schema: $ref: '#/components/schemas/Identifier' description: The share liquidation request ID (returned by the Create Liquidation operation) associated with the request. TaxYearQuery: name: taxYear in: query description: Tax year in which to search for tax forms. required: false schema: type: integer TransactionTypeQuery: name: transactionType in: query description: Enum indicating the underlying object type that the Transaction represents. required: false schema: $ref: '#/components/schemas/TransactionTypeEnum' AssetClassQuery: name: assetClass in: query description: Enum indicating the underlying asset class that the Offering represents. required: false schema: $ref: '#/components/schemas/AssetClassEnum' TransactionTypePath: in: path name: transactionType required: true schema: $ref: '#/components/schemas/TransactionTypeEnum' description: The type associated with the Transaction ID. TransactionIdPath: in: path name: transactionId required: true schema: type: integer format: int64 description: The ID of the underlying Transaction object. Transactions are differentiated by their `transactionType` field. The `transactionId` for a given `transactionType` may be obtained from the response bodies of either the generic Transactions endpoints, or the respective Investment placement or Liquidations request endpoint called when creating the Transaction. schemas: AccountIdResponse: title: Account ID Response description: A Fundrise Client Account object containing the ID of created Account. type: object properties: accountId: description: Long-term persistent public identity of the Account with Fundrise. type: string format: int64 AddressRequest: $ref: '#/components/schemas/Address' AddressResponse: $ref: '#/components/schemas/Address' Address: title: Address description: An address object. type: object properties: address1: description: The street address. minLength: 1 maxLength: 255 type: string address2: description: The second line of the street address. maxLength: 255 type: string city: description: The City of the address. minLength: 1 maxLength: 255 type: string state: description: The State abbreviation of the address. minLength: 2 maxLength: 2 type: string x-field-extra-annotation: '@Pattern(regexp = "(A[KLRZ]|C[AOT]|D[CE]|FL|GA|HI|I[ADLN]|K[SY]|LA|M[ADEINOST]|N[CDEHJMVY]|O[HKR]|PA|RI|S[CD]|T[NX]|UT|V[AT]|W[AIVY])", message = "must be a U.S. state abbreviation")' zip: description: The ZIP code of the address. minLength: 5 maxLength: 5 type: string x-field-extra-annotation: '@Pattern(regexp = "[0-9]{5}", message = "Zip must be five digits")' country: description: The country of the address minLength: 2 maxLength: 2 type: string x-field-extra-annotation: '@Pattern(regexp = "^US$", message = "Country must be US")' required: - address1 - city - state - zip - country AssetClass: title: Asset Class description: The asset class of the offering. type: object properties: assetClassType: $ref: '#/components/schemas/AssetClassEnum' assetClassLabel: type: string description: Human readable label for the asset class AssetClassEnum: title: Asset Class type description: The asset class of the offering. maxLength: 256 enum: - REAL_ESTATE - PRIVATE_CREDIT - VENTURE ClientCreationRequest: title: Client Creation Request description: A Fundrise Client Creation Request Object. type: object properties: partnerReferenceId: description: An idempotency key to ensure duplicate clients are not created in the system for a Partner. This is a unique ID from the Partner used to reference the Client in their system. This should not contain PII. type: string x-field-extra-annotation: '@NotBlank' primaryEmail: description: The Client's primary email address. maxLength: 150 x-field-extra-annotation: '@NotBlank @Email' type: string format: email firstName: description: The Client's current first name. maxLength: 150 minLength: 2 type: string lastName: description: The Client's current last name. maxLength: 150 minLength: 2 type: string taxId: description: The Client's Social Security Number. This is a 9 digit integer without hyphens. type: string x-field-extra-annotation: '@NotBlank @Pattern(regexp = "([0-9]{9})", message = "must be a string containing 9 digits")' primaryAddress: $ref: '#/components/schemas/AddressRequest' description: The Client's primary address. dateOfBirth: $ref: '#/components/schemas/Date' description: The Client's date of birth. required: - partnerReferenceId - primaryEmail - firstName - lastName - taxId - primaryAddress - dateOfBirth ClientCreationResponse: title: Client Creation Response description: A Fundrise Client Creation Response Object. type: object properties: refreshToken: description: A non expiring OAuth Refresh Token to enable API access on behalf of the newly created Client. This should be securely stored and treated as if it were a password. maxLength: 256 type: string clientId: description: Unique public identifier of the Client with Fundrise. $ref: '#/components/schemas/Identifier' accounts: description: An array of accounts belonging to the Client object. By default a single Account will be created for the Client and this array can be assumed to have a size of 1 in this version of the API. type: array items: $ref: '#/components/schemas/AccountIdResponse' ClientUpdateRequest: description: A Fundrise Client Update Request Object. properties: primaryEmail: description: The Client's email address. maxLength: 150 type: string format: email x-field-extra-annotation: '@Email' firstName: description: The Client's current first name. maxLength: 150 minLength: 2 type: string lastName: description: The Client's current last name. maxLength: 150 minLength: 2 type: string primaryAddress: $ref: '#/components/schemas/AddressRequest' description: Client's primary address. ClientResponse: description: A Fundrise Client Object. properties: clientId: description: Long-term persistent public identity of the Client with Fundrise. $ref: '#/components/schemas/Identifier' primaryEmail: description: The Client's primary email address. maxLength: 256 type: string firstName: description: The Client's first name. maxLength: 256 type: string lastName: description: The Client's last name. maxLength: 256 type: string taxId: description: The Client's Social Security Number. This is a 9 digit integer without hyphens. maxLength: 256 type: string primaryAddress: $ref: '#/components/schemas/AddressResponse' description: Client's primary address. dateOfBirth: $ref: '#/components/schemas/Date' description: The Client's date of birth. accounts: description: An array of accounts belonging to the Client. By default a single Account will be created for the Client and this array can be assumed to have a size of 1 in this version of the API. type: array items: $ref: '#/components/schemas/AccountIdResponse' ClientUpdateResponse: description: An updated Fundrise Client object. allOf: - $ref: '#/components/schemas/ClientResponse' Date: title: Date String description: ISO 8601 full-date in format 'YYYY-MM-DD' according to [IETF RFC3339](https://xml2rfc.tools.ietf.org/public/rfc/html/rfc3339.html#anchor14) type: string format: date example: '2021-07-15' DocumentResponse: title: Document description: A Fundrise Document. type: object properties: documentId: description: The unique Document ID. type: string format: int64 documentName: maxLength: 2000 type: string documentType: $ref: '#/components/schemas/DocumentTypeEnum' documentUrl: maxLength: 2000 type: string StringArray: type: array items: type: string FieldErrorMap: type: object additionalProperties: $ref: '#/components/schemas/StringArray' FundriseConnectError: title: Error object description: Error from Fundrise Connect. type: object properties: referenceId: description: A unique reference ID generated for every request that is for error tracing. maxLength: 1000 type: string code: description: A numeric code mapping to a specific validation error. maxLength: 6 type: string message: description: A human readable description of the error. maxLength: 1000 type: string validationErrors: description: A map of field names to an array of form validation error messages $ref: '#/components/schemas/FieldErrorMap' required: - referenceId OfferingHistoricalNavResponse: title: Offering NAV Response description: Historical Daily NAV for a Fundrise Offering. type: object properties: offeringId: description: The Offering ID $ref: '#/components/schemas/Identifier' historicalDailyNav: type: array description: The historical daily net asset values of the fund in USD. items: $ref: '#/components/schemas/OfferingNavResponse' required: - offeringId - historicalDailyNav OfferingResponse: title: Offering Response description: A Fundrise Offering. type: object properties: currentPrice: anyOf: - type: 'null' - $ref: '#/components/schemas/PriceResponse' offeringId: description: The Offering ID $ref: '#/components/schemas/Identifier' offeringName: description: The Offering name. maxLength: 2000 type: string status: $ref: '#/components/schemas/OfferingStatusEnum' assetClass: $ref: '#/components/schemas/AssetClass' minimumInvestmentAmount: description: The minimum amount that can be invested into the fund in USD. type: string format: double maximumInvestmentAmount: description: The maximum amount that can be invested into the fund in USD. type: string format: double primaryObjective: description: The main goal of the fund. type: string maxLength: 256 currentDistributionRate: description: The current distribution rate of the fund. This represents the approximate annualized dividend percentage of the fund. type: string format: double required: - offeringId - offeringName - status - assetClass - minimumInvestmentAmount - maximumInvestmentAmount - primaryObjective - currentDistributionRate Identifier: title: Identifier description: Value for a unique identifier. type: string format: int64 InvestmentPlacementRequest: title: Investment Placement type: object description: An Investment placement request. required: - partnerReferenceId - amount - offeringId - acknowledgedDocumentIds properties: partnerReferenceId: description: An idempotency key to ensure duplicate Investments are not created in the system for a Partner. This is a unique ID from the Partner used to reference the Investment in their system. type: string x-field-extra-annotation: '@NotBlank' offeringId: description: The Offering ID $ref: '#/components/schemas/Identifier' amount: description: The amount in USD to be purchased. The maximum decimal places is 2. type: string format: double x-field-extra-annotation: '@Min(10) @Max(100000) @Digits(integer = 999999, fraction = 2, message = "decimal places must be less than or equal to 2")' acknowledgedDocumentIds: type: array description: A list of `InvestmentAcknowledgment` IDs representing signatures of said acknowledgments. Submission of these IDs indicates that the user has both signed and consents to the acknowledgment agreements. items: $ref: '#/components/schemas/Identifier' Acknowledgment: properties: acknowledgmentId: $ref: '#/components/schemas/Identifier' acknowledgmentText: description: The text to be presented for the acknowledgment to be signed. maxLength: 1000 type: string AcknowledgmentResponse: title: Acknowledgment type: object description: A response containing an acknowledgment needed by the End-User to perform an action. allOf: - $ref: '#/components/schemas/Acknowledgment' DebitCreditTypeEnum: title: Debit/Credit type description: '`DEBIT` indicates an outbound movement of money.
`CREDIT` indicates an inbound movement of money.' type: string enum: - DEBIT - CREDIT OAuth2AccessTokenResponse: description: Contains information needed to leverage the Client Bearer Authentication security scheme. Values are sensitive and allow api calls on behalf of a specific Client. The access token is to be used in subsequent API calls protected by the Client Bearer Authentication schema. The access token is for individual Clients, and usage of the same token for multiple Clients will cause unintended actions within our API. properties: accessToken: description: The access token. type: string example: HgHaJimFLx5WbPTWwvrw4ktJApo refreshToken: description: The refresh token. type: string example: HnGMTF2gVKQU-7IrCwhlXEEU0EY scope: description: The scopes granted to the access token. type: string example: PARTNER:READ PARTNER:WRITE tokenType: description: The token type, which will be "Bearer". type: string example: Bearer expiresIn: description: The amount of time in seconds until the access token expires. type: string format: int64 example: '3598' PriceResponse: title: Price Response description: A Fundrise Offering Price. type: object properties: price: description: The Offering Price. type: string format: double priceDate: description: The effective date-time of the price. type: string format: date-time HoldingResponse: description: A summary of the Client's holdings in an offering. properties: offeringId: $ref: '#/components/schemas/Identifier' description: The Offering ID. shares: allOf: - $ref: '#/components/schemas/SharePrecision' description: The number of shares that make up the Holding, net of Liquidations. The precision of the this number can be up to 6 decimal places. costBasis: description: The weighted average of the price paid to purchase the shares in this Holding. The precision of this number can be up to 2 decimal places. type: string format: double currentValue: description: The current value of the Holding's shares and pending orders. The precision of this number can be up to 2 decimal places. type: string format: double pendingValue: description: The value of the Holding's pending orders. The precision of this number can be up to 2 decimal places. type: string format: double settledValue: description: The value of the Holding's shares. The precision of this number can be up to 2 decimal places. type: string format: double liquidable: description: A boolean indicating whether or not the current shares are available for liquidation. type: boolean unpaidDistributions: description: The unpaid distributions net of fees for the current Holding. The precision of this number can be up to 2 decimal places. type: string format: double required: - offeringId - shares - costBasis - currentValue - pendingValue - settledValue - liquidable - unpaidDistributions OfferingNavResponse: title: Offering NAV Response description: A historical daily NAV entry properties: effectiveDate: description: The date the NAV was effective. type: string format: date-time netAssetValuePerShare: description: The share value. type: string format: double SharePrecision: title: SharePrecision description: Value can be fractional, with a precision up to 6 decimal places. Intended to be used as the standard format for shares. type: string format: double example: '10.000001' ShareLiquidationOfferingRequest: type: object description: The fund information for the sale properties: offeringId: $ref: '#/components/schemas/Identifier' description: The Fundrise Offering ID shares: allOf: - $ref: '#/components/schemas/SharePrecision' description: The fractional quantity of shares to liquidate. The precision of the this number can be up to 6 decimal places. The total quantity of liquididable shares for a given Offering can be obtained from the Get Offering Holdings endpoint. x-field-extra-annotation: '@Positive @Digits(integer = 999999, fraction = 6, message = "must be less than or equal to 6 decimal places")' required: - offeringId - shares ShareLiquidationRequest: type: object description: A request for a Fundrise share liquidation properties: allAcknowledgmentsAccepted: description: An indication that acknowledgments have been accepted type: boolean x-field-extra-annotation: '@AssertTrue' example: true offerings: description: A collection of shares being submitted for liquidation. type: array items: $ref: '#/components/schemas/ShareLiquidationOfferingRequest' x-field-extra-annotation: '@NotEmpty' example: - offeringId: '1' shares: '10.000001' - offeringId: '2' shares: '25.000001' required: - allAcknowledgmentsAccepted - offerings TaxDocumentResponse: title: Tax description: Base entity for all IRS Tax forms type: object properties: taxYear: description: Year for which taxes are being paid type: integer documentId: $ref: '#/components/schemas/Identifier' description: Long-term persistent id for the tax form instance documentUrl: description: URL for accessing the document resource type: string documentTitle: description: Title for the document type: string TransactionOfferingResponse: title: Transaction Offering Response description: An Offering included in a Transaction type: object properties: offeringId: $ref: '#/components/schemas/Identifier' description: The Offering ID offeringName: description: The Offering name. maxLength: 2000 type: string shares: $ref: '#/components/schemas/SharePrecision' description: The number of shares in the Transaction sharePrice: description: The value in USD per share at the time of processing. type: string format: double amount: description: 'The total amount in USD to be returned to the Client, net of fees. For example, the `amount` to be returned is described by the following formula: `amount = (shares * sharePrice) - fees`.' type: string format: double required: - offeringId - offeringName TransactionResponse: title: TransactionResponse description: An abstract response representing the core Transaction properties. type: object properties: transactionId: $ref: '#/components/schemas/Identifier' description: The ID of the Transaction amount: description: Total amount in USD. type: string format: double transactionType: $ref: '#/components/schemas/TransactionTypeEnum' transactionDate: description: The Transaction date. type: string format: date-time description: description: The Transaction description maxLength: 2000 type: string status: $ref: '#/components/schemas/TransactionStatusEnum' debitCreditMemo: $ref: '#/components/schemas/DebitCreditTypeEnum' fees: description: The fees associated with the Transaction type: string format: double offerings: type: array items: $ref: '#/components/schemas/TransactionOfferingResponse' isCancellable: description: Boolean indicating whether or not the Transaction is cancellable. type: boolean required: - transactionId - transactionType - transactionDate - description - status - debitCreditMemo TransactionStatusEnum: title: Transaction Status description: '`PENDING` indicates the Transaction is pending. `COMPLETE` indicates that the Transaction has completed. This is a terminal state.
`FAILED` indicates that the Transaction was not successful. This is a terminal state.
' type: string enum: - PENDING - COMPLETE - FAILED TransactionTypeEnum: title: Transaction Type description: Enum representing the type of financial Transaction. enum: - INVESTMENT - LIQUIDATION - DIVIDEND DocumentTypeEnum: title: Document Type description: Enum representing the document type. maxLength: 256 enum: - AGREEMENT - ACKNOWLEDGMENT - DISCLOSURE - PROSPECTUS - OFFERING_CIRCULAR - OTHER - STATEMENT - TAX_FORM OfferingStatusEnum: title: Offering Status description: The current status of the offering. `OPEN` indicates the Offering can be invested in while `CLOSED` indicates the Offering is unavailable. maxLength: 256 enum: - OPEN - CLOSED securitySchemes: PartnerBasicAuthentication: description: PartnerBasicAuthentication is enforced by HTTP Basic Authentication. A Partner username and password will be provided by Fundrise support. The Partner password should be stored securely. At a minimum, it should be encrypted at-rest and access restricted to services making requests to the Fundrise API. The Partner password should not be exposed to a Client or any of their devices. If the password is compromised please contact Fundrise support. type: http scheme: basic ClientBearerAuthentication: description: 'ClientBearerAuthentication is enforced by HTTP Bearer Authentication and requires an OAuth access token. Since access tokens are scoped to specific Clients, they identify and authenticate the Client in a request. Access tokens can be obtained in Get Access Token requests by using the refresh token flow. OAuth refresh token are issued on Client Creation and scoped specifically to that Client. The refresh tokens will not expire and should be stored securely after Client creation. At a minimum, refresh tokens should be encrypted at-rest and access restricted to services making requests to the Fundrise API. Refresh tokens should not be exposed to a Client or any of their devices.' type: http scheme: bearer responses: '401': description: Unauthorized request to server, Invalid access token or Partner credentials '403': description: Customer is not permitted to access the resource '500': description: Internal Service Error content: application/json: schema: $ref: '#/components/schemas/FundriseConnectError' examples: clientExists: value: referenceId: ed8583b9-6cd9-43ed-ad46-c7c52fff0c35 message: Internal service error paths: /v1/oauth/token: post: summary: Get Access Token security: - PartnerBasicAuthentication: [] description: "This endpoint is an OAuth 2.0 Token Endpoint that supports the refresh token flow to obtain active access tokens, which are needed to access secured endpoints with ClientBearerAuthentication.\ \ \n\nRefresh tokens are issued on Client Creation and are scoped to that specific Client. Refresh tokens will not expire and should only be\ \ used to obtain new access tokens. Refresh tokens should be stored securely. At a minimum, refresh tokens should be encrypted at-rest and access restricted to services making requests to the Fundrise\ \ API. Refresh tokens should not be exposed to a Client or any of their devices.\n\nAccess tokens have a limited lifespan, which is indicated in the `expiresIn` attribute of the response. When an\ \ access token expires, obtain a new access token using this endpoint. Access tokens will be scoped to the specific Client that the refresh token was scoped to.\n\nNote, the refresh token will be\ \ returned in the response along with the access token. Since refresh tokens will not expire, this should be the same refresh token that was used in the request." tags: - Authentication operationId: GetAccessToken requestBody: required: true content: application/json: schema: type: object properties: grantType: type: string description: OAuth Grant Type must be `refresh_token`. x-field-extra-annotation: '@NotBlank' refreshToken: type: string description: The refresh token value. x-field-extra-annotation: '@NotBlank' required: - grantType - refreshToken examples: Refresh: value: grantType: refresh_token refreshToken: a1929bbf-acb1-430f-a87f-9b79a8cff1f4 responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/OAuth2AccessTokenResponse' '400': description: Invalid operation type, Improperly formatted fields content: application/json: schema: $ref: '#/components/schemas/FundriseConnectError' examples: Invalid grant type: value: referenceId: ed8583b9-6cd9-43ed-ad46-c7c52fff0c35 message: Invalid grant type Missing refresh token: value: referenceId: ed8583b9-6cd9-43ed-ad46-c7c52fff0c35 validationErrors: refreshToken: - must not be blank - must not be null '401': $ref: '#/components/responses/401' '403': $ref: '#/components/responses/403' '500': $ref: '#/components/responses/500' /v1/account/{accountId}/liquidation: post: security: - ClientBearerAuthentication: [] description: "Creates a request to liquidate shares. \n\nIn order to place a Liquidation request, the holdings in question must be liquidable. The liquidability of Holdings in any given Offering\ \ is determined by the `shares` field on the response from the Get Offering Holdings endpoint. A non zero quantity of `shares` indicates that\ \ the Client holds non reduced shares in the given Offering (indicated by the `offeringId`) that can be liquidated.\nLiquidations are reviewed on a quarterly basis. As such, Liquidations\ \ submitted in Q1, Q2, Q3, and Q4 will typically be processed in early April, early July, early October, and early January, respectively." operationId: CreateShareLiquidationRequest summary: Create Liquidation tags: - Liquidations parameters: - $ref: '#/components/parameters/AccountIdPath' requestBody: content: application/json: schema: $ref: '#/components/schemas/ShareLiquidationRequest' responses: '201': description: Created content: application/json: schema: type: array items: $ref: '#/components/schemas/TransactionResponse' example: - transactionId: '1' transactionType: LIQUIDATION transactionDate: '2023-02-20T00:00:00.000-05:00' description: Share liquidation request offerings: - offeringId: '24' offeringName: Flagship Fund shares: '25.000001' status: FAILED isCancellable: false debitCreditMemo: DEBIT '400': description: Bad Request content: application/json: schema: $ref: '#/components/schemas/FundriseConnectError' type: object examples: MalformedFields: value: referenceId: ed8583b9-6cd9-43ed-ad46-c7c52fff0c34 validationErrors: allAcknowledgmentsAccepted: - must not be blank - must not be null - must be true offerings: - must not be blank - must not be null offerings[0].offeringId: - must not be blank - must not be null offerings[0].shares: - must not be blank - must not be null - must be less than or equal to 6 decimal places - must be greater than 0 PendingTransfers: value: referenceId: ed8583b9-6cd9-43ed-ad46-c7c52fff0c34 code: '100519' message: Account has pending transfers LiquidationsDisabledForOffering: value: referenceId: ed8583b9-6cd9-43ed-ad46-c7c52fff0c34 code: '100520' message: Liquidations are blocked for the provided offering TooManySharesRequested: value: referenceId: ed8583b9-6cd9-43ed-ad46-c7c52fff0c34 code: '100521' message: Account does not hold the quantity of shares requested for liquidation InProcessLiquidationForOffering: value: referenceId: ed8583b9-6cd9-43ed-ad46-c7c52fff0c34 code: '100523' message: Liquidation cannot be placed because there is an in process Liquidation for the provided fund '401': description: Invalid or expired token $ref: '#/components/responses/401' '403': $ref: '#/components/responses/403' '404': description: Not Found content: application/json: schema: $ref: '#/components/schemas/FundriseConnectError' examples: InvalidOfferingId: value: referenceId: ed8583b9-6cd9-43ed-ad46-c7c52fff0c34 code: '200101' message: Invalid offeringId provided '500': $ref: '#/components/responses/500' /v1/account/{accountId}/liquidation/{shareLiquidationRequestId}/cancel: put: security: - ClientBearerAuthentication: [] description: 'Cancels a request to liquidate shares. In order to cancel a Liquidation Transaction, `isCancellable` (boolean field), must have a value of `true`. Liquidations will typically remain cancellable up until the start of the processing period for the respective quarter in which it was placed.' operationId: CancelShareLiquidationRequest summary: Cancel Liquidation tags: - Liquidations parameters: - $ref: '#/components/parameters/AccountIdPath' - $ref: '#/components/parameters/ShareLiquidationRequestIdPath' responses: '200': description: Liquidation cancelled successfully. content: application/json: schema: $ref: '#/components/schemas/TransactionResponse' examples: share-liquidation-response: value: transactionId: '1' transactionType: LIQUIDATION transactionDate: '2023-02-20T00:00:00.000-05:00' description: Share liquidation request offerings: - offeringId: '24' offeringName: Flagship Fund shares: '25.000001' status: FAILED isCancellable: false debitCreditMemo: DEBIT '400': description: Bad Request content: application/json: schema: $ref: '#/components/schemas/FundriseConnectError' type: object examples: InProcessLiquidationForOffering: value: referenceId: ed8583b9-6cd9-43ed-ad46-c7c52fff0c34 code: '100514' message: Liquidation is in an invalid status for cancellation CancellationWindowClosed: value: referenceId: ed8583b9-6cd9-43ed-ad46-c7c52fff0c34 code: '100516' message: Liquidation is outside of cancellation window '401': $ref: '#/components/responses/401' '403': $ref: '#/components/responses/403' '404': description: Not Found content: application/json: schema: $ref: '#/components/schemas/FundriseConnectError' examples: LiquidationNotFound: value: referenceId: ed8583b9-6cd9-43ed-ad46-c7c52fff0c34 code: '100513' message: Liquidation not found '500': $ref: '#/components/responses/500' /v1/offerings: get: description: Returns a list of Fundrise Offerings accessible via this API. This endpoint supports a query parameter to filter Offerings for a specific asset class. Not passing the query parameter will return all available asset classes. operationId: GetOfferings parameters: - $ref: '#/components/parameters/AssetClassQuery' security: - PartnerBasicAuthentication: [] summary: Get Offerings tags: - Offerings responses: '200': description: A successful response. content: application/json: schema: type: array items: $ref: '#/components/schemas/OfferingResponse' example: - offeringId: '1' currentPrice: price: '10.0' priceDate: '2020-01-01T00:00:00Z' offeringName: Income Interval Fund status: OPEN assetClass: assetClassType: PRIVATE_CREDIT assetClassLabel: Private Credit minimumInvestmentAmount: '10.00' maximumInvestmentAmount: '100000.00' primaryObjective: Cash flow currentDistributionRate: '.41' - offeringId: '2' offeringName: Flagship Real Estate Fund status: OPEN assetClass: assetClassType: REAL_ESTATE assetClassLabel: Real Estate minimumInvestmentAmount: '10.00' maximumInvestmentAmount: '100000.00' primaryObjective: Appreciation currentDistributionRate: '.41' - offeringId: '3' offeringName: Innovation Fund status: CLOSED assetClass: assetClassType: VENTURE assetClassLabel: Venture minimumInvestmentAmount: '10.00' maximumInvestmentAmount: '100000.00' primaryObjective: Appreciation currentDistributionRate: '.41' '401': $ref: '#/components/responses/401' '500': $ref: '#/components/responses/500' /v1/offering/{offeringId}/nav: get: description: 'Returns the historical daily net asset values for a Fundrise Offering accessible via this API. ' operationId: GetHistoricalNav parameters: - $ref: '#/components/parameters/OfferingIdPath' security: - PartnerBasicAuthentication: [] summary: Get Historical Daily NAV tags: - Offerings responses: '200': description: A successful response. content: application/json: schema: $ref: '#/components/schemas/OfferingHistoricalNavResponse' example: offeringId: '24' historicalDailyNav: - effectiveDate: '2023-01-02T00:00:00Z' netAssetValuePerShare: '10.03' - effectiveDate: '2023-01-01T00:00:00Z' netAssetValuePerShare: '10.02' '401': $ref: '#/components/responses/401' '404': description: Not Found content: application/json: schema: $ref: '#/components/schemas/FundriseConnectError' examples: LiquidationNotFound: value: referenceId: ed8583b9-6cd9-43ed-ad46-c7c52fff0c34 code: '200101' message: Invalid offeringId provided '500': $ref: '#/components/responses/500' /v1/offering/{offeringId}/documents: get: description: The documents API provides access to Fundrise Offering documentation to place Investments. When a user has selected what Offering they would like to invest in from the `GET /v1/offerings` endpoint, the documents (typically a `SUBSCRIPTION_AGREEMENT` and `PROSPECTUS` or `OFFERING_CIRCULAR`) need to be displayed to the user before investing into the Offering. operationId: GetOfferingDocuments security: - PartnerBasicAuthentication: [] summary: Get Offering Documents tags: - Offerings parameters: - $ref: '#/components/parameters/OfferingIdPath' responses: '200': description: A successful response. content: application/json: schema: type: array items: $ref: '#/components/schemas/DocumentResponse' examples: investment-docs: value: - documentId: '1' documentName: Fundrise Equity eREIT Offering Circular (December 2022) Supp 1.pdf documentType: OFFERING_CIRCULAR documentUrl: https://d10cq78zmnjvsx.cloudfront.net/website-documents/a1b48469-6cab-4965-ad24-fcde28037d31/Fundrise%20Equity%20eREIT%20Offering%20Circular%20(December%202022)%20Supp%201.pdf - documentId: '2' documentName: Fundrise Equity eREIT Subscription Agreement (December 2022) - final.pdf documentType: AGREEMENT documentUrl: https://d10cq78zmnjvsx.cloudfront.net/reit-documents/45eee3fb-d77c-4804-aca2-f0c96e413e02/Fundrise%20Equity%20eREIT%20Subscription%20Agreement%20(December%202022)%20-%20final.pdf '401': $ref: '#/components/responses/401' '404': description: Not Found content: application/json: schema: $ref: '#/components/schemas/FundriseConnectError' examples: LiquidationNotFound: value: referenceId: ed8583b9-6cd9-43ed-ad46-c7c52fff0c34 code: '200102' message: Documents not found for provided offeringId '500': $ref: '#/components/responses/500' /v1/liquidation/acknowledgments: get: description: The Liquidation acknowledgments API provides access to Fundrise Liquidation acknowledgments required to submit Liquidation requests. The acknowledgments must be displayed to the user and the user must digitally sign the acknowledgments and submit the IDs when liquidating. Digitally signing means the Partner platform must display associated checkboxes for each acknowledgement and require the user to check them to proceed. operationId: GetLiquidationAcknowledgments security: - ClientBearerAuthentication: [] summary: Get Liquidation Acknowledgments tags: - Acknowledgments parameters: - $ref: '#/components/parameters/OfferingIdsQuery' responses: '200': description: A successful response. content: application/json: schema: type: array items: $ref: '#/components/schemas/AcknowledgmentResponse' example: - acknowledgmentId: '1' acknowledgmentText: I certify that I am authorized to make these elections and that all information provided is true and accurate. I certify that I have read and understand the documentation associated with my fund's offer to repurchase my shares and I agree to be bound by all terms and conditions included therein. - acknowledgmentId: '2' acknowledgmentText: I agree that Fundrise Advisors, LLC is entitled to act on the instructions of this request, without further inquiry, and these instructions supersede and have priority over all previous instructions in respect to the shares requested for redemption or repurchase. '401': $ref: '#/components/responses/401' '404': description: Not Found content: application/json: schema: $ref: '#/components/schemas/FundriseConnectError' examples: LiquidationNotFound: value: referenceId: ed8583b9-6cd9-43ed-ad46-c7c52fff0c34 code: '200104' message: Liquidation acknowledgments not found for provided offeringIds '500': $ref: '#/components/responses/500' /v1/offering/{offeringId}/acknowledgments: get: description: This endpoint provides access to Fundrise Offering acknowledgments required to place Investments. When a user has selected what Offering they would like to invest in from the `GET /v1/offerings` endpoint, the acknowledgments must be displayed to the user and the user must digitally sign the acknowledgments and submit the IDs when investing into the Offering. Digitally signing means the Partner platform must display associated checkboxes for each acknowledgement and require the user to check them to proceed. operationId: GetInvestmentAcknowledgments security: - ClientBearerAuthentication: [] summary: Get Investment Acknowledgments tags: - Acknowledgments parameters: - $ref: '#/components/parameters/OfferingIdPath' responses: '200': description: A successful response. content: application/json: schema: type: array items: $ref: '#/components/schemas/AcknowledgmentResponse' example: - acknowledgmentId: '1' acknowledgmentText: I have reviewed each Offering Circular and Prospectus, reviewed and agree to each Subscription Agreement, and understand the risks associated with this offering. - acknowledgmentId: '2' acknowledgmentText: I recognize that my investment is in alternative assets which are fundamentally long-term, illiquid investments; that liquidations, if approved, are paid out quarterly for the eREITs and the funds registered under the Investment Company Act of 1940, and monthly after a minimum 60-day waiting period for the eFund; and, where possible, requests for liquidation may be suspended during periods of financial stress. '400': description: Not Found content: application/json: schema: $ref: '#/components/schemas/FundriseConnectError' examples: LiquidationNotFound: value: referenceId: ed8583b9-6cd9-43ed-ad46-c7c52fff0c34 code: '200103' message: offeringIds are required '401': $ref: '#/components/responses/401' '404': description: Not Found content: application/json: schema: $ref: '#/components/schemas/FundriseConnectError' examples: LiquidationNotFound: value: referenceId: ed8583b9-6cd9-43ed-ad46-c7c52fff0c34 code: '200103' message: Acknowledgments not found for provided offeringIds '500': $ref: '#/components/responses/500' /v1/account/{accountId}/holdings: get: security: - ClientBearerAuthentication: [] description: 'Returns a collection containing all of the Client''s current holdings within Fundrise. Filter on optional Offering ID to return holding on a specific Offering. The `liquidable` fields indicates shareholdings that are available for liquidation. This is filterable by the `liquidable` query parameter.' tags: - Holdings operationId: GetHoldings summary: Get Offering Holdings parameters: - $ref: '#/components/parameters/AccountIdPath' - $ref: '#/components/parameters/OfferingIdQuery' - $ref: '#/components/parameters/LiquidableQuery' responses: '200': description: A successful response. content: application/json: schema: type: array items: $ref: '#/components/schemas/HoldingResponse' examples: multi-offering: value: - offeringId: '1' currentValue: '10100.00' pendingValue: '100.00' settledValue: '10000.00' unpaidDistributions: '100.00' shares: '150.9' costBasis: '10.01' liquidable: false - offeringId: '2' currentValue: '100.00' pendingValue: '0.00' settledValue: '100.00' unpaidDistributions: '0' shares: '10.74' costBasis: '11.49' liquidable: true - offeringId: '3' currentValue: '2010.78' pendingValue: '10.00' settledValue: '2000.78' unpaidDistributions: '24.32' shares: '13.677401' costBasis: '15.01' liquidable: true single-offering: value: - offeringId: '4' currentValue: '10100.00' pendingValue: '100.00' settledValue: '10000.00' unpaidDistributions: '100.00' shares: '200.000001' costBasis: '10.01' liquidable: false no-holdings: value: [] liquidable: value: - offeringId: '1' currentValue: '2000.78' pendingValue: '0' settledValue: '2000.78' unpaidDistributions: '24.32' shares: '13.677401' costBasis: '10.01' liquidable: true '204': description: No active holding in specified Offering for Client '401': $ref: '#/components/responses/401' '403': $ref: '#/components/responses/403' '500': $ref: '#/components/responses/500' /v1/client: post: security: - PartnerBasicAuthentication: [] summary: Create Client description: "Creates a Client within the Fundrise application. \nA refresh token will be returned with this request which is scoped to the newly-created Client. It is important to retain this refresh\ \ token as it is required to obtain access tokens via the Get Access Token operation.\nAccess tokens will be required for ClientBearerAuthentication\ \ which secures other endpoints. Refresh tokens will not expire and should only be used to obtain new access tokens. Refresh tokens should be stored securely, used only in server-to-server communication,\ \ and not exposed to the End-User." operationId: CreateClient tags: - Clients requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/ClientCreationRequest' examples: clientCreationRequest: value: firstName: John lastName: Smith primaryEmail: jsmith@fundrise.com taxId: '218110123' dateOfBirth: '1980-01-31' primaryAddress: address1: 11 Dupont Cir NW address2: Floor 10 city: Washington state: DC zip: '20036' country: US partnerReferenceId: '1' responses: '201': description: Client created successfully content: application/json: schema: $ref: '#/components/schemas/ClientCreationResponse' examples: client: value: clientId: '1' refreshToken: 2b1a7986-a277-41e4-b153-688f84b6edcb accounts: - accountId: '12' '400': description: Invalid operation type, Improperly formatted Client fields content: application/json: schema: $ref: '#/components/schemas/FundriseConnectError' examples: clientExists: value: referenceId: ed8583b9-6cd9-43ed-ad46-c7c52fff0c34 validationErrors: partnerReferenceId: - must not be blank - must not be null primaryEmail: - must be a well-formed email address - must not be blank - must not be null firstName: - must not be blank - must not be null - size must be between 2 and 150 lastName: - must not be blank - must not be null - size must be between 2 and 150 taxId: - must not be blank - must not be null - must be a string containing 9 digits primaryAddress: - must not be blank - must not be null primaryAddress.address1: - must not be blank - must not be null - size must be between 1 and 255 primaryAddress.address2: - must not be blank - must not be null - size must be between 1 and 255 primaryAddress.city: - must not be blank - must not be null - size must be between 1 and 255 primaryAddress.state: - must not be blank - must not be null - size must be between 2 and 2 - must be a U.S. state abbreviation primaryAddress.zip: - must not be blank - must not be null - size must be between 5 and 5 - Zip must be five digits primaryAddress.country: - must not be blank - must not be null - size must be between 5 and 5 - Country must be US dateOfBirth: - must not be blank - must not be null '401': $ref: '#/components/responses/401' '403': $ref: '#/components/responses/403' '409': description: Conflict creating resource content: application/json: schema: $ref: '#/components/schemas/FundriseConnectError' examples: unexpectedError: value: referenceId: ed8583b9-6cd9-43ed-ad46-c7c52fff0c34 code: '200100' message: Client already created for supplied partnerReferenceId '500': $ref: '#/components/responses/500' get: security: - ClientBearerAuthentication: [] summary: Get Client description: Returns the Client object for the currently authenticated Client. operationId: GetClient tags: - Clients responses: '200': description: Client found content: application/json: schema: $ref: '#/components/schemas/ClientResponse' examples: client: value: clientId: '1' primaryEmail: jsmith@fundrise.com firstName: John lastName: Smith taxId: '218110123' primaryAddress: address1: 11 Dupont Cir NW address2: Floor 10 city: Washington state: DC zip: '20036' country: US dateOfBirth: '1980-02-24' accounts: - accountId: '12' '401': description: Invalid or expired token $ref: '#/components/responses/401' '500': $ref: '#/components/responses/500' put: security: - ClientBearerAuthentication: [] summary: Update Client description: Update a Client's name, email, and address. operationId: UpdateClient tags: - Clients requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/ClientUpdateRequest' examples: nameOnly: value: firstName: Judith lastName: Jones emailOnly: value: primaryEmail: zappa@fundrise.com addressOnly: value: primaryAddress: address1: 11 Dupont Cir NW address2: Floor 10 city: Washington state: DC country: US zip: '20036' nameAndEmail: value: firstName: Judith lastName: Jones primaryEmail: zappa@fundrise.com allUpdatableFields: value: firstName: John lastName: Smith primaryEmail: jsmith@fundrise.com primaryAddress: address1: 11 Dupont Cir NW address2: Floor 10 city: Washington state: DC zip: '20036' country: US responses: '200': description: Client updated successfully content: application/json: schema: $ref: '#/components/schemas/ClientUpdateResponse' examples: client: value: clientId: '1' primaryEmail: jsmith@fundrise.com firstName: John lastName: Smith taxId: '218110123' primaryAddress: address1: 11 Dupont Cir NW address2: Floor 10 city: Washington state: DC zip: '20036' country: US dateOfBirth: '1991-05-25' accounts: - accountId: '12' '400': description: Invalid operation type, Improperly formatted Client fields content: application/json: schema: $ref: '#/components/schemas/FundriseConnectError' examples: validationErrors: value: referenceId: ed8583b9-6cd9-43ed-ad46-c7c52fff0c34 validationErrors: primaryEmail: - must be a well-formed email address - must not be blank - must not be null firstName: - must not be blank - must not be null - size must be between 2 and 150 lastName: - must not be blank - must not be null - size must be between 2 and 150 primaryAddress: - must not be blank - must not be null primaryAddress.address1: - must not be blank - must not be null - size must be between 1 and 255 primaryAddress.address2: - must not be blank - must not be null - size must be between 1 and 255 primaryAddress.city: - must not be blank - must not be null - size must be between 1 and 255 primaryAddress.state: - must not be blank - must not be null - size must be between 2 and 2 - must be a U.S. state abbreviation primaryAddress.zip: - must not be blank - must not be null - size must be between 5 and 5 - Zip must be five digits primaryAddress.country: - must not be blank - must not be null - size must be between 5 and 5 - Country must be US '401': description: Invalid or expired token $ref: '#/components/responses/401' '403': $ref: '#/components/responses/403' '500': $ref: '#/components/responses/500' /v1/account/{accountId}/investment: post: security: - ClientBearerAuthentication: [] summary: Place Investment description: "Place an Investment in an Offering on behalf of a Client. \n\nNAV (net asset value, reflected as `sharePrice` in this response) is typically updated daily for the interval funds (Flagship\ \ Real Estate Fund and the Income Real Estate Fund). As such, the `sharePrice` for Investments in interval funds will not be returned upon Investment placement in such funds via this endpoint.\ \ \n\nWith this specification, we are assuming that accounts on the Partner platform, at the time of onboarding, have linked & funded a central payment source with the ability to fund Investments\ \ placed." operationId: PlaceInvestment tags: - Investments parameters: - $ref: '#/components/parameters/AccountIdPath' requestBody: content: application/json: schema: $ref: '#/components/schemas/InvestmentPlacementRequest' examples: InvestmentPlacedSuccessfully: value: partnerReferenceId: '2314' offeringId: '1' acknowledgedDocumentIds: - '1' - '2' amount: '24187.50' responses: '200': description: Investment created successfully content: application/json: schema: $ref: '#/components/schemas/TransactionResponse' examples: client: value: transactionId: '11' transactionType: INVESTMENT description: Investment into Fundrise Offering amount: '10000.00' transactionDate: '2023-02-15T00:00:00.000-05:00' offerings: - offeringId: '24' offeringName: Flagship Fund sharePrice: '10.04' shares: '996.015936' status: PENDING isCancellable: true debitCreditMemo: CREDIT '400': description: Bad Request content: application/json: schema: $ref: '#/components/schemas/FundriseConnectError' examples: MalformedFields: value: referenceId: ed8583b9-6cd9-43ed-ad46-c7c52fff0c34 validationErrors: partnerReferenceId: - must not be blank - must not be null offeringId: - must not be blank - must not be null amount: - must not be blank - must not be null - must be greater than or equal to 10.00 - must be less than or equal to 100000.00 acknowledgedDocumentIds: - must not be blank - must not be null InvalidDocumentIds: value: referenceId: ed8583b9-6cd9-43ed-ad46-c7c52fff0c34 code: '100502' message: acknowledgedDocumentIds do not match those required '401': description: Invalid or expired token $ref: '#/components/responses/401' '403': description: Forbidden content: application/json: schema: $ref: '#/components/schemas/FundriseConnectError' examples: AccountFrozen: value: referenceId: ed8583b9-6cd9-43ed-ad46-c7c52fff0c40 code: '100500' message: Account is frozen FullLiquidationInProgress: value: referenceId: ed8583b9-6cd9-43ed-ad46-c7c52fff0c41 code: '100501' message: Account has a full Liquidation request in progress and is ineligible for Investment placement '404': description: Not Found content: application/json: schema: $ref: '#/components/schemas/FundriseConnectError' examples: InvalidOfferingId: value: referenceId: ed8583b9-6cd9-43ed-ad46-c7c52fff0c34 code: '200101' message: Invalid offeringId provided '500': $ref: '#/components/responses/500' /v1/account/{accountId}/investment/{transactionId}/cancel: put: security: - ClientBearerAuthentication: [] summary: Cancel Investment description: "Cancel an Investment in an Offering on behalf of the currently authenticated Client. \n\nAn Investment may be cancelled up until 5:00pm on the day that the Investment was placed. If\ \ the Investment was placed after 5:00pm EST or on a non-business day, it may be cancelled prior to 5:00pm of the next business day." operationId: CancelInvestment tags: - Investments parameters: - $ref: '#/components/parameters/AccountIdPath' - $ref: '#/components/parameters/TransactionIdPath' responses: '200': description: Investment cancelled successfully. content: application/json: schema: $ref: '#/components/schemas/TransactionResponse' examples: client: value: transactionId: '11' transactionType: INVESTMENT description: Investment into Fundrise Offering amount: '10000.00' transactionDate: '2023-02-15T00:00:00.000-05:00' offerings: - offeringId: '24' offeringName: Flagship Fund sharePrice: '10.04' shares: '996.015936' status: FAILED isCancellable: false debitCreditMemo: CREDIT '400': description: Bad Request content: application/json: schema: $ref: '#/components/schemas/FundriseConnectError' examples: InvestmentNotInCancellableState: value: referenceId: ed8583b9-6cd9-43ed-ad46-c7c52fff0c34 code: '100510' message: Investment must have a PENDING status to cancel InvestmentOutsideOfCancellationWindow: value: referenceId: ed8583b9-6cd9-43ed-ad46-c7c52fff0c34 code: '100511' message: Cancellation window is closed for this Investment '401': description: Invalid or expired token $ref: '#/components/responses/401' '404': description: Not Found content: application/json: schema: $ref: '#/components/schemas/FundriseConnectError' examples: InvestmentNotFound: value: referenceId: ed8583b9-6cd9-43ef-ad46-c7c52fff0c34 code: '100512' message: Invalid investmentId provided '500': $ref: '#/components/responses/500' /v1/account/{accountId}/tax-forms: get: security: - ClientBearerAuthentication: [] operationId: GetTaxForms summary: Get tax forms description: Get the full lists of tax document data available for a specific year for the current authorized Client. The tax document URLs are AWS presigned URLs that are valid for 5 minutes. tags: - Tax Forms parameters: - $ref: '#/components/parameters/TaxYearQuery' - $ref: '#/components/parameters/AccountIdPath' responses: '200': description: Array of metadata for all the tax document data available for the Client matching search criteria content: application/json: schema: type: array items: $ref: '#/components/schemas/TaxDocumentResponse' example: - taxYear: 2021 documentId: '1' documentUrl: https://d10cq78zmnjvsx.cloudfront.net/exaple-secured-tax-docs-path/1 documentTitle: Annual Tax Summary - taxYear: 2022 documentId: '2' documentUrl: https://d10cq78zmnjvsx.cloudfront.net/example-secured-tax-docs-path/2 documentTitle: Annual Tax Summary '401': $ref: '#/components/responses/401' '403': $ref: '#/components/responses/403' '500': $ref: '#/components/responses/500' /v1/account/{accountId}/transaction/{transactionType}/{transactionId}: get: security: - ClientBearerAuthentication: [] summary: Get Transaction description: Returns a Transaction by the by `transactionId`, on behalf of the currently authenticated Client. operationId: GetTransaction parameters: - $ref: '#/components/parameters/AccountIdPath' - $ref: '#/components/parameters/TransactionTypePath' - $ref: '#/components/parameters/TransactionIdPath' tags: - Transactions responses: '200': description: A successful response content: application/json: schema: $ref: '#/components/schemas/TransactionResponse' examples: PendingInvestment: value: transactionId: '11' transactionType: INVESTMENT description: Investment into Fundrise Offering amount: '10000.00' transactionDate: '2023-02-15T00:00:00.000-05:00' offerings: - offeringId: '24' offeringName: Flagship Fund sharePrice: '10.04' shares: '996.015936' status: PENDING isCancellable: true debitCreditMemo: CREDIT SettlingInvestment: value: transactionId: '11' transactionType: INVESTMENT description: Investment into Fundrise Offering amount: '10000.00' transactionDate: '2023-02-15T00:00:00.000-05:00' offerings: - offeringId: '24' offeringName: Flagship Fund sharePrice: '10.04' shares: '996.015936' status: COMPLETE isCancellable: false debitCreditMemo: CREDIT PendingShareLiquidationRequest: value: transactionId: '13' transactionType: LIQUIDATION description: Liquidation request of Fundrise Offering transactionDate: '2023-02-20T00:00:00.000-05:00' offerings: - offeringId: '24' offeringName: Flagship Fund shares: '300.015936' status: PENDING isCancellable: true debitCreditMemo: DEBIT '401': $ref: '#/components/responses/401' '403': $ref: '#/components/responses/403' '404': description: Transaction not found or account does not own transaction content: application/json: schema: $ref: '#/components/schemas/FundriseConnectError' examples: TransactionNotFound: value: referenceId: ed8583b9-6cd9-43ed-ad46-c7c52fff0c34 code: '200105' message: Transaction does not exist or account does not own transaction '500': $ref: '#/components/responses/500' /v1/account/{accountId}/transactions: get: security: - ClientBearerAuthentication: [] summary: Get Transactions description: 'Returns all Transactions for the supplied accountId on behalf of the currently authenticated Client. Transactions may be filtered on the optional `TransactionType` query parameter. ' operationId: GetTransactions parameters: - $ref: '#/components/parameters/AccountIdPath' - $ref: '#/components/parameters/TransactionTypeQuery' tags: - Transactions responses: '200': description: A successful response content: application/json: schema: type: array items: $ref: '#/components/schemas/TransactionResponse' examples: TransactionsResponse: value: - transactionId: '11' transactionType: INVESTMENT description: Investment into Fundrise Offering amount: '10000.00' transactionDate: '2023-02-15T00:00:00.000-05:00' offerings: - offeringId: '24' offeringName: Flagship Fund sharePrice: '10.04' shares: '996.015936' status: PENDING isCancellable: true debitCreditMemo: CREDIT - transactionId: '12' transactionType: INVESTMENT description: Investment into Fundrise Offering amount: '10000.00' transactionDate: '2023-02-15T00:00:00.000-05:00' offerings: - offeringId: '24' offeringName: Flagship Fund sharePrice: '10.04' shares: '996.015936' status: PENDING isCancellable: false debitCreditMemo: CREDIT - transactionId: '13' transactionType: LIQUIDATION description: Liquidation request of Fundrise Offering transactionDate: '2023-02-20T00:00:00.000-05:00' offerings: - offeringId: '24' offeringName: Flagship Fund shares: '300.015936' status: PENDING isCancellable: true debitCreditMemo: DEBIT - transactionId: '14' transactionType: LIQUIDATION description: Liquidation request of Fundrise Offering transactionDate: '2023-02-20T00:00:00.000-05:00' offerings: - offeringId: '24' offeringName: Flagship Fund shares: '300.015936' status: FAILED isCancellable: false debitCreditMemo: DEBIT - transactionId: '15' transactionType: LIQUIDATION description: Liquidation of Fundrise Offering amount: '10000.15' transactionDate: '2023-02-20T00:00:00.000-05:00' offerings: - offeringId: '24' offeringName: Flagship Fund sharePrice: '10.00' shares: '300.015936' amount: '3000.15' - offeringId: '25' offeringName: Income Interval Fund sharePrice: '10.00' shares: '700.000000' amount: '7000.00' status: COMPLETE isCancellable: false debitCreditMemo: DEBIT - transactionId: '16' transactionType: DIVIDEND description: Dividend from Fundrise Offering amount: '200.85' transactionDate: '2023-04-02T00:00:00.000-05:00' offerings: - offeringId: '1' offeringName: Flagship Fund status: COMPLETE isCancellable: false debitCreditMemo: DEBIT '401': $ref: '#/components/responses/401' '403': $ref: '#/components/responses/403' '500': $ref: '#/components/responses/500'