openapi: 3.0.0 info: title: Fireblocks Blockchains and Assets Approval Requests Trading (Beta) API description: 'Fireblocks provides a suite of applications to manage digital asset operations and a complete development platform to build your business on the blockchain. - Visit our website for more information: [Fireblocks Website](https://fireblocks.com) - Visit our developer docs: [Fireblocks DevPortal](https://developers.fireblocks.com) ' version: 1.8.0 contact: email: developers@fireblocks.com servers: - url: https://api.fireblocks.io/v1 description: Fireblocks Production Environment Base URL - url: https://sandbox-api.fireblocks.io/v1 description: Fireblocks Sandbox Environment Base URL security: [] tags: - name: Trading (Beta) paths: /trading/providers: get: operationId: getTradingProviders summary: Get providers x-rate-limit-category: query tags: - Trading (Beta) parameters: - name: pageSize in: query required: false description: Page size for pagination. schema: type: integer minimum: 1 maximum: 100 default: 20 - name: pageCursor in: query required: false description: Page cursor for pagination. schema: type: string description: 'Retrieve a list of all available external providers supporting trading activities through the platform. **Note:** These endpoints are currently in beta and might be subject to changes. If you want to participate and learn more about the Fireblocks Trading, please contact your Fireblocks Customer Success Manager or send an email to CSM@fireblocks.com. **Endpoint Permission:** Owner, Admin, Non-Signing Admin, Signer, Approver, Editor, Viewer. ' responses: 200: description: Providers response content: application/json: schema: $ref: '#/components/schemas/ProvidersListResponse' 401: description: Unauthorized. Missing / invalid JWT token in Authorization header. content: application/json: schema: $ref: '#/components/schemas/TradingErrorResponse' 5XX: description: Internal error. content: application/json: schema: $ref: '#/components/schemas/TradingErrorResponse' /trading/quotes: post: operationId: createQuote summary: Create a quote x-rate-limit-category: write parameters: - $ref: '#/components/parameters/X-Idempotency-Key' tags: - Trading (Beta) description: 'Generate a time-limited quote for asset conversion, providing exchange rate and amount calculations. **Note:** These endpoints are currently in beta and might be subject to changes. If you want to participate and learn more about the Fireblocks Trading, please contact your Fireblocks Customer Success Manager or send an email to CSM@fireblocks.com. **Endpoint Permissions:** Owner, Admin, Non-Signing Admin, Signer, Editor. ' requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/CreateQuote' responses: 201: description: Quote created content: application/json: schema: $ref: '#/components/schemas/QuotesResponse' 404: description: Not found content: application/json: schema: $ref: '#/components/schemas/TradingErrorResponse' 401: description: Unauthorized. Missing / invalid JWT token in Authorization header. content: application/json: schema: $ref: '#/components/schemas/TradingErrorResponse' 5XX: description: Internal error. content: application/json: schema: $ref: '#/components/schemas/TradingErrorResponse' /trading/orders: post: operationId: createOrder summary: Create an order x-rate-limit-category: write parameters: - $ref: '#/components/parameters/X-Idempotency-Key' tags: - Trading (Beta) description: 'Create an order to buy or sell an asset. If no source is given, an external source will be use. **Note:** These endpoints are currently in beta and might be subject to changes. If you want to participate and learn more about the Fireblocks Trading, please contact your Fireblocks Customer Success Manager or send an email to CSM@fireblocks.com. **Endpoint Permissions:** Owner, Admin, Non-Signing Admin, Signer, Editor. ' requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/CreateOrderRequest' responses: 202: description: Order creation response content: application/json: schema: $ref: '#/components/schemas/OrderDetails' 404: description: Not found content: application/json: schema: $ref: '#/components/schemas/TradingErrorResponse' 401: description: Unauthorized. Missing / invalid JWT token in Authorization header. content: application/json: schema: $ref: '#/components/schemas/TradingErrorResponse' 5XX: description: Internal error. content: application/json: schema: $ref: '#/components/schemas/TradingErrorResponse' get: operationId: getOrders summary: Get orders x-rate-limit-category: read tags: - Trading (Beta) description: 'Retrieve a paginated list of orders with optional filtering by account, provider, status, and time range. **Note:** These endpoints are currently in beta and might be subject to changes. If you want to participate and learn more about the Fireblocks Trading, please contact your Fireblocks Customer Success Manager or send an email to CSM@fireblocks.com. **Endpoint Permissions:** Owner, Admin, Non-Signing Admin, Signer, Approver, Editor, Viewer. ' parameters: - name: pageSize in: query required: true description: pageSize for pagination. schema: type: integer minimum: 1 maximum: 100 - name: pageCursor in: query required: false schema: type: string minLength: 1 - name: order in: query required: false description: ASC / DESC ordering (default DESC) schema: type: string default: DESC enum: - ASC - DESC - name: accountId in: query required: false explode: true style: form description: Filter by accountId. schema: type: array items: type: string minLength: 1 - name: providerId in: query required: false explode: true style: form description: Filter by providerId. schema: type: array items: type: string minLength: 1 - name: statuses in: query required: false explode: true style: form description: Filter by order status. schema: type: array items: $ref: '#/components/schemas/OrderStatus' - name: startTime in: query schema: type: integer minimum: 0 - name: endTime in: query schema: type: integer minimum: 0 - name: assetConversionType in: query schema: type: string enum: - DIGITAL_ONLY - FIAT description: Filter by asset conversion type. responses: 200: description: Orders response content: application/json: schema: $ref: '#/components/schemas/GetOrdersResponse' 404: description: Not found content: application/json: schema: $ref: '#/components/schemas/TradingErrorResponse' 401: description: Unauthorized. Missing / invalid JWT token in Authorization header. content: application/json: schema: $ref: '#/components/schemas/TradingErrorResponse' 5XX: description: Internal error. content: application/json: schema: $ref: '#/components/schemas/TradingErrorResponse' /trading/orders/{orderId}: get: operationId: getOrder summary: Get order details x-rate-limit-category: read tags: - Trading (Beta) description: 'Retrieve detailed information about a specific order by its ID. **Note:** These endpoints are currently in beta and might be subject to changes. If you want to participate and learn more about the Fireblocks Trading, please contact your Fireblocks Customer Success Manager or send an email to CSM@fireblocks.com. **Endpoint Permissions:** Owner, Admin, Non-Signing Admin, Signer, Approver, Editor, Viewer. ' parameters: - name: orderId in: path required: true description: The ID of the order to fetch. schema: type: string minLength: 1 responses: 200: description: Order response content: application/json: schema: $ref: '#/components/schemas/OrderDetails' 404: description: Not found content: application/json: schema: $ref: '#/components/schemas/TradingErrorResponse' 401: description: Unauthorized. Missing / invalid JWT token in Authorization header. content: application/json: schema: $ref: '#/components/schemas/TradingErrorResponse' 5XX: description: Internal error. content: application/json: schema: $ref: '#/components/schemas/TradingErrorResponse' components: schemas: Fee: allOf: - type: object properties: feeType: type: string enum: - ORDER - NETWORK - SPREAD description: 'The type of fee, such as ORDER, NETWORK, or SPREAD. - `ORDER`: Fee for executing the order. - `NETWORK`: Fee for network transactions. - `SPREAD`: Fee for the difference between buy and sell prices. ' assetId: type: string description: The asset identifier for the fee. amountType: type: string enum: - FIXED - BPS description: The type of amount for the fee, either FIXED or BPS (basis points). required: - feeType - assetId - amountType - discriminator: propertyName: amountType mapping: FIXED: ./FixedFee.yml BPS: ./BpsFee.yml oneOf: - $ref: '#/components/schemas/FixedFee' - $ref: '#/components/schemas/BpsFee' PostOrderSettlement: type: object properties: type: type: string enum: - POST_ORDER required: - type example: type: POST_ORDER DirectAccess: type: object properties: type: type: string enum: - PROVIDER description: Indicates this uses direct provider access providerId: type: string description: The ID of the provider required: - type - providerId example: type: PROVIDER providerId: uniswap-v3-provider ExternalAccount: type: object properties: type: type: string enum: - EXTERNAL required: - type example: type: EXTERNAL PersonalIdentification: type: object properties: externalReferenceId: type: string entityType: type: string enum: - INDIVIDUAL participantRelationshipType: $ref: '#/components/schemas/ParticipantRelationshipType' fullName: type: object properties: firstName: type: string lastName: type: string required: - firstName - lastName dateOfBirth: type: string format: date postalAddress: $ref: '#/components/schemas/PostalAddress' required: - externalReferenceId - entityType - participantRelationshipType - fullName - dateOfBirth - postalAddress example: externalReferenceId: person_ref_7f3e2d1c4b8a5e9f entityType: INDIVIDUAL participantRelationshipType: FirstParty fullName: firstName: Alexander lastName: Johnson dateOfBirth: '1985-03-15' postalAddress: streetName: Oak Street buildingNumber: '742' postalCode: '90210' city: Beverly Hills subdivision: CA district: Los Angeles County country: US ProviderID: type: object properties: providerId: type: string description: The ID of the provider associated with the account. required: - providerId example: providerId: prov_8c3f1a4b2d6e9f7c OneTimeAddressReference: type: object properties: type: type: string enum: - ONE_TIME_ADDRESS address: type: string tag: type: string required: - type - address example: type: ONE_TIME_ADDRESS address: 1A1zP1eP5QGefi2DMPTfTL5SLmv7DivfNa tag: destination-memo-123 TradingProvider: oneOf: - $ref: '#/components/schemas/AccountBasedAccessProvider' - $ref: '#/components/schemas/DirectAccessProvider' ParticipantsIdentification: description: KYC/AML participant identification type: object properties: originator: $ref: '#/components/schemas/Identification' beneficiary: $ref: '#/components/schemas/Identification' example: originator: externalReferenceId: user_123456 entityType: INDIVIDUAL participantRelationshipType: FirstParty fullName: firstName: John lastName: Smith dateOfBirth: '1985-03-15' postalAddress: streetName: Main Street buildingNumber: '123' postalCode: '10001' city: New York subdivision: NY district: Manhattan country: US beneficiary: externalReferenceId: user_789012 entityType: INDIVIDUAL participantRelationshipType: ThirdParty fullName: firstName: Alice lastName: Johnson dateOfBirth: '1990-07-22' postalAddress: streetName: Broadway buildingNumber: '456' postalCode: '10002' city: New York subdivision: NY district: Manhattan country: US MarketRequoteRequestDetails: type: object properties: type: type: string enum: - MARKET description: Indicates that the order should be re-quoted if the original quote is expired. This will lead to a market order. required: - type example: type: MARKET TransferRail: type: string description: "Transfer rail: \n* **BLOCKCHAIN** - Transfer over the public blockchain\n* **INTERNAL** - Internal transfer within the same account (e.g. sub-accounts or same api key)\n* **PEER** - Peer transfer within the same provider network\n* **SWIFT** - International wire transfer\n* **IBAN** - International Bank Account Number transfer\n* **US_WIRE** - Domestic wire transfer within the United States (e.g. FedWire)\n* **ACH** - Automated Clearing House transfer, typically takes longer but not as expensive as wire transfers\n* **SEPA** - Euro transfers within the SEPA zone\n* **SPEI** - Mexican interbank electronic payment system\n* **PIX** - Brazilian instant payment system\n* **LOCAL_BANK_TRANSFER_AFRICA** - Local bank transfers within Africa\n* **MOBILE_MONEY** - Mobile money transfers (e.g. M-Pesa)\n" enum: - BLOCKCHAIN - INTERNAL - PEER - SWIFT - IBAN - US_WIRE - ACH - SEPA - SPEI - PIX - LOCAL_BANK_TRANSFER_AFRICA - MOBILE_MONEY example: BLOCKCHAIN AccessType: discriminator: propertyName: type mapping: PROVIDER_ACCOUNT: '#/components/schemas/AccountAccess' PROVIDER: '#/components/schemas/DirectAccess' oneOf: - $ref: '#/components/schemas/AccountAccess' - $ref: '#/components/schemas/DirectAccess' Capability: type: string enum: - WITHDRAWALS - DEPOSITS - TRADING example: TRADING Settlement: description: Settlement configuration for the order discriminator: propertyName: type mapping: PREFUNDED: '#/components/schemas/PrefundedSettlement' DVP: '#/components/schemas/DVPSettlement' POST_ORDER: '#/components/schemas/PostOrderSettlement' oneOf: - $ref: '#/components/schemas/PrefundedSettlement' - $ref: '#/components/schemas/DVPSettlement' - $ref: '#/components/schemas/PostOrderSettlement' DirectAccessProvider: allOf: - $ref: '#/components/schemas/BaseProvider' - type: object properties: approved: type: boolean description: Whether the provider was approved for use hasTermsOfService: type: boolean description: Whether the provider has terms of service termsOfServiceUrl: type: string description: URL to the terms of service document required: - accountBased - hasTermsOfService example: id: prov_2f8e1d9b4c7a5e3f name: DirectTrade Solutions logo: https://example.com/logos/directtrade-solutions.png accountBased: false approved: true hasTermsOfService: true termsOfServiceUrl: https://directtrade.example.com/terms GetOrdersResponse: type: object properties: data: type: array items: $ref: '#/components/schemas/OrderSummary' total: type: integer description: Total number of orders matching the query. next: type: string description: A cursor for the next page of results, if available. required: - total - data example: data: - id: ord_5f8e2d9c1a7b4e36 via: type: PROVIDER_ACCOUNT providerId: prov_8c3f1a4b2d6e9f7c accountId: acc_5e9a2d1c4b7f3e8a baseAmount: '1000.00' quoteAmount: '0.02458' baseAssetId: USD quoteAssetId: BTC status: COMPLETED destination: type: VAULT_ACCOUNT accountId: vault_acc_7b2e5d8f1c4a9e3b createdAt: '2024-01-15T10:30:00.000Z' total: 1 next: cursor_next_page_token DVPSettlement: type: object description: Source/Destination accounts for the quote (must have for defi quotes) properties: type: type: string enum: - DVP sourceAccount: $ref: '#/components/schemas/SettlementSourceAccount' destinationAccount: $ref: '#/components/schemas/AccountReference' required: - type - sourceAccount - destinationAccount example: type: DVP sourceAccount: type: VAULT_ACCOUNT id: vault_acc_3f7e1d9b2c5a8e4f destinationAccount: type: VAULT_ACCOUNT id: vault_acc_7b2e5d8f1c4a9e3b QuotesResponse: type: object properties: quotes: type: array items: $ref: '#/components/schemas/Quote' example: quotes: - via: type: PROVIDER_ACCOUNT providerId: bridge-provider-001 accountId: acc_9f4e2d8b1c6a5e73 id: quote_8f2e4d1a9c5b7e3f type: COMMITTED baseAssetId: USDC quoteAssetId: BTC baseAmount: '1000.00' quoteAmount: '0.02458' priceImpact: 0.005 quoteMinAmount: '0.02450' expiresAt: '2024-01-15T10:35:00.000Z' executionSteps: - type: EXECUTE fee: feeType: ORDER assetId: USDC amountType: FIXED amount: '2.50' generalFees: - feeType: ORDER assetId: USDC amountType: FIXED amount: '2.50' ExecutionResponseDetails: discriminator: propertyName: type mapping: LIMIT: '#/components/schemas/LimitExecutionResponseDetails' MARKET: '#/components/schemas/MarketExecutionResponseDetails' QUOTE: '#/components/schemas/QuoteExecutionWithRequoteResponseDetails' oneOf: - $ref: '#/components/schemas/LimitExecutionResponseDetails' - $ref: '#/components/schemas/MarketExecutionResponseDetails' - $ref: '#/components/schemas/QuoteExecutionWithRequoteResponseDetails' PrefundedSettlement: type: object properties: type: type: string enum: - PREFUNDED destinationAccount: $ref: '#/components/schemas/AccountReference' required: - type - destinationAccount example: type: PREFUNDED destinationAccount: type: VAULT_ACCOUNT accountId: vault_acc_9f4e2d8b1c6a5e73 RetryRequoteRequestDetails: type: object properties: type: type: string enum: - RETRY description: Indicates that the order should be re-quoted if the original quote is expired, trying to match the original quote. count: type: number description: If quote is expired, how many times to re-generate new quotes to try having the order executed as in the original quote. minimum: 1 maximum: 10 slippageBps: type: number description: Slippage tolerance in basis points (bps) for quote orders - 1 is 0.01% and 10000 is 100% default: 1 minimum: 1 maximum: 10000 required: - type - count example: type: RETRY count: 1 slippageBps: 50 InternalReference: type: object properties: type: $ref: '#/components/schemas/PeerType' accountId: type: string required: - accountId - type example: type: VAULT_ACCOUNT accountId: vault_acc_9f3e2d1c4b8a7e5f LimitExecutionResponseDetails: allOf: - type: object properties: type: type: string enum: - LIMIT description: Order type for limit orders timeInForce: $ref: '#/components/schemas/TimeInForce' limitPrice: type: string description: Price for limit orders required: - type - timeInForce - limitPrice - $ref: '#/components/schemas/ExecutionResponseBaseDetails' example: type: LIMIT timeInForce: FOK limitPrice: '41000.00' side: BUY baseAmount: '1000.00' baseAssetId: USD quoteAssetId: BTC baseAssetRail: BLOCKCHAIN quoteAssetRail: BLOCKCHAIN Quote: allOf: - type: object properties: via: $ref: '#/components/schemas/AccessType' id: type: string type: type: string enum: - COMMITTED - INDICATIVE quoteAssetId: type: string baseAssetId: type: string baseAmount: type: string quoteAmount: type: string priceImpact: type: number quoteMinAmount: type: string executionSteps: type: array items: $ref: '#/components/schemas/ExecutionStepDetails' generalFees: type: array items: $ref: '#/components/schemas/Fee' side: type: string enum: - BUY - SELL description: Side of the order required: - via - id - baseAssetId - quoteAssetId - baseAmount - quoteAmount - type - side - discriminator: propertyName: type mapping: COMMITTED: '#/components/schemas/CommittedQuoteType' INDICATIVE: '#/components/schemas/IndicativeQuoteType' oneOf: - $ref: '#/components/schemas/CommittedQuoteType' - $ref: '#/components/schemas/IndicativeQuoteType' BlockchainTransfer: type: object properties: type: type: string enum: - BLOCKCHAIN txHash: type: string description: The hash of the transaction on the blockchain. amount: type: string description: The amount of the transaction. required: - amount example: type: BLOCKCHAIN txHash: '0x1a2b3c4d5e6f7a8b9c0d1e2f3a4b5c6d7e8f9a0b1c2d3e4f5a6b7c8d9e0f1a2b' amount: '250.75' MarketExecutionRequestDetails: allOf: - type: object properties: type: type: string enum: - MARKET description: Order type for market orders required: - type - $ref: '#/components/schemas/ExecutionRequestBaseDetails' example: type: MARKET baseAssetId: USD quoteAssetId: BTC side: BUY baseAmount: '1000.00' PostalAddress: type: object properties: streetName: type: string buildingNumber: type: string postalCode: type: string city: type: string subdivision: type: string district: type: string country: type: string required: - streetName - buildingNumber - postalCode - city - subdivision - district - country example: streetName: Fifth Avenue buildingNumber: '350' postalCode: '10118' city: New York subdivision: NY district: Manhattan country: US ParticipantRelationshipType: type: string enum: - FirstParty - SecondParty - ThirdParty example: FirstParty LimitExecutionRequestDetails: allOf: - type: object properties: type: type: string enum: - LIMIT description: Order type for limit orders timeInForce: $ref: '#/components/schemas/TimeInForce' limitPrice: type: string description: Price for limit orders required: - type - timeInForce - limitPrice - $ref: '#/components/schemas/ExecutionRequestBaseDetails' example: type: LIMIT timeInForce: GTC limitPrice: '41000.00' baseAssetId: USD quoteAssetId: BTC side: BUY baseAmount: '1000.00' ExecutionStepType: type: string enum: - APPROVE - PERMIT - CONTRACT_CALL - EXECUTE - SETTLEMENT example: EXECUTE PaymentInstructions: type: object properties: type: type: string enum: - IBAN - SWIFT - ACH - US_WIRE - SPEI - SEPA - PIX - LOCAL_BANK_TRANSFER_AFRICA - MOBILE_MONEY address: $ref: '#/components/schemas/AccountHolderDetails' referenceId: type: string required: - type - address - referenceId example: type: IBAN address: accountHolder: name: John Smith city: London country: GB subdivision: ENG address: 123 King's Road postalCode: SW3 4LX iban: GB82WEST12345698765432 referenceId: PAY_INST_abc123def456 ExecutionResponseBaseDetails: type: object properties: side: type: string enum: - BUY - SELL description: Side of the order default: BUY baseAmount: type: string description: Amount to convert baseAssetId: type: string description: Source asset identifier baseAssetRail: $ref: '#/components/schemas/TransferRail' quoteAssetId: type: string description: Target asset identifier quoteAssetRail: $ref: '#/components/schemas/TransferRail' required: - baseAmount - baseAssetId - quoteAssetId - side example: side: BUY baseAmount: '1000.00' baseAssetId: USDC baseAssetRail: BLOCKCHAIN quoteAssetId: BTC quoteAssetRail: BLOCKCHAIN CreateOrderRequest: type: object properties: via: $ref: '#/components/schemas/AccessType' executionRequestDetails: $ref: '#/components/schemas/ExecutionRequestDetails' settlement: $ref: '#/components/schemas/Settlement' participantsIdentification: $ref: '#/components/schemas/ParticipantsIdentification' customerInternalReferenceId: type: string description: Internal reference ID for the customer note: type: string maxLength: 512 description: Optional note for the order required: - via - executionRequestDetails - settlement example: via: type: PROVIDER_ACCOUNT providerId: prov_8c3f1a4b2d6e9f7c accountId: acc_5e9a2d1c4b7f3e8a executionRequestDetails: type: MARKET baseAssetId: USD quoteAssetId: BTC side: BUY baseAmount: '1000.00' settlement: type: DVP sourceAccount: type: VAULT_ACCOUNT id: vault_acc_3f7e1d9b2c5a8e4f destinationAccount: type: VAULT_ACCOUNT id: vault_acc_7b2e5d8f1c4a9e3b customerInternalReferenceId: order_ref_2024_001 note: Monthly investment order OrderDetails: type: object properties: id: type: string via: $ref: '#/components/schemas/AccessType' status: $ref: '#/components/schemas/OrderStatus' createdAt: type: string format: date-time updatedAt: type: string format: date-time receipt: $ref: '#/components/schemas/TransferReceipt' generalFees: type: array items: $ref: '#/components/schemas/Fee' executionSteps: type: array items: $ref: '#/components/schemas/ExecutionStep' executionResponseDetails: $ref: '#/components/schemas/ExecutionResponseDetails' settlement: $ref: '#/components/schemas/Settlement' participantsIdentification: $ref: '#/components/schemas/ParticipantsIdentification' paymentInstructions: type: array description: Payment instructions for the order, the client can use one of these to pay the order. items: $ref: '#/components/schemas/PaymentInstructions' createdBy: type: string description: The ID of the user who created the order customerInternalReferenceId: type: string description: Internal reference ID for the customer note: type: string maxLength: 512 description: Optional note for the Order expiresAt: type: string format: date-time required: - id - via - status - createdAt - createdBy - executionSteps - settlement - executionResponseDetails example: id: order_9f4e2d8b1c6a5e73 via: type: PROVIDER_ACCOUNT providerId: bridge-provider-001 accountId: acc_9f4e2d8b1c6a5e73 status: PROCESSING createdAt: '2024-01-15T10:30:00.000Z' updatedAt: '2024-01-15T10:30:30.000Z' receipt: type: BLOCKCHAIN txHash: '0x1234567890abcdef' amount: '0.02458' generalFees: - feeType: ORDER assetId: USDC amountType: FIXED amount: '5.00' executionSteps: - type: EXECUTE status: PROCESSING fee: feeType: NETWORK assetId: ETH amountType: FIXED amount: '0.01' txId: tx_abc123def456 executionResponseDetails: type: MARKET side: BUY baseAmount: '1000.00' baseAssetId: USDC quoteAssetId: BTC settlement: type: PREFUNDED destinationAccount: type: VAULT_ACCOUNT accountId: vault_acc_9f4e2d8b1c6a5e73 createdBy: user_123abc456def789 customerInternalReferenceId: order_ref_2024_001 note: Monthly investment order ExecutionStepError: type: string enum: - INTERNAL_ERROR - QUOTE_EXPIRED - INSUFFICIENT_OUTPUT_AMOUNT - INSUFFICIENT_FUNDS - LAST_TRANSACTION_FAILED - SWAP_APPROVAL_FAILED - PROVIDER_EXECUTION_ERROR example: INSUFFICIENT_FUNDS BusinessIdentification: type: object properties: externalReferenceId: type: string entityType: type: string enum: - BUSINESS participantRelationshipType: $ref: '#/components/schemas/ParticipantRelationshipType' businessName: type: string registrationNumber: type: string postalAddress: $ref: '#/components/schemas/PostalAddress' required: - externalReferenceId - entityType - participantRelationshipType - businessName - registrationNumber - postalAddress example: externalReferenceId: bus_ref_9f3e2d1c4b8a7e5f entityType: BUSINESS participantRelationshipType: COUNTERPARTY businessName: TechCorp Solutions LLC registrationNumber: TC-2023-001547 postalAddress: streetAddress: 789 Innovation Drive city: San Francisco state: CA postalCode: '94105' country: US ExecutionStep: type: object properties: type: $ref: '#/components/schemas/ExecutionStepType' status: $ref: '#/components/schemas/ExecutionStepStatusEnum' fee: $ref: '#/components/schemas/Fee' txId: type: string txHash: type: string error: $ref: '#/components/schemas/ExecutionStepError' required: - type - status example: type: EXECUTE status: PROCESSING fee: feeType: NETWORK assetId: ETH amountType: FIXED amount: '0.01' txId: tx_abc123def456 BpsFee: allOf: - type: object properties: amountType: type: string enum: - BPS amount: type: number minimum: 0 maximum: 10000 description: Fee in basis points (1 = 0.01%, 10000 = 100%) example: 50 required: - amountType - amount example: amountType: BPS amount: 50 CommittedQuoteType: type: object properties: type: type: string enum: - COMMITTED description: Indicates this is a committed quote expiresAt: type: string format: date-time description: ISO 8601 timestamp of the expiration time of the quote. required: - type - expiresAt example: type: COMMITTED expiresAt: '2024-01-15T14:30:00.000Z' OrderStatus: type: string enum: - CREATED - PENDING_USER_ACTION - PROCESSING - CANCELED - COMPLETED - FAILED example: PROCESSING ExecutionRequestDetails: description: Order execution details discriminator: propertyName: type mapping: LIMIT: '#/components/schemas/LimitExecutionRequestDetails' MARKET: '#/components/schemas/MarketExecutionRequestDetails' QUOTE: '#/components/schemas/QuoteExecutionWithRequoteRequestDetails' oneOf: - $ref: '#/components/schemas/LimitExecutionRequestDetails' - $ref: '#/components/schemas/MarketExecutionRequestDetails' - $ref: '#/components/schemas/QuoteExecutionWithRequoteRequestDetails' AccountBase: type: object properties: id: type: string description: The ID of the account name: type: string description: The name of the account required: - id - name example: id: acc_9f4e2d8b1c6a5e73 name: Main Trading Account ExecutionStepDetails: type: object properties: type: $ref: '#/components/schemas/ExecutionStepType' fee: $ref: '#/components/schemas/Fee' required: - type example: type: MARKET_EXECUTION fee: feeType: ORDER assetId: USD amountType: FIXED amount: '2.50' AccountAccess: type: object properties: type: type: string enum: - PROVIDER_ACCOUNT description: Indicates this uses account-based access providerId: type: string description: The ID of the provider accountId: type: string description: The ID of the account required: - type - accountId example: type: PROVIDER_ACCOUNT providerId: bridge-provider-001 accountId: acc_9f4e2d8b1c6a5e73 BaseProvider: type: object properties: id: type: string description: Unique identifier for the provider name: type: string description: Display name of the provider logo: type: string description: URL to the logo image of the provider accountBased: type: boolean description: Indicates whether the provider access model is through accounts or directly required: - id - name - accountBased example: id: prov_7b4e2d9f1c8a5e3b name: Global Exchange Partners logo: https://example.com/logos/global-exchange-partners.png accountBased: false OrderSummary: type: object properties: id: type: string via: $ref: '#/components/schemas/AccessType' side: type: string enum: - BUY - SELL description: Side of the order baseAmount: type: string quoteAmount: type: string baseAssetId: type: string quoteAssetId: type: string status: $ref: '#/components/schemas/OrderStatus' destination: $ref: '#/components/schemas/AccountReference' source: $ref: '#/components/schemas/SettlementSourceAccount' createdAt: type: string format: date-time required: - id - via - baseAmount - baseAssetId - quoteAssetId - status - destination - createdAt - side example: id: ord_5f8e2d9c1a7b4e36 via: type: PROVIDER_ACCOUNT providerId: prov_8c3f1a4b2d6e9f7c accountId: acc_5e9a2d1c4b7f3e8a side: BUY baseAmount: '1000.00' quoteAmount: '0.02458' baseAssetId: USD quoteAssetId: BTC status: COMPLETED destination: type: VAULT_ACCOUNT accountId: vault_acc_7b2e5d8f1c4a9e3b source: type: VAULT_ACCOUNT accountId: vault_acc_3f7e1d9b2c5a8e4f createdAt: '2024-01-15T10:30:00.000Z' SettlementSourceAccount: discriminator: propertyName: type mapping: VAULT_ACCOUNT: '#/components/schemas/PlatformAccount' CONNECTED_ACCOUNT: '#/components/schemas/PlatformAccount' FIAT_ACCOUNT: '#/components/schemas/PlatformAccount' EXTERNAL: '#/components/schemas/ExternalAccount' oneOf: - $ref: '#/components/schemas/PlatformAccount' - $ref: '#/components/schemas/ExternalAccount' MarketExecutionResponseDetails: allOf: - type: object properties: type: type: string enum: - MARKET description: Order type for market orders required: - type - $ref: '#/components/schemas/ExecutionResponseBaseDetails' example: type: MARKET side: BUY baseAmount: '1000.00' baseAssetId: USDC baseAssetRail: BLOCKCHAIN quoteAssetId: BTC quoteAssetRail: BLOCKCHAIN ExecutionStepStatusEnum: type: string enum: - WAITING - PROCESSING - COMPLETED - FAILED - CANCELLED example: PROCESSING Manifest: type: object properties: assetTypes: type: array items: type: string enum: - DIGITAL - FIAT capabilities: type: array items: $ref: '#/components/schemas/Capability' required: - assetTypes - capabilities example: assetTypes: - DIGITAL - FIAT capabilities: - SPOT_TRADING - LIMIT_ORDERS TransferReceipt: discriminator: propertyName: type mapping: BLOCKCHAIN: '#/components/schemas/BlockchainTransfer' FIAT: '#/components/schemas/FiatTransfer' oneOf: - $ref: '#/components/schemas/BlockchainTransfer' - $ref: '#/components/schemas/FiatTransfer' IndicativeQuoteType: type: object properties: type: type: string enum: - INDICATIVE description: Indicates this is an indicative quote required: - type example: type: INDICATIVE FiatTransfer: type: object properties: type: type: string enum: - FIAT amount: type: string description: The amount of the fiat transfer. referenceId: type: string description: The reference ID for the fiat transfer. required: - amount example: type: FIAT amount: '750.25' referenceId: fiat_ref_2024_003_789 TradingErrorResponse: type: object properties: error: type: object properties: type: type: string enum: - INTERNAL - AUTHENTICATION - AUTHORIZATION - VALIDATION - NOT_FOUND - UNPROCESSABLE_ENTITY - FORBIDDEN message: type: string errorCode: $ref: '#/components/schemas/ErrorCodes' required: - type - message required: - error example: error: type: VALIDATION message: 'Invalid base amount: must be greater than 0' errorCode: INVALID_AMOUNT AccountHolderDetails: type: object properties: name: description: Full name of the account holder. type: string city: type: string country: description: Country code, as specified in ISO 3166-1 alpha-2. type: string subdivision: description: Country administrative subdivision, as specified in ISO 3166-2. type: string address: description: Account holder street address. type: string postalCode: type: string required: - name example: name: John Smith city: New York country: US subdivision: NY address: 123 Wall Street, Apt 4B postalCode: '10005' PlatformAccount: type: object properties: type: type: string enum: - VAULT_ACCOUNT - CONNECTED_ACCOUNT - FIAT_ACCOUNT accountId: type: string required: - type - accountId example: type: VAULT_ACCOUNT accountId: vault_acc_5e9a2d1c4b7f3e8a PeerType: type: string enum: - VAULT_ACCOUNT - EXCHANGE_ACCOUNT - INTERNAL_WALLET - EXTERNAL_WALLET - FIAT_ACCOUNT example: VAULT_ACCOUNT Identification: discriminator: propertyName: entityType mapping: INDIVIDUAL: '#/components/schemas/PersonalIdentification' BUSINESS: '#/components/schemas/BusinessIdentification' oneOf: - $ref: '#/components/schemas/PersonalIdentification' - $ref: '#/components/schemas/BusinessIdentification' QuoteExecutionResponseDetails: allOf: - type: object properties: type: type: string enum: - QUOTE description: Order type for quote orders quoteId: type: string description: Quote ID for quote orders quoteAmount: type: string description: Quote amount for quote orders required: - type - quoteId - quoteAmount - $ref: '#/components/schemas/ExecutionResponseBaseDetails' example: type: QUOTE quoteId: quote_8f2e4d1a9c5b7e3f quoteAmount: '0.02458' side: BUY baseAmount: '1000.00' baseAssetId: USDC baseAssetRail: BLOCKCHAIN quoteAssetId: BTC quoteAssetRail: BLOCKCHAIN ExecutionRequestBaseDetails: type: object properties: side: type: string enum: - BUY - SELL description: Side of the order default: BUY baseAmount: type: string description: Amount to convert baseAssetId: type: string description: Source asset identifier baseAssetRail: $ref: '#/components/schemas/TransferRail' quoteAssetId: type: string description: Target asset identifier quoteAssetRail: $ref: '#/components/schemas/TransferRail' required: - baseAmount - baseAssetId - quoteAssetId - side example: side: BUY baseAmount: '1000.00' baseAssetId: USDC baseAssetRail: BLOCKCHAIN quoteAssetId: BTC quoteAssetRail: BLOCKCHAIN AccountReference: discriminator: propertyName: type mapping: VAULT_ACCOUNT: '#/components/schemas/InternalReference' EXCHANGE_ACCOUNT: '#/components/schemas/InternalReference' INTERNAL_WALLET: '#/components/schemas/InternalReference' EXTERNAL_WALLET: '#/components/schemas/InternalReference' FIAT_ACCOUNT: '#/components/schemas/InternalReference' ONE_TIME_ADDRESS: '#/components/schemas/OneTimeAddressReference' oneOf: - $ref: '#/components/schemas/InternalReference' - $ref: '#/components/schemas/OneTimeAddressReference' QuoteExecutionRequestDetails: type: object properties: type: type: string enum: - QUOTE description: Order type for quote orders quoteId: type: string description: Quote ID for quote orders required: - type - quoteId example: type: QUOTE quoteId: quote_8f2e4d1a9c5b7e3f ProvidersListResponse: type: object properties: data: type: array items: $ref: '#/components/schemas/TradingProvider' description: List of available providers total: type: integer description: Total number of providers matching the query. next: type: string description: A cursor for the next page of results, if available. required: - data - total example: data: - id: bridge-provider-001 name: Bridge Provider logo: https://example.com/logos/bridge.png accountBased: true manifest: assetTypes: - DIGITAL - FIAT capabilities: - TRADING - WITHDRAWALS connected: true accounts: - id: acc_9f4e2d8b1c6a5e73 name: Main Trading Account - id: uniswap-v3-provider name: Uniswap V3 logo: https://example.com/logos/uniswap.png accountBased: false approved: true hasTermsOfService: true termsOfServiceUrl: https://uniswap.org/terms total: 2 next: cursor_abc123def456 AccountBasedAccessProvider: allOf: - $ref: '#/components/schemas/BaseProvider' - type: object properties: manifest: $ref: '#/components/schemas/Manifest' connected: type: boolean description: Whether the provider is currently connected accounts: type: array items: $ref: '#/components/schemas/AccountBase' required: - accountBased - manifest - connected example: id: prov_9a2c4e8f7b1d3a6e name: Premium Trading Co logo: https://example.com/logos/premium-trading-co.png accountBased: true manifest: assetTypes: - DIGITAL - FIAT capabilities: - SPOT_TRADING connected: true accounts: - id: acc_5f8e2d9c1a7b4e36 name: Trading Account 1 description: Primary trading account ErrorCodes: type: string enum: - INVALID_TOKEN - MISSING_PARAMETER - INVALID_PARAMETER - RESOURCE_NOT_FOUND - INVALID_TIME_RANGE - UNAUTHORIZED - ACCOUNT_NOT_ACTIVE - UNMANAGED_WALLET_NOT_APPROVED example: INVALID_PARAMETER QuoteExecutionWithRequoteRequestDetails: allOf: - $ref: '#/components/schemas/QuoteExecutionRequestDetails' - type: object properties: reQuote: discriminator: propertyName: type mapping: MARKET: '#/components/schemas/MarketRequoteRequestDetails' RETRY: '#/components/schemas/RetryRequoteRequestDetails' oneOf: - $ref: '#/components/schemas/MarketRequoteRequestDetails' - $ref: '#/components/schemas/RetryRequoteRequestDetails' example: type: QUOTE quoteId: quote_8f2e4d1a9c5b7e3f reQuote: type: RETRY count: 1 slippageBps: 50 TimeInForce: type: string description: Time in force for limit orders enum: - FOK example: FOK CreateQuote: type: object properties: scope: type: array items: oneOf: - $ref: '#/components/schemas/AccountProviderID' - $ref: '#/components/schemas/ProviderID' baseAssetId: type: string baseAssetRail: $ref: '#/components/schemas/TransferRail' quoteAssetId: type: string quoteAssetRail: $ref: '#/components/schemas/TransferRail' baseAmount: type: string pattern: ^\d+(\.\d+)?$ description: The amount to convert from example: '100.00' slippageBps: type: number description: Slippage tolerance in basis points (bps) for defi quotes - 1 is 0.01% and 10000 is 100% default: 50 minimum: 1 maximum: 10000 settlement: $ref: '#/components/schemas/DVPSettlement' side: type: string enum: - BUY - SELL description: Side of the order required: - quoteAssetId - baseAssetId - baseAmount - side - scope example: scope: - providerId: prov_8c3f1a4b2d6e9f7c accountId: acc_5e9a2d1c4b7f3e8a baseAssetId: USD baseAssetRail: FIAT_RAILS quoteAssetId: BTC quoteAssetRail: BLOCKCHAIN_RAILS baseAmount: '1000.00' side: BUY slippageBps: 100 settlement: type: DVP sourceAccount: type: VAULT_ACCOUNT id: vault_acc_3f7e1d9b2c5a8e4f destinationAccount: type: VAULT_ACCOUNT id: vault_acc_7b2e5d8f1c4a9e3b AccountProviderID: type: object properties: providerId: type: string description: The ID of the provider associated with the account. accountId: type: string description: The ID of the account associated with the provider. required: - accountId - providerId example: providerId: prov_8c3f1a4b2d6e9f7c accountId: acc_5e9a2d1c4b7f3e8a FixedFee: allOf: - type: object properties: amountType: type: string enum: - FIXED amount: type: string pattern: ^\d+(\.\d+)?$ description: The fixed amount of the fee example: '0.01' required: - amountType - amount example: amountType: FIXED amount: '0.01' QuoteExecutionWithRequoteResponseDetails: allOf: - $ref: '#/components/schemas/QuoteExecutionResponseDetails' - type: object properties: reQuote: discriminator: propertyName: type mapping: MARKET: '#/components/schemas/MarketRequoteRequestDetails' RETRY: '#/components/schemas/RetryRequoteRequestDetails' oneOf: - $ref: '#/components/schemas/MarketRequoteRequestDetails' - $ref: '#/components/schemas/RetryRequoteRequestDetails' example: type: QUOTE quoteId: quote_8f2e4d1a9c5b7e3f side: BUY baseAmount: '1000.00' baseAssetId: USDC baseAssetRail: BLOCKCHAIN quoteAssetId: BTC quoteAssetRail: BLOCKCHAIN reQuote: type: RETRY count: 1 slippageBps: 50 parameters: X-Idempotency-Key: name: Idempotency-Key in: header description: A unique identifier for the request. If the request is sent multiple times with the same idempotency key, the server will return the same response as the first request. The idempotency key is valid for 24 hours. required: false schema: type: string example: some-unique-id securitySchemes: bearerTokenAuth: type: http scheme: bearer bearerFormat: JWT ApiKeyAuth: type: apiKey in: header name: X-API-Key