fireblocks Trading (Beta) API

The Trading (Beta) API from fireblocks — 4 operation(s) for trading (beta).

OpenAPI Specification

fireblocks-trading-beta-api-openapi.yml Raw ↑
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/s

# --- truncated at 32 KB (56 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/fireblocks/refs/heads/main/openapi/fireblocks-trading-beta-api-openapi.yml