openapi: 3.1.0 info: description: '**Dinari API for enterprise usage.** Dinari''s dShares let businesses offer tokenized access to stocks to their customers through an easy-to-use API. Integrate Dinari''s API and offer over a hundred stocks and ETFs to your customers. ' contact: email: hello@dinari.com license: name: Contact us termsOfService: https://dinari.com/terms title: Dinari Enterprise Accounts API version: v20260709-097f56a servers: - url: https://api-enterprise.sbt.dinari.com tags: - name: Accounts description: '**`Accounts` represent the financial accounts of an `Entity`.** `Orders`, dividends, and other transactions are associated with an `Account`.' paths: /api/v2/entities/{entity_id}/accounts: parameters: - in: path name: entity_id required: true schema: type: string format: uuid get: responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/PaginatedAccountResponse' default: $ref: '#/components/responses/DEFAULT_ERROR' '422': $ref: '#/components/responses/UNPROCESSABLE_ENTITY' parameters: - in: query name: limit description: Number of results to return schema: type: integer default: 20 minimum: 20 maximum: 100 required: false - in: query name: order description: Sort order schema: default: asc type: string enum: - asc - desc required: false - in: query name: next description: Cursor for next page schema: type: - string - 'null' required: false - in: query name: previous description: Cursor for previous page schema: type: - string - 'null' required: false tags: - Accounts summary: Get Accounts for Entity description: Get a list of all `Accounts` that belong to a specific `Entity`. This `Entity` represents your organization itself, or an individual customer of your organization. operationId: getEntityAccounts security: - ApiKeyId: [] ApiSecretKey: [] post: responses: '422': $ref: '#/components/responses/UNPROCESSABLE_ENTITY' '201': description: Created content: application/json: schema: $ref: '#/components/schemas/Account1' default: $ref: '#/components/responses/DEFAULT_ERROR' requestBody: required: false content: application/json: schema: $ref: '#/components/schemas/CreateAccountInput' tags: - Accounts summary: Create Account for Entity description: Create a new `Account` for a specific `Entity`. This `Entity` represents your organization itself, or an individual customer of your organization. operationId: createEntityAccounts security: - ApiKeyId: [] ApiSecretKey: [] /api/v2/accounts/{account_id}: parameters: - in: path name: account_id required: true schema: type: string format: uuid get: responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/Account1' default: $ref: '#/components/responses/DEFAULT_ERROR' tags: - Accounts summary: Get Account by ID description: Get a specific `Account` by its ID. operationId: getAccount security: - ApiKeyId: [] ApiSecretKey: [] /api/v2/accounts/{account_id}/deactivate: parameters: - in: path name: account_id required: true schema: type: string format: uuid post: responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/Account1' default: $ref: '#/components/responses/DEFAULT_ERROR' tags: - Accounts summary: Deactivate Account description: Set the `Account` to be inactive. Inactive accounts cannot be used for trading. operationId: createAccountDeactivation security: - ApiKeyId: [] ApiSecretKey: [] /api/v2/accounts/{account_id}/portfolio: parameters: - in: path name: account_id required: true schema: type: string format: uuid get: parameters: - in: query name: page description: The page number. schema: type: - integer - 'null' minimum: 1 required: false - in: query name: page_size description: The number of stocks to return per page, maximum number is 200. schema: type: - integer - 'null' minimum: 1 maximum: 200 required: false responses: '422': $ref: '#/components/responses/UNPROCESSABLE_ENTITY' '200': description: OK content: application/json: schema: $ref: '#/components/schemas/Portfolio' default: $ref: '#/components/responses/DEFAULT_ERROR' tags: - Accounts summary: Get Portfolio description: Get the portfolio of the `Account`, excluding cash equivalents such as stablecoins. operationId: getAccountPortfolio security: - ApiKeyId: [] ApiSecretKey: [] /api/v2/accounts/{account_id}/cash: parameters: - in: path name: account_id required: true schema: type: string format: uuid get: responses: '200': description: OK content: application/json: schema: type: array items: $ref: '#/components/schemas/PaymentTokenBalance' default: $ref: '#/components/responses/DEFAULT_ERROR' tags: - Accounts summary: Get Cash Balances description: Get the cash balances of the `Account`, including stablecoins and other cash equivalents. operationId: getAccountCash security: - ApiKeyId: [] ApiSecretKey: [] /api/v2/accounts/{account_id}/interest_payments: parameters: - in: path name: account_id required: true schema: type: string format: uuid get: parameters: - in: query name: start_date description: Start date, inclusive, in US Eastern time zone. ISO 8601 format, YYYY-MM-DD. schema: type: string format: date required: true - in: query name: end_date description: End date, exclusive, in US Eastern time zone. ISO 8601 format, YYYY-MM-DD. schema: type: string format: date required: true - in: query name: limit description: Number of results to return schema: type: integer default: 20 minimum: 20 maximum: 100 required: false - in: query name: order description: Sort order schema: default: asc type: string enum: - asc - desc required: false - in: query name: next description: Cursor for next page schema: type: - string - 'null' required: false - in: query name: previous description: Cursor for previous page schema: type: - string - 'null' required: false responses: '422': $ref: '#/components/responses/UNPROCESSABLE_ENTITY' '200': description: OK content: application/json: schema: $ref: '#/components/schemas/PaginatedInterestPaymentResponse' default: $ref: '#/components/responses/DEFAULT_ERROR' tags: - Accounts summary: Get Interest Payments description: ' Get interest payments made to the `Account` from yield-bearing cash holdings. Currently, the only yield-bearing stablecoin accepted by Dinari is [USD+](https://usd.dinari.com/). ' operationId: getAccountInterestPayments security: - ApiKeyId: [] ApiSecretKey: [] /api/v2/accounts/{account_id}/dividend_payments: parameters: - in: path name: account_id required: true schema: type: string format: uuid get: parameters: - in: query name: start_date description: Start date, inclusive, in US Eastern time zone. ISO 8601 format, YYYY-MM-DD. schema: type: string format: date required: true - in: query name: end_date description: End date, exclusive, in US Eastern time zone. ISO 8601 format, YYYY-MM-DD. schema: type: string format: date required: true - in: query name: stock_id description: Optional ID of the `Stock` to filter by schema: type: - string - 'null' format: uuid required: false - in: query name: limit description: Number of results to return schema: type: integer default: 20 minimum: 20 maximum: 100 required: false - in: query name: order description: Sort order schema: default: asc type: string enum: - asc - desc required: false - in: query name: next description: Cursor for next page schema: type: - string - 'null' required: false - in: query name: previous description: Cursor for previous page schema: type: - string - 'null' required: false responses: '422': $ref: '#/components/responses/UNPROCESSABLE_ENTITY' '200': description: OK content: application/json: schema: $ref: '#/components/schemas/PaginatedDividendPaymentResponse' default: $ref: '#/components/responses/DEFAULT_ERROR' tags: - Accounts summary: Get Dividend Payments description: Get dividend payments made to the `Account` from dividend-bearing stock holdings. operationId: getAccountDividendPayments security: - ApiKeyId: [] ApiSecretKey: [] /api/v2/accounts/{account_id}/faucet: parameters: - in: path name: account_id required: true schema: type: string format: uuid post: responses: '422': $ref: '#/components/responses/UNPROCESSABLE_ENTITY' '200': description: OK default: $ref: '#/components/responses/DEFAULT_ERROR' requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/FaucetInput' tags: - Accounts summary: Sandbox Faucet description: ' Mints 1,000 mockUSD sandbox payment tokens to the `Wallet` connected to the `Account`. This feature is only supported in sandbox mode. ' operationId: createAccountFaucet security: - ApiKeyId: [] ApiSecretKey: [] /api/v2/accounts/{account_id}/activities/brokerage: parameters: - in: path name: account_id required: true schema: type: string format: uuid get: parameters: - in: query name: page_size description: The maximum number of entries to return in the response. Defaults to 100. schema: type: - integer - 'null' minimum: 1 maximum: 100 required: false - in: query name: page_token description: Pagination token. Set to the `id` field of the last Activity returned in the previous page to get the next page of results. schema: type: - string - 'null' required: false responses: '422': $ref: '#/components/responses/UNPROCESSABLE_ENTITY' '200': description: OK default: $ref: '#/components/responses/DEFAULT_ERROR' tags: - Accounts summary: Get Brokerage Account Activities description: ' Get a list of brokerage activities tied to the specified `Account`. **⚠️ ALPHA: This endpoint is in early development and subject to breaking changes.** ' operationId: getBrokerageAccountActivities security: - ApiKeyId: [] ApiSecretKey: [] /api/v2/accounts/{account_id}/token_transfers: parameters: - in: path name: account_id required: true schema: type: string format: uuid get: responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/PaginatedTokenTransferResponse' default: $ref: '#/components/responses/DEFAULT_ERROR' '422': $ref: '#/components/responses/UNPROCESSABLE_ENTITY' parameters: - in: query name: limit description: Number of results to return schema: type: integer default: 20 minimum: 20 maximum: 100 required: false - in: query name: order description: Sort order schema: default: asc type: string enum: - asc - desc required: false - in: query name: next description: Cursor for next page schema: type: - string - 'null' required: false - in: query name: previous description: Cursor for previous page schema: type: - string - 'null' required: false tags: - Accounts summary: Get TokenTransfers description: ' Get `TokenTransfer`s made from this `Account`. A `TokenTransfer` represents a transfer of tokens through the Dinari platform from one `Account` to another. As such, only `Account`s that are connected to Dinari-managed `Wallet`s can initiate `TokenTransfer`s. ' operationId: getTokenTransfers security: - ApiKeyId: [] ApiSecretKey: [] post: responses: '422': $ref: '#/components/responses/UNPROCESSABLE_ENTITY' '201': description: Created content: application/json: schema: $ref: '#/components/schemas/TokenTransfer' default: $ref: '#/components/responses/DEFAULT_ERROR' requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/CreateManagedTokenTransferInput' tags: - Accounts summary: Create TokenTransfer description: ' Creates a `TokenTransfer` from this `Account`. A `TokenTransfer` represents a transfer of tokens through the Dinari platform from one `Account` to another. As such, only `Account`s that are connected to Dinari-managed `Wallet`s can initiate `TokenTransfer`s. ' operationId: createTokenTransfers security: - ApiKeyId: [] ApiSecretKey: [] /api/v2/accounts/{account_id}/token_transfers/{transfer_id}: parameters: - in: path name: account_id required: true schema: type: string format: uuid - in: path name: transfer_id required: true schema: type: string format: uuid get: responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/TokenTransfer' default: $ref: '#/components/responses/DEFAULT_ERROR' tags: - Accounts summary: Get TokenTransfer by ID description: ' Get a specific `TokenTransfer` made from this `Account` by its ID. A `TokenTransfer` represents a transfer of tokens through the Dinari platform from one `Account` to another. As such, only `Account`s that are connected to Dinari-managed `Wallet`s can initiate `TokenTransfer`s. ' operationId: getTokenTransfer security: - ApiKeyId: [] ApiSecretKey: [] components: schemas: BaseOpenApi422Error: type: object properties: status: default: 422 enum: - 422 description: HTTP status code message: default: Unprocessable Entity enum: - Unprocessable Entity description: Human-readable message error_id: type: string description: Reference Id for Dinari support error: description: Additional context and information $ref: '#/components/schemas/BaseOpenApiBodyError' required: - error - error_id additionalProperties: false PaymentTokenBalance: type: object properties: chain_id: enum: - eip155:1 - eip155:42161 - eip155:8453 - eip155:81457 - eip155:98866 - eip155:999 - eip155:43114 - eip155:202110 description: CAIP-2 chain ID of the payment token. $ref: '#/components/schemas/ChainId' token_address: type: string format: eth_address description: Address of the payment token. amount: type: number description: Total amount of the payment token in the `Account`. symbol: type: string description: Symbol of the payment token. required: - amount - chain_id - symbol - token_address description: Balance of a payment token in an `Account`. BaseOpenApiFieldError: type: object properties: field_name: type: string description: Name of field with error field_error: type: string description: Description of error required: - field_error - field_name additionalProperties: false InterestPayment: type: object properties: payment_date: type: string format: date description: Date of interest payment in US Eastern time zone. ISO 8601 format, YYYY-MM-DD. amount: type: number description: Amount of interest paid. currency: type: string description: Currency in which the interest was paid (e.g. USD). required: - amount - currency - payment_date description: An object representing an interest payment from stablecoin holdings. PaginatedDividendPaymentResponse: type: object properties: _sv: default: PaginatedDividendPaymentResponse:v1 enum: - PaginatedDividendPaymentResponse:v1 description: Version data: type: array description: List of DividendPayment items: $ref: '#/components/schemas/DividendPayment' pagination_metadata: description: Pagination metadata $ref: '#/components/schemas/BaseOpenApiPaginationMetadata' required: - data - pagination_metadata additionalProperties: false BaseOpenApiPaginationMetadata: type: object properties: previous: type: string description: Cursor for previous page next: type: string description: Cursor for next page additionalProperties: false Account: type: object properties: id: type: string format: uuid description: Unique ID for the `Account`. entity_id: type: string format: uuid description: ID for the `Entity` that owns the `Account`. is_active: type: boolean description: Indicates whether the `Account` is active. created_dt: type: string format: date-time description: Datetime when the `Account` was created. ISO 8601 timestamp. jurisdiction: description: Jurisdiction of the `Account`. $ref: '#/components/schemas/Jurisdiction1' brokerage_account_id: type: - string - 'null' description: ID of the brokerage account associated with the `Account`. required: - created_dt - entity_id - id - is_active - jurisdiction description: Information about an `Account` owned by an `Entity`. PaginatedAccountResponse: type: object properties: _sv: default: PaginatedAccountResponse:v1 enum: - PaginatedAccountResponse:v1 description: Version data: type: array description: List of Account items: $ref: '#/components/schemas/Account' pagination_metadata: description: Pagination metadata $ref: '#/components/schemas/BaseOpenApiPaginationMetadata' required: - data - pagination_metadata additionalProperties: false Jurisdiction1: type: string enum: - BASELINE - US CreateAccountInput: type: object properties: jurisdiction: default: BASELINE description: Jurisdiction of the `Account`. $ref: '#/components/schemas/Jurisdiction' description: Input parameters for creating an `Account`. Jurisdiction: type: string enum: - BASELINE - US PaginatedInterestPaymentResponse: type: object properties: _sv: default: PaginatedInterestPaymentResponse:v1 enum: - PaginatedInterestPaymentResponse:v1 description: Version data: type: array description: List of InterestPayment items: $ref: '#/components/schemas/InterestPayment' pagination_metadata: description: Pagination metadata $ref: '#/components/schemas/BaseOpenApiPaginationMetadata' required: - data - pagination_metadata additionalProperties: false TokenTransfer: type: object properties: id: type: string format: uuid description: ID of the token transfer. sender_account_id: type: string format: uuid description: ID of the account from which the tokens are transferred. recipient_account_id: type: string format: uuid description: ID of the account to which the tokens are transferred. chain_id: description: CAIP-2 chain ID of the blockchain that the transfer is made on. type: string enum: - eip155:1 - eip155:42161 - eip155:8453 - eip155:81457 - eip155:98866 - eip155:999 - eip155:43114 - eip155:11155111 - eip155:421614 - eip155:84532 - eip155:168587773 - eip155:98867 - eip155:998 - eip155:43113 - eip155:202110 - eip155:179205 - eip155:179202 - eip155:98865 - eip155:7887 token_address: type: string format: eth_address description: Address of the token being transferred. quantity: type: number description: Quantity of the token being transferred. status: description: Status of the token transfer. type: string enum: - PENDING - IN_PROGRESS - COMPLETE - FAILED created_dt: type: string format: date-time description: Datetime at which the transfer was created. ISO 8601 timestamp. updated_dt: type: string format: date-time description: Datetime at which the transfer was last updated. ISO 8601 timestamp. transaction_hash: type: - string - 'null' format: hex_string pattern: 0x[a-fA-F0-9]+ description: Transaction hash of the transfer on the blockchain, if applicable. This is only present if the transfer has been executed on-chain. required: - chain_id - created_dt - id - quantity - recipient_account_id - sender_account_id - status - token_address - updated_dt description: Information about a token transfer between accounts. FaucetInput: type: object properties: chain_id: enum: - eip155:421614 - eip155:11155111 - eip155:84532 - eip155:168587773 - eip155:98867 - null description: CAIP-2 chain ID of blockchain in which to mint the sandbox payment tokens. If none specified, defaults to eip155:421614. If the `Account` is linked to a Dinari-managed `Wallet`, only eip155:42161 is allowed. $ref: '#/components/schemas/ChainId' description: Input parameters for minting sandbox payment tokens. ChainId: type: string enum: - eip155:1 - eip155:42161 - eip155:8453 - eip155:81457 - eip155:98866 - eip155:999 - eip155:43114 - eip155:11155111 - eip155:421614 - eip155:84532 - eip155:168587773 - eip155:98867 - eip155:998 - eip155:43113 - eip155:202110 - eip155:179205 - eip155:179202 - eip155:98865 - eip155:7887 DividendPayment: type: object properties: stock_id: type: string format: uuid description: ID of the `Stock` for which the dividend was paid. payment_date: type: string format: date description: Date the dividend was distributed to the account. ISO 8601 format, YYYY-MM-DD. amount: type: number description: Amount of the dividend paid. currency: type: string description: Currency in which the dividend was paid. (e.g. USD) required: - amount - currency - payment_date - stock_id description: Represents a dividend payment event for an `Account`. Portfolio: type: object properties: assets: type: array description: Balance details for all owned `Stocks`. items: $ref: '#/components/schemas/DshareBalance' required: - assets description: Balance information of `Stock` assets in your `Account`. PaginatedTokenTransferResponse: type: object properties: _sv: default: PaginatedTokenTransferResponse:v1 enum: - PaginatedTokenTransferResponse:v1 description: Version data: type: array description: List of TokenTransfer items: $ref: '#/components/schemas/TokenTransfer' pagination_metadata: description: Pagination metadata $ref: '#/components/schemas/BaseOpenApiPaginationMetadata' required: - data - pagination_metadata additionalProperties: false DshareBalance: type: object properties: chain_id: enum: - eip155:1 - eip155:42161 - eip155:8453 - eip155:81457 - eip155:98866 - eip155:999 - eip155:43114 - eip155:202110 description: CAIP-2 chain ID of the blockchain where the dShare asset token exists. $ref: '#/components/schemas/ChainId' token_address: type: string format: eth_address description: Address of the dShare asset token. amount: type: number description: Total amount of the dShare asset token in the `Account`. symbol: type: string description: Token symbol of the dShare asset token. stock_id: type: string format: uuid description: ID of the underlying `Stock` represented by the dShare asset token. required: - amount - chain_id - stock_id - symbol - token_address description: Balance of a dShare in an `Account`. BaseOpenApiBodyError: type: object properties: field_errors: type: array description: Contains list of field-specific errors items: $ref: '#/components/schemas/BaseOpenApiFieldError' body_error: type: - string - 'null' description: Description of body-specific error (ex. JSON issues) required: - field_errors additionalProperties: false CreateManagedTokenTransferInput: type: object properties: recipient_account_id: type: string format: uuid description: ID of the recipient account to which the tokens will be transferred. token_address: type: string format: eth_address description: Address of the token to transfer. quantity: type: number minimum: '0' description: Quantity of the token to transfer. required: - quantity - recipient_account_id - token_address description: Input parameters for creating a token transfer from a managed account. BaseOpenApiError: type: object properties: status: type: integer description: HTTP status code message: type: string description: Human-readable message error_id: type: string description: Reference Id for Dinari support error: description: Additional context and information required: - error_id - message - status additionalProperties: false Account1: type: object properties: id: type: string format: uuid description: Unique ID for the `Account`. entity_id: type: string format: uuid description: ID for the `Entity` that owns the `Account`. is_active: type: boolean description: Indicates whether the `Account` is active. created_dt: type: string format: date-time description: Datetime when the `Account` was created. ISO 8601 timestamp. jurisdiction: description: Jurisdiction of the `Account`. $ref: '#/components/schemas/Jurisdiction' brokerage_account_id: type: - string - 'null' description: ID of the brokerage account associated with the `Account`. required: - created_dt - entity_id - id - is_active - jurisdiction description: Information about an `Account` owned by an `Entity`. responses: UNPROCESSABLE_ENTITY: description: Unprocessable Entity content: application/json: schema: $ref: '#/components/schemas/BaseOpenApi422Error' DEFAULT_ERROR: description: Default error response content: application/json: schema: $ref: '#/components/schemas/BaseOpenApiError' securitySchemes: ApiKeyId: type: apiKey in: header name: X-API-Key-Id description: The API key ID provided on the [Partners Dashboard](https://partners.dinari.com). ApiSecretKey: type: apiKey in: header name: X-API-Secret-Key description: API Secret Key that is only shown once at API Key creation.