> ## Documentation Index
> Fetch the complete documentation index at: https://tetrafi.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

# Read a quote request's recorded answer

> The quotes, sources and orders of one asset-pair POST /quotes answer, as recorded off the hot path. Readable by the principal that asked, by a member session with view_orders in its workspace, and by an orders_read API key when an order was placed on one of its quotes in that workspace. Unknown and foreign ids are the same 404. requestedByYou says whether the caller asked; only then can it order these quotes.



## OpenAPI

````yaml /api-reference/openapi.json get /api/v1/quotes/requests/{quoteRequestId}
openapi: 3.1.0
info:
  description: >-
    TetraFi is an API for institutional trading across on-chain and off-chain
    venues: discover assets, request quotes, place an order by quote id and read
    its status. API keys sign every request.


    Asset-pair quotes: every tagged union is tagged by `kind`; only the outcome
    of `/prices` rows and `sources[]` entries is tagged by `status`.
  title: TetraFi API
  version: 1.0.0-beta.1
servers:
  - url: https://api.tetrafi.io
security:
  - api_key: []
tags:
  - description: Request price quotes from multiple solvers for cross-chain transactions
    name: quotes
  - description: Submit, track, and manage cross-chain orders
    name: orders
  - description: Canonical trading pairs and aggregator metadata
    name: trading
  - description: >-
      Authentication — registration, login, SIWE, OAuth, sessions, login
      activity
    name: auth
  - description: Workspace CRUD, settings, members, and team management
    name: workspaces
  - description: >-
      Webhook management — CRUD, secret rotation, test delivery, delivery
      history
    name: webhooks
paths:
  /api/v1/quotes/requests/{quoteRequestId}:
    get:
      tags:
        - quotes
      summary: Read a quote request's recorded answer
      description: >-
        The quotes, sources and orders of one asset-pair POST /quotes answer, as
        recorded off the hot path. Readable by the principal that asked, by a
        member session with view_orders in its workspace, and by an orders_read
        API key when an order was placed on one of its quotes in that workspace.
        Unknown and foreign ids are the same 404. requestedByYou says whether
        the caller asked; only then can it order these quotes.
      operationId: get_quote_request
      parameters:
        - $ref: '#/components/parameters/WorkspaceId'
        - description: The set's quoteRequestId (rq_…)
          in: path
          name: quoteRequestId
          required: true
          schema:
            type: string
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/QuoteRequestRecord'
          description: The recorded quote request
          headers:
            x-ratelimit-limit:
              description: >-
                Sent only when the request's API key has its own
                requests-per-minute limit: that limit. Sessions, and keys
                without their own limit, never receive it.
              schema:
                minimum: 0
                type: integer
            x-ratelimit-remaining:
              description: >-
                Requests left before this caller is limited: the per-address
                limit's when that limit counted the request, otherwise the API
                key's own remaining allowance. Absent when no finite limit
                counted the request.
              schema:
                minimum: 0
                type: integer
            x-ratelimit-reset:
              description: >-
                Sent with x-ratelimit-limit, only when the request's API key has
                its own limit: whole seconds until that allowance is full again.
              schema:
                minimum: 0
                type: integer
            x-request-id:
              description: >-
                The request's id: the caller's valid `X-Request-Id`, or a
                generated UUID v4. Quote it when asking for support.
              schema:
                type: string
        '400':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiError'
          description: >-
            The request could not be read or failed validation; `error` names
            the cause.
          headers:
            x-ratelimit-limit:
              description: >-
                Sent only when the request's API key has its own
                requests-per-minute limit: that limit. Sessions, and keys
                without their own limit, never receive it.
              schema:
                minimum: 0
                type: integer
            x-ratelimit-remaining:
              description: >-
                Requests left before this caller is limited: the per-address
                limit's when that limit counted the request, otherwise the API
                key's own remaining allowance. Absent when no finite limit
                counted the request.
              schema:
                minimum: 0
                type: integer
            x-ratelimit-reset:
              description: >-
                Sent with x-ratelimit-limit, only when the request's API key has
                its own limit: whole seconds until that allowance is full again.
              schema:
                minimum: 0
                type: integer
            x-request-id:
              description: >-
                The request's id: the caller's valid `X-Request-Id`, or a
                generated UUID v4. Quote it when asking for support.
              schema:
                type: string
        '401':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiError'
          description: Authentication required
          headers:
            WWW-Authenticate:
              description: >-
                Sent when the request presented a bearer token and it was
                refused: `Bearer error="invalid_token"` (RFC 6750 section 3).
                Exchange a new token. A refused API key carries no challenge.
              schema:
                type: string
            x-ratelimit-limit:
              description: >-
                Sent only when the request's API key has its own
                requests-per-minute limit: that limit. Sessions, and keys
                without their own limit, never receive it.
              schema:
                minimum: 0
                type: integer
            x-ratelimit-remaining:
              description: >-
                Requests left before this caller is limited: the per-address
                limit's when that limit counted the request, otherwise the API
                key's own remaining allowance. Absent when no finite limit
                counted the request.
              schema:
                minimum: 0
                type: integer
            x-ratelimit-reset:
              description: >-
                Sent with x-ratelimit-limit, only when the request's API key has
                its own limit: whole seconds until that allowance is full again.
              schema:
                minimum: 0
                type: integer
            x-request-id:
              description: >-
                The request's id: the caller's valid `X-Request-Id`, or a
                generated UUID v4. Quote it when asking for support.
              schema:
                type: string
        '403':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiError'
          description: Workspace context or membership is invalid
          headers:
            x-ratelimit-limit:
              description: >-
                Sent only when the request's API key has its own
                requests-per-minute limit: that limit. Sessions, and keys
                without their own limit, never receive it.
              schema:
                minimum: 0
                type: integer
            x-ratelimit-remaining:
              description: >-
                Requests left before this caller is limited: the per-address
                limit's when that limit counted the request, otherwise the API
                key's own remaining allowance. Absent when no finite limit
                counted the request.
              schema:
                minimum: 0
                type: integer
            x-ratelimit-reset:
              description: >-
                Sent with x-ratelimit-limit, only when the request's API key has
                its own limit: whole seconds until that allowance is full again.
              schema:
                minimum: 0
                type: integer
            x-request-id:
              description: >-
                The request's id: the caller's valid `X-Request-Id`, or a
                generated UUID v4. Quote it when asking for support.
              schema:
                type: string
        '404':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiError'
          description: >-
            QUOTE_REQUEST_NOT_FOUND: unknown, or not readable by this caller
            (captured live, rfq e31507829)
          headers:
            x-ratelimit-limit:
              description: >-
                Sent only when the request's API key has its own
                requests-per-minute limit: that limit. Sessions, and keys
                without their own limit, never receive it.
              schema:
                minimum: 0
                type: integer
            x-ratelimit-remaining:
              description: >-
                Requests left before this caller is limited: the per-address
                limit's when that limit counted the request, otherwise the API
                key's own remaining allowance. Absent when no finite limit
                counted the request.
              schema:
                minimum: 0
                type: integer
            x-ratelimit-reset:
              description: >-
                Sent with x-ratelimit-limit, only when the request's API key has
                its own limit: whole seconds until that allowance is full again.
              schema:
                minimum: 0
                type: integer
            x-request-id:
              description: >-
                The request's id: the caller's valid `X-Request-Id`, or a
                generated UUID v4. Quote it when asking for support.
              schema:
                type: string
        '408':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiError'
          description: The request timed out before a response was ready.
          headers:
            x-ratelimit-limit:
              description: >-
                Sent only when the request's API key has its own
                requests-per-minute limit: that limit. Sessions, and keys
                without their own limit, never receive it.
              schema:
                minimum: 0
                type: integer
            x-ratelimit-remaining:
              description: >-
                Requests left before this caller is limited: the per-address
                limit's when that limit counted the request, otherwise the API
                key's own remaining allowance. Absent when no finite limit
                counted the request.
              schema:
                minimum: 0
                type: integer
            x-ratelimit-reset:
              description: >-
                Sent with x-ratelimit-limit, only when the request's API key has
                its own limit: whole seconds until that allowance is full again.
              schema:
                minimum: 0
                type: integer
            x-request-id:
              description: >-
                The request's id: the caller's valid `X-Request-Id`, or a
                generated UUID v4. Quote it when asking for support.
              schema:
                type: string
        '429':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiError'
          description: >-
            Too many requests. Wait the number of seconds in `Retry-After`
            before retrying.
          headers:
            Retry-After:
              description: >-
                Whole seconds to wait before retrying. Always sent on 429; sent
                on 503 when the wait is known. `details.retryAfter` carries the
                same wait as an ISO 8601 duration.
              schema:
                minimum: 0
                type: integer
            x-ratelimit-limit:
              description: >-
                Sent only when the request's API key has its own
                requests-per-minute limit: that limit. Sessions, and keys
                without their own limit, never receive it.
              schema:
                minimum: 0
                type: integer
            x-ratelimit-remaining:
              description: >-
                Requests left before this caller is limited: the per-address
                limit's when that limit counted the request, otherwise the API
                key's own remaining allowance. Absent when no finite limit
                counted the request.
              schema:
                minimum: 0
                type: integer
            x-ratelimit-reset:
              description: >-
                Sent with x-ratelimit-limit, only when the request's API key has
                its own limit: whole seconds until that allowance is full again.
              schema:
                minimum: 0
                type: integer
            x-request-id:
              description: >-
                The request's id: the caller's valid `X-Request-Id`, or a
                generated UUID v4. Quote it when asking for support.
              schema:
                type: string
        '500':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiError'
          description: Something went wrong on our side.
          headers:
            x-ratelimit-limit:
              description: >-
                Sent only when the request's API key has its own
                requests-per-minute limit: that limit. Sessions, and keys
                without their own limit, never receive it.
              schema:
                minimum: 0
                type: integer
            x-ratelimit-remaining:
              description: >-
                Requests left before this caller is limited: the per-address
                limit's when that limit counted the request, otherwise the API
                key's own remaining allowance. Absent when no finite limit
                counted the request.
              schema:
                minimum: 0
                type: integer
            x-ratelimit-reset:
              description: >-
                Sent with x-ratelimit-limit, only when the request's API key has
                its own limit: whole seconds until that allowance is full again.
              schema:
                minimum: 0
                type: integer
            x-request-id:
              description: >-
                The request's id: the caller's valid `X-Request-Id`, or a
                generated UUID v4. Quote it when asking for support.
              schema:
                type: string
        '503':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiError'
          description: >-
            QUOTE_REQUEST_NOT_READY: issued moments ago and still being recorded
            (retry after about one second); QUOTE_REQUEST_UNAVAILABLE: the
            record could not be read
          headers:
            Retry-After:
              description: >-
                Whole seconds to wait before retrying. Always sent on 429; sent
                on 503 when the wait is known. `details.retryAfter` carries the
                same wait as an ISO 8601 duration.
              schema:
                minimum: 0
                type: integer
            x-ratelimit-limit:
              description: >-
                Sent only when the request's API key has its own
                requests-per-minute limit: that limit. Sessions, and keys
                without their own limit, never receive it.
              schema:
                minimum: 0
                type: integer
            x-ratelimit-remaining:
              description: >-
                Requests left before this caller is limited: the per-address
                limit's when that limit counted the request, otherwise the API
                key's own remaining allowance. Absent when no finite limit
                counted the request.
              schema:
                minimum: 0
                type: integer
            x-ratelimit-reset:
              description: >-
                Sent with x-ratelimit-limit, only when the request's API key has
                its own limit: whole seconds until that allowance is full again.
              schema:
                minimum: 0
                type: integer
            x-request-id:
              description: >-
                The request's id: the caller's valid `X-Request-Id`, or a
                generated UUID v4. Quote it when asking for support.
              schema:
                type: string
      security:
        - api_key: []
        - bearer_auth: []
components:
  parameters:
    WorkspaceId:
      description: >-
        The workspace the request acts in. An API key bound to a workspace
        implies it: omit the header, or send that same id (another id answers
        403 WORKSPACE_SCOPE_MISMATCH). A member session must send it (400
        MISSING_WORKSPACE without it).
      in: header
      name: X-Workspace-Id
      required: false
      schema:
        format: uuid
        type: string
  schemas:
    QuoteRequestRecord:
      description: |-
        `GET /quotes/requests/{quoteRequestId}`: a quote request's recorded
        answer, read back by its owner. It carries no executable part.
      properties:
        orders:
          description: Every order placed on one of these quotes.
          items:
            $ref: '#/components/schemas/QuoteRequestOrder'
          type: array
        quoteRequestId:
          type: string
        quotes:
          items:
            $ref: '#/components/schemas/QuoteRequestQuote'
          type: array
        request:
          $ref: '#/components/schemas/NativePairQuoteRequest'
          description: >-
            The request as it was sent (the Binding by target id, never raw
            identity fields).
        requestedAt:
          format: date-time
          type: string
        requestedByYou:
          description: >-
            Whether the caller is the principal that asked. Only that principal
            can order these quotes:

            another member (`view_orders`) or an `orders_read` key reads them,
            and each `liveState` is

            the hold as its owner sees it, never the reader's authority to
            order.
          type: boolean
        sources:
          items:
            $ref: '#/components/schemas/QuoteSourceEntry'
          type: array
        venueAsked:
          type: boolean
      required:
        - quoteRequestId
        - requestedAt
        - request
        - quotes
        - sources
        - venueAsked
        - orders
        - requestedByYou
      type: object
    ApiError:
      description: >-
        A refusal of an integrator operation. Codes are an open set: a client
        handles the codes it

        knows and falls back on the HTTP status for any other.
      properties:
        details:
          oneOf:
            - type: 'null'
            - $ref: '#/components/schemas/ApiErrorDetails'
        docUrl:
          description: Stable documentation for this refusal code.
          type: string
        error:
          description: The machine-readable code, for example `QUOTE_EXPIRED`.
          type: string
        message:
          description: What happened, in words a person can read. Not for matching.
          type: string
        next:
          oneOf:
            - type: 'null'
            - $ref: '#/components/schemas/QuoteNextAction'
              description: >-
                The way forward, when there is one (for example `requote` on an
                expired quote).
        requestId:
          description: >-
            The request's id, the value the `X-Request-Id` response header
            carries. Quote it when

            asking for support.
          type:
            - string
            - 'null'
        retryable:
          description: >-
            Whether an unchanged request may succeed later, from the error
            catalogue.
          type: boolean
        timestamp:
          description: When the refusal was made, in Unix seconds.
          format: int64
          type: integer
      required:
        - error
        - docUrl
        - retryable
        - message
        - timestamp
      type: object
    QuoteRequestOrder:
      description: An order placed on a quote of a recorded request.
      properties:
        orderId:
          type: string
        quoteId:
          type: string
      required:
        - quoteId
        - orderId
      type: object
    QuoteRequestQuote:
      allOf:
        - $ref: '#/components/schemas/PairQuote'
        - properties:
            liveState:
              $ref: '#/components/schemas/QuoteLiveState'
          required:
            - liveState
          type: object
      description: >-
        A recorded card plus its current server-held state. Economics remain as
        served.
    NativePairQuoteRequest:
      description: >-
        A fresh pair-quote request as TetraFi records it with the quote: the
        pair, side,

        amount and options the quote answered.
      properties:
        amount:
          $ref: '#/components/schemas/DecimalAmount'
          description: >-
            A positive decimal string in Asset units of the `side` it fixes
            (`INVALID_AMOUNT`

            otherwise).
        deliverTo:
          oneOf:
            - type: 'null'
            - $ref: '#/components/schemas/DeliverTo'
        filters:
          oneOf:
            - type: 'null'
            - $ref: '#/components/schemas/PairQuoteFilters'
        integrationAppId:
          type:
            - string
            - 'null'
        onBehalfOf:
          description: The direct user a broker quotes for.
          type:
            - string
            - 'null'
        pay:
          $ref: '#/components/schemas/QuoteSideRequest'
        preferredWallets:
          additionalProperties:
            type: string
          description: >-
            Per CAIP-2 chain: a wallet the caller prefers to pay from (the trade
            page's Pay from), by

            target id or address. A preference, not a choice: a venue account
            uses it only where it

            is one of that account's linked wallets on the venue's network, and
            otherwise quotes from

            its own default; a venue is never refused because of it.
            `bind.wallets` is the explicit

            choice and wins on its chain.
          propertyNames:
            description: >-
              A CAIP-2 chain id (`eip155:8453`, `solana:<genesis>`,
              `tron:shasta`), syntax-checked:

              a namespace of 3 to 8 lowercase letters, digits or `-`, and a
              reference of 1 to 32

              letters, digits, `-` or `_`. Compared exactly, as CAIP-2
              references are case-sensitive.
            example: eip155:8453
            type: string
          type:
            - object
            - 'null'
        priceProtectionBps:
          description: >-
            The bound between a non-firm executable quote and what execution
            delivers.
          format: int32
          minimum: 0
          type:
            - integer
            - 'null'
        receive:
          $ref: '#/components/schemas/QuoteSideRequest'
        routingOptions:
          oneOf:
            - type: 'null'
            - $ref: '#/components/schemas/RoutingOptions'
              description: Protocol-admin sessions and `admin`-scoped keys only.
        side:
          $ref: '#/components/schemas/QuoteAmountSide'
        sort:
          oneOf:
            - type: 'null'
            - $ref: '#/components/schemas/QuoteSort'
              description: Default `netReceived`.
        source:
          oneOf:
            - type: 'null'
            - $ref: '#/components/schemas/SourceSelection'
        timeout:
          oneOf:
            - type: 'null'
            - $ref: '#/components/schemas/IsoDuration'
              description: >-
                Collection deadline, an ISO 8601 duration; default `PT6S`, at
                least 100 milliseconds and at

                most `PT10S`.
      required:
        - pay
        - receive
        - amount
        - side
      type: object
    QuoteSourceEntry:
      description: >-
        One considered venue's outcome, a closed set tagged `status`:


        | status | meaning |

        |---|---|

        | `asking` | in flight on the stream only: the auction is consulting
        this venue now; its final outcome replaces it under the same venue key,
        and none remains at `complete` |

        | `answered` | the venue produced a quote |

        | `needsWallet` | no wallet of `family` to ask with |

        | `walletRefused` | the bound wallet is refused (`Revoked`, a confirmed
        sanctions hit) |

        | `firmQuoteLimited` | a desk's firm-quote cap applies; `explanation` is
        product copy |

        | `priceOnRequest` | no venue price was requested; `quoteId` identifies
        the held estimate or stub to Requote |

        | `askLimitReached` | the venue's ask limit is reached for now;
        `retryAfter` says when to ask again |

        | `timedOut` | no answer inside the deadline |

        | `refused` | the venue refused the live ask |

        | `restricted` | a gate kept the venue from this principal |

        | `unsupported` | the venue does not serve the pair |

        | `filteredOut` | the request's own filters exclude it (never a coverage
        or chain gap) |

        | `unavailable` | a read failed (`admissionUnavailable`, …) |


        An unscreened default wallet is not a status: the quote carries
        `screening`. `venue`

        is the venue block, its `id` the one quote legs and `/prices` rows
        carry. Durations

        (`retryAfter`) are ISO 8601, counted from when the response was sent.
        Every entry

        carries `asked`: whether this venue was consulted for this request: a
        live ask, or a

        fresh read of its published book or live desk price within that source's
        freshness

        window. An estimate no venue gave (a model or reference price) is not
        consulted, and

        an `answered` entry is always consulted. How a card's price was obtained
        is its own

        price basis, never this flag.


        New values may be added; treat unknown values as other.
      discriminator:
        propertyName: status
      oneOf:
        - description: >-
            A venue the auction is consulting for this request, sent before its
            first quote

            (`asked` is always `true`). A venue refused before sending ends with
            that named

            refusal and `asked: false`. Transient: the same venue key's final
            outcome replaces it,

            so it never appears in `complete` or the JSON reply.
          properties:
            asked:
              type: boolean
            detail:
              type:
                - string
                - 'null'
            status:
              description: New values may be added; treat unknown values as other.
              enum:
                - asking
              type: string
              x-extensible-enum: true
            venue:
              $ref: '#/components/schemas/QuoteVenue'
          required:
            - asked
            - detail
            - status
            - venue
          type: object
        - properties:
            asked:
              type: boolean
            detail:
              type:
                - string
                - 'null'
            fix:
              oneOf:
                - type: 'null'
                - $ref: '#/components/schemas/QuoteSourceFix'
                  description: >-
                    The server-owned recovery step; absent on an unblocked or
                    older source.
            product:
              oneOf:
                - type: 'null'
                - $ref: '#/components/schemas/BridgeTransferMode'
                  description: >-
                    The independently priced product, when this venue offers
                    several.
            status:
              description: New values may be added; treat unknown values as other.
              enum:
                - answered
              type: string
              x-extensible-enum: true
            venue:
              $ref: '#/components/schemas/QuoteVenue'
          required:
            - asked
            - detail
            - status
            - venue
          type: object
        - properties:
            asked:
              type: boolean
            detail:
              type:
                - string
                - 'null'
            family:
              $ref: '#/components/schemas/ChainFamily'
            fix:
              oneOf:
                - type: 'null'
                - $ref: '#/components/schemas/QuoteSourceFix'
                  description: >-
                    The server-owned recovery step; absent on an unblocked or
                    older source.
            status:
              description: New values may be added; treat unknown values as other.
              enum:
                - needsWallet
              type: string
              x-extensible-enum: true
            venue:
              $ref: '#/components/schemas/QuoteVenue'
          required:
            - asked
            - detail
            - family
            - status
            - venue
          type: object
        - properties:
            asked:
              type: boolean
            detail:
              type:
                - string
                - 'null'
            fix:
              oneOf:
                - type: 'null'
                - $ref: '#/components/schemas/QuoteSourceFix'
                  description: >-
                    The server-owned recovery step; absent on an unblocked or
                    older source.
            product:
              oneOf:
                - type: 'null'
                - $ref: '#/components/schemas/BridgeTransferMode'
                  description: >-
                    The independently priced product, when this venue offers
                    several.
            reason:
              description: >-
                Known source reason tokens (not all apply to every status):
                `adapterPayloadSerializationFailed`,
                `basicVenueAccountsUnavailable`, `billingPaymentOverdue`,
                `walletNotOnChain`, `ccxtVenueRequiresCexLane`,
                `executionStageDisabled`, `jurisdictionUnproven`,
                `onboardedVenuesUnavailable`,
                `onchainAccountDefaultWalletRequired`,
                `onchainAccountDefaultWalletUnavailable`,
                `onchainAccountWalletRequired`, `onchainAssetDecimalsMismatch`,
                `onchainAssetIdentityMismatch`, `onchainAssetUnmapped`,
                `onchainAssetVariantFiltered`, `onchainWalletUnavailable`,
                `onchainCatalogueUnavailable`,
                `onchainDeliverToNotReceivingWallet`,
                `onchainDeliverToUnverified`, `onchainMarketsUnavailable`,
                `onchainMarketCatalogUnreadable`, `onchainMarketChainRequired`,
                `onchainMarketVariantRequired`, `onchainMarketTokenRequired`,
                `onchainSiteChainUnreadable`, `onchainWalletChainUnreadable`,
                `onchainWalletInactive`, `onchainWalletNotLinked`,
                `onchainWalletNotUsable`, `onchainWalletPickAmbiguous`,
                `onchainWalletWrongNetwork`, `payeeDeliveryUnsupported`,
                `signerLacksRight`, `signerUnavailable`,
                `signingGrantAmbiguous`, `signingGrantExpired`,
                `signingGrantRequired`, `signingGrantTokenNotKept`,
                `signingGrantTokenNotPayable`, `solverChainUnready`,
                `walletChainMismatch`, `walletNotUsableByYou`,
                `walletNotVerifiedForAce`, `walletNotWhitelisted`,
                `withdrawalChainUnsupported`, `accountFeeUnavailable`,
                `comparisonCostsUnavailable`, `connectionListingUnavailable`,
                `feeUnverified`, `noPool`, `noPrice`, `noSize`, `notFilled`,
                `notYetPublished`, `priceArithmetic`, `priceSourceNone`,
                `referenceMidUnavailable`, `settlementPrecisionUnavailable`,
                `accountSetupIncomplete`, `admissionUnavailable`,
                `advancedAccountEligibilityUnavailable`,
                `advancedAccountStateInconsistent`,
                `advancedConnectionDisabled`, `advancedConnectionNotConfigured`,
                `advancedConnectionPaused`,
                `advancedSettlementNeedsVerification`, `advancedModeDisabled`,
                `advancedNotAvailableForAccount`,
                `advancedNotEnabledForAccount`, `allowanceUnavailable`,
                `acrossCapacityExceeded`, `relayCapacityExceeded`,
                `acrossChainNotCarried`, `cctpChainNotCarried`,
                `relayChainNotCarried`, `apiKeyAdvancedWalletUnsupported`,
                `apiKeyOrganisationWalletScopeRequired`, `grantCapExceeded`,
                `amountAboveMaximum`, `amountBelowMinimum`, `amountUnreadable`,
                `amountsUnreadable`, `askFirst`, `authorityUnavailable`,
                `automationNeverAsks`, `availabilityUnreadable`,
                `backgroundNeverAsks`, `balanceUnreadable`,
                `defaultsUnavailable`, `walletHasNoAddress`,
                `walletUnavailable`, `bondAmountUnreadable`,
                `bondAssetUnreadable`, `catalogueUnavailable`,
                `chainFamilyUnknown`, `chainUnrecorded`,
                `clientSessionRequired`, `clockUnreadable`, `comingSoon`,
                `connectionChanged`, `connectionRevoked`, `corridorInvalid`,
                `credential`, `deadlineExceeded`, `defaultsLoading`,
                `deliverToCalldataUnsupported`, `deliverToTagUnsupported`,
                `deliverToNotPermitted`, `deliverToUnreadable`,
                `tradingPermissionRequired`, `directPatienceHarvest`,
                `economicallyInferior`, `exactAmountConflictsWithCard`,
                `exactAmountConflictsWithQuote`,
                `exactOutputDeliveryUnsupported`,
                `exactOutputEstimateUnavailable`,
                `exactRouteHypothesisUnavailable`, `expiredOnArrival`,
                `expiryUnknown`, `feeUnreadable`, `filteredOut`,
                `firmAskRefused`, `freshnessUnknown`, `fundingWindow`,
                `insufficientLiquidity`, `venueRelationship`,
                `venueRelationshipUnavailable`, `lpUnknown`,
                `mfaEnrolmentRequired`, `mfaRequired`, `minimumUnverified`,
                `mixedNetworks`, `netReceivedUnavailable`, `networkUnrecorded`,
                `noAddress`, `noCard`, `noFetcher`, `noInventory`,
                `noLaneForPair`, `noLegs`, `noOnChainCorridor`,
                `noPlannedVenue`, `noQuote`, `noRpc`, `notConnected`,
                `notEligible`, `notExecutable`, `orderPayloadMissing`,
                `outsideTopComposites`, `pairUnmapped`, `sellChainInvalid`,
                `permissionsUnreadable`, `placeOrderNotPermitted`,
                `prefundingMarkerUnreadable`, `prefundingRequired`,
                `indicative`, `priceOnRequest`, `priceOutOfRange`,
                `priceProtectionInvalid`, `pricingBookOnly`, `productNotQuoted`,
                `protocolChainMissing`, `providerFeeTreatmentUnknown`,
                `providerSiteUnrecorded`, `quoteIdUnissuable`, `quoteNotHeld`,
                `buyChainInvalid`, `buyAmountUnsupported`,
                `exactOutputDebitUnavailable`, `pairNotServed`,
                `receiveWalletNotServed`, `referenceMidUnreadable`,
                `referencePriceUnavailable`, `registryUnavailable`,
                `releaseRecheckUnavailable`, `requestUnbuildable`,
                `routeLegChainUnknown`, `routeLegUnnamed`, `routeLegUnplanned`,
                `routeUnavailable`, `secondFactorUnreadable`,
                `shortfallUnmeasured`, `shortfallUnreadable`,
                `singleChainVenue`, `siteChainUnreadable`, `sizeNotEligible`,
                `submitOrderBlocked`, `takerOnboardingIncomplete`,
                `tierNotQuoted`, `tradePaused`, `unsupportedNative`,
                `venueConnectionStorageUnavailable`, `venueDataStale`,
                `venueDeclined`, `venueNotConnected`,
                `venueNotEnabledForWorkspace`, `venueNotListed`,
                `venueTradeKeyUnavailable`, `venueTradeScopeRequired`,
                `venueTradeUnreadable`, `venueUnavailable`, `walletRefused`,
                `withdrawalFeeUnread`, `acrossRoutedViaCctp`,
                `apiKeyOrganisationWalletNotAllowlisted`,
                `balanceAvailabilityUnconfirmed`, `bankDestinationUnavailable`,
                `bebopJamKeyNotEnabled`, `bebopJamQuoteDeclined`,
                `bebopTokenUnavailable`, `relayCurrencyUnsupported`,
                `relaySwapImpactTooHigh`, `tetrafiSolverCallbackNotAuthorized`,
                `tradingLinkSnapshotChanged`, `tradingLinkSnapshotUnavailable`,
                `uniswapChainReadUnavailable`, `uniswapInsufficientDepth`,
                `uniswapQuoteUnreadable`, `uniswapUnwrapAboveDailyCap`,
                `uniswapUnwrapAboveTradeCap`, `uniswapRouteNotGranted`,
                `venueNotEnabled`, `askLimitReached`,
                `balanceMeaningUnconfirmed`, `bebopJamWalletUnsupported`,
                `bebopQuorumWalletTooSlow`, `bebopWalletQuorumUnreadable`,
                `connectionNotConfigured`, `deliveryAccountNetworkUnavailable`,
                `deliveryAccountUnavailable`, `destinationCannotSendOnChain`,
                `dexReferencePriceUnavailable`, `firmQuoteLimited`,
                `fundingAccountNetworkUnavailable`, `fundingAccountUnavailable`,
                `insufficientDepth`, `missingPermission`, `needsNativeGas`,
                `needsWallet`, `notPriced`, `payInTermsUnavailable`,
                `pilotTradeCapExceeded`, `platformFeeRateUnavailable`,
                `pricingBookPairUnserved`, `settlementDeclarationUnavailable`,
                `settlementNotAvailable`, `timedOut`, `timedOutBeforeSend`,
                `tradingSourceNetworkUnavailable`, `tradingSourceNotLinked`,
                `venueEnablementRechecking`, `venueEnablementUnavailable`,
                `venueListingTimedOut`, `venuePoliciesUnavailable`.


                New values may be added; treat unknown values as other.
              type:
                - string
                - 'null'
            recovery:
              oneOf:
                - type: 'null'
                - $ref: '#/components/schemas/WalletLinkRecovery'
            status:
              description: New values may be added; treat unknown values as other.
              enum:
                - walletRefused
              type: string
              x-extensible-enum: true
            venue:
              $ref: '#/components/schemas/QuoteVenue'
            wallet:
              type: string
          required:
            - asked
            - detail
            - status
            - venue
            - wallet
          type: object
        - properties:
            asked:
              type: boolean
            code:
              description: >-
                VENUE_QUOTE_RATE_LIMITED for a provider throttle;
                VENUE_FIRM_QUOTE_LIMITED for a workspace cap.
              example: VENUE_QUOTE_RATE_LIMITED
              type:
                - string
                - 'null'
            detail:
              type:
                - string
                - 'null'
            explanation:
              type: string
            fix:
              oneOf:
                - type: 'null'
                - $ref: '#/components/schemas/QuoteSourceFix'
                  description: >-
                    The server-owned recovery step; absent on an unblocked or
                    older source.
            retryAfter:
              $ref: '#/components/schemas/IsoDuration'
            retrySource:
              description: >-
                The native provider retry field, provider:legacyLpReported for
                old stored blocks,

                tetrafi:declaredPool for our pool, or explicit
                AQ09_DEFAULT.cooldown.
              example: provider:Retry-After
              type:
                - string
                - 'null'
            status:
              description: New values may be added; treat unknown values as other.
              enum:
                - firmQuoteLimited
              type: string
              x-extensible-enum: true
            venue:
              $ref: '#/components/schemas/QuoteVenue'
          required:
            - asked
            - detail
            - explanation
            - retryAfter
            - status
            - venue
          type: object
        - description: >-
            A priced indicative card from a venue read or estimate, without a
            firm-price ask.

            `asked` is false when this request did not consult the venue. The
            card's

            `firmAsk` declares whether the binding price comes on request or at
            execution.
          properties:
            asked:
              type: boolean
            detail:
              type:
                - string
                - 'null'
            fix:
              oneOf:
                - type: 'null'
                - $ref: '#/components/schemas/QuoteSourceFix'
                  description: >-
                    The server-owned recovery step; absent on an unblocked or
                    older source.
            product:
              oneOf:
                - type: 'null'
                - $ref: '#/components/schemas/BridgeTransferMode'
                  description: >-
                    The independently priced product, when this venue offers
                    several.
            quoteId:
              type: string
            status:
              description: New values may be added; treat unknown values as other.
              enum:
                - indicative
              type: string
              x-extensible-enum: true
            venue:
              $ref: '#/components/schemas/QuoteVenue'
          required:
            - asked
            - detail
            - quoteId
            - status
            - venue
          type: object
        - properties:
            asked:
              type: boolean
            detail:
              type:
                - string
                - 'null'
            fix:
              oneOf:
                - type: 'null'
                - $ref: '#/components/schemas/QuoteSourceFix'
                  description: >-
                    The server-owned recovery step; absent on an unblocked or
                    older source.
            quoteId:
              type: string
            status:
              description: New values may be added; treat unknown values as other.
              enum:
                - priceOnRequest
              type: string
              x-extensible-enum: true
            venue:
              $ref: '#/components/schemas/QuoteVenue'
          required:
            - asked
            - detail
            - quoteId
            - status
            - venue
          type: object
        - properties:
            asked:
              type: boolean
            detail:
              type:
                - string
                - 'null'
            fix:
              oneOf:
                - type: 'null'
                - $ref: '#/components/schemas/QuoteSourceFix'
                  description: >-
                    The server-owned recovery step; absent on an unblocked or
                    older source.
            retryAfter:
              oneOf:
                - type: 'null'
                - $ref: '#/components/schemas/IsoDuration'
            status:
              description: New values may be added; treat unknown values as other.
              enum:
                - askLimitReached
              type: string
              x-extensible-enum: true
            venue:
              $ref: '#/components/schemas/QuoteVenue'
          required:
            - asked
            - detail
            - retryAfter
            - status
            - venue
          type: object
        - properties:
            asked:
              type: boolean
            detail:
              type:
                - string
                - 'null'
            fix:
              oneOf:
                - type: 'null'
                - $ref: '#/components/schemas/QuoteSourceFix'
                  description: >-
                    The server-owned recovery step; absent on an unblocked or
                    older source.
            network:
              oneOf:
                - type: 'null'
                - $ref: '#/components/schemas/Caip2Chain'
                  description: >-
                    The one network this outcome belongs to: a single-chain
                    route of a venue that holds one

                    account per network, so it sits on that network's line
                    beside the venue's account there.

                    Absent for a route that spans several networks or names
                    none.
            product:
              oneOf:
                - type: 'null'
                - $ref: '#/components/schemas/BridgeTransferMode'
                  description: >-
                    The independently priced product, when this venue offers
                    several.
            status:
              description: New values may be added; treat unknown values as other.
              enum:
                - timedOut
              type: string
              x-extensible-enum: true
            venue:
              $ref: '#/components/schemas/QuoteVenue'
          required:
            - asked
            - detail
            - status
            - venue
          type: object
        - properties:
            asked:
              type: boolean
            detail:
              type:
                - string
                - 'null'
            fix:
              oneOf:
                - type: 'null'
                - $ref: '#/components/schemas/QuoteSourceFix'
                  description: >-
                    The server-owned recovery step; absent on an unblocked or
                    older source.
            network:
              oneOf:
                - type: 'null'
                - $ref: '#/components/schemas/Caip2Chain'
                  description: >-
                    The one network this outcome belongs to: a single-chain
                    route of a venue that holds one

                    account per network, so it sits on that network's line
                    beside the venue's account there.

                    Absent for a route that spans several networks or names
                    none.
            reason:
              description: >-
                Known source reason tokens (not all apply to every status):
                `adapterPayloadSerializationFailed`,
                `basicVenueAccountsUnavailable`, `billingPaymentOverdue`,
                `walletNotOnChain`, `ccxtVenueRequiresCexLane`,
                `executionStageDisabled`, `jurisdictionUnproven`,
                `onboardedVenuesUnavailable`,
                `onchainAccountDefaultWalletRequired`,
                `onchainAccountDefaultWalletUnavailable`,
                `onchainAccountWalletRequired`, `onchainAssetDecimalsMismatch`,
                `onchainAssetIdentityMismatch`, `onchainAssetUnmapped`,
                `onchainAssetVariantFiltered`, `onchainWalletUnavailable`,
                `onchainCatalogueUnavailable`,
                `onchainDeliverToNotReceivingWallet`,
                `onchainDeliverToUnverified`, `onchainMarketsUnavailable`,
                `onchainMarketCatalogUnreadable`, `onchainMarketChainRequired`,
                `onchainMarketVariantRequired`, `onchainMarketTokenRequired`,
                `onchainSiteChainUnreadable`, `onchainWalletChainUnreadable`,
                `onchainWalletInactive`, `onchainWalletNotLinked`,
                `onchainWalletNotUsable`, `onchainWalletPickAmbiguous`,
                `onchainWalletWrongNetwork`, `payeeDeliveryUnsupported`,
                `signerLacksRight`, `signerUnavailable`,
                `signingGrantAmbiguous`, `signingGrantExpired`,
                `signingGrantRequired`, `signingGrantTokenNotKept`,
                `signingGrantTokenNotPayable`, `solverChainUnready`,
                `walletChainMismatch`, `walletNotUsableByYou`,
                `walletNotVerifiedForAce`, `walletNotWhitelisted`,
                `withdrawalChainUnsupported`, `accountFeeUnavailable`,
                `comparisonCostsUnavailable`, `connectionListingUnavailable`,
                `feeUnverified`, `noPool`, `noPrice`, `noSize`, `notFilled`,
                `notYetPublished`, `priceArithmetic`, `priceSourceNone`,
                `referenceMidUnavailable`, `settlementPrecisionUnavailable`,
                `accountSetupIncomplete`, `admissionUnavailable`,
                `advancedAccountEligibilityUnavailable`,
                `advancedAccountStateInconsistent`,
                `advancedConnectionDisabled`, `advancedConnectionNotConfigured`,
                `advancedConnectionPaused`,
                `advancedSettlementNeedsVerification`, `advancedModeDisabled`,
                `advancedNotAvailableForAccount`,
                `advancedNotEnabledForAccount`, `allowanceUnavailable`,
                `acrossCapacityExceeded`, `relayCapacityExceeded`,
                `acrossChainNotCarried`, `cctpChainNotCarried`,
                `relayChainNotCarried`, `apiKeyAdvancedWalletUnsupported`,
                `apiKeyOrganisationWalletScopeRequired`, `grantCapExceeded`,
                `amountAboveMaximum`, `amountBelowMinimum`, `amountUnreadable`,
                `amountsUnreadable`, `askFirst`, `authorityUnavailable`,
                `automationNeverAsks`, `availabilityUnreadable`,
                `backgroundNeverAsks`, `balanceUnreadable`,
                `defaultsUnavailable`, `walletHasNoAddress`,
                `walletUnavailable`, `bondAmountUnreadable`,
                `bondAssetUnreadable`, `catalogueUnavailable`,
                `chainFamilyUnknown`, `chainUnrecorded`,
                `clientSessionRequired`, `clockUnreadable`, `comingSoon`,
                `connectionChanged`, `connectionRevoked`, `corridorInvalid`,
                `credential`, `deadlineExceeded`, `defaultsLoading`,
                `deliverToCalldataUnsupported`, `deliverToTagUnsupported`,
                `deliverToNotPermitted`, `deliverToUnreadable`,
                `tradingPermissionRequired`, `directPatienceHarvest`,
                `economicallyInferior`, `exactAmountConflictsWithCard`,
                `exactAmountConflictsWithQuote`,
                `exactOutputDeliveryUnsupported`,
                `exactOutputEstimateUnavailable`,
                `exactRouteHypothesisUnavailable`, `expiredOnArrival`,
                `expiryUnknown`, `feeUnreadable`, `filteredOut`,
                `firmAskRefused`, `freshnessUnknown`, `fundingWindow`,
                `insufficientLiquidity`, `venueRelationship`,
                `venueRelationshipUnavailable`, `lpUnknown`,
                `mfaEnrolmentRequired`, `mfaRequired`, `minimumUnverified`,
                `mixedNetworks`, `netReceivedUnavailable`, `networkUnrecorded`,
                `noAddress`, `noCard`, `noFetcher`, `noInventory`,
                `noLaneForPair`, `noLegs`, `noOnChainCorridor`,
                `noPlannedVenue`, `noQuote`, `noRpc`, `notConnected`,
                `notEligible`, `notExecutable`, `orderPayloadMissing`,
                `outsideTopComposites`, `pairUnmapped`, `sellChainInvalid`,
                `permissionsUnreadable`, `placeOrderNotPermitted`,
                `prefundingMarkerUnreadable`, `prefundingRequired`,
                `indicative`, `priceOnRequest`, `priceOutOfRange`,
                `priceProtectionInvalid`, `pricingBookOnly`, `productNotQuoted`,
                `protocolChainMissing`, `providerFeeTreatmentUnknown`,
                `providerSiteUnrecorded`, `quoteIdUnissuable`, `quoteNotHeld`,
                `buyChainInvalid`, `buyAmountUnsupported`,
                `exactOutputDebitUnavailable`, `pairNotServed`,
                `receiveWalletNotServed`, `referenceMidUnreadable`,
                `referencePriceUnavailable`, `registryUnavailable`,
                `releaseRecheckUnavailable`, `requestUnbuildable`,
                `routeLegChainUnknown`, `routeLegUnnamed`, `routeLegUnplanned`,
                `routeUnavailable`, `secondFactorUnreadable`,
                `shortfallUnmeasured`, `shortfallUnreadable`,
                `singleChainVenue`, `siteChainUnreadable`, `sizeNotEligible`,
                `submitOrderBlocked`, `takerOnboardingIncomplete`,
                `tierNotQuoted`, `tradePaused`, `unsupportedNative`,
                `venueConnectionStorageUnavailable`, `venueDataStale`,
                `venueDeclined`, `venueNotConnected`,
                `venueNotEnabledForWorkspace`, `venueNotListed`,
                `venueTradeKeyUnavailable`, `venueTradeScopeRequired`,
                `venueTradeUnreadable`, `venueUnavailable`, `walletRefused`,
                `withdrawalFeeUnread`, `acrossRoutedViaCctp`,
                `apiKeyOrganisationWalletNotAllowlisted`,
                `balanceAvailabilityUnconfirmed`, `bankDestinationUnavailable`,
                `bebopJamKeyNotEnabled`, `bebopJamQuoteDeclined`,
                `bebopTokenUnavailable`, `relayCurrencyUnsupported`,
                `relaySwapImpactTooHigh`, `tetrafiSolverCallbackNotAuthorized`,
                `tradingLinkSnapshotChanged`, `tradingLinkSnapshotUnavailable`,
                `uniswapChainReadUnavailable`, `uniswapInsufficientDepth`,
                `uniswapQuoteUnreadable`, `uniswapUnwrapAboveDailyCap`,
                `uniswapUnwrapAboveTradeCap`, `uniswapRouteNotGranted`,
                `venueNotEnabled`, `askLimitReached`,
                `balanceMeaningUnconfirmed`, `bebopJamWalletUnsupported`,
                `bebopQuorumWalletTooSlow`, `bebopWalletQuorumUnreadable`,
                `connectionNotConfigured`, `deliveryAccountNetworkUnavailable`,
                `deliveryAccountUnavailable`, `destinationCannotSendOnChain`,
                `dexReferencePriceUnavailable`, `firmQuoteLimited`,
                `fundingAccountNetworkUnavailable`, `fundingAccountUnavailable`,
                `insufficientDepth`, `missingPermission`, `needsNativeGas`,
                `needsWallet`, `notPriced`, `payInTermsUnavailable`,
                `pilotTradeCapExceeded`, `platformFeeRateUnavailable`,
                `pricingBookPairUnserved`, `settlementDeclarationUnavailable`,
                `settlementNotAvailable`, `timedOut`, `timedOutBeforeSend`,
                `tradingSourceNetworkUnavailable`, `tradingSourceNotLinked`,
                `venueEnablementRechecking`, `venueEnablementUnavailable`,
                `venueListingTimedOut`, `venuePoliciesUnavailable`.


                New values may be added; treat unknown values as other.
              type: string
            status:
              description: New values may be added; treat unknown values as other.
              enum:
                - refused
              type: string
              x-extensible-enum: true
            venue:
              $ref: '#/components/schemas/QuoteVenue'
          required:
            - asked
            - detail
            - reason
            - status
            - venue
          type: object
        - properties:
            asked:
              type: boolean
            detail:
              type:
                - string
                - 'null'
            fix:
              oneOf:
                - type: 'null'
                - $ref: '#/components/schemas/QuoteSourceFix'
                  description: >-
                    The server-owned recovery step; absent on an unblocked or
                    older source.
            reason:
              $ref: '#/components/schemas/RestrictedReason'
              description: >-
                Known source reason tokens (not all apply to every status):
                `adapterPayloadSerializationFailed`,
                `basicVenueAccountsUnavailable`, `billingPaymentOverdue`,
                `walletNotOnChain`, `ccxtVenueRequiresCexLane`,
                `executionStageDisabled`, `jurisdictionUnproven`,
                `onboardedVenuesUnavailable`,
                `onchainAccountDefaultWalletRequired`,
                `onchainAccountDefaultWalletUnavailable`,
                `onchainAccountWalletRequired`, `onchainAssetDecimalsMismatch`,
                `onchainAssetIdentityMismatch`, `onchainAssetUnmapped`,
                `onchainAssetVariantFiltered`, `onchainWalletUnavailable`,
                `onchainCatalogueUnavailable`,
                `onchainDeliverToNotReceivingWallet`,
                `onchainDeliverToUnverified`, `onchainMarketsUnavailable`,
                `onchainMarketCatalogUnreadable`, `onchainMarketChainRequired`,
                `onchainMarketVariantRequired`, `onchainMarketTokenRequired`,
                `onchainSiteChainUnreadable`, `onchainWalletChainUnreadable`,
                `onchainWalletInactive`, `onchainWalletNotLinked`,
                `onchainWalletNotUsable`, `onchainWalletPickAmbiguous`,
                `onchainWalletWrongNetwork`, `payeeDeliveryUnsupported`,
                `signerLacksRight`, `signerUnavailable`,
                `signingGrantAmbiguous`, `signingGrantExpired`,
                `signingGrantRequired`, `signingGrantTokenNotKept`,
                `signingGrantTokenNotPayable`, `solverChainUnready`,
                `walletChainMismatch`, `walletNotUsableByYou`,
                `walletNotVerifiedForAce`, `walletNotWhitelisted`,
                `withdrawalChainUnsupported`, `accountFeeUnavailable`,
                `comparisonCostsUnavailable`, `connectionListingUnavailable`,
                `feeUnverified`, `noPool`, `noPrice`, `noSize`, `notFilled`,
                `notYetPublished`, `priceArithmetic`, `priceSourceNone`,
                `referenceMidUnavailable`, `settlementPrecisionUnavailable`,
                `accountSetupIncomplete`, `admissionUnavailable`,
                `advancedAccountEligibilityUnavailable`,
                `advancedAccountStateInconsistent`,
                `advancedConnectionDisabled`, `advancedConnectionNotConfigured`,
                `advancedConnectionPaused`,
                `advancedSettlementNeedsVerification`, `advancedModeDisabled`,
                `advancedNotAvailableForAccount`,
                `advancedNotEnabledForAccount`, `allowanceUnavailable`,
                `acrossCapacityExceeded`, `relayCapacityExceeded`,
                `acrossChainNotCarried`, `cctpChainNotCarried`,
                `relayChainNotCarried`, `apiKeyAdvancedWalletUnsupported`,
                `apiKeyOrganisationWalletScopeRequired`, `grantCapExceeded`,
                `amountAboveMaximum`, `amountBelowMinimum`, `amountUnreadable`,
                `amountsUnreadable`, `askFirst`, `authorityUnavailable`,
                `automationNeverAsks`, `availabilityUnreadable`,
                `backgroundNeverAsks`, `balanceUnreadable`,
                `defaultsUnavailable`, `walletHasNoAddress`,
                `walletUnavailable`, `bondAmountUnreadable`,
                `bondAssetUnreadable`, `catalogueUnavailable`,
                `chainFamilyUnknown`, `chainUnrecorded`,
                `clientSessionRequired`, `clockUnreadable`, `comingSoon`,
                `connectionChanged`, `connectionRevoked`, `corridorInvalid`,
                `credential`, `deadlineExceeded`, `defaultsLoading`,
                `deliverToCalldataUnsupported`, `deliverToTagUnsupported`,
                `deliverToNotPermitted`, `deliverToUnreadable`,
                `tradingPermissionRequired`, `directPatienceHarvest`,
                `economicallyInferior`, `exactAmountConflictsWithCard`,
                `exactAmountConflictsWithQuote`,
                `exactOutputDeliveryUnsupported`,
                `exactOutputEstimateUnavailable`,
                `exactRouteHypothesisUnavailable`, `expiredOnArrival`,
                `expiryUnknown`, `feeUnreadable`, `filteredOut`,
                `firmAskRefused`, `freshnessUnknown`, `fundingWindow`,
                `insufficientLiquidity`, `venueRelationship`,
                `venueRelationshipUnavailable`, `lpUnknown`,
                `mfaEnrolmentRequired`, `mfaRequired`, `minimumUnverified`,
                `mixedNetworks`, `netReceivedUnavailable`, `networkUnrecorded`,
                `noAddress`, `noCard`, `noFetcher`, `noInventory`,
                `noLaneForPair`, `noLegs`, `noOnChainCorridor`,
                `noPlannedVenue`, `noQuote`, `noRpc`, `notConnected`,
                `notEligible`, `notExecutable`, `orderPayloadMissing`,
                `outsideTopComposites`, `pairUnmapped`, `sellChainInvalid`,
                `permissionsUnreadable`, `placeOrderNotPermitted`,
                `prefundingMarkerUnreadable`, `prefundingRequired`,
                `indicative`, `priceOnRequest`, `priceOutOfRange`,
                `priceProtectionInvalid`, `pricingBookOnly`, `productNotQuoted`,
                `protocolChainMissing`, `providerFeeTreatmentUnknown`,
                `providerSiteUnrecorded`, `quoteIdUnissuable`, `quoteNotHeld`,
                `buyChainInvalid`, `buyAmountUnsupported`,
                `exactOutputDebitUnavailable`, `pairNotServed`,
                `receiveWalletNotServed`, `referenceMidUnreadable`,
                `referencePriceUnavailable`, `registryUnavailable`,
                `releaseRecheckUnavailable`, `requestUnbuildable`,
                `routeLegChainUnknown`, `routeLegUnnamed`, `routeLegUnplanned`,
                `routeUnavailable`, `secondFactorUnreadable`,
                `shortfallUnmeasured`, `shortfallUnreadable`,
                `singleChainVenue`, `siteChainUnreadable`, `sizeNotEligible`,
                `submitOrderBlocked`, `takerOnboardingIncomplete`,
                `tierNotQuoted`, `tradePaused`, `unsupportedNative`,
                `venueConnectionStorageUnavailable`, `venueDataStale`,
                `venueDeclined`, `venueNotConnected`,
                `venueNotEnabledForWorkspace`, `venueNotListed`,
                `venueTradeKeyUnavailable`, `venueTradeScopeRequired`,
                `venueTradeUnreadable`, `venueUnavailable`, `walletRefused`,
                `withdrawalFeeUnread`, `acrossRoutedViaCctp`,
                `apiKeyOrganisationWalletNotAllowlisted`,
                `balanceAvailabilityUnconfirmed`, `bankDestinationUnavailable`,
                `bebopJamKeyNotEnabled`, `bebopJamQuoteDeclined`,
                `bebopTokenUnavailable`, `relayCurrencyUnsupported`,
                `relaySwapImpactTooHigh`, `tetrafiSolverCallbackNotAuthorized`,
                `tradingLinkSnapshotChanged`, `tradingLinkSnapshotUnavailable`,
                `uniswapChainReadUnavailable`, `uniswapInsufficientDepth`,
                `uniswapQuoteUnreadable`, `uniswapUnwrapAboveDailyCap`,
                `uniswapUnwrapAboveTradeCap`, `uniswapRouteNotGranted`,
                `venueNotEnabled`, `askLimitReached`,
                `balanceMeaningUnconfirmed`, `bebopJamWalletUnsupported`,
                `bebopQuorumWalletTooSlow`, `bebopWalletQuorumUnreadable`,
                `connectionNotConfigured`, `deliveryAccountNetworkUnavailable`,
                `deliveryAccountUnavailable`, `destinationCannotSendOnChain`,
                `dexReferencePriceUnavailable`, `firmQuoteLimited`,
                `fundingAccountNetworkUnavailable`, `fundingAccountUnavailable`,
                `insufficientDepth`, `missingPermission`, `needsNativeGas`,
                `needsWallet`, `notPriced`, `payInTermsUnavailable`,
                `pilotTradeCapExceeded`, `platformFeeRateUnavailable`,
                `pricingBookPairUnserved`, `settlementDeclarationUnavailable`,
                `settlementNotAvailable`, `timedOut`, `timedOutBeforeSend`,
                `tradingSourceNetworkUnavailable`, `tradingSourceNotLinked`,
                `venueEnablementRechecking`, `venueEnablementUnavailable`,
                `venueListingTimedOut`, `venuePoliciesUnavailable`.


                New values may be added; treat unknown values as other.
            status:
              description: New values may be added; treat unknown values as other.
              enum:
                - restricted
              type: string
              x-extensible-enum: true
            venue:
              $ref: '#/components/schemas/QuoteVenue'
          required:
            - asked
            - detail
            - reason
            - status
            - venue
          type: object
        - properties:
            asked:
              type: boolean
            detail:
              type:
                - string
                - 'null'
            fix:
              oneOf:
                - type: 'null'
                - $ref: '#/components/schemas/QuoteSourceFix'
                  description: >-
                    The server-owned recovery step; absent on an unblocked or
                    older source.
            network:
              oneOf:
                - type: 'null'
                - $ref: '#/components/schemas/Caip2Chain'
                  description: >-
                    The one network this outcome belongs to: a single-chain
                    route of a venue that holds one

                    account per network, so it sits on that network's line
                    beside the venue's account there.

                    Absent for a route that spans several networks or names
                    none.
            reason:
              description: >-
                Known source reason tokens (not all apply to every status):
                `adapterPayloadSerializationFailed`,
                `basicVenueAccountsUnavailable`, `billingPaymentOverdue`,
                `walletNotOnChain`, `ccxtVenueRequiresCexLane`,
                `executionStageDisabled`, `jurisdictionUnproven`,
                `onboardedVenuesUnavailable`,
                `onchainAccountDefaultWalletRequired`,
                `onchainAccountDefaultWalletUnavailable`,
                `onchainAccountWalletRequired`, `onchainAssetDecimalsMismatch`,
                `onchainAssetIdentityMismatch`, `onchainAssetUnmapped`,
                `onchainAssetVariantFiltered`, `onchainWalletUnavailable`,
                `onchainCatalogueUnavailable`,
                `onchainDeliverToNotReceivingWallet`,
                `onchainDeliverToUnverified`, `onchainMarketsUnavailable`,
                `onchainMarketCatalogUnreadable`, `onchainMarketChainRequired`,
                `onchainMarketVariantRequired`, `onchainMarketTokenRequired`,
                `onchainSiteChainUnreadable`, `onchainWalletChainUnreadable`,
                `onchainWalletInactive`, `onchainWalletNotLinked`,
                `onchainWalletNotUsable`, `onchainWalletPickAmbiguous`,
                `onchainWalletWrongNetwork`, `payeeDeliveryUnsupported`,
                `signerLacksRight`, `signerUnavailable`,
                `signingGrantAmbiguous`, `signingGrantExpired`,
                `signingGrantRequired`, `signingGrantTokenNotKept`,
                `signingGrantTokenNotPayable`, `solverChainUnready`,
                `walletChainMismatch`, `walletNotUsableByYou`,
                `walletNotVerifiedForAce`, `walletNotWhitelisted`,
                `withdrawalChainUnsupported`, `accountFeeUnavailable`,
                `comparisonCostsUnavailable`, `connectionListingUnavailable`,
                `feeUnverified`, `noPool`, `noPrice`, `noSize`, `notFilled`,
                `notYetPublished`, `priceArithmetic`, `priceSourceNone`,
                `referenceMidUnavailable`, `settlementPrecisionUnavailable`,
                `accountSetupIncomplete`, `admissionUnavailable`,
                `advancedAccountEligibilityUnavailable`,
                `advancedAccountStateInconsistent`,
                `advancedConnectionDisabled`, `advancedConnectionNotConfigured`,
                `advancedConnectionPaused`,
                `advancedSettlementNeedsVerification`, `advancedModeDisabled`,
                `advancedNotAvailableForAccount`,
                `advancedNotEnabledForAccount`, `allowanceUnavailable`,
                `acrossCapacityExceeded`, `relayCapacityExceeded`,
                `acrossChainNotCarried`, `cctpChainNotCarried`,
                `relayChainNotCarried`, `apiKeyAdvancedWalletUnsupported`,
                `apiKeyOrganisationWalletScopeRequired`, `grantCapExceeded`,
                `amountAboveMaximum`, `amountBelowMinimum`, `amountUnreadable`,
                `amountsUnreadable`, `askFirst`, `authorityUnavailable`,
                `automationNeverAsks`, `availabilityUnreadable`,
                `backgroundNeverAsks`, `balanceUnreadable`,
                `defaultsUnavailable`, `walletHasNoAddress`,
                `walletUnavailable`, `bondAmountUnreadable`,
                `bondAssetUnreadable`, `catalogueUnavailable`,
                `chainFamilyUnknown`, `chainUnrecorded`,
                `clientSessionRequired`, `clockUnreadable`, `comingSoon`,
                `connectionChanged`, `connectionRevoked`, `corridorInvalid`,
                `credential`, `deadlineExceeded`, `defaultsLoading`,
                `deliverToCalldataUnsupported`, `deliverToTagUnsupported`,
                `deliverToNotPermitted`, `deliverToUnreadable`,
                `tradingPermissionRequired`, `directPatienceHarvest`,
                `economicallyInferior`, `exactAmountConflictsWithCard`,
                `exactAmountConflictsWithQuote`,
                `exactOutputDeliveryUnsupported`,
                `exactOutputEstimateUnavailable`,
                `exactRouteHypothesisUnavailable`, `expiredOnArrival`,
                `expiryUnknown`, `feeUnreadable`, `filteredOut`,
                `firmAskRefused`, `freshnessUnknown`, `fundingWindow`,
                `insufficientLiquidity`, `venueRelationship`,
                `venueRelationshipUnavailable`, `lpUnknown`,
                `mfaEnrolmentRequired`, `mfaRequired`, `minimumUnverified`,
                `mixedNetworks`, `netReceivedUnavailable`, `networkUnrecorded`,
                `noAddress`, `noCard`, `noFetcher`, `noInventory`,
                `noLaneForPair`, `noLegs`, `noOnChainCorridor`,
                `noPlannedVenue`, `noQuote`, `noRpc`, `notConnected`,
                `notEligible`, `notExecutable`, `orderPayloadMissing`,
                `outsideTopComposites`, `pairUnmapped`, `sellChainInvalid`,
                `permissionsUnreadable`, `placeOrderNotPermitted`,
                `prefundingMarkerUnreadable`, `prefundingRequired`,
                `indicative`, `priceOnRequest`, `priceOutOfRange`,
                `priceProtectionInvalid`, `pricingBookOnly`, `productNotQuoted`,
                `protocolChainMissing`, `providerFeeTreatmentUnknown`,
                `providerSiteUnrecorded`, `quoteIdUnissuable`, `quoteNotHeld`,
                `buyChainInvalid`, `buyAmountUnsupported`,
                `exactOutputDebitUnavailable`, `pairNotServed`,
                `receiveWalletNotServed`, `referenceMidUnreadable`,
                `referencePriceUnavailable`, `registryUnavailable`,
                `releaseRecheckUnavailable`, `requestUnbuildable`,
                `routeLegChainUnknown`, `routeLegUnnamed`, `routeLegUnplanned`,
                `routeUnavailable`, `secondFactorUnreadable`,
                `shortfallUnmeasured`, `shortfallUnreadable`,
                `singleChainVenue`, `siteChainUnreadable`, `sizeNotEligible`,
                `submitOrderBlocked`, `takerOnboardingIncomplete`,
                `tierNotQuoted`, `tradePaused`, `unsupportedNative`,
                `venueConnectionStorageUnavailable`, `venueDataStale`,
                `venueDeclined`, `venueNotConnected`,
                `venueNotEnabledForWorkspace`, `venueNotListed`,
                `venueTradeKeyUnavailable`, `venueTradeScopeRequired`,
                `venueTradeUnreadable`, `venueUnavailable`, `walletRefused`,
                `withdrawalFeeUnread`, `acrossRoutedViaCctp`,
                `apiKeyOrganisationWalletNotAllowlisted`,
                `balanceAvailabilityUnconfirmed`, `bankDestinationUnavailable`,
                `bebopJamKeyNotEnabled`, `bebopJamQuoteDeclined`,
                `bebopTokenUnavailable`, `relayCurrencyUnsupported`,
                `relaySwapImpactTooHigh`, `tetrafiSolverCallbackNotAuthorized`,
                `tradingLinkSnapshotChanged`, `tradingLinkSnapshotUnavailable`,
                `uniswapChainReadUnavailable`, `uniswapInsufficientDepth`,
                `uniswapQuoteUnreadable`, `uniswapUnwrapAboveDailyCap`,
                `uniswapUnwrapAboveTradeCap`, `uniswapRouteNotGranted`,
                `venueNotEnabled`, `askLimitReached`,
                `balanceMeaningUnconfirmed`, `bebopJamWalletUnsupported`,
                `bebopQuorumWalletTooSlow`, `bebopWalletQuorumUnreadable`,
                `connectionNotConfigured`, `deliveryAccountNetworkUnavailable`,
                `deliveryAccountUnavailable`, `destinationCannotSendOnChain`,
                `dexReferencePriceUnavailable`, `firmQuoteLimited`,
                `fundingAccountNetworkUnavailable`, `fundingAccountUnavailable`,
                `insufficientDepth`, `missingPermission`, `needsNativeGas`,
                `needsWallet`, `notPriced`, `payInTermsUnavailable`,
                `pilotTradeCapExceeded`, `platformFeeRateUnavailable`,
                `pricingBookPairUnserved`, `settlementDeclarationUnavailable`,
                `settlementNotAvailable`, `timedOut`, `timedOutBeforeSend`,
                `tradingSourceNetworkUnavailable`, `tradingSourceNotLinked`,
                `venueEnablementRechecking`, `venueEnablementUnavailable`,
                `venueListingTimedOut`, `venuePoliciesUnavailable`.


                New values may be added; treat unknown values as other.
              type: string
            sizeLimits:
              oneOf:
                - type: 'null'
                - $ref: '#/components/schemas/VenueRfqSizeObservation'
            status:
              description: New values may be added; treat unknown values as other.
              enum:
                - unsupported
              type: string
              x-extensible-enum: true
            venue:
              $ref: '#/components/schemas/QuoteVenue'
          required:
            - asked
            - detail
            - reason
            - status
            - venue
          type: object
        - properties:
            asked:
              type: boolean
            detail:
              type:
                - string
                - 'null'
            fix:
              oneOf:
                - type: 'null'
                - $ref: '#/components/schemas/QuoteSourceFix'
                  description: >-
                    The server-owned recovery step; absent on an unblocked or
                    older source.
            status:
              description: New values may be added; treat unknown values as other.
              enum:
                - filteredOut
              type: string
              x-extensible-enum: true
            venue:
              $ref: '#/components/schemas/QuoteVenue'
          required:
            - asked
            - detail
            - status
            - venue
          type: object
        - properties:
            asked:
              type: boolean
            detail:
              type:
                - string
                - 'null'
            fix:
              oneOf:
                - type: 'null'
                - $ref: '#/components/schemas/QuoteSourceFix'
                  description: >-
                    The server-owned recovery step; absent on an unblocked or
                    older source.
            network:
              oneOf:
                - type: 'null'
                - $ref: '#/components/schemas/Caip2Chain'
                  description: >-
                    The paying network a venue account's wallet-default refusal
                    names

                    (`ONCHAIN_ACCOUNT_DEFAULT_WALLET_REQUIRED` /
                    `_UNAVAILABLE`), so a client

                    never parses it out of `detail`. Absent when the refusal
                    names no single network.
            product:
              oneOf:
                - type: 'null'
                - $ref: '#/components/schemas/BridgeTransferMode'
                  description: >-
                    The independently priced product, when this venue offers
                    several.
            reason:
              description: >-
                Known source reason tokens (not all apply to every status):
                `adapterPayloadSerializationFailed`,
                `basicVenueAccountsUnavailable`, `billingPaymentOverdue`,
                `walletNotOnChain`, `ccxtVenueRequiresCexLane`,
                `executionStageDisabled`, `jurisdictionUnproven`,
                `onboardedVenuesUnavailable`,
                `onchainAccountDefaultWalletRequired`,
                `onchainAccountDefaultWalletUnavailable`,
                `onchainAccountWalletRequired`, `onchainAssetDecimalsMismatch`,
                `onchainAssetIdentityMismatch`, `onchainAssetUnmapped`,
                `onchainAssetVariantFiltered`, `onchainWalletUnavailable`,
                `onchainCatalogueUnavailable`,
                `onchainDeliverToNotReceivingWallet`,
                `onchainDeliverToUnverified`, `onchainMarketsUnavailable`,
                `onchainMarketCatalogUnreadable`, `onchainMarketChainRequired`,
                `onchainMarketVariantRequired`, `onchainMarketTokenRequired`,
                `onchainSiteChainUnreadable`, `onchainWalletChainUnreadable`,
                `onchainWalletInactive`, `onchainWalletNotLinked`,
                `onchainWalletNotUsable`, `onchainWalletPickAmbiguous`,
                `onchainWalletWrongNetwork`, `payeeDeliveryUnsupported`,
                `signerLacksRight`, `signerUnavailable`,
                `signingGrantAmbiguous`, `signingGrantExpired`,
                `signingGrantRequired`, `signingGrantTokenNotKept`,
                `signingGrantTokenNotPayable`, `solverChainUnready`,
                `walletChainMismatch`, `walletNotUsableByYou`,
                `walletNotVerifiedForAce`, `walletNotWhitelisted`,
                `withdrawalChainUnsupported`, `accountFeeUnavailable`,
                `comparisonCostsUnavailable`, `connectionListingUnavailable`,
                `feeUnverified`, `noPool`, `noPrice`, `noSize`, `notFilled`,
                `notYetPublished`, `priceArithmetic`, `priceSourceNone`,
                `referenceMidUnavailable`, `settlementPrecisionUnavailable`,
                `accountSetupIncomplete`, `admissionUnavailable`,
                `advancedAccountEligibilityUnavailable`,
                `advancedAccountStateInconsistent`,
                `advancedConnectionDisabled`, `advancedConnectionNotConfigured`,
                `advancedConnectionPaused`,
                `advancedSettlementNeedsVerification`, `advancedModeDisabled`,
                `advancedNotAvailableForAccount`,
                `advancedNotEnabledForAccount`, `allowanceUnavailable`,
                `acrossCapacityExceeded`, `relayCapacityExceeded`,
                `acrossChainNotCarried`, `cctpChainNotCarried`,
                `relayChainNotCarried`, `apiKeyAdvancedWalletUnsupported`,
                `apiKeyOrganisationWalletScopeRequired`, `grantCapExceeded`,
                `amountAboveMaximum`, `amountBelowMinimum`, `amountUnreadable`,
                `amountsUnreadable`, `askFirst`, `authorityUnavailable`,
                `automationNeverAsks`, `availabilityUnreadable`,
                `backgroundNeverAsks`, `balanceUnreadable`,
                `defaultsUnavailable`, `walletHasNoAddress`,
                `walletUnavailable`, `bondAmountUnreadable`,
                `bondAssetUnreadable`, `catalogueUnavailable`,
                `chainFamilyUnknown`, `chainUnrecorded`,
                `clientSessionRequired`, `clockUnreadable`, `comingSoon`,
                `connectionChanged`, `connectionRevoked`, `corridorInvalid`,
                `credential`, `deadlineExceeded`, `defaultsLoading`,
                `deliverToCalldataUnsupported`, `deliverToTagUnsupported`,
                `deliverToNotPermitted`, `deliverToUnreadable`,
                `tradingPermissionRequired`, `directPatienceHarvest`,
                `economicallyInferior`, `exactAmountConflictsWithCard`,
                `exactAmountConflictsWithQuote`,
                `exactOutputDeliveryUnsupported`,
                `exactOutputEstimateUnavailable`,
                `exactRouteHypothesisUnavailable`, `expiredOnArrival`,
                `expiryUnknown`, `feeUnreadable`, `filteredOut`,
                `firmAskRefused`, `freshnessUnknown`, `fundingWindow`,
                `insufficientLiquidity`, `venueRelationship`,
                `venueRelationshipUnavailable`, `lpUnknown`,
                `mfaEnrolmentRequired`, `mfaRequired`, `minimumUnverified`,
                `mixedNetworks`, `netReceivedUnavailable`, `networkUnrecorded`,
                `noAddress`, `noCard`, `noFetcher`, `noInventory`,
                `noLaneForPair`, `noLegs`, `noOnChainCorridor`,
                `noPlannedVenue`, `noQuote`, `noRpc`, `notConnected`,
                `notEligible`, `notExecutable`, `orderPayloadMissing`,
                `outsideTopComposites`, `pairUnmapped`, `sellChainInvalid`,
                `permissionsUnreadable`, `placeOrderNotPermitted`,
                `prefundingMarkerUnreadable`, `prefundingRequired`,
                `indicative`, `priceOnRequest`, `priceOutOfRange`,
                `priceProtectionInvalid`, `pricingBookOnly`, `productNotQuoted`,
                `protocolChainMissing`, `providerFeeTreatmentUnknown`,
                `providerSiteUnrecorded`, `quoteIdUnissuable`, `quoteNotHeld`,
                `buyChainInvalid`, `buyAmountUnsupported`,
                `exactOutputDebitUnavailable`, `pairNotServed`,
                `receiveWalletNotServed`, `referenceMidUnreadable`,
                `referencePriceUnavailable`, `registryUnavailable`,
                `releaseRecheckUnavailable`, `requestUnbuildable`,
                `routeLegChainUnknown`, `routeLegUnnamed`, `routeLegUnplanned`,
                `routeUnavailable`, `secondFactorUnreadable`,
                `shortfallUnmeasured`, `shortfallUnreadable`,
                `singleChainVenue`, `siteChainUnreadable`, `sizeNotEligible`,
                `submitOrderBlocked`, `takerOnboardingIncomplete`,
                `tierNotQuoted`, `tradePaused`, `unsupportedNative`,
                `venueConnectionStorageUnavailable`, `venueDataStale`,
                `venueDeclined`, `venueNotConnected`,
                `venueNotEnabledForWorkspace`, `venueNotListed`,
                `venueTradeKeyUnavailable`, `venueTradeScopeRequired`,
                `venueTradeUnreadable`, `venueUnavailable`, `walletRefused`,
                `withdrawalFeeUnread`, `acrossRoutedViaCctp`,
                `apiKeyOrganisationWalletNotAllowlisted`,
                `balanceAvailabilityUnconfirmed`, `bankDestinationUnavailable`,
                `bebopJamKeyNotEnabled`, `bebopJamQuoteDeclined`,
                `bebopTokenUnavailable`, `relayCurrencyUnsupported`,
                `relaySwapImpactTooHigh`, `tetrafiSolverCallbackNotAuthorized`,
                `tradingLinkSnapshotChanged`, `tradingLinkSnapshotUnavailable`,
                `uniswapChainReadUnavailable`, `uniswapInsufficientDepth`,
                `uniswapQuoteUnreadable`, `uniswapUnwrapAboveDailyCap`,
                `uniswapUnwrapAboveTradeCap`, `uniswapRouteNotGranted`,
                `venueNotEnabled`, `askLimitReached`,
                `balanceMeaningUnconfirmed`, `bebopJamWalletUnsupported`,
                `bebopQuorumWalletTooSlow`, `bebopWalletQuorumUnreadable`,
                `connectionNotConfigured`, `deliveryAccountNetworkUnavailable`,
                `deliveryAccountUnavailable`, `destinationCannotSendOnChain`,
                `dexReferencePriceUnavailable`, `firmQuoteLimited`,
                `fundingAccountNetworkUnavailable`, `fundingAccountUnavailable`,
                `insufficientDepth`, `missingPermission`, `needsNativeGas`,
                `needsWallet`, `notPriced`, `payInTermsUnavailable`,
                `pilotTradeCapExceeded`, `platformFeeRateUnavailable`,
                `pricingBookPairUnserved`, `settlementDeclarationUnavailable`,
                `settlementNotAvailable`, `timedOut`, `timedOutBeforeSend`,
                `tradingSourceNetworkUnavailable`, `tradingSourceNotLinked`,
                `venueEnablementRechecking`, `venueEnablementUnavailable`,
                `venueListingTimedOut`, `venuePoliciesUnavailable`.


                New values may be added; treat unknown values as other.
              type: string
            sizeLimits:
              oneOf:
                - type: 'null'
                - $ref: '#/components/schemas/VenueRfqSizeObservation'
            status:
              description: New values may be added; treat unknown values as other.
              enum:
                - unavailable
              type: string
              x-extensible-enum: true
            venue:
              $ref: '#/components/schemas/QuoteVenue'
          required:
            - asked
            - detail
            - reason
            - status
            - venue
          type: object
      x-extensible-enum: true
    ApiErrorDetails:
      additionalProperties:
        description: >-
          Any further detail the code carries (for example `stepUpSubject`,
          `balanceShortfall`,

          `minimumAmount`), each named in camelCase.
      description: >-
        The code's detail. Each field is present only on the codes named beside
        it; other codes may

        carry further fields, named in camelCase, which a client may ignore.
      properties:
        capabilityBlockers:
          description: >-
            `CAPABILITY_BLOCKED` and the other capability refusals: what blocks
            the workspace.
          items:
            $ref: '#/components/schemas/CapabilityBlocker'
          type:
            - array
            - 'null'
        conflicts:
          description: '`REQUOTE_FIELDS_CONFLICT`: the fields that cannot go with `requote`.'
          items:
            type: string
          type:
            - array
            - 'null'
        field:
          description: '`INVALID_REQUEST` (out of range): the field.'
          type:
            - string
            - 'null'
        reason:
          description: >-
            A machine-readable reason token the refusing step gave.


            Known source reason tokens (not all apply to every status):
            `adapterPayloadSerializationFailed`,
            `basicVenueAccountsUnavailable`, `billingPaymentOverdue`,
            `walletNotOnChain`, `ccxtVenueRequiresCexLane`,
            `executionStageDisabled`, `jurisdictionUnproven`,
            `onboardedVenuesUnavailable`, `onchainAccountDefaultWalletRequired`,
            `onchainAccountDefaultWalletUnavailable`,
            `onchainAccountWalletRequired`, `onchainAssetDecimalsMismatch`,
            `onchainAssetIdentityMismatch`, `onchainAssetUnmapped`,
            `onchainAssetVariantFiltered`, `onchainWalletUnavailable`,
            `onchainCatalogueUnavailable`, `onchainDeliverToNotReceivingWallet`,
            `onchainDeliverToUnverified`, `onchainMarketsUnavailable`,
            `onchainMarketCatalogUnreadable`, `onchainMarketChainRequired`,
            `onchainMarketVariantRequired`, `onchainMarketTokenRequired`,
            `onchainSiteChainUnreadable`, `onchainWalletChainUnreadable`,
            `onchainWalletInactive`, `onchainWalletNotLinked`,
            `onchainWalletNotUsable`, `onchainWalletPickAmbiguous`,
            `onchainWalletWrongNetwork`, `payeeDeliveryUnsupported`,
            `signerLacksRight`, `signerUnavailable`, `signingGrantAmbiguous`,
            `signingGrantExpired`, `signingGrantRequired`,
            `signingGrantTokenNotKept`, `signingGrantTokenNotPayable`,
            `solverChainUnready`, `walletChainMismatch`, `walletNotUsableByYou`,
            `walletNotVerifiedForAce`, `walletNotWhitelisted`,
            `withdrawalChainUnsupported`, `accountFeeUnavailable`,
            `comparisonCostsUnavailable`, `connectionListingUnavailable`,
            `feeUnverified`, `noPool`, `noPrice`, `noSize`, `notFilled`,
            `notYetPublished`, `priceArithmetic`, `priceSourceNone`,
            `referenceMidUnavailable`, `settlementPrecisionUnavailable`,
            `accountSetupIncomplete`, `admissionUnavailable`,
            `advancedAccountEligibilityUnavailable`,
            `advancedAccountStateInconsistent`, `advancedConnectionDisabled`,
            `advancedConnectionNotConfigured`, `advancedConnectionPaused`,
            `advancedSettlementNeedsVerification`, `advancedModeDisabled`,
            `advancedNotAvailableForAccount`, `advancedNotEnabledForAccount`,
            `allowanceUnavailable`, `acrossCapacityExceeded`,
            `relayCapacityExceeded`, `acrossChainNotCarried`,
            `cctpChainNotCarried`, `relayChainNotCarried`,
            `apiKeyAdvancedWalletUnsupported`,
            `apiKeyOrganisationWalletScopeRequired`, `grantCapExceeded`,
            `amountAboveMaximum`, `amountBelowMinimum`, `amountUnreadable`,
            `amountsUnreadable`, `askFirst`, `authorityUnavailable`,
            `automationNeverAsks`, `availabilityUnreadable`,
            `backgroundNeverAsks`, `balanceUnreadable`, `defaultsUnavailable`,
            `walletHasNoAddress`, `walletUnavailable`, `bondAmountUnreadable`,
            `bondAssetUnreadable`, `catalogueUnavailable`, `chainFamilyUnknown`,
            `chainUnrecorded`, `clientSessionRequired`, `clockUnreadable`,
            `comingSoon`, `connectionChanged`, `connectionRevoked`,
            `corridorInvalid`, `credential`, `deadlineExceeded`,
            `defaultsLoading`, `deliverToCalldataUnsupported`,
            `deliverToTagUnsupported`, `deliverToNotPermitted`,
            `deliverToUnreadable`, `tradingPermissionRequired`,
            `directPatienceHarvest`, `economicallyInferior`,
            `exactAmountConflictsWithCard`, `exactAmountConflictsWithQuote`,
            `exactOutputDeliveryUnsupported`, `exactOutputEstimateUnavailable`,
            `exactRouteHypothesisUnavailable`, `expiredOnArrival`,
            `expiryUnknown`, `feeUnreadable`, `filteredOut`, `firmAskRefused`,
            `freshnessUnknown`, `fundingWindow`, `insufficientLiquidity`,
            `venueRelationship`, `venueRelationshipUnavailable`, `lpUnknown`,
            `mfaEnrolmentRequired`, `mfaRequired`, `minimumUnverified`,
            `mixedNetworks`, `netReceivedUnavailable`, `networkUnrecorded`,
            `noAddress`, `noCard`, `noFetcher`, `noInventory`, `noLaneForPair`,
            `noLegs`, `noOnChainCorridor`, `noPlannedVenue`, `noQuote`, `noRpc`,
            `notConnected`, `notEligible`, `notExecutable`,
            `orderPayloadMissing`, `outsideTopComposites`, `pairUnmapped`,
            `sellChainInvalid`, `permissionsUnreadable`,
            `placeOrderNotPermitted`, `prefundingMarkerUnreadable`,
            `prefundingRequired`, `indicative`, `priceOnRequest`,
            `priceOutOfRange`, `priceProtectionInvalid`, `pricingBookOnly`,
            `productNotQuoted`, `protocolChainMissing`,
            `providerFeeTreatmentUnknown`, `providerSiteUnrecorded`,
            `quoteIdUnissuable`, `quoteNotHeld`, `buyChainInvalid`,
            `buyAmountUnsupported`, `exactOutputDebitUnavailable`,
            `pairNotServed`, `receiveWalletNotServed`, `referenceMidUnreadable`,
            `referencePriceUnavailable`, `registryUnavailable`,
            `releaseRecheckUnavailable`, `requestUnbuildable`,
            `routeLegChainUnknown`, `routeLegUnnamed`, `routeLegUnplanned`,
            `routeUnavailable`, `secondFactorUnreadable`, `shortfallUnmeasured`,
            `shortfallUnreadable`, `singleChainVenue`, `siteChainUnreadable`,
            `sizeNotEligible`, `submitOrderBlocked`,
            `takerOnboardingIncomplete`, `tierNotQuoted`, `tradePaused`,
            `unsupportedNative`, `venueConnectionStorageUnavailable`,
            `venueDataStale`, `venueDeclined`, `venueNotConnected`,
            `venueNotEnabledForWorkspace`, `venueNotListed`,
            `venueTradeKeyUnavailable`, `venueTradeScopeRequired`,
            `venueTradeUnreadable`, `venueUnavailable`, `walletRefused`,
            `withdrawalFeeUnread`, `acrossRoutedViaCctp`,
            `apiKeyOrganisationWalletNotAllowlisted`,
            `balanceAvailabilityUnconfirmed`, `bankDestinationUnavailable`,
            `bebopJamKeyNotEnabled`, `bebopJamQuoteDeclined`,
            `bebopTokenUnavailable`, `relayCurrencyUnsupported`,
            `relaySwapImpactTooHigh`, `tetrafiSolverCallbackNotAuthorized`,
            `tradingLinkSnapshotChanged`, `tradingLinkSnapshotUnavailable`,
            `uniswapChainReadUnavailable`, `uniswapInsufficientDepth`,
            `uniswapQuoteUnreadable`, `uniswapUnwrapAboveDailyCap`,
            `uniswapUnwrapAboveTradeCap`, `uniswapRouteNotGranted`,
            `venueNotEnabled`, `askLimitReached`, `balanceMeaningUnconfirmed`,
            `bebopJamWalletUnsupported`, `bebopQuorumWalletTooSlow`,
            `bebopWalletQuorumUnreadable`, `connectionNotConfigured`,
            `deliveryAccountNetworkUnavailable`, `deliveryAccountUnavailable`,
            `destinationCannotSendOnChain`, `dexReferencePriceUnavailable`,
            `firmQuoteLimited`, `fundingAccountNetworkUnavailable`,
            `fundingAccountUnavailable`, `insufficientDepth`,
            `missingPermission`, `needsNativeGas`, `needsWallet`, `notPriced`,
            `payInTermsUnavailable`, `pilotTradeCapExceeded`,
            `platformFeeRateUnavailable`, `pricingBookPairUnserved`,
            `settlementDeclarationUnavailable`, `settlementNotAvailable`,
            `timedOut`, `timedOutBeforeSend`, `tradingSourceNetworkUnavailable`,
            `tradingSourceNotLinked`, `venueEnablementRechecking`,
            `venueEnablementUnavailable`, `venueListingTimedOut`,
            `venuePoliciesUnavailable`.


            New values may be added; treat unknown values as other.
          type:
            - string
            - 'null'
        remediation:
          description: A machine-readable recovery hint the refusing step gave.
          type:
            - string
            - 'null'
        retryAfter:
          oneOf:
            - type: 'null'
            - $ref: '#/components/schemas/IsoDuration'
              description: >-
                Every `429`, and a `503` that knows: when to try again, as an
                ISO 8601 duration. The

                `Retry-After` header carries the same wait in whole seconds.
        value:
          description: >-
            `UNKNOWN_ASSET`, `UNKNOWN_CHAIN`, `UNKNOWN_VENUE`, `INVALID_AMOUNT`:
            the value refused;

            `ASSET_NOT_ON_CHAIN`: the pinned chain the Asset is not on.
          type:
            - string
            - 'null'
      type: object
    QuoteNextAction:
      description: |-
        The one action the caller takes next; later legs run
        under the order.

        New values may be added; treat unknown values as other.
      discriminator:
        propertyName: kind
      oneOf:
        - description: '`POST /orders {quoteId}`.'
          properties:
            kind:
              description: New values may be added; treat unknown values as other.
              enum:
                - order
              type: string
              x-extensible-enum: true
          required:
            - kind
          type: object
        - description: >-
            `POST /orders/preflight`: the held terms may need an approval,
            allowance or

            receipt the server cannot confirm from memory. Its response carries
            the next step.
          properties:
            kind:
              description: New values may be added; treat unknown values as other.
              enum:
                - preflight
              type: string
              x-extensible-enum: true
          required:
            - kind
          type: object
        - description: Send these transactions, then order.
          properties:
            kind:
              description: New values may be added; treat unknown values as other.
              enum:
                - transact
              type: string
              x-extensible-enum: true
            transactions:
              items:
                $ref: '#/components/schemas/TakerTransaction'
              type: array
          required:
            - transactions
            - kind
          type: object
        - description: Sign this EIP-712 document, then order.
          properties:
            kind:
              description: New values may be added; treat unknown values as other.
              enum:
                - sign
              type: string
              x-extensible-enum: true
            typedData: {}
          required:
            - typedData
            - kind
          type: object
        - description: >-
            Fund, then requote. `null` instructions when they could not be read;
            no order is

            accepted while short either way.
          properties:
            instructions:
              oneOf:
                - type: 'null'
                - $ref: '#/components/schemas/FundInstructions'
            kind:
              description: New values may be added; treat unknown values as other.
              enum:
                - fund
              type: string
              x-extensible-enum: true
          required:
            - kind
          type: object
        - description: Ask the venue again, with these Binding slots filled.
          properties:
            kind:
              description: New values may be added; treat unknown values as other.
              enum:
                - requote
              type: string
              x-extensible-enum: true
            needs:
              items:
                $ref: '#/components/schemas/RequoteNeed'
              type: array
          required:
            - needs
            - kind
          type: object
        - description: >-
            Search again: `POST /quotes` with a pair body. The quote is past its
            requote window,

            so `{requote: quoteId}` can no longer refresh it.
          properties:
            kind:
              description: New values may be added; treat unknown values as other.
              enum:
                - search
              type: string
              x-extensible-enum: true
          required:
            - kind
          type: object
        - description: >-
            The venue outcome is being reconciled. Read this same order again
            after

            the given ISO 8601 duration; never submit a replacement order.
          properties:
            kind:
              description: New values may be added; treat unknown values as other.
              enum:
                - wait
              type: string
              x-extensible-enum: true
            retryAfter:
              $ref: '#/components/schemas/IsoDuration'
          required:
            - retryAfter
            - kind
          type: object
        - description: Contact support with this non-secret order reference.
          properties:
            kind:
              description: New values may be added; treat unknown values as other.
              enum:
                - contact
              type: string
              x-extensible-enum: true
            reference:
              type: string
          required:
            - reference
            - kind
          type: object
      x-extensible-enum: true
    PairQuote:
      allOf:
        - $ref: '#/components/schemas/CardFirmness'
          description: The card's firmness, written as `firm` and `lastLook`.
        - anyOf:
            - $ref: '#/components/schemas/ResolvedTradingSource'
            - not:
                anyOf:
                  - required:
                      - tradingSource
                  - required:
                      - fundingModel
                  - required:
                      - settlement
                  - required:
                      - fundingAccount
                  - required:
                      - deliverTo
        - properties:
            advisories:
              description: >-
                Competing mechanisms' limitations remain visible even when one
                serves.
              items:
                $ref: '#/components/schemas/RfqMechanismAdvisory'
              type: array
            assurance:
              oneOf:
                - type: 'null'
                - $ref: '#/components/schemas/QuoteAssurance'
                  description: >-
                    The bond backing the quote, separate from its firmness; null
                    when unbonded.
            basis:
              $ref: '#/components/schemas/QuoteBasis'
              description: >-
                Where the price came from: a live venue quote, published levels,
                or a model.
            buy:
              $ref: '#/components/schemas/QuoteSide'
              description: >-
                What the taker buys: `buy.amount` is what lands at `deliverTo`,
                after every

                `included: true` fee taken in the bought Asset.
            corridors:
              description: >-
                The venue's other supported corridors; changing one is a
                Requote.
              items:
                $ref: '#/components/schemas/QuoteCorridor'
              type: array
            eta:
              oneOf:
                - type: 'null'
                - $ref: '#/components/schemas/IsoDuration'
                  description: >-
                    Expected time to delivery (ISO 8601 duration); null when the
                    venue states none.
            expiresAt:
              description: >-
                When an executable quote stops being orderable; null for an
                indicative one (see `staleAfter`).
              format: date-time
              type:
                - string
                - 'null'
            failureHandling:
              oneOf:
                - type: 'null'
                - $ref: '#/components/schemas/QuoteFailureHandling'
                  description: >-
                    What happens to the input if execution fails, as the venue
                    reports it.
            fees:
              description: >-
                Every fee line, its payer and whether `buy.amount` already
                includes it; an amount that could

                not be read is null, never 0.
              items:
                $ref: '#/components/schemas/QuoteFee'
              type: array
            firmAsk:
              oneOf:
                - type: 'null'
                - $ref: '#/components/schemas/FirmAsk'
                  description: >-
                    When this card's venue gives its binding price, from the
                    venue's own declaration:

                    `onRequest` (a desk is firm-asked by Get firm quote or a
                    requote) or `atExecution`

                    (the venue prices firm only when the order executes, so Get
                    firm quote is not offered).

                    Absent when no venue declares it (protocol routes, order
                    books, fiat venues).
            firmAskAvailableAt:
              description: >-
                When this desk takes its next firm ask: its firm-quote limit for
                this workspace is reached

                until then, so Get firm quote and an order-time ask are refused
                before it. Absent

                when no limit is known here; the desk's admission still decides
                at ask time.
              format: date-time
              type:
                - string
                - 'null'
            firmQuoteDailyWarning:
              oneOf:
                - type: 'null'
                - $ref: '#/components/schemas/FirmQuoteDailyWarning'
                  description: >-
                    Current workspace/venue firm asks, read without contacting
                    the provider.
            id:
              description: >-
                The held quote's id (`q_` + ULID): order it with `POST /orders
                {quoteId}`, preflight it with

                `POST /orders/preflight {quoteId}`, requote it with `POST
                /quotes {requote: id}`. It belongs to the

                principal that asked; another principal reads it as unknown
                (404).
              type: string
            legs:
              description: >-
                One leg per venue the quote runs through, in execution order: a
                multi-leg route (for example

                CCTP then Circle StableFX) lists each leg's venue and location.
              items:
                $ref: '#/components/schemas/QuoteLeg'
              type: array
            location:
              $ref: '#/components/schemas/QuoteLocation'
              description: Where the quote executes, derived from its legs.
            maxPay:
              oneOf:
                - type: 'null'
                - $ref: '#/components/schemas/DecimalAmount'
                  description: >-
                    The most `sell.amount` a `receiveExact` venue card may
                    debit: the mirror of `minOut`, the quoted

                    debit grown by `priceProtectionBps`. It is the consent an
                    order on it carries, so Confirm's

                    one fresh quote of an expired card is judged by it. Absent
                    for `payExact`.
            mechanism:
              oneOf:
                - type: 'null'
                - $ref: '#/components/schemas/RfqMechanism'
                  description: >-
                    The native mechanism that actually supplied this venue's
                    price.
            minOut:
              oneOf:
                - type: 'null'
                - $ref: '#/components/schemas/DecimalAmount'
                  description: >-
                    The least `buy.amount` execution may deliver (from
                    `priceProtectionBps`).
            minReceiveRequired:
              description: >-
                Whether `POST /orders` requires `minReceive` for this card. A
                held firm offer

                already supplies confirmation; other within-limit cards need the
                caller's minimum.
              type: boolean
            netReceived:
              $ref: '#/components/schemas/NetReceived'
              description: >-
                `buy.amount` minus every other cost, converted at the Reference
                mid: for

                comparison and sort only, never what lands.
            next:
              $ref: '#/components/schemas/QuoteNextAction'
              description: >-
                The caller's next call: `preflight` (protocol), `order`,
                `requote` (a production venue's indicative

                card: its firm quote comes from a requote), or what to fix
                first.
            observedAt:
              description: >-
                When the price was observed: an indicative price, or the book
                read an executable

                order-book estimate (one that reprices when chosen) was priced
                from; null for a firm quote.
              format: date-time
              type:
                - string
                - 'null'
            readiness:
              $ref: '#/components/schemas/Readiness'
              description: >-
                Whether the quote can be ordered now (funding, gas, wallet); an
                unknown is `unavailable`, never 0.
            refundClaimableAfter:
              description: >-
                With `refundOnSource` on an escrowed intent: the instant after
                which the source-chain

                escrow refunds the input if the order was not filled, read from
                the signed order's own

                expiry (`expires`). Until then the input stays in that escrow.
                Absent when the quote holds

                no escrowed intent or its expiry could not be read; never
                estimated.
              format: date-time
              type:
                - string
                - 'null'
            requoteOf:
              description: >-
                The quote this one requoted (`POST /quotes {requote}`); the
                original stays orderable until its own

                expiry, and a route's requote is that same route.
              type:
                - string
                - 'null'
            retainUntil:
              description: >-
                The last instant this held quote can still be requoted, or
                ordered where its lapse

                allows it: its lapse plus the requote window (10 minutes), or
                the recovery window

                (30 minutes) for a protocol quote. After it, requote and order
                answer 410

                `REQUOTE_WINDOW_CLOSED` with `next: search` (request quotes
                again); before it, an

                order past the quote's lapse answers 410 `QUOTE_EXPIRED` with
                `next: requote`. Read from the held quote's own retention, never
                computed by a client;

                absent when that instant is not representable.
              format: date-time
              type:
                - string
                - 'null'
            screening:
              oneOf:
                - type: 'null'
                - $ref: '#/components/schemas/QuoteScreening'
                  description: >-
                    The bound wallet's screening state; null when no wallet is
                    bound.
            sell:
              $ref: '#/components/schemas/QuoteSide'
              description: >-
                What the taker sells: Asset, chain (null off-chain), variant and
                amount in Asset units.
            signaturesRequired:
              description: >-
                Every signature the order needs. `next.sign` carries the first;
                later ones arrive

                on the order as `signNextLeg`.
              format: int32
              minimum: 0
              type:
                - integer
                - 'null'
            sizeLimits:
              oneOf:
                - type: 'null'
                - $ref: '#/components/schemas/VenueRfqSizeObservation'
                  description: >-
                    Provider bounds retained with this answer, never a current
                    admission grant.
            sourceOptions:
              items:
                $ref: '#/components/schemas/SourceOption'
              type: array
            sourceRefusal:
              oneOf:
                - type: 'null'
                - $ref: '#/components/schemas/QuoteTradingSourceRefusal'
            spreadFromMidBps:
              $ref: '#/components/schemas/SpreadFromMid'
              description: >-
                The price's distance from the Reference mid, or the reason it is
                unknown.
            staleAfter:
              description: >-
                When an indicative price goes stale; null for an executable
                quote.
              format: date-time
              type:
                - string
                - 'null'
            unspent:
              oneOf:
                - type: 'null'
                - $ref: '#/components/schemas/UnspentPay'
                  description: >-
                    What a `payExact` card leaves unspent of the amount asked:
                    an order book fills whole

                    lots, so the card spends less and the rest stays where it is
                    paid from. Absent when the card

                    spends the whole amount.
            walletSelection:
              additionalProperties:
                $ref: '#/components/schemas/QuoteWalletSelection'
              description: >-
                Why each Basic on-chain wallet was selected. Response metadata,
                never request authority.
              propertyNames:
                description: >-
                  A CAIP-2 chain id (`eip155:8453`, `solana:<genesis>`,
                  `tron:shasta`), syntax-checked:

                  a namespace of 3 to 8 lowercase letters, digits or `-`, and a
                  reference of 1 to 32

                  letters, digits, `-` or `_`. Compared exactly, as CAIP-2
                  references are case-sensitive.
                example: eip155:8453
                type: string
              type: object
          required:
            - advisories
            - assurance
            - basis
            - buy
            - corridors
            - eta
            - expiresAt
            - failureHandling
            - fees
            - id
            - legs
            - location
            - minOut
            - minReceiveRequired
            - netReceived
            - next
            - observedAt
            - readiness
            - requoteOf
            - screening
            - sell
            - signaturesRequired
            - sourceOptions
            - spreadFromMidBps
            - staleAfter
          type: object
      description: >-
        One venue's quote for the pair. Every field is always present; one that
        does not

        apply to the quote's firmness is `null`:


        | field | indicative | executable, firm | executable, non-firm |

        |---|---|---|---|

        | `firm` | false | true | false |

        | `expiresAt` | null | set | set |

        | `minOut` | null | null | set |

        | `observedAt`, `staleAfter` | set | null | null |


        A stub (`sources[].priceOnRequest`) is indicative with `null` amounts.


        The example is an executable non-firm quote: 10000 USDC paid,

        `buy.amount` 9996.0 USDT lands after the included 4.0 USDT provider fee;

        `netReceived` 9994.8 also subtracts the 0.0004 ETH network fee the taker
        pays

        separately (`included: false`, about 1.2 USDT at the Reference mid), so
        it is lower

        than `buy.amount`; `minOut` 9966.01 (30 bps) bounds `buy.amount`, not

        `netReceived`.
      example:
        advisories: []
        assurance: null
        basis: liveQuote
        binding:
          deliverTo:
            address: '0x1111111111111111111111111111111111111111'
            chain: eip155:8453
            kind: address
          wallets:
            eip155:42161: lw_01JAX
        bindingOptions: []
        buy:
          amount: '9996.0'
          asset: USDT
          chain: eip155:8453
          variant:
            kind: native
            name: USDT
        corridors:
          - from: eip155:1
            to: eip155:8453
        eta: PT40S
        expiresAt: '2026-10-17T10:01:00Z'
        failureHandling: refundOnSource
        fees:
          - amount: '4.0'
            asset: USDT
            chain: null
            included: true
            kind: provider
            leg: 0
            paidBy: taker
          - amount: '0.0004'
            asset: ETH
            chain: eip155:42161
            included: false
            kind: network
            leg: 0
            paidBy: taker
        firm: false
        id: q_01JAY7Q5M3ZK8V2N4R6T8W0XYB
        lastLook: false
        legs:
          - expectedArrival: null
            fundingModel: null
            location:
              from: eip155:42161
              kind: crossChain
              to: eip155:8453
            venue:
              id: tetrafi-solver
              logoUrl: null
              modality: solver
              name: TetraFi Solver
              protocolVersion: null
        location:
          kind: crossChain
        minOut: '9966.01'
        minReceiveRequired: false
        netReceived:
          amount: '9994.8'
          kind: known
        next:
          kind: sign
          typedData: {}
        observedAt: null
        readiness:
          kind: ready
        requoteOf: null
        screening: screened
        sell:
          amount: '10000'
          asset: USDC
          chain: eip155:42161
          variant:
            kind: native
            name: USDC
        signaturesRequired: 1
        spreadFromMidBps:
          bps: 6
          kind: known
        staleAfter: null
    QuoteLiveState:
      description: >-
        A point-in-time hold, not a grant of order or funding authority.
        Preflight/order

        re-check the original owner, binding and funding authority before
        dispatch.


        New values may be added; treat unknown values as other.
      oneOf:
        - properties:
            executable:
              type: boolean
            expiresAt:
              format: date-time
              type: string
            state:
              description: New values may be added; treat unknown values as other.
              enum:
                - held
              type: string
              x-extensible-enum: true
          required:
            - executable
            - expiresAt
            - state
          type: object
        - properties:
            expiresAt:
              format: date-time
              type: string
            state:
              description: New values may be added; treat unknown values as other.
              enum:
                - expired
              type: string
              x-extensible-enum: true
          required:
            - expiresAt
            - state
          type: object
        - properties:
            reason:
              type: string
            state:
              description: New values may be added; treat unknown values as other.
              enum:
                - notHeld
              type: string
              x-extensible-enum: true
          required:
            - reason
            - state
          type: object
      x-extensible-enum: true
    DecimalAmount:
      description: >-
        A non-negative decimal string in Asset units (`"10000"`, `"9994.0"`):
        digits with an

        optional fraction, no sign, exponent or leading zero. Never a float and
        never base

        units. A request amount must also be positive (`INVALID_AMOUNT`); a fee
        or a

        known balance may be zero.
      example: '10000'
      type: string
    DeliverTo:
      description: |-
        Output to own money, a third-party payee, or an explicit chain address.

        New values may be added; treat unknown values as other.
      discriminator:
        propertyName: kind
      oneOf:
        - additionalProperties: false
          properties:
            financialAccountId:
              type: string
            kind:
              description: New values may be added; treat unknown values as other.
              enum:
                - financialAccount
              type: string
              x-extensible-enum: true
          required:
            - financialAccountId
            - kind
          type: object
        - additionalProperties: false
          description: >-
            Not supported for trades. A current own payee returns no cards and
            sources unavailable

            with `payeeDeliveryUnsupported`; deliver to an address or financial
            account instead.
          properties:
            kind:
              description: New values may be added; treat unknown values as other.
              enum:
                - payee
              type: string
              x-extensible-enum: true
            payeeId:
              type: string
          required:
            - payeeId
            - kind
          type: object
        - additionalProperties: false
          properties:
            address:
              type: string
            calldata:
              type:
                - string
                - 'null'
            chain:
              $ref: '#/components/schemas/Caip2Chain'
            destinationTag:
              type:
                - string
                - 'null'
            kind:
              description: New values may be added; treat unknown values as other.
              enum:
                - address
              type: string
              x-extensible-enum: true
          required:
            - chain
            - address
            - kind
          type: object
      x-extensible-enum: true
    PairQuoteFilters:
      description: Narrowing filters; an omitted filter means all.
      properties:
        firmOnly:
          description: >-
            `true` keeps only firm cards (`firm: true`): the venue is bound to
            the price until

            `expiresAt`. Indicative cards and executable estimates held to
            `minOut` are left out;

            absent or `false` keeps all.
          type:
            - boolean
            - 'null'
        locations:
          items:
            $ref: '#/components/schemas/LocationKind'
          type:
            - array
            - 'null'
        modalities:
          items:
            $ref: '#/components/schemas/VenueModality'
          type:
            - array
            - 'null'
        variants:
          oneOf:
            - type: 'null'
            - $ref: '#/components/schemas/VariantFilter'
        venues:
          oneOf:
            - type: 'null'
            - $ref: '#/components/schemas/VenueFilter'
      type: object
    QuoteSideRequest:
      additionalProperties: false
      description: 'One side of a quote request: an Asset, optionally pinned to a chain.'
      properties:
        asset:
          $ref: '#/components/schemas/AssetId'
        chain:
          oneOf:
            - type: 'null'
            - $ref: '#/components/schemas/Caip2Chain'
              description: >-
                Pins this side to one chain, which implies on-chain for this
                side.
      required:
        - asset
      type: object
    RoutingOptions:
      description: |-
        Routing options for /api/v1/quotes.

        Route discovery is ON by default for eligible requests
        (exact-input, single on-chain input/output, cross-chain or
        cross-symbol, server config enabled). These options only disable or
        bound it per request — absence means defaults.
      properties:
        exactRouteEdgeIds:
          description: >-
            Optional exact ordered registry edge sequence to evaluate.


            This is primarily an audit/debugging constraint: when present, route

            discovery may return only the candidate whose edge IDs match this
            list

            exactly and in order. It never makes an otherwise-ineligible edge

            executable and all normal workspace, provider, amount, contract, and

            preflight gates still apply.
          items:
            type: string
          type:
            - array
            - 'null'
        maxRouteCandidates:
          description: Maximum route candidates to exact-quote (server-clamped).
          format: int32
          minimum: 0
          type:
            - integer
            - 'null'
        maxRouteLegs:
          description: |-
            Maximum route length in legs (server-clamped; see
            `RoutingOptions::validate`).
          format: int32
          minimum: 0
          type:
            - integer
            - 'null'
        routes:
          description: Set `false` to skip route discovery for this request.
          type:
            - boolean
            - 'null'
      type: object
    QuoteAmountSide:
      description: |-
        Which amount the request fixes.

        New values may be added; treat unknown values as other.
      enum:
        - payExact
        - receiveExact
      type: string
      x-extensible-enum: true
    QuoteSort:
      description: >-
        The order of `quotes[]`; ties break by venue id. There is no
        `recommended`.


        New values may be added; treat unknown values as other.
      enum:
        - netReceived
        - eta
      type: string
      x-extensible-enum: true
    SourceSelection:
      additionalProperties: false
      description: An explicit request choice. Every value is a financial-account id.
      properties:
        fundingAccountId:
          type:
            - string
            - 'null'
        tradingWallets:
          additionalProperties:
            type: string
          propertyNames:
            description: >-
              A CAIP-2 chain id (`eip155:8453`, `solana:<genesis>`,
              `tron:shasta`), syntax-checked:

              a namespace of 3 to 8 lowercase letters, digits or `-`, and a
              reference of 1 to 32

              letters, digits, `-` or `_`. Compared exactly, as CAIP-2
              references are case-sensitive.
            example: eip155:8453
            type: string
          type:
            - object
            - 'null'
        venueAccountId:
          type:
            - string
            - 'null'
      type: object
    IsoDuration:
      description: An ISO 8601 duration, e.g. PT3S or PT2M.
      examples:
        - PT120S
      format: duration
      pattern: >-
        ^PT(?:[0-9]+H(?:[0-9]+M)?(?:[0-9]+(?:\.[0-9]{1,3})?S)?|[0-9]+M(?:[0-9]+(?:\.[0-9]{1,3})?S)?|[0-9]+(?:\.[0-9]{1,3})?S)$
      type: string
    QuoteVenue:
      description: >-
        The venue block. A protocol version is part of the venue's identity.
        `id` is

        the registry's venue id, the same one `/prices` rows and `sources[]`
        carry.
      properties:
        id:
          type: string
        integrationMode:
          oneOf:
            - type: 'null'
            - $ref: '#/components/schemas/IntegrationMode'
              description: >-
                The integration mode this venue was reached through:

                Basic (`basic`) or Advanced (`advanced`), the committed

                `IntegrationMode` wire values. Absent where no mode applies (a
                price row). Staged: read

                first, then written, so a venue reached in both modes keeps two
                outcomes.
        logoUrl:
          description: >-
            The venue's logo: always sent; the logo the venue's LP uploaded

            to its workspace (`/api/v1/brand/logos/<sha256>.webp`), else `null`,
            when the UI

            shows its preset or generated mark. Never synthesised from the venue
            id or name.
          type:
            - string
            - 'null'
        modality:
          $ref: '#/components/schemas/VenueModality'
        name:
          type: string
        protocolVersion:
          type:
            - string
            - 'null'
        venueId:
          description: >-
            The catalogue Venue, distinct from this route's registry/execution
            id.

            Absent for routes no Venue declares (DEX pools and registered
            solvers).
          type:
            - string
            - 'null'
        venueName:
          description: >-
            The catalogue Venue's display name, present exactly when `venue_id`
            is present.
          type:
            - string
            - 'null'
      required:
        - id
        - logoUrl
        - modality
        - name
        - protocolVersion
      type: object
    QuoteSourceFix:
      description: >-
        The server-owned next step for a blocked source. It describes recovery,
        never grants authority.

        Unknown causes carry `none`; unknown amounts, approvers and existing
        requests are never invented.


        New values may be added; treat unknown values as other.
      discriminator:
        propertyName: kind
      oneOf:
        - description: >-
            Ask for the permission or wallet right `target`. For a member
            session it is offered only

            when the permission-request owner would open (or already holds) a
            request on it; a target

            it refuses by name (`blocked`, `not_applicable`, ...) reads `none`.
            When that read fails,

            the step is offered unchanged.
          properties:
            action:
              type:
                - string
                - 'null'
            existingRequest:
              oneOf:
                - type: 'null'
                - $ref: '#/components/schemas/QuoteFixExistingRequest'
                  description: >-
                    The calling member's own pending request for this same
                    target (the target key

                    the create route deduplicates on, so a request made from
                    another venue's card

                    counts), read once per auction: the member already asked, so
                    a client shows that

                    instead of offering a second request. Absent when there is
                    none, when the read

                    failed or timed out (never a guessed value), and always for
                    API keys and

                    automation principals: only a member session's quotes carry
                    it.
            kind:
              description: New values may be added; treat unknown values as other.
              enum:
                - requestPermission
              type: string
              x-extensible-enum: true
            target:
              $ref: '#/components/schemas/PermissionRequestTarget'
          required:
            - target
            - kind
          type: object
        - description: >-
            Fund `target`. `amount` is the measured shortfall; it is absent when
            the shortfall is

            unknown (a venue that declined for insufficient balance does not say
            by how much), and the

            step is offered all the same.
          properties:
            amount:
              oneOf:
                - type: 'null'
                - $ref: '#/components/schemas/DecimalAmount'
            kind:
              description: New values may be added; treat unknown values as other.
              enum:
                - topUp
              type: string
              x-extensible-enum: true
            target:
              $ref: '#/components/schemas/QuoteFixFundingTarget'
          required:
            - target
            - kind
          type: object
        - properties:
            kind:
              description: New values may be added; treat unknown values as other.
              enum:
                - switchWallet
              type: string
              x-extensible-enum: true
          required:
            - kind
          type: object
        - description: >-
            Link a personal wallet that pays on `chain`: an Advanced card trades
            only from the member's

            own wallet, and none is linked there.
          properties:
            chain:
              $ref: '#/components/schemas/Caip2Chain'
            kind:
              description: New values may be added; treat unknown values as other.
              enum:
                - linkWallet
              type: string
              x-extensible-enum: true
          required:
            - chain
            - kind
          type: object
        - properties:
            amount:
              oneOf:
                - type: 'null'
                - $ref: '#/components/schemas/DecimalAmount'
            kind:
              description: New values may be added; treat unknown values as other.
              enum:
                - changeAmount
              type: string
              x-extensible-enum: true
          required:
            - kind
          type: object
        - properties:
            kind:
              description: New values may be added; treat unknown values as other.
              enum:
                - enableVenue
              type: string
              x-extensible-enum: true
            target:
              $ref: '#/components/schemas/QuoteFixVenueTarget'
            who:
              $ref: '#/components/schemas/WorkspacePermission'
          required:
            - target
            - who
            - kind
          type: object
        - description: >-
            Take `step` on the workspace's existing account at `target`: the
            venue is not asked until

            a member with `who` takes it there.
          properties:
            kind:
              description: New values may be added; treat unknown values as other.
              enum:
                - manageVenueAccount
              type: string
              x-extensible-enum: true
            step:
              $ref: '#/components/schemas/VenueAccountStep'
            target:
              $ref: '#/components/schemas/QuoteFixVenueTarget'
            who:
              $ref: '#/components/schemas/WorkspacePermission'
          required:
            - target
            - step
            - who
            - kind
          type: object
        - description: >-
            Within the account's credit limit but short of available credit: an
            order of at most

            `maxAmount` `asset` (the debit asset; exact, rounded down) passes
            the same check.
          properties:
            asset:
              type: string
            kind:
              description: New values may be added; treat unknown values as other.
              enum:
                - reduceAmount
              type: string
              x-extensible-enum: true
            maxAmount:
              $ref: '#/components/schemas/DecimalAmount'
          required:
            - maxAmount
            - asset
            - kind
          type: object
        - description: >-
            Already over the account's credit limit: no smaller amount passes,
            only a trade that

            reduces what the account owes. Review the venue account's positions.
          properties:
            kind:
              description: New values may be added; treat unknown values as other.
              enum:
                - reviewPositions
              type: string
              x-extensible-enum: true
            venueAccountId:
              format: uuid
              type: string
          required:
            - venueAccountId
            - kind
          type: object
        - description: >-
            A credit trade settles in the venue account's settlement window, and
            that account's

            schedule cannot produce one yet (a term the LP has not confirmed).
            Review the account's

            settlement schedule and its pending request, where the LP's answer
            is recorded.
          properties:
            kind:
              description: New values may be added; treat unknown values as other.
              enum:
                - reviewSettlementSchedule
              type: string
              x-extensible-enum: true
            venueAccountId:
              format: uuid
              type: string
          required:
            - venueAccountId
            - kind
          type: object
        - description: >-
            The account's credit figures could not be read (or are too old) to
            decide this trade:

            ask the quote again to read them afresh. `lastGoodReadAt` is the
            last good read, if any.
          properties:
            kind:
              description: New values may be added; treat unknown values as other.
              enum:
                - refreshCredit
              type: string
              x-extensible-enum: true
            lastGoodReadAt:
              format: date-time
              type:
                - string
                - 'null'
          required:
            - kind
          type: object
        - properties:
            kind:
              description: New values may be added; treat unknown values as other.
              enum:
                - finishOnboarding
              type: string
              x-extensible-enum: true
          required:
            - kind
          type: object
        - properties:
            kind:
              description: New values may be added; treat unknown values as other.
              enum:
                - waitUntil
              type: string
              x-extensible-enum: true
            until:
              format: date-time
              type: string
          required:
            - until
            - kind
          type: object
        - description: >-
            Set up wallet infrastructure (Integrations › Wallet infrastructure):
            the workspace's

            wallet infrastructure, which hosts governed organisation wallets as
            well as embedded

            ones, is not set up or is turned off, so no trading grant can be
            prepared until it is.
          properties:
            kind:
              description: New values may be added; treat unknown values as other.
              enum:
                - setUpEmbeddedWallets
              type: string
              x-extensible-enum: true
          required:
            - kind
          type: object
        - properties:
            kind:
              description: New values may be added; treat unknown values as other.
              enum:
                - none
              type: string
              x-extensible-enum: true
          required:
            - kind
          type: object
      x-extensible-enum: true
    BridgeTransferMode:
      description: |-
        Bridge speed/finality mode. Fast modes typically cost a higher
        protocol fee and settle in seconds; standard modes wait for hard
        finality. Forwarding fees apply independently to both.

        New values may be added; treat unknown values as other.
      enum:
        - fast
        - standard
      type: string
      x-extensible-enum: true
    ChainFamily:
      description: |-
        The family of wallets and addresses a chain uses.

        New values may be added; treat unknown values as other.
      enum:
        - evm
        - solana
        - tron
      type: string
      x-extensible-enum: true
    WalletLinkRecovery:
      description: >-
        Recovery for an explicitly chosen organisation wallet not linked to a
        Basic account.
      properties:
        defaultWallets:
          additionalProperties:
            type: string
          description: >-
            Per CAIP-2 chain, the account's default wallets (target ids): a
            per-request switch the

            caller sends as its pay-from preference, never a persistent
            preference write.
          propertyNames:
            description: >-
              A CAIP-2 chain id (`eip155:8453`, `solana:<genesis>`,
              `tron:shasta`), syntax-checked:

              a namespace of 3 to 8 lowercase letters, digits or `-`, and a
              reference of 1 to 32

              letters, digits, `-` or `_`. Compared exactly, as CAIP-2
              references are case-sensitive.
            example: eip155:8453
            type: string
          type:
            - object
            - 'null'
        linkHref:
          type: string
        wallet:
          $ref: '#/components/schemas/BindingTargetView'
      required:
        - wallet
        - linkHref
      type: object
    Caip2Chain:
      description: >-
        A CAIP-2 chain id (`eip155:8453`, `solana:<genesis>`, `tron:shasta`),
        syntax-checked:

        a namespace of 3 to 8 lowercase letters, digits or `-`, and a reference
        of 1 to 32

        letters, digits, `-` or `_`. Compared exactly, as CAIP-2 references are
        case-sensitive.
      example: eip155:8453
      type: string
    RestrictedReason:
      description: |-
        Why a gate kept a venue from a principal.

        New values may be added; treat unknown values as other.
      enum:
        - mfaRequired
        - venueTradeScopeRequired
        - credential
        - clientSessionRequired
        - takerOnboardingIncomplete
        - tradingPermissionRequired
        - mfaEnrolmentRequired
        - venueRelationship
      type: string
      x-extensible-enum: true
    VenueRfqSizeObservation:
      description: The native size read used for this request, not current trade authority.
      properties:
        fixedAmount:
          $ref: '#/components/schemas/FixedAmount'
          description: The request amount these limits bound, named by its request key.
        read:
          $ref: '#/components/schemas/VenueRfqSizeRead'
      required:
        - fixedAmount
        - read
      type: object
    CapabilityBlocker:
      description: One reason a capability is blocked, plus the step that unlocks it.
      properties:
        code:
          $ref: '#/components/schemas/CapabilityBlockerCode'
        currentlyDue:
          description: |-
            Requirement keys still due, such as `kyb_review`, `actor_kyc` or
            `permission:place_order`. Empty when nothing specific is due.
          items:
            type: string
          type: array
        estimate:
          $ref: '#/components/schemas/CapabilityUnlockEstimate'
        message:
          type: string
        unlockStep:
          $ref: '#/components/schemas/CapabilityUnlockStep'
          description: >-
            Stable key of the step that unlocks this blocker. The UI maps it to
            a

            route or dialog.
      required:
        - code
        - message
        - unlockStep
        - estimate
      type: object
    TakerTransaction:
      description: One transaction the Taker sends itself (an approval included).
      properties:
        chain:
          $ref: '#/components/schemas/Caip2Chain'
        data:
          description: Hex calldata (`0x…`).
          type: string
        to:
          type: string
        value:
          description: Native value in base units, as a decimal string.
          type: string
      required:
        - chain
        - data
        - to
        - value
      type: object
    FundInstructions:
      description: >-
        What to fund and how. Bank funding carries only a privacy-safe summary
        and a

        non-bearer reference to the separately authorized reveal read.


        New values may be added; treat unknown values as other.
      discriminator:
        propertyName: kind
      oneOf:
        - properties:
            address:
              type: string
            asset:
              type: string
            chainRef:
              type: string
            expiresAt:
              format: date-time
              type: string
            kind:
              description: New values may be added; treat unknown values as other.
              enum:
                - venueDeposit
              type: string
              x-extensible-enum: true
            memo:
              type:
                - string
                - 'null'
            networkCode:
              type: string
            networkConfirmed:
              description: >-
                False when the venue reports no network for this address:
                `networkCode`

                is empty and `chainRef` is the caller's selection, which the
                customer

                must confirm with the venue before sending.
              type: boolean
            observedAt:
              format: date-time
              type: string
            tokenContract:
              type: string
          required:
            - asset
            - chainRef
            - networkCode
            - networkConfirmed
            - address
            - tokenContract
            - observedAt
            - expiresAt
            - kind
          type: object
        - description: >-
            The only bank-deposit payload allowed in an asset-pair quote,
            request readback or

            copied durable/evidence body. It carries no receiving coordinates or
            payment memo.

            Fund, then explicitly requote; this summary never authorizes a
            transfer or order.
          properties:
            accountLast4:
              oneOf:
                - type: 'null'
                - $ref: '#/components/schemas/BankAccountSuffix'
                  description: >-
                    An already-qualified masked suffix, not external account
                    ownership proof.
            amount:
              $ref: '#/components/schemas/DecimalAmount'
            bankDisplayName:
              type:
                - string
                - 'null'
            expiresAt:
              description: >-
                UTC ISO instant, or null when expiry is UNKNOWN. Null never
                means no expiry.
              format: date-time
              type:
                - string
                - 'null'
            kind:
              description: New values may be added; treat unknown values as other.
              enum:
                - bankDeposit
              type: string
              x-extensible-enum: true
            revealRef:
              $ref: '#/components/schemas/BankFundingRevealRef'
          required:
            - accountLast4
            - amount
            - bankDisplayName
            - expiresAt
            - kind
            - revealRef
          type: object
        - description: >-
            The quote's own bound pay wallet (an organisation wallet on a Basic
            on-chain

            venue account) holds less than the trade debits: send `amount` of
            `asset` to

            `address` on `chain`, then get a new price. `walletId` is the
            binding target the

            source's `topUp` fix names; `tokenContract` is the registry's
            deployment address

            of `asset` on `chain` (the zero address for the chain's native
            coin).
          properties:
            address:
              type: string
            amount:
              $ref: '#/components/schemas/DecimalAmount'
            asset:
              $ref: '#/components/schemas/AssetId'
            chain:
              $ref: '#/components/schemas/Caip2Chain'
            kind:
              description: New values may be added; treat unknown values as other.
              enum:
                - walletTopUp
              type: string
              x-extensible-enum: true
            tokenContract:
              type: string
            walletId:
              type: string
          required:
            - walletId
            - address
            - chain
            - asset
            - tokenContract
            - amount
            - kind
          type: object
        - description: Native gas for a transaction the Taker sends itself.
          properties:
            amount:
              $ref: '#/components/schemas/DecimalAmount'
            asset:
              $ref: '#/components/schemas/AssetId'
            chain:
              $ref: '#/components/schemas/Caip2Chain'
            kind:
              description: New values may be added; treat unknown values as other.
              enum:
                - nativeGas
              type: string
              x-extensible-enum: true
          required:
            - chain
            - amount
            - asset
            - kind
          type: object
        - description: >-
            A bank-funded venue account is short and deposit first isn't offered
            on it:

            its bank side declares no deposit instructions, or nothing that

            credits a declared deposit. The account is funded from its own
            funding details,

            then the quote is asked again. `amount` is the shortfall in
            `currency`;

            `connectionId` is the venue account to fund; `reason` is the venue's
            declared

            sentence for why ("Keyrock gives no deposit reference for bank
            transfers, so

            TetraFi can't tell your deposit apart"), product copy without a
            final period.
          properties:
            amount:
              $ref: '#/components/schemas/DecimalAmount'
            connectionId:
              type: string
            currency:
              type: string
            kind:
              description: New values may be added; treat unknown values as other.
              enum:
                - depositFirstNotOffered
              type: string
              x-extensible-enum: true
            reason:
              type: string
          required:
            - connectionId
            - amount
            - currency
            - reason
            - kind
          type: object
      x-extensible-enum: true
    RequoteNeed:
      description: >-
        A Binding slot a requote needs filled. An empty `needs` means requote as
        is.


        New values may be added; treat unknown values as other.
      enum:
        - wallet:evm
        - wallet:solana
        - wallet:tron
        - account
        - bankAccount
        - deliverTo
      type: string
      x-extensible-enum: true
    CardFirmness:
      description: >-
        How firm a card's price is, read with `expiresAt`: `firm: true` delivers
        exactly

        `buy.amount` until `expiresAt`; `firm: false` with `expiresAt` executes
        held to `minOut`;

        `firm: false` with `expiresAt` null is indicative (it lapses at
        `staleAfter`, and is

        orderable only through its `next: order`, executed within the caller's
        minimum receive).
      properties:
        firm:
          description: Whether the venue is bound to this price until `expiresAt`.
          type: boolean
        lastLook:
          description: >-
            Always false: no venue re-checks an accepted price before it fills,
            so an order inside

            `expiresAt` on a firm card trades at it or is refused unsent.
          type: boolean
      required:
        - firm
        - lastLook
      type: object
    ResolvedTradingSource:
      description: >-
        An indivisible quote/order source block. Its funding and settlement are
        venue-owned.
      properties:
        creditCheck:
          oneOf:
            - type: 'null'
            - $ref: '#/components/schemas/CreditCheck'
              description: >-
                The credit decision the funding was derived from: point-in-time
                evidence, never a

                reservation or dispatch authority. Present exactly when
                `creditPortion` is.
        creditPortion:
          oneOf:
            - type: 'null'
            - $ref: '#/components/schemas/CreditAmount'
              description: >-
                A `credit` trade's exact credit portion: the part of the debit,
                in the debit asset, that

                creates or increases a negative position (the rest is spent from
                positives). Present

                exactly when `fundingModel` is `credit`.
        creditReservation:
          oneOf:
            - type: 'null'
            - $ref: '#/components/schemas/CreditReservation'
              description: >-
                The firm ask's combined cash and credit hold on a credit venue
                account, held

                until the quote expires or its order adopts it. Absent on
                indicative cards.
        deliverTo:
          $ref: '#/components/schemas/ResolvedDeliverTo'
        fundingAccount:
          $ref: '#/components/schemas/FundingAccount'
        fundingModel:
          $ref: '#/components/schemas/FundingModel'
        payIn:
          oneOf:
            - type: 'null'
            - $ref: '#/components/schemas/PayInTerms'
        settlement:
          $ref: '#/components/schemas/QuotedSettlement'
          description: >-
            The venue's declared terms and, for delayed timing, the account
            schedule's window.
        tradingSource:
          $ref: '#/components/schemas/TradingSource'
      required:
        - tradingSource
        - fundingModel
        - settlement
        - fundingAccount
        - deliverTo
      type: object
    RfqMechanismAdvisory:
      description: >-
        A mechanism's limitation remains visible when another mechanism serves
        it.
      properties:
        code:
          type: string
        lpName:
          type: string
        mechanism:
          type: string
      required:
        - code
        - mechanism
        - lpName
      type: object
    QuoteAssurance:
      description: Collateral backing a quote, separate from its firmness.
      properties:
        amount:
          $ref: '#/components/schemas/DecimalAmount'
        asset:
          $ref: '#/components/schemas/AssetId'
        bonded:
          type: boolean
      required:
        - amount
        - asset
        - bonded
      type: object
    QuoteBasis:
      description: |-
        Where the price came from.

        New values may be added; treat unknown values as other.
      enum:
        - liveQuote
        - levels
        - model
      type: string
      x-extensible-enum: true
    QuoteSide:
      description: >-
        One side of a quote: the Asset, where it is held, which variant and how
        much.
      properties:
        amount:
          oneOf:
            - type: 'null'
            - $ref: '#/components/schemas/DecimalAmount'
              description: >-
                `null` on a stub quote that carries no price
                (`sources[].priceOnRequest`).
        asset:
          $ref: '#/components/schemas/AssetId'
        chain:
          oneOf:
            - type: 'null'
            - $ref: '#/components/schemas/Caip2Chain'
              description: '`null` for a side held on a venue account (off-chain).'
        variant:
          $ref: '#/components/schemas/AssetVariant'
          description: |-
            Every side carries a variant; a fiat side is `{kind: native, name:
            <ISO 4217 code>}`.
      required:
        - amount
        - asset
        - chain
        - variant
      type: object
    QuoteCorridor:
      additionalProperties: false
      description: A cross-chain route's source and destination chains.
      properties:
        from:
          $ref: '#/components/schemas/Caip2Chain'
        to:
          $ref: '#/components/schemas/Caip2Chain'
      required:
        - from
        - to
      type: object
    QuoteFailureHandling:
      description: >-
        What happens to the input when execution fails, a fact the quote
        reports.


        New values may be added; treat unknown values as other.
      enum:
        - refundOnSource
        - refundClaim
        - needsNewSignature
      type: string
      x-extensible-enum: true
    QuoteFee:
      description: One fee line. The same type serves `GET /prices` rows.
      properties:
        amount:
          oneOf:
            - type: 'null'
            - $ref: '#/components/schemas/DecimalAmount'
              description: >-
                `null` when the amount could not be read (a failed gas read),
                never `0`;

                such a quote's `netReceived` and `readiness` are `unavailable`.
        asset:
          $ref: '#/components/schemas/AssetId'
        bound:
          oneOf:
            - type: 'null'
            - $ref: '#/components/schemas/QuoteFeeBound'
              description: >-
                The amount is an authorised ceiling, not an expected or charged
                fee.
        chain:
          oneOf:
            - type: 'null'
            - $ref: '#/components/schemas/Caip2Chain'
              description: >-
                The chain a `network` line's gas is spent on; `null` for a line
                that is

                not bound to one chain.
        included:
          description: >-
            Already taken: from `buy.amount` when in the receive Asset, else
            from `pay`.
          type: boolean
        kind:
          $ref: '#/components/schemas/FeeLineKind'
        leg:
          description: >-
            The index of the leg it belongs to, or `null` for a quote-level
            line.
          format: int32
          minimum: 0
          type:
            - integer
            - 'null'
        paidBy:
          $ref: '#/components/schemas/FeePayer'
      required:
        - amount
        - asset
        - chain
        - included
        - kind
        - leg
        - paidBy
      type: object
    FirmAsk:
      description: >-
        When a venue gives its binding price (`PairQuote.firmAsk`), as its venue
        spec declares.


        New values may be added; treat unknown values as other.
      enum:
        - onRequest
        - atExecution
      type: string
      x-extensible-enum: true
    FirmQuoteDailyWarning:
      description: Read-only workspace/day warning. It never admits or spends a firm ask.
      properties:
        code:
          description: >-
            VENUE_FIRM_QUOTE_DAILY_NEAR_CAP from 80%;
            VENUE_FIRM_QUOTE_DAILY_CAP_REACHED at or above the UTC-day cap.
          example: VENUE_FIRM_QUOTE_DAILY_NEAR_CAP
          type: string
        limit:
          format: int32
          minimum: 0
          type: integer
        resetsAt:
          format: date-time
          type: string
        used:
          format: int32
          minimum: 0
          type: integer
      required:
        - code
        - used
        - limit
        - resetsAt
      type: object
    QuoteLeg:
      description: 'One leg of a quote: the venue it runs on and where it executes.'
      properties:
        execution:
          oneOf:
            - type: 'null'
            - $ref: '#/components/schemas/VenueExecution'
              description: >-
                A venue account's recorded execution facts; null on protocol
                legs.
        expectedArrival:
          description: 'Bank-rail legs: an ISO 8601 UTC instant; `null` elsewhere.'
          format: date-time
          type:
            - string
            - 'null'
        fundingModel:
          oneOf:
            - type: 'null'
            - $ref: '#/components/schemas/FundingModel'
              description: Off-chain legs; `null` on-chain.
        location:
          $ref: '#/components/schemas/LegLocation'
        network:
          oneOf:
            - type: 'null'
            - $ref: '#/components/schemas/ProtocolEnvironment'
              description: >-
                Protocol chain environment from the registry; additive so older
                clients can ignore it.
        product:
          oneOf:
            - type: 'null'
            - $ref: '#/components/schemas/ProviderProduct'
              description: >-
                The protocol product this leg runs (`cctp`, `acrossBridge`, …),
                from the served route;

                absent on a venue-account leg or when the route does not name
                it. Never parsed out of

                `venue.name`, which is display text.
        relayMode:
          oneOf:
            - type: 'null'
            - $ref: '#/components/schemas/BridgeRelayMode'
              description: >-
                Who delivers a CCTP leg on the destination, and so whom its
                included network fee pays:

                Circle's Forwarding Service, or the TetraFi relayer on a
                clone-native leg (rfq 615dd36a2).

                Absent on every other leg, and on a bridge quote that does not
                record it.
        transferMode:
          oneOf:
            - type: 'null'
            - $ref: '#/components/schemas/BridgeTransferMode'
              description: >-
                A bridge leg's transfer mode (`fast` or `standard`, e.g. CCTP
                Fast vs Standard); absent

                on every other leg.
        venue:
          $ref: '#/components/schemas/QuoteVenue'
      required:
        - execution
        - expectedArrival
        - fundingModel
        - location
        - venue
      type: object
    QuoteLocation:
      description: >-
        A quote's own location, an object so `.location.kind` reads the same on
        quotes, legs

        and rows: its legs' kind, or `mixed` when they differ.


        New values may be added; treat unknown values as other.
      discriminator:
        propertyName: kind
      oneOf:
        - properties:
            kind:
              description: New values may be added; treat unknown values as other.
              enum:
                - singleChain
              type: string
              x-extensible-enum: true
          required:
            - kind
          type: object
        - properties:
            kind:
              description: New values may be added; treat unknown values as other.
              enum:
                - crossChain
              type: string
              x-extensible-enum: true
          required:
            - kind
          type: object
        - properties:
            kind:
              description: New values may be added; treat unknown values as other.
              enum:
                - offChain
              type: string
              x-extensible-enum: true
          required:
            - kind
          type: object
        - properties:
            kind:
              description: New values may be added; treat unknown values as other.
              enum:
                - mixed
              type: string
              x-extensible-enum: true
          required:
            - kind
          type: object
      x-extensible-enum: true
    RfqMechanism:
      description: The mechanism that actually produced the quote, never a separate venue.
      properties:
        dealerQuotes:
          format: int32
          minimum: 0
          type:
            - integer
            - 'null'
        kind:
          $ref: '#/components/schemas/RfqMechanismKind'
        label:
          type: string
        tag:
          type: string
      required:
        - tag
        - kind
        - label
      type: object
    NetReceived:
      description: |-
        The comparison value: known, or unavailable with its reason, never 0.

        New values may be added; treat unknown values as other.
      discriminator:
        propertyName: kind
      oneOf:
        - properties:
            amount:
              $ref: '#/components/schemas/DecimalAmount'
            kind:
              description: New values may be added; treat unknown values as other.
              enum:
                - known
              type: string
              x-extensible-enum: true
          required:
            - amount
            - kind
          type: object
        - properties:
            kind:
              description: New values may be added; treat unknown values as other.
              enum:
                - unavailable
              type: string
              x-extensible-enum: true
            reason:
              description: >-
                Known source reason tokens (not all apply to every status):
                `adapterPayloadSerializationFailed`,
                `basicVenueAccountsUnavailable`, `billingPaymentOverdue`,
                `walletNotOnChain`, `ccxtVenueRequiresCexLane`,
                `executionStageDisabled`, `jurisdictionUnproven`,
                `onboardedVenuesUnavailable`,
                `onchainAccountDefaultWalletRequired`,
                `onchainAccountDefaultWalletUnavailable`,
                `onchainAccountWalletRequired`, `onchainAssetDecimalsMismatch`,
                `onchainAssetIdentityMismatch`, `onchainAssetUnmapped`,
                `onchainAssetVariantFiltered`, `onchainWalletUnavailable`,
                `onchainCatalogueUnavailable`,
                `onchainDeliverToNotReceivingWallet`,
                `onchainDeliverToUnverified`, `onchainMarketsUnavailable`,
                `onchainMarketCatalogUnreadable`, `onchainMarketChainRequired`,
                `onchainMarketVariantRequired`, `onchainMarketTokenRequired`,
                `onchainSiteChainUnreadable`, `onchainWalletChainUnreadable`,
                `onchainWalletInactive`, `onchainWalletNotLinked`,
                `onchainWalletNotUsable`, `onchainWalletPickAmbiguous`,
                `onchainWalletWrongNetwork`, `payeeDeliveryUnsupported`,
                `signerLacksRight`, `signerUnavailable`,
                `signingGrantAmbiguous`, `signingGrantExpired`,
                `signingGrantRequired`, `signingGrantTokenNotKept`,
                `signingGrantTokenNotPayable`, `solverChainUnready`,
                `walletChainMismatch`, `walletNotUsableByYou`,
                `walletNotVerifiedForAce`, `walletNotWhitelisted`,
                `withdrawalChainUnsupported`, `accountFeeUnavailable`,
                `comparisonCostsUnavailable`, `connectionListingUnavailable`,
                `feeUnverified`, `noPool`, `noPrice`, `noSize`, `notFilled`,
                `notYetPublished`, `priceArithmetic`, `priceSourceNone`,
                `referenceMidUnavailable`, `settlementPrecisionUnavailable`,
                `accountSetupIncomplete`, `admissionUnavailable`,
                `advancedAccountEligibilityUnavailable`,
                `advancedAccountStateInconsistent`,
                `advancedConnectionDisabled`, `advancedConnectionNotConfigured`,
                `advancedConnectionPaused`,
                `advancedSettlementNeedsVerification`, `advancedModeDisabled`,
                `advancedNotAvailableForAccount`,
                `advancedNotEnabledForAccount`, `allowanceUnavailable`,
                `acrossCapacityExceeded`, `relayCapacityExceeded`,
                `acrossChainNotCarried`, `cctpChainNotCarried`,
                `relayChainNotCarried`, `apiKeyAdvancedWalletUnsupported`,
                `apiKeyOrganisationWalletScopeRequired`, `grantCapExceeded`,
                `amountAboveMaximum`, `amountBelowMinimum`, `amountUnreadable`,
                `amountsUnreadable`, `askFirst`, `authorityUnavailable`,
                `automationNeverAsks`, `availabilityUnreadable`,
                `backgroundNeverAsks`, `balanceUnreadable`,
                `defaultsUnavailable`, `walletHasNoAddress`,
                `walletUnavailable`, `bondAmountUnreadable`,
                `bondAssetUnreadable`, `catalogueUnavailable`,
                `chainFamilyUnknown`, `chainUnrecorded`,
                `clientSessionRequired`, `clockUnreadable`, `comingSoon`,
                `connectionChanged`, `connectionRevoked`, `corridorInvalid`,
                `credential`, `deadlineExceeded`, `defaultsLoading`,
                `deliverToCalldataUnsupported`, `deliverToTagUnsupported`,
                `deliverToNotPermitted`, `deliverToUnreadable`,
                `tradingPermissionRequired`, `directPatienceHarvest`,
                `economicallyInferior`, `exactAmountConflictsWithCard`,
                `exactAmountConflictsWithQuote`,
                `exactOutputDeliveryUnsupported`,
                `exactOutputEstimateUnavailable`,
                `exactRouteHypothesisUnavailable`, `expiredOnArrival`,
                `expiryUnknown`, `feeUnreadable`, `filteredOut`,
                `firmAskRefused`, `freshnessUnknown`, `fundingWindow`,
                `insufficientLiquidity`, `venueRelationship`,
                `venueRelationshipUnavailable`, `lpUnknown`,
                `mfaEnrolmentRequired`, `mfaRequired`, `minimumUnverified`,
                `mixedNetworks`, `netReceivedUnavailable`, `networkUnrecorded`,
                `noAddress`, `noCard`, `noFetcher`, `noInventory`,
                `noLaneForPair`, `noLegs`, `noOnChainCorridor`,
                `noPlannedVenue`, `noQuote`, `noRpc`, `notConnected`,
                `notEligible`, `notExecutable`, `orderPayloadMissing`,
                `outsideTopComposites`, `pairUnmapped`, `sellChainInvalid`,
                `permissionsUnreadable`, `placeOrderNotPermitted`,
                `prefundingMarkerUnreadable`, `prefundingRequired`,
                `indicative`, `priceOnRequest`, `priceOutOfRange`,
                `priceProtectionInvalid`, `pricingBookOnly`, `productNotQuoted`,
                `protocolChainMissing`, `providerFeeTreatmentUnknown`,
                `providerSiteUnrecorded`, `quoteIdUnissuable`, `quoteNotHeld`,
                `buyChainInvalid`, `buyAmountUnsupported`,
                `exactOutputDebitUnavailable`, `pairNotServed`,
                `receiveWalletNotServed`, `referenceMidUnreadable`,
                `referencePriceUnavailable`, `registryUnavailable`,
                `releaseRecheckUnavailable`, `requestUnbuildable`,
                `routeLegChainUnknown`, `routeLegUnnamed`, `routeLegUnplanned`,
                `routeUnavailable`, `secondFactorUnreadable`,
                `shortfallUnmeasured`, `shortfallUnreadable`,
                `singleChainVenue`, `siteChainUnreadable`, `sizeNotEligible`,
                `submitOrderBlocked`, `takerOnboardingIncomplete`,
                `tierNotQuoted`, `tradePaused`, `unsupportedNative`,
                `venueConnectionStorageUnavailable`, `venueDataStale`,
                `venueDeclined`, `venueNotConnected`,
                `venueNotEnabledForWorkspace`, `venueNotListed`,
                `venueTradeKeyUnavailable`, `venueTradeScopeRequired`,
                `venueTradeUnreadable`, `venueUnavailable`, `walletRefused`,
                `withdrawalFeeUnread`, `acrossRoutedViaCctp`,
                `apiKeyOrganisationWalletNotAllowlisted`,
                `balanceAvailabilityUnconfirmed`, `bankDestinationUnavailable`,
                `bebopJamKeyNotEnabled`, `bebopJamQuoteDeclined`,
                `bebopTokenUnavailable`, `relayCurrencyUnsupported`,
                `relaySwapImpactTooHigh`, `tetrafiSolverCallbackNotAuthorized`,
                `tradingLinkSnapshotChanged`, `tradingLinkSnapshotUnavailable`,
                `uniswapChainReadUnavailable`, `uniswapInsufficientDepth`,
                `uniswapQuoteUnreadable`, `uniswapUnwrapAboveDailyCap`,
                `uniswapUnwrapAboveTradeCap`, `uniswapRouteNotGranted`,
                `venueNotEnabled`, `askLimitReached`,
                `balanceMeaningUnconfirmed`, `bebopJamWalletUnsupported`,
                `bebopQuorumWalletTooSlow`, `bebopWalletQuorumUnreadable`,
                `connectionNotConfigured`, `deliveryAccountNetworkUnavailable`,
                `deliveryAccountUnavailable`, `destinationCannotSendOnChain`,
                `dexReferencePriceUnavailable`, `firmQuoteLimited`,
                `fundingAccountNetworkUnavailable`, `fundingAccountUnavailable`,
                `insufficientDepth`, `missingPermission`, `needsNativeGas`,
                `needsWallet`, `notPriced`, `payInTermsUnavailable`,
                `pilotTradeCapExceeded`, `platformFeeRateUnavailable`,
                `pricingBookPairUnserved`, `settlementDeclarationUnavailable`,
                `settlementNotAvailable`, `timedOut`, `timedOutBeforeSend`,
                `tradingSourceNetworkUnavailable`, `tradingSourceNotLinked`,
                `venueEnablementRechecking`, `venueEnablementUnavailable`,
                `venueListingTimedOut`, `venuePoliciesUnavailable`.


                New values may be added; treat unknown values as other.
              type: string
          required:
            - reason
            - kind
          type: object
      x-extensible-enum: true
    Readiness:
      description: |-
        Whether the quote can be ordered now. Unknown is `unavailable`,
        never a value.

        New values may be added; treat unknown values as other.
      discriminator:
        propertyName: kind
      oneOf:
        - properties:
            kind:
              description: New values may be added; treat unknown values as other.
              enum:
                - ready
              type: string
              x-extensible-enum: true
          required:
            - kind
          type: object
        - description: The venue account holds enough.
          properties:
            kind:
              description: New values may be added; treat unknown values as other.
              enum:
                - funded
              type: string
              x-extensible-enum: true
          required:
            - kind
          type: object
        - properties:
            amount:
              $ref: '#/components/schemas/DecimalAmount'
            how:
              $ref: '#/components/schemas/FundingMethod'
            kind:
              description: New values may be added; treat unknown values as other.
              enum:
                - shortfall
              type: string
              x-extensible-enum: true
          required:
            - amount
            - how
            - kind
          type: object
        - properties:
            family:
              $ref: '#/components/schemas/ChainFamily'
            kind:
              description: New values may be added; treat unknown values as other.
              enum:
                - needsWallet
              type: string
              x-extensible-enum: true
          required:
            - family
            - kind
          type: object
        - description: >-
            The taker sends a transaction itself and needs `amount` of `asset`,
            the chain's

            native gas Asset in the registry.
          properties:
            amount:
              $ref: '#/components/schemas/DecimalAmount'
            asset:
              $ref: '#/components/schemas/AssetId'
            chain:
              $ref: '#/components/schemas/Caip2Chain'
            kind:
              description: New values may be added; treat unknown values as other.
              enum:
                - needsNativeGas
              type: string
              x-extensible-enum: true
          required:
            - chain
            - amount
            - asset
            - kind
          type: object
        - properties:
            kind:
              description: New values may be added; treat unknown values as other.
              enum:
                - unavailable
              type: string
              x-extensible-enum: true
            reason:
              description: >-
                Known source reason tokens (not all apply to every status):
                `adapterPayloadSerializationFailed`,
                `basicVenueAccountsUnavailable`, `billingPaymentOverdue`,
                `walletNotOnChain`, `ccxtVenueRequiresCexLane`,
                `executionStageDisabled`, `jurisdictionUnproven`,
                `onboardedVenuesUnavailable`,
                `onchainAccountDefaultWalletRequired`,
                `onchainAccountDefaultWalletUnavailable`,
                `onchainAccountWalletRequired`, `onchainAssetDecimalsMismatch`,
                `onchainAssetIdentityMismatch`, `onchainAssetUnmapped`,
                `onchainAssetVariantFiltered`, `onchainWalletUnavailable`,
                `onchainCatalogueUnavailable`,
                `onchainDeliverToNotReceivingWallet`,
                `onchainDeliverToUnverified`, `onchainMarketsUnavailable`,
                `onchainMarketCatalogUnreadable`, `onchainMarketChainRequired`,
                `onchainMarketVariantRequired`, `onchainMarketTokenRequired`,
                `onchainSiteChainUnreadable`, `onchainWalletChainUnreadable`,
                `onchainWalletInactive`, `onchainWalletNotLinked`,
                `onchainWalletNotUsable`, `onchainWalletPickAmbiguous`,
                `onchainWalletWrongNetwork`, `payeeDeliveryUnsupported`,
                `signerLacksRight`, `signerUnavailable`,
                `signingGrantAmbiguous`, `signingGrantExpired`,
                `signingGrantRequired`, `signingGrantTokenNotKept`,
                `signingGrantTokenNotPayable`, `solverChainUnready`,
                `walletChainMismatch`, `walletNotUsableByYou`,
                `walletNotVerifiedForAce`, `walletNotWhitelisted`,
                `withdrawalChainUnsupported`, `accountFeeUnavailable`,
                `comparisonCostsUnavailable`, `connectionListingUnavailable`,
                `feeUnverified`, `noPool`, `noPrice`, `noSize`, `notFilled`,
                `notYetPublished`, `priceArithmetic`, `priceSourceNone`,
                `referenceMidUnavailable`, `settlementPrecisionUnavailable`,
                `accountSetupIncomplete`, `admissionUnavailable`,
                `advancedAccountEligibilityUnavailable`,
                `advancedAccountStateInconsistent`,
                `advancedConnectionDisabled`, `advancedConnectionNotConfigured`,
                `advancedConnectionPaused`,
                `advancedSettlementNeedsVerification`, `advancedModeDisabled`,
                `advancedNotAvailableForAccount`,
                `advancedNotEnabledForAccount`, `allowanceUnavailable`,
                `acrossCapacityExceeded`, `relayCapacityExceeded`,
                `acrossChainNotCarried`, `cctpChainNotCarried`,
                `relayChainNotCarried`, `apiKeyAdvancedWalletUnsupported`,
                `apiKeyOrganisationWalletScopeRequired`, `grantCapExceeded`,
                `amountAboveMaximum`, `amountBelowMinimum`, `amountUnreadable`,
                `amountsUnreadable`, `askFirst`, `authorityUnavailable`,
                `automationNeverAsks`, `availabilityUnreadable`,
                `backgroundNeverAsks`, `balanceUnreadable`,
                `defaultsUnavailable`, `walletHasNoAddress`,
                `walletUnavailable`, `bondAmountUnreadable`,
                `bondAssetUnreadable`, `catalogueUnavailable`,
                `chainFamilyUnknown`, `chainUnrecorded`,
                `clientSessionRequired`, `clockUnreadable`, `comingSoon`,
                `connectionChanged`, `connectionRevoked`, `corridorInvalid`,
                `credential`, `deadlineExceeded`, `defaultsLoading`,
                `deliverToCalldataUnsupported`, `deliverToTagUnsupported`,
                `deliverToNotPermitted`, `deliverToUnreadable`,
                `tradingPermissionRequired`, `directPatienceHarvest`,
                `economicallyInferior`, `exactAmountConflictsWithCard`,
                `exactAmountConflictsWithQuote`,
                `exactOutputDeliveryUnsupported`,
                `exactOutputEstimateUnavailable`,
                `exactRouteHypothesisUnavailable`, `expiredOnArrival`,
                `expiryUnknown`, `feeUnreadable`, `filteredOut`,
                `firmAskRefused`, `freshnessUnknown`, `fundingWindow`,
                `insufficientLiquidity`, `venueRelationship`,
                `venueRelationshipUnavailable`, `lpUnknown`,
                `mfaEnrolmentRequired`, `mfaRequired`, `minimumUnverified`,
                `mixedNetworks`, `netReceivedUnavailable`, `networkUnrecorded`,
                `noAddress`, `noCard`, `noFetcher`, `noInventory`,
                `noLaneForPair`, `noLegs`, `noOnChainCorridor`,
                `noPlannedVenue`, `noQuote`, `noRpc`, `notConnected`,
                `notEligible`, `notExecutable`, `orderPayloadMissing`,
                `outsideTopComposites`, `pairUnmapped`, `sellChainInvalid`,
                `permissionsUnreadable`, `placeOrderNotPermitted`,
                `prefundingMarkerUnreadable`, `prefundingRequired`,
                `indicative`, `priceOnRequest`, `priceOutOfRange`,
                `priceProtectionInvalid`, `pricingBookOnly`, `productNotQuoted`,
                `protocolChainMissing`, `providerFeeTreatmentUnknown`,
                `providerSiteUnrecorded`, `quoteIdUnissuable`, `quoteNotHeld`,
                `buyChainInvalid`, `buyAmountUnsupported`,
                `exactOutputDebitUnavailable`, `pairNotServed`,
                `receiveWalletNotServed`, `referenceMidUnreadable`,
                `referencePriceUnavailable`, `registryUnavailable`,
                `releaseRecheckUnavailable`, `requestUnbuildable`,
                `routeLegChainUnknown`, `routeLegUnnamed`, `routeLegUnplanned`,
                `routeUnavailable`, `secondFactorUnreadable`,
                `shortfallUnmeasured`, `shortfallUnreadable`,
                `singleChainVenue`, `siteChainUnreadable`, `sizeNotEligible`,
                `submitOrderBlocked`, `takerOnboardingIncomplete`,
                `tierNotQuoted`, `tradePaused`, `unsupportedNative`,
                `venueConnectionStorageUnavailable`, `venueDataStale`,
                `venueDeclined`, `venueNotConnected`,
                `venueNotEnabledForWorkspace`, `venueNotListed`,
                `venueTradeKeyUnavailable`, `venueTradeScopeRequired`,
                `venueTradeUnreadable`, `venueUnavailable`, `walletRefused`,
                `withdrawalFeeUnread`, `acrossRoutedViaCctp`,
                `apiKeyOrganisationWalletNotAllowlisted`,
                `balanceAvailabilityUnconfirmed`, `bankDestinationUnavailable`,
                `bebopJamKeyNotEnabled`, `bebopJamQuoteDeclined`,
                `bebopTokenUnavailable`, `relayCurrencyUnsupported`,
                `relaySwapImpactTooHigh`, `tetrafiSolverCallbackNotAuthorized`,
                `tradingLinkSnapshotChanged`, `tradingLinkSnapshotUnavailable`,
                `uniswapChainReadUnavailable`, `uniswapInsufficientDepth`,
                `uniswapQuoteUnreadable`, `uniswapUnwrapAboveDailyCap`,
                `uniswapUnwrapAboveTradeCap`, `uniswapRouteNotGranted`,
                `venueNotEnabled`, `askLimitReached`,
                `balanceMeaningUnconfirmed`, `bebopJamWalletUnsupported`,
                `bebopQuorumWalletTooSlow`, `bebopWalletQuorumUnreadable`,
                `connectionNotConfigured`, `deliveryAccountNetworkUnavailable`,
                `deliveryAccountUnavailable`, `destinationCannotSendOnChain`,
                `dexReferencePriceUnavailable`, `firmQuoteLimited`,
                `fundingAccountNetworkUnavailable`, `fundingAccountUnavailable`,
                `insufficientDepth`, `missingPermission`, `needsNativeGas`,
                `needsWallet`, `notPriced`, `payInTermsUnavailable`,
                `pilotTradeCapExceeded`, `platformFeeRateUnavailable`,
                `pricingBookPairUnserved`, `settlementDeclarationUnavailable`,
                `settlementNotAvailable`, `timedOut`, `timedOutBeforeSend`,
                `tradingSourceNetworkUnavailable`, `tradingSourceNotLinked`,
                `venueEnablementRechecking`, `venueEnablementUnavailable`,
                `venueListingTimedOut`, `venuePoliciesUnavailable`.


                New values may be added; treat unknown values as other.
              type: string
          required:
            - reason
            - kind
          type: object
      x-extensible-enum: true
    QuoteScreening:
      description: |-
        Whether every bound wallet a quote uses was screened. A quote
        that involves no wallet carries `null`.

        New values may be added; treat unknown values as other.
      enum:
        - screened
        - unscreened
      type: string
      x-extensible-enum: true
    SourceOption:
      description: New values may be added; treat unknown values as other.
      oneOf:
        - properties:
            candidates:
              items:
                $ref: '#/components/schemas/SourceCandidate'
              type: array
            chain:
              $ref: '#/components/schemas/Caip2Chain'
            family:
              $ref: '#/components/schemas/ChainFamily'
            kind:
              description: New values may be added; treat unknown values as other.
              enum:
                - wallet
              type: string
              x-extensible-enum: true
          required:
            - family
            - chain
            - candidates
            - kind
          type: object
        - properties:
            candidates:
              items:
                $ref: '#/components/schemas/SourceCandidate'
              type: array
            kind:
              description: New values may be added; treat unknown values as other.
              enum:
                - venueAccount
              type: string
              x-extensible-enum: true
          required:
            - candidates
            - kind
          type: object
        - properties:
            candidates:
              items:
                $ref: '#/components/schemas/SourceCandidate'
              type: array
            kind:
              description: New values may be added; treat unknown values as other.
              enum:
                - fundingAccount
              type: string
              x-extensible-enum: true
          required:
            - candidates
            - kind
          type: object
        - properties:
            candidates:
              items:
                $ref: '#/components/schemas/SourceCandidate'
              type: array
            kind:
              description: New values may be added; treat unknown values as other.
              enum:
                - deliverTo
              type: string
              x-extensible-enum: true
          required:
            - candidates
            - kind
          type: object
      x-extensible-enum: true
    QuoteTradingSourceRefusal:
      description: >-
        Why a priced card has no executable source, with the native in-page
        recovery action.
      properties:
        code:
          type: string
        detail:
          description: >-
            Human-readable recovery, including key re-issuance or a wallet
            grant.
          type:
            - string
            - 'null'
        fix:
          $ref: '#/components/schemas/QuoteSourceFix'
        venueId:
          type: string
      required:
        - code
        - venueId
        - fix
      type: object
    SpreadFromMid:
      description: |-
        The spread from the Reference mid in basis points.

        New values may be added; treat unknown values as other.
      discriminator:
        propertyName: kind
      oneOf:
        - properties:
            bps:
              format: int64
              type: integer
            kind:
              description: New values may be added; treat unknown values as other.
              enum:
                - known
              type: string
              x-extensible-enum: true
          required:
            - bps
            - kind
          type: object
        - properties:
            kind:
              description: New values may be added; treat unknown values as other.
              enum:
                - unavailable
              type: string
              x-extensible-enum: true
            reason:
              description: >-
                Known source reason tokens (not all apply to every status):
                `adapterPayloadSerializationFailed`,
                `basicVenueAccountsUnavailable`, `billingPaymentOverdue`,
                `walletNotOnChain`, `ccxtVenueRequiresCexLane`,
                `executionStageDisabled`, `jurisdictionUnproven`,
                `onboardedVenuesUnavailable`,
                `onchainAccountDefaultWalletRequired`,
                `onchainAccountDefaultWalletUnavailable`,
                `onchainAccountWalletRequired`, `onchainAssetDecimalsMismatch`,
                `onchainAssetIdentityMismatch`, `onchainAssetUnmapped`,
                `onchainAssetVariantFiltered`, `onchainWalletUnavailable`,
                `onchainCatalogueUnavailable`,
                `onchainDeliverToNotReceivingWallet`,
                `onchainDeliverToUnverified`, `onchainMarketsUnavailable`,
                `onchainMarketCatalogUnreadable`, `onchainMarketChainRequired`,
                `onchainMarketVariantRequired`, `onchainMarketTokenRequired`,
                `onchainSiteChainUnreadable`, `onchainWalletChainUnreadable`,
                `onchainWalletInactive`, `onchainWalletNotLinked`,
                `onchainWalletNotUsable`, `onchainWalletPickAmbiguous`,
                `onchainWalletWrongNetwork`, `payeeDeliveryUnsupported`,
                `signerLacksRight`, `signerUnavailable`,
                `signingGrantAmbiguous`, `signingGrantExpired`,
                `signingGrantRequired`, `signingGrantTokenNotKept`,
                `signingGrantTokenNotPayable`, `solverChainUnready`,
                `walletChainMismatch`, `walletNotUsableByYou`,
                `walletNotVerifiedForAce`, `walletNotWhitelisted`,
                `withdrawalChainUnsupported`, `accountFeeUnavailable`,
                `comparisonCostsUnavailable`, `connectionListingUnavailable`,
                `feeUnverified`, `noPool`, `noPrice`, `noSize`, `notFilled`,
                `notYetPublished`, `priceArithmetic`, `priceSourceNone`,
                `referenceMidUnavailable`, `settlementPrecisionUnavailable`,
                `accountSetupIncomplete`, `admissionUnavailable`,
                `advancedAccountEligibilityUnavailable`,
                `advancedAccountStateInconsistent`,
                `advancedConnectionDisabled`, `advancedConnectionNotConfigured`,
                `advancedConnectionPaused`,
                `advancedSettlementNeedsVerification`, `advancedModeDisabled`,
                `advancedNotAvailableForAccount`,
                `advancedNotEnabledForAccount`, `allowanceUnavailable`,
                `acrossCapacityExceeded`, `relayCapacityExceeded`,
                `acrossChainNotCarried`, `cctpChainNotCarried`,
                `relayChainNotCarried`, `apiKeyAdvancedWalletUnsupported`,
                `apiKeyOrganisationWalletScopeRequired`, `grantCapExceeded`,
                `amountAboveMaximum`, `amountBelowMinimum`, `amountUnreadable`,
                `amountsUnreadable`, `askFirst`, `authorityUnavailable`,
                `automationNeverAsks`, `availabilityUnreadable`,
                `backgroundNeverAsks`, `balanceUnreadable`,
                `defaultsUnavailable`, `walletHasNoAddress`,
                `walletUnavailable`, `bondAmountUnreadable`,
                `bondAssetUnreadable`, `catalogueUnavailable`,
                `chainFamilyUnknown`, `chainUnrecorded`,
                `clientSessionRequired`, `clockUnreadable`, `comingSoon`,
                `connectionChanged`, `connectionRevoked`, `corridorInvalid`,
                `credential`, `deadlineExceeded`, `defaultsLoading`,
                `deliverToCalldataUnsupported`, `deliverToTagUnsupported`,
                `deliverToNotPermitted`, `deliverToUnreadable`,
                `tradingPermissionRequired`, `directPatienceHarvest`,
                `economicallyInferior`, `exactAmountConflictsWithCard`,
                `exactAmountConflictsWithQuote`,
                `exactOutputDeliveryUnsupported`,
                `exactOutputEstimateUnavailable`,
                `exactRouteHypothesisUnavailable`, `expiredOnArrival`,
                `expiryUnknown`, `feeUnreadable`, `filteredOut`,
                `firmAskRefused`, `freshnessUnknown`, `fundingWindow`,
                `insufficientLiquidity`, `venueRelationship`,
                `venueRelationshipUnavailable`, `lpUnknown`,
                `mfaEnrolmentRequired`, `mfaRequired`, `minimumUnverified`,
                `mixedNetworks`, `netReceivedUnavailable`, `networkUnrecorded`,
                `noAddress`, `noCard`, `noFetcher`, `noInventory`,
                `noLaneForPair`, `noLegs`, `noOnChainCorridor`,
                `noPlannedVenue`, `noQuote`, `noRpc`, `notConnected`,
                `notEligible`, `notExecutable`, `orderPayloadMissing`,
                `outsideTopComposites`, `pairUnmapped`, `sellChainInvalid`,
                `permissionsUnreadable`, `placeOrderNotPermitted`,
                `prefundingMarkerUnreadable`, `prefundingRequired`,
                `indicative`, `priceOnRequest`, `priceOutOfRange`,
                `priceProtectionInvalid`, `pricingBookOnly`, `productNotQuoted`,
                `protocolChainMissing`, `providerFeeTreatmentUnknown`,
                `providerSiteUnrecorded`, `quoteIdUnissuable`, `quoteNotHeld`,
                `buyChainInvalid`, `buyAmountUnsupported`,
                `exactOutputDebitUnavailable`, `pairNotServed`,
                `receiveWalletNotServed`, `referenceMidUnreadable`,
                `referencePriceUnavailable`, `registryUnavailable`,
                `releaseRecheckUnavailable`, `requestUnbuildable`,
                `routeLegChainUnknown`, `routeLegUnnamed`, `routeLegUnplanned`,
                `routeUnavailable`, `secondFactorUnreadable`,
                `shortfallUnmeasured`, `shortfallUnreadable`,
                `singleChainVenue`, `siteChainUnreadable`, `sizeNotEligible`,
                `submitOrderBlocked`, `takerOnboardingIncomplete`,
                `tierNotQuoted`, `tradePaused`, `unsupportedNative`,
                `venueConnectionStorageUnavailable`, `venueDataStale`,
                `venueDeclined`, `venueNotConnected`,
                `venueNotEnabledForWorkspace`, `venueNotListed`,
                `venueTradeKeyUnavailable`, `venueTradeScopeRequired`,
                `venueTradeUnreadable`, `venueUnavailable`, `walletRefused`,
                `withdrawalFeeUnread`, `acrossRoutedViaCctp`,
                `apiKeyOrganisationWalletNotAllowlisted`,
                `balanceAvailabilityUnconfirmed`, `bankDestinationUnavailable`,
                `bebopJamKeyNotEnabled`, `bebopJamQuoteDeclined`,
                `bebopTokenUnavailable`, `relayCurrencyUnsupported`,
                `relaySwapImpactTooHigh`, `tetrafiSolverCallbackNotAuthorized`,
                `tradingLinkSnapshotChanged`, `tradingLinkSnapshotUnavailable`,
                `uniswapChainReadUnavailable`, `uniswapInsufficientDepth`,
                `uniswapQuoteUnreadable`, `uniswapUnwrapAboveDailyCap`,
                `uniswapUnwrapAboveTradeCap`, `uniswapRouteNotGranted`,
                `venueNotEnabled`, `askLimitReached`,
                `balanceMeaningUnconfirmed`, `bebopJamWalletUnsupported`,
                `bebopQuorumWalletTooSlow`, `bebopWalletQuorumUnreadable`,
                `connectionNotConfigured`, `deliveryAccountNetworkUnavailable`,
                `deliveryAccountUnavailable`, `destinationCannotSendOnChain`,
                `dexReferencePriceUnavailable`, `firmQuoteLimited`,
                `fundingAccountNetworkUnavailable`, `fundingAccountUnavailable`,
                `insufficientDepth`, `missingPermission`, `needsNativeGas`,
                `needsWallet`, `notPriced`, `payInTermsUnavailable`,
                `pilotTradeCapExceeded`, `platformFeeRateUnavailable`,
                `pricingBookPairUnserved`, `settlementDeclarationUnavailable`,
                `settlementNotAvailable`, `timedOut`, `timedOutBeforeSend`,
                `tradingSourceNetworkUnavailable`, `tradingSourceNotLinked`,
                `venueEnablementRechecking`, `venueEnablementUnavailable`,
                `venueListingTimedOut`, `venuePoliciesUnavailable`.


                New values may be added; treat unknown values as other.
              type: string
          required:
            - reason
            - kind
          type: object
      x-extensible-enum: true
    UnspentPay:
      description: >-
        The part of a `payExact` amount a card does not spend, in the pay Asset,
        and why in words.
      properties:
        amount:
          $ref: '#/components/schemas/DecimalAmount'
        detail:
          description: >-
            One sentence naming the venue, what the order spends and where the
            rest stays.
          type: string
        rule:
          description: >-
            The venue's rule that leaves the rest, in a few words for the card
            ("Binance trades USDC in

            steps of 1"). Absent when the venue's step was not read; `detail`
            then says "fills whole lots".
          type:
            - string
            - 'null'
      required:
        - amount
        - detail
      type: object
    QuoteWalletSelection:
      description: One chain's selected wallet and the venue account whose selection it is.
      properties:
        connectionId:
          type: string
        displacedPreference:
          oneOf:
            - type: 'null'
            - $ref: '#/components/schemas/BindingTargetView'
              description: >-
                A known eligible preference that this account did not link.
                Display only.
        reason:
          $ref: '#/components/schemas/QuoteWalletSelectionReason'
        venueId:
          type: string
        venueName:
          type: string
        walletId:
          type: string
      required:
        - walletId
        - reason
        - connectionId
        - venueId
        - venueName
      type: object
    LocationKind:
      description: |-
        Where a leg executes and first settles.

        New values may be added; treat unknown values as other.
      enum:
        - singleChain
        - crossChain
        - offChain
      type: string
      x-extensible-enum: true
    VenueModality:
      description: |-
        A venue's modality, from its declaration. The one owner of this
        concept: quote request and response types reuse it.

        New values may be added; treat unknown values as other.
      enum:
        - amm
        - solver
        - bridge
        - rfq
        - orderBook
        - fiat
      type: string
      x-extensible-enum: true
    VariantFilter:
      description: Which variants each side accepts.
      properties:
        pay:
          $ref: '#/components/schemas/VariantPreference'
        receive:
          $ref: '#/components/schemas/VariantPreference'
      type: object
    VenueFilter:
      additionalProperties: false
      description: Venue ids to keep or drop; each must be a known venue (`UNKNOWN_VENUE`).
      properties:
        exclude:
          items:
            type: string
          type: array
        include:
          items:
            type: string
          type: array
      type: object
    AssetId:
      description: >-
        A registry Asset id (`USDC`, `USDe`). Matched case-insensitively against
        the catalogue,

        which answers it in the registry's own spelling.
      example: USDC
      type: string
    IntegrationMode:
      description: |-
        How a venue is integrated: `basic` or `advanced`.

        New values may be added; treat unknown values as other.
      enum:
        - basic
        - advanced
      type: string
      x-extensible-enum: true
    QuoteFixExistingRequest:
      description: >-
        A pending permission request the caller already made for a
        `requestPermission` target.
      properties:
        createdAt:
          format: date-time
          type: string
        id:
          format: uuid
          type: string
      required:
        - id
        - createdAt
      type: object
    PermissionRequestTarget:
      description: New values may be added; treat unknown values as other.
      oneOf:
        - properties:
            kind:
              description: New values may be added; treat unknown values as other.
              enum:
                - walletRight
              type: string
              x-extensible-enum: true
            right:
              $ref: '#/components/schemas/PermissionRequestWalletRight'
            venueId:
              type:
                - string
                - 'null'
            walletId:
              format: uuid
              type: string
          required:
            - walletId
            - right
            - kind
          type: object
        - properties:
            kind:
              description: New values may be added; treat unknown values as other.
              enum:
                - workspacePermission
              type: string
              x-extensible-enum: true
            permission:
              $ref: '#/components/schemas/WorkspacePermission'
            venueId:
              type:
                - string
                - 'null'
          required:
            - permission
            - kind
          type: object
      x-extensible-enum: true
    QuoteFixFundingTarget:
      description: >-
        A shortfall names either its paying wallet or its venue account's venue.
        A venue target

        names the venue account and the route that reads its deposit
        instructions when the source

        knows that account.
      oneOf:
        - properties:
            walletId:
              type: string
          required:
            - walletId
          type: object
        - properties:
            action:
              description: '`GET` route for the venue account''s deposit instructions.'
              type:
                - string
                - 'null'
            venueAccountId:
              format: uuid
              type:
                - string
                - 'null'
            venueId:
              type: string
          required:
            - venueId
          type: object
    QuoteFixVenueTarget:
      properties:
        venueId:
          type: string
      required:
        - venueId
      type: object
    WorkspacePermission:
      description: |-
        Granular workspace permissions.

        Resolved via `permissions_for(ws_type, role)` — the same role
        unlocks different capabilities depending on the workspace type.

        New values may be added; treat unknown values as other.
      enum:
        - request_quotes
        - place_order
        - view_orders
        - view_flow_analytics
        - view_settlements
        - manage_team
        - manage_access
        - manage_credentials
        - manage_webhooks
        - manage_security_policy
        - manage_treasury_policy
        - manage_workspace_profile
        - view_compliance
        - view_person_pii
        - modify_compliance
        - connect_reporting
        - view_credit
        - modify_credit
        - view_wallets
        - manage_wallets
        - request_treasury_transfers
        - approve_treasury_transfers
        - approve_venue_trades
        - manage_lp_scoping
        - manage_sub_workspaces
        - manage_affiliations
        - onboard_external_users
        - approve_client_kyc
        - manage_bilateral
        - view_bilateral_documents
        - manage_settlements
        - manage_solvers
        - view_solver_operations
        - protocol_admin
        - approve_onboarding
        - manage_promotions
        - manage_market_intelligence
        - view_umbrella_compliance
        - manage_umbrella_users
        - manage_cases
        - view_reports
        - file_reports
      type: string
      x-extensible-enum: true
    VenueAccountStep:
      description: |-
        The step a `manageVenueAccount` fix names on the venue account.

        New values may be added; treat unknown values as other.
      enum:
        - verify
        - resume
        - reenterKey
      type: string
      x-extensible-enum: true
    BindingTargetView:
      description: |-
        The one target object of every read: slot reads, candidates and API-key
        `bindingDefaults`. `address` and `label` are `null` where none;
        `chains` is `[]` for a bank destination.
      properties:
        address:
          type:
            - string
            - 'null'
        chains:
          items:
            type: string
          type: array
        destinationKind:
          oneOf:
            - type: 'null'
            - $ref: '#/components/schemas/BindingDestinationKind'
              description: Present on a `destination` target only.
        id:
          type: string
        kind:
          $ref: '#/components/schemas/BindingTargetKind'
        label:
          type:
            - string
            - 'null'
        ownership:
          $ref: '#/components/schemas/BindingTargetOwnership'
      required:
        - kind
        - id
        - ownership
        - address
        - chains
        - label
      type: object
    FixedAmount:
      description: |-
        Which request amount a quote fixes: `sellAmount` or `buyAmount`.

        New values may be added; treat unknown values as other.
      enum:
        - sellAmount
        - buyAmount
      type: string
      x-extensible-enum: true
    VenueRfqSizeRead:
      description: New values may be added; treat unknown values as other.
      oneOf:
        - properties:
            bands:
              description: >-
                Exact mechanism union; outer bounds never fill a gap between
                bands.
              items:
                $ref: '#/components/schemas/VenueRfqMechanismSizeLimits'
              type: array
            maximum:
              oneOf:
                - type: 'null'
                - $ref: '#/components/schemas/VenueRfqSizeLimit'
            minimum:
              oneOf:
                - type: 'null'
                - $ref: '#/components/schemas/VenueRfqSizeLimit'
            observedAt:
              description: Conservative lower bound on when the provider limits were read.
              format: date-time
              type: string
            pairRefusal:
              type:
                - string
                - 'null'
            status:
              description: New values may be added; treat unknown values as other.
              enum:
                - observed
              type: string
              x-extensible-enum: true
          required:
            - observedAt
            - bands
            - status
          type: object
        - properties:
            code:
              type: string
            status:
              description: New values may be added; treat unknown values as other.
              enum:
                - unavailable
              type: string
              x-extensible-enum: true
          required:
            - code
            - status
          type: object
      x-extensible-enum: true
    CapabilityBlockerCode:
      description: |-
        Stable machine-readable blocker codes returned by the capability gate.

        New values may be added; treat unknown values as other.
      enum:
        - WORKSPACE_NOT_FOUND
        - WORKSPACE_NOT_ACTIVE
        - WORKSPACE_SUSPENDED
        - PARENT_WORKSPACE_INACTIVE
        - INSUFFICIENT_PERMISSION
        - WORKSPACE_TYPE_UNSUPPORTED
        - BASE_PROFILE_INCOMPLETE
        - BASE_PROFILE_UNREADABLE
        - KYB_NOT_VERIFIED
        - KYC_NOT_VERIFIED
        - SANCTIONS_FLAGGED
        - MEMBER_COMPLIANCE_FROZEN
        - MEMBER_COMPLIANCE_DENIED
        - SCREENING_PENDING
        - SCREENING_UNAVAILABLE
        - GEO_RESTRICTED
        - WALLET_NOT_VERIFIED
        - DIRECT_USER_NOT_FOUND
        - DIRECT_USER_SUSPENDED
        - DIRECT_USER_KYC_NOT_VERIFIED
        - INSUFFICIENT_SCOPE
        - TREASURY_DISABLED
        - NO_USABLE_CREDENTIAL
        - CROSS_OWNER_WRITE_DENIED
        - AGGREGATE_SCOPE_READ_ONLY
        - OWNER_SCOPE_REQUIRED
        - VENUE_OPERATION_UNSUPPORTED
        - TAKER_ONBOARDING_INCOMPLETE
        - TAKER_ADMISSION_UNAVAILABLE
      type: string
      x-extensible-enum: true
    CapabilityUnlockEstimate:
      description: >-
        Coarse time-to-unlock class. The UI owns the copy; figures are
        engineering

        estimates until the KYB queue and Sumsub webhooks supply measured
        values.


        New values may be added; treat unknown values as other.
      enum:
        - minutes
        - forms_then_review
        - admin_action
        - other_party
        - unknown
        - not_unlockable
      type: string
      x-extensible-enum: true
    CapabilityUnlockStep:
      description: |-
        Stable key for the step that unlocks a blocked capability. The backend
        names the step; the UI owns the step-to-route map. Never a UI route.

        New values may be added; treat unknown values as other.
      enum:
        - finish_onboarding
        - company_details
        - kyb_profile
        - kyc_dialog
        - link_wallet
        - ask_admin
        - contact_broker
        - manage_direct_users
        - manage_api_key
        - connect_custodian
        - switch_account_scope
        - contact_support
        - await_screening
        - none
      type: string
      x-extensible-enum: true
    BankAccountSuffix:
      description: >-
        An already-qualified masked account suffix of 1 to 4 ASCII
        letters/digits, not external account ownership proof. Never truncate a
        full account number.
      examples:
        - A1b2
      maxLength: 4
      minLength: 1
      pattern: ^[A-Za-z0-9]{1,4}$
      type: string
    BankFundingRevealRef:
      description: >-
        Non-bearer lookup metadata for deposit instructions. Possession grants
        no authority. Each reveal requires current wallet-view authority and
        exact account membership; an API key additionally needs treasury_read.
        Missing and foreign accounts share a refusal. Quotes never fetch these
        instructions.
      properties:
        connectionId:
          description: >-
            The native held leg's exact connection id, never a
            first/sole-connection guess.
          type: string
        currency:
          type: string
        providerBankId:
          description: >-
            The provider's linked-bank id when required by that venue; otherwise
            unknown/null.
          type:
            - string
            - 'null'
      required:
        - connectionId
        - currency
        - providerBankId
      type: object
    CreditCheck:
      description: >-
        Point-in-time credit evidence, never a reservation or dispatch
        authority.
      properties:
        activeHolds:
          type: string
        available:
          type: string
        availableSigned:
          type: string
        checkedAt:
          format: date-time
          type: string
        creditPortion:
          $ref: '#/components/schemas/CreditAmount'
        decision:
          type: string
        effectiveLimit:
          type: string
        exposureDelta:
          type: string
        exposureReducing:
          type: boolean
        journalVersion:
          type:
            - string
            - 'null'
        localHeadroom:
          type: string
        lpAvailable:
          type: string
        maxAgeMs:
          format: int64
          minimum: 0
          type: integer
        observationAgeMs:
          format: int64
          minimum: 0
          type: integer
        observationId:
          format: uuid
          type: string
        overLimitBy:
          oneOf:
            - type: 'null'
            - $ref: '#/components/schemas/CreditAmount'
        positionsBasis:
          description: >-
            Why the read vouches that an omitted asset holds zero; absent when
            no asset was omitted.
          type:
            - string
            - 'null'
        projectedUsed:
          type: string
        source:
          type: string
        termsVersion:
          format: int64
          type: integer
        used:
          type: string
        valuationMaxAgeMs:
          format: int64
          minimum: 0
          type: integer
        venueAccountId:
          format: uuid
          type: string
        zeroAssets:
          description: >-
            Assets the LP's positions read omitted and that this decision
            counted as zero.
          items:
            type: string
          type: array
      required:
        - decision
        - venueAccountId
        - observationId
        - termsVersion
        - checkedAt
        - maxAgeMs
        - valuationMaxAgeMs
        - observationAgeMs
        - lpAvailable
        - effectiveLimit
        - used
        - localHeadroom
        - activeHolds
        - available
        - availableSigned
        - projectedUsed
        - exposureDelta
        - creditPortion
        - exposureReducing
        - source
      type: object
    CreditAmount:
      properties:
        amount:
          type: string
        currency:
          type: string
        lineValue:
          type:
            - string
            - 'null'
      required:
        - amount
        - currency
      type: object
    CreditReservation:
      description: >-
        A firm ask's combined hold on a credit account: the positives the trade
        spends

        (debit-asset units) and the credit exposure it may add (line currency),
        admitted together

        under the account lock. Held until the quote expires or Confirm adopts
        it; an indicative

        card never carries one. Neither a dispatch authority nor a consent.
      properties:
        debitAsset:
          type: string
        expiresAt:
          description: 'When the unsent hold is released: the quote''s own expiry.'
          format: date-time
          type: string
        exposureAmount:
          description: >-
            The credit exposure the trade may add, in the line currency, rounded
            up.
          type: string
        exposureCurrency:
          type: string
        inputAmount:
          description: The trade's full debit, exact.
          type: string
        operationId:
          description: The prepared trade the ask was made for, when it was.
          format: uuid
          type:
            - string
            - 'null'
        positiveInputAmount:
          description: >-
            The part of the debit spent from positives, in the debit asset,
            rounded up.
          type: string
        reservationId:
          format: uuid
          type: string
        state:
          description: >-
            `reserved` while unsent; `released` once it expired, was adopted or
            was superseded.
          type: string
      required:
        - reservationId
        - debitAsset
        - inputAmount
        - positiveInputAmount
        - exposureAmount
        - exposureCurrency
        - expiresAt
        - state
      type: object
    ResolvedDeliverTo:
      description: >-
        A resolved destination includes observed presentation facts, unlike a
        request.


        New values may be added; treat unknown values as other.
      oneOf:
        - properties:
            accountKind:
              $ref: '#/components/schemas/FundingAccountKind'
            displayName:
              type: string
            financialAccountId:
              type: string
            isDefault:
              type: boolean
            kind:
              description: New values may be added; treat unknown values as other.
              enum:
                - financialAccount
              type: string
              x-extensible-enum: true
            network:
              oneOf:
                - type: 'null'
                - $ref: '#/components/schemas/Caip2Chain'
          required:
            - financialAccountId
            - accountKind
            - displayName
            - isDefault
            - kind
          type: object
        - properties:
            kind:
              description: New values may be added; treat unknown values as other.
              enum:
                - payee
              type: string
              x-extensible-enum: true
            payeeId:
              type: string
          required:
            - payeeId
            - kind
          type: object
        - properties:
            address:
              type: string
            calldata:
              type:
                - string
                - 'null'
            chain:
              $ref: '#/components/schemas/Caip2Chain'
            destinationTag:
              type:
                - string
                - 'null'
            kind:
              description: New values may be added; treat unknown values as other.
              enum:
                - address
              type: string
              x-extensible-enum: true
          required:
            - chain
            - address
            - kind
          type: object
      x-extensible-enum: true
    FundingAccount:
      description: >-
        What backs execution. A link id appears only when money moves through
        that link.
      properties:
        financialAccountId:
          type: string
        kind:
          $ref: '#/components/schemas/FundingAccountKind'
        linkId:
          format: uuid
          type:
            - string
            - 'null'
      required:
        - financialAccountId
        - kind
      type: object
    FundingModel:
      description: >-
        What backs execution. A venue declares `prefunded` or `payIn`; `credit`
        is derived per

        trade (never declared or chosen): the trade creates or increases a
        negative position on the

        venue account, and `creditPortion` names how much.


        New values may be added; treat unknown values as other.
      enum:
        - prefunded
        - payIn
        - credit
      type: string
      x-extensible-enum: true
    PayInTerms:
      properties:
        afterPayBy:
          oneOf:
            - type: 'null'
            - $ref: '#/components/schemas/AfterPayBy_String'
        payBy:
          oneOf:
            - type: 'null'
            - $ref: '#/components/schemas/PayBy'
              description: >-
                `null` means the venue declares no deadline, not an inferred
                duration.
        settlementGrace:
          oneOf:
            - type: 'null'
            - $ref: '#/components/schemas/SettlementGrace'
      type: object
    QuotedSettlement:
      allOf:
        - $ref: '#/components/schemas/SettlementTerms'
        - properties:
            window:
              oneOf:
                - type: 'null'
                - $ref: '#/components/schemas/SettlementWindowTerms'
          type: object
      description: >-
        A quote's, firm answer's and executed trade's settlement: the venue's
        declared terms and,

        for delayed timing only, the window. `{method, firstLeg?, timing,
        window?}` on the wire.
    TradingSource:
      description: >-
        The exact source selected for a quote, retained through execution and
        recovery.


        New values may be added; treat unknown values as other.
      oneOf:
        - properties:
            financialAccountId:
              type: string
            kind:
              description: New values may be added; treat unknown values as other.
              enum:
                - venueAccount
              type: string
              x-extensible-enum: true
            venueEnablementId:
              type: string
          required:
            - venueEnablementId
            - financialAccountId
            - kind
          type: object
        - properties:
            financialAccountId:
              type: string
            kind:
              description: New values may be added; treat unknown values as other.
              enum:
                - wallet
              type: string
              x-extensible-enum: true
            network:
              $ref: '#/components/schemas/Caip2Chain'
            venueEnablementId:
              type: string
          required:
            - venueEnablementId
            - financialAccountId
            - network
            - kind
          type: object
      x-extensible-enum: true
    AssetVariant:
      description: >-
        A deployment's variant label: its kind and the name people see
        (`USDC.e`, `USDT0`,

        `mUSDC`).
      properties:
        kind:
          $ref: '#/components/schemas/VariantKind'
        name:
          type: string
      required:
        - kind
        - name
      type: object
    QuoteFeeBound:
      description: New values may be added; treat unknown values as other.
      enum:
        - maximum
      type: string
      x-extensible-enum: true
    FeeLineKind:
      description: New values may be added; treat unknown values as other.
      enum:
        - provider
        - platform
        - integrator
        - bank
        - network
      type: string
      x-extensible-enum: true
    FeePayer:
      description: >-
        Who bears a fee line. Sponsored relayer gas on a delegated lane is a
        `network` line

        paid by the `platform`.


        New values may be added; treat unknown values as other.
      enum:
        - taker
        - platform
        - takerStatement
      type: string
      x-extensible-enum: true
    VenueExecution:
      description: >-
        A venue account's recorded execution facts, never protocol network
        metadata.
      properties:
        site:
          $ref: '#/components/schemas/VenueSiteLabel'
        siteChain:
          oneOf:
            - type: 'null'
            - $ref: '#/components/schemas/Caip2Chain'
              description: >-
                The one network the card's venue account trades on, when the
                venue holds one account

                per network: each network's account answers with its own card,
                titled by this chain.

                Absent for an off-chain account and for a bridge, whose account
                spans its networks.
        stage:
          $ref: '#/components/schemas/VenueExecutionStage'
        status:
          $ref: '#/components/schemas/VenueExecutionStatus'
      required:
        - stage
        - site
        - status
      type: object
    LegLocation:
      description: |-
        Where a leg executes and first settles. Each kind carries only its own
        fields; any other combination fails to parse.

        New values may be added; treat unknown values as other.
      discriminator:
        propertyName: kind
      oneOf:
        - properties:
            chain:
              $ref: '#/components/schemas/Caip2Chain'
            kind:
              description: New values may be added; treat unknown values as other.
              enum:
                - singleChain
              type: string
              x-extensible-enum: true
          required:
            - chain
            - kind
          type: object
        - properties:
            from:
              $ref: '#/components/schemas/Caip2Chain'
            kind:
              description: New values may be added; treat unknown values as other.
              enum:
                - crossChain
              type: string
              x-extensible-enum: true
            to:
              $ref: '#/components/schemas/Caip2Chain'
          required:
            - from
            - to
            - kind
          type: object
        - properties:
            kind:
              description: New values may be added; treat unknown values as other.
              enum:
                - offChain
              type: string
              x-extensible-enum: true
            tradingSource:
              oneOf:
                - type: 'null'
                - $ref: '#/components/schemas/TradingSource'
                  description: >-
                    Absent only on a priced card whose named sourceRefusal
                    disables ordering.
          required:
            - kind
          type: object
      x-extensible-enum: true
    ProtocolEnvironment:
      description: |-
        The environment of the registry chain(s) a protocol leg executes on.

        New values may be added; treat unknown values as other.
      oneOf:
        - properties:
            network:
              description: New values may be added; treat unknown values as other.
              enum:
                - testnet
              type: string
              x-extensible-enum: true
          required:
            - network
          type: object
        - properties:
            network:
              description: New values may be added; treat unknown values as other.
              enum:
                - mainnet
              type: string
              x-extensible-enum: true
          required:
            - network
          type: object
        - properties:
            network:
              description: New values may be added; treat unknown values as other.
              enum:
                - unavailable
              type: string
              x-extensible-enum: true
            reason:
              type: string
          required:
            - reason
            - network
          type: object
      x-extensible-enum: true
    ProviderProduct:
      description: Executable product surface behind a provider capability.
      oneOf:
        - description: New values may be added; treat unknown values as other.
          enum:
            - stableRfq
          type: string
          x-extensible-enum: true
        - description: New values may be added; treat unknown values as other.
          enum:
            - internalTreasury
          type: string
          x-extensible-enum: true
        - description: New values may be added; treat unknown values as other.
          enum:
            - circleCpnPayout
          type: string
          x-extensible-enum: true
        - description: New values may be added; treat unknown values as other.
          enum:
            - circleMintDeposit
          type: string
          x-extensible-enum: true
        - description: New values may be added; treat unknown values as other.
          enum:
            - circleMintWithdrawal
          type: string
          x-extensible-enum: true
        - description: New values may be added; treat unknown values as other.
          enum:
            - circleMintExchange
          type: string
          x-extensible-enum: true
        - description: |-
            Registered on-chain primary-market mint/redeem capability.

            New values may be added; treat unknown values as other.
          enum:
            - issuerPrimaryMarket
          type: string
          x-extensible-enum: true
        - description: |-
            Circle CCTP burn-and-mint bridge corridor (route legs).

            New values may be added; treat unknown values as other.
          enum:
            - cctpBridge
          type: string
          x-extensible-enum: true
        - description: |-
            Across V4 liquidity relay bridge corridor (route legs).

            New values may be added; treat unknown values as other.
          enum:
            - acrossBridge
          type: string
          x-extensible-enum: true
        - description: |-
            Relay (relay.link) intents bridge corridor (route legs).

            New values may be added; treat unknown values as other.
          enum:
            - relayBridge
          type: string
          x-extensible-enum: true
        - description: |-
            Circle StableFX on-chain FX venue on Arc (`FxEscrow` settlement).

            New values may be added; treat unknown values as other.
          enum:
            - arcStableFx
          type: string
          x-extensible-enum: true
        - description: |-
            Direct same-chain swap through the registry-pinned DEX capability.

            New values may be added; treat unknown values as other.
          enum:
            - dexSwap
          type: string
          x-extensible-enum: true
        - description: >-
            Same-chain, firm-quoted RFQ swap settled through an approved kind-1
            SwapModule. The quote is

            firm for the venue's own TTL and the executable calldata is fetched
            at execution, never at

            quote time. Octarine is the first backing venue; the product is
            venue-neutral.


            New values may be added; treat unknown values as other.
          enum:
            - rfqSwap
          type: string
          x-extensible-enum: true
        - description: |-
            Cross-chain intent filled by a solver under OIF escrow settlement.

            New values may be added; treat unknown values as other.
          enum:
            - oifIntent
          type: string
          x-extensible-enum: true
        - description: >-
            A provider fiat ramp: bank money in or out at a fiat venue.


            `venue_id` names the instrument's venue: an order-book venue whose
            fiat pairs are

            instruments of that venue (VALR's, Luno's), or a dedicated fiat
            venue (Lumx's). The

            direction says which way bank money moves. Wire form (externally
            tagged):

            `{"fiatVenue":{"venueId":"valr-orderbook","direction":"payout"}}`.
          properties:
            fiatVenue:
              description: >-
                A provider fiat ramp: bank money in or out at a fiat venue.


                `venue_id` names the instrument's venue: an order-book venue
                whose fiat pairs are

                instruments of that venue (VALR's, Luno's), or a dedicated fiat
                venue (Lumx's). The

                direction says which way bank money moves. Wire form (externally
                tagged):

                `{"fiatVenue":{"venueId":"valr-orderbook","direction":"payout"}}`.
              properties:
                direction:
                  $ref: '#/components/schemas/FiatDirection'
                venueId:
                  type: string
              required:
                - venueId
                - direction
              type: object
          required:
            - fiatVenue
          type: object
        - description: >-
            The venue route's first leg: the taker's funds leave their wallet
            and are credited to the route's balance at the venue. Final once
            forwarded.


            New values may be added; treat unknown values as other.
          enum:
            - cexDeposit
          type: string
          x-extensible-enum: true
        - description: >-
            The CEX lane's trade: a kind-10 `ACTION` hop on the hub router
            reserves a

            `TradeIntent` against the route's venue balance; the enclave fills
            or cancels it.


            New values may be added; treat unknown values as other.
          enum:
            - cexTrade
          type: string
          x-extensible-enum: true
        - description: >-
            The CEX lane's last leg: the route-relative payout leaf (kind-10
            `ROUTE_PAYOUT`),

            pre-signed by the route root, withdraws the route's balance to its
            recipient.


            New values may be added; treat unknown values as other.
          enum:
            - cexPayout
          type: string
          x-extensible-enum: true
        - description: >-
            Taker-signed WETH9 deposit of native payout proceeds, on the payout
            chain.


            New values may be added; treat unknown values as other.
          enum:
            - wrapNative
          type: string
          x-extensible-enum: true
        - description: >-
            A movement of the requesting workspace's own money at its LP account
            on a venue:

            a trade on the venue's book, a withdrawal from the account to a
            chain

            address, or a deposit into it. Wire form:

            `{"workspaceVenue":{"venueId":"valr-orderbook","movement":"trade"}}`.
          properties:
            workspaceVenue:
              description: >-
                A movement of the requesting workspace's own money at its LP
                account on a venue:

                a trade on the venue's book, a withdrawal from the account to a
                chain

                address, or a deposit into it. Wire form:

                `{"workspaceVenue":{"venueId":"valr-orderbook","movement":"trade"}}`.
              properties:
                movement:
                  $ref: '#/components/schemas/WorkspaceVenueMovement'
                venueId:
                  type: string
              required:
                - venueId
                - movement
              type: object
          required:
            - workspaceVenue
          type: object
    BridgeRelayMode:
      description: |-
        Who relays the destination-chain mint once the bridge attestation
        is available.

        New values may be added; treat unknown values as other.
      enum:
        - circleForwarding
        - selfRelay
      type: string
      x-extensible-enum: true
    RfqMechanismKind:
      description: New values may be added; treat unknown values as other.
      enum:
        - standard
        - large_orders
        - block_trades
      type: string
      x-extensible-enum: true
    FundingMethod:
      description: |-
        How a measured pay-asset shortfall is covered.

        New values may be added; treat unknown values as other.
      enum:
        - venueDeposit
        - bankDeposit
        - walletTopUp
      type: string
      x-extensible-enum: true
    SourceCandidate:
      properties:
        address:
          description: >-
            A wallet's own address, so a page names exactly which wallet pays
            (the old

            binding candidate carried it); absent for accounts and unread
            addresses.
          type:
            - string
            - 'null'
        balance:
          oneOf:
            - type: 'null'
            - $ref: '#/components/schemas/CandidateBalance'
              description: '`null` is an unobserved balance, never a zero balance.'
        displayName:
          type: string
        financialAccountId:
          type: string
        isDefault:
          type: boolean
        kind:
          $ref: '#/components/schemas/FundingAccountKind'
        network:
          oneOf:
            - type: 'null'
            - $ref: '#/components/schemas/Caip2Chain'
        refusal:
          oneOf:
            - type: 'null'
            - $ref: '#/components/schemas/SourceCandidateRefusal'
              description: >-
                Why a requote naming this wallet would be refused, by the
                venue's own wallet gate for

                this card's amount (a Basic on-chain wallet's signing grant and
                its per-trade cap). Absent

                when the gate admits it, and for the card's paying wallet, whose
                price already passed it.
      required:
        - financialAccountId
        - kind
        - displayName
        - isDefault
      type: object
    QuoteWalletSelectionReason:
      description: |-
        The origin of a bound Basic wallet, not a signing or permission grant.

        New values may be added; treat unknown values as other.
      enum:
        - accountDefault
        - preference
        - explicit
      type: string
      x-extensible-enum: true
    VariantPreference:
      description: New values may be added; treat unknown values as other.
      enum:
        - any
        - nativeOnly
      type: string
      x-extensible-enum: true
    PermissionRequestWalletRight:
      description: New values may be added; treat unknown values as other.
      enum:
        - trade
        - transfer
        - manageDestinations
      type: string
      x-extensible-enum: true
    BindingDestinationKind:
      description: >-
        What a payee destination target is. Own financial accounts are not
        targets

        of this defaults store.


        New values may be added; treat unknown values as other.
      enum:
        - cryptoAddress
        - bankAccount
      type: string
      x-extensible-enum: true
    BindingTargetKind:
      description: >-
        Native wallet/default targets. Trading venue accounts and funding links
        use

        the financial-account source model, never this wallet preference
        namespace.


        New values may be added; treat unknown values as other.
      enum:
        - linkedWallet
        - workspaceWallet
        - organizationWallet
        - destination
      type: string
      x-extensible-enum: true
    BindingTargetOwnership:
      description: >-
        Native target ownership for selection guidance only, never
        authorization.

        A destination describes its address-book record, not ownership of
        external

        funds or signing authority. Unknown owner facts must stay
        distinguishable.


        New values may be added; treat unknown values as other.
      enum:
        - personal
        - workspace
        - unknown
      type: string
      x-extensible-enum: true
    VenueRfqMechanismSizeLimits:
      properties:
        maximum:
          oneOf:
            - type: 'null'
            - $ref: '#/components/schemas/VenueRfqSizeLimit'
        minimum:
          oneOf:
            - type: 'null'
            - $ref: '#/components/schemas/VenueRfqSizeLimit'
        tag:
          type: string
      required:
        - tag
      type: object
    VenueRfqSizeLimit:
      properties:
        amount:
          type: string
        unit:
          $ref: '#/components/schemas/VenueRfqLimitUnit'
      required:
        - amount
        - unit
      type: object
    FundingAccountKind:
      description: New values may be added; treat unknown values as other.
      enum:
        - venueAccount
        - wallet
        - bankAccount
      type: string
      x-extensible-enum: true
    AfterPayBy_String:
      allOf:
        - $ref: '#/components/schemas/LateFunds'
        - properties:
            source:
              type: string
          required:
            - source
          type: object
      description: One family serves owned wire values and borrowed catalogue declarations.
    PayBy:
      properties:
        clock:
          $ref: '#/components/schemas/FundingClock'
        seconds:
          format: int32
          minimum: 0
          type: integer
      required:
        - seconds
        - clock
      type: object
    SettlementGrace:
      description: New values may be added; treat unknown values as other.
      oneOf:
        - properties:
            kind:
              description: New values may be added; treat unknown values as other.
              enum:
                - no_grace
              type: string
              x-extensible-enum: true
          required:
            - kind
          type: object
        - properties:
            kind:
              description: New values may be added; treat unknown values as other.
              enum:
                - within
              type: string
              x-extensible-enum: true
            seconds:
              format: int32
              minimum: 0
              type: integer
          required:
            - seconds
            - kind
          type: object
      x-extensible-enum: true
    SettlementTerms:
      allOf:
        - $ref: '#/components/schemas/SettlementMethod'
        - properties:
            timing:
              $ref: '#/components/schemas/SettlementTiming'
          required:
            - timing
          type: object
      description: How and when the trade's assets move, as one flat set of fields.
    SettlementWindowTerms:
      description: >-
        The account schedule's window a delayed trade settles in, fixed when the
        quote was

        made and recorded unchanged on the executed trade. A `clock` window
        carries `settlesBy`,

        the occurrence's confirmed completion; an `onAgreement` window (an
        LP-issued statement with

        no completion term) carries none. A window whose completion is pending
        on any other

        schedule is never emitted.
      properties:
        assumedBoundary:
          oneOf:
            - type: 'null'
            - $ref: '#/components/schemas/AssumedWindowBoundary'
              description: >-
                Present when the window's boundary comes from an assumed
                schedule term rather than the

                LP's confirmation: every surface shows the window as assumed
                until the LP confirms it.
        cadence:
          $ref: '#/components/schemas/SettlementCadence'
        cutoffAt:
          format: date-time
          type:
            - string
            - 'null'
        paymentDeadlineAt:
          description: >-
            The occurrence's payment deadline from its schedule terms: what a
            credit trade's debt is

            paid by. Absent while the schedule has not confirmed it; never
            derived from `settlesBy`.
          format: date-time
          type:
            - string
            - 'null'
        scheduleId:
          type: string
        scheduleLabel:
          description: >-
            The published schedule version's display name (e.g. "EU"), so a
            quote card or Review

            names the window without a settlement read permission.
          type: string
        scheduleVersion:
          format: int64
          type: integer
        settlementBasis:
          $ref: '#/components/schemas/WindowSettlementBasis'
        settlesBy:
          format: date-time
          type:
            - string
            - 'null'
        snapshotAt:
          format: date-time
          type: string
        statementIssuer:
          description: >-
            The LP whose statement settles an `onAgreement` window ("Keyrock");
            absent on a clock window.
          type:
            - string
            - 'null'
        windowId:
          format: uuid
          type: string
      required:
        - windowId
        - scheduleId
        - scheduleVersion
        - scheduleLabel
        - cadence
        - snapshotAt
      type: object
    VariantKind:
      description: >-
        How a token deployment represents its Asset: the Asset itself, or a 1:1

        representation of it. A token with different economics is its own Asset,
        never a

        variant.


        New values may be added; treat unknown values as other.
      enum:
        - native
        - bridged
        - wrapped
        - omnichain
        - test
      type: string
      x-extensible-enum: true
    VenueSiteLabel:
      description: >-
        Whether the connection's recorded site is the venue's sandbox/testnet or
        production.


        New values may be added; treat unknown values as other.
      enum:
        - sandbox
        - production
      type: string
      x-extensible-enum: true
    VenueExecutionStage:
      description: |-
        The execution stage of one venue, mode and provider site.

        New values may be added; treat unknown values as other.
      oneOf:
        - description: Normal execution with no TetraFi caps.
          properties:
            kind:
              description: New values may be added; treat unknown values as other.
              enum:
                - live
              type: string
              x-extensible-enum: true
          required:
            - kind
          type: object
        - description: >-
            Real execution, capped: per trade (USD notional) and per UTC day
            across all

            workspaces.
          properties:
            kind:
              description: New values may be added; treat unknown values as other.
              enum:
                - pilot
              type: string
              x-extensible-enum: true
            maxPerDayUsd:
              format: int32
              minimum: 0
              type: integer
            maxPerTradeUsd:
              format: int32
              minimum: 0
              type: integer
          required:
            - maxPerTradeUsd
            - maxPerDayUsd
            - kind
          type: object
        - description: No execution; the price may still be shown.
          properties:
            kind:
              description: New values may be added; treat unknown values as other.
              enum:
                - disabled
              type: string
              x-extensible-enum: true
            reason:
              type: string
          required:
            - reason
            - kind
          type: object
      x-extensible-enum: true
    VenueExecutionStatus:
      description: |-
        Whether this principal can execute the card now, and why not.

        New values may be added; treat unknown values as other.
      oneOf:
        - properties:
            kind:
              description: New values may be added; treat unknown values as other.
              enum:
                - executable
              type: string
              x-extensible-enum: true
            withinLimit:
              description: >-
                "Execute within my limit" applies: the venue's firm quote lives
                under

                about 5 s, so the person sets a minimum receive and the server
                executes only

                within it. `false`: the firm quote is confirmed before its
                expiry.
              type: boolean
          required:
            - withinLimit
            - kind
          type: object
        - properties:
            kind:
              description: New values may be added; treat unknown values as other.
              enum:
                - notExecutable
              type: string
              x-extensible-enum: true
            policyRule:
              oneOf:
                - type: 'null'
                - $ref: '#/components/schemas/QuotePolicyRule'
                  description: >-
                    The rule or refusal that blocked the card when `reason` is a
                    policy

                    block, so the page can name and link it; absent otherwise
                    and when

                    the policy could not be read.
            reason:
              description: >-
                Known source reason tokens (not all apply to every status):
                `adapterPayloadSerializationFailed`,
                `basicVenueAccountsUnavailable`, `billingPaymentOverdue`,
                `walletNotOnChain`, `ccxtVenueRequiresCexLane`,
                `executionStageDisabled`, `jurisdictionUnproven`,
                `onboardedVenuesUnavailable`,
                `onchainAccountDefaultWalletRequired`,
                `onchainAccountDefaultWalletUnavailable`,
                `onchainAccountWalletRequired`, `onchainAssetDecimalsMismatch`,
                `onchainAssetIdentityMismatch`, `onchainAssetUnmapped`,
                `onchainAssetVariantFiltered`, `onchainWalletUnavailable`,
                `onchainCatalogueUnavailable`,
                `onchainDeliverToNotReceivingWallet`,
                `onchainDeliverToUnverified`, `onchainMarketsUnavailable`,
                `onchainMarketCatalogUnreadable`, `onchainMarketChainRequired`,
                `onchainMarketVariantRequired`, `onchainMarketTokenRequired`,
                `onchainSiteChainUnreadable`, `onchainWalletChainUnreadable`,
                `onchainWalletInactive`, `onchainWalletNotLinked`,
                `onchainWalletNotUsable`, `onchainWalletPickAmbiguous`,
                `onchainWalletWrongNetwork`, `payeeDeliveryUnsupported`,
                `signerLacksRight`, `signerUnavailable`,
                `signingGrantAmbiguous`, `signingGrantExpired`,
                `signingGrantRequired`, `signingGrantTokenNotKept`,
                `signingGrantTokenNotPayable`, `solverChainUnready`,
                `walletChainMismatch`, `walletNotUsableByYou`,
                `walletNotVerifiedForAce`, `walletNotWhitelisted`,
                `withdrawalChainUnsupported`, `accountFeeUnavailable`,
                `comparisonCostsUnavailable`, `connectionListingUnavailable`,
                `feeUnverified`, `noPool`, `noPrice`, `noSize`, `notFilled`,
                `notYetPublished`, `priceArithmetic`, `priceSourceNone`,
                `referenceMidUnavailable`, `settlementPrecisionUnavailable`,
                `accountSetupIncomplete`, `admissionUnavailable`,
                `advancedAccountEligibilityUnavailable`,
                `advancedAccountStateInconsistent`,
                `advancedConnectionDisabled`, `advancedConnectionNotConfigured`,
                `advancedConnectionPaused`,
                `advancedSettlementNeedsVerification`, `advancedModeDisabled`,
                `advancedNotAvailableForAccount`,
                `advancedNotEnabledForAccount`, `allowanceUnavailable`,
                `acrossCapacityExceeded`, `relayCapacityExceeded`,
                `acrossChainNotCarried`, `cctpChainNotCarried`,
                `relayChainNotCarried`, `apiKeyAdvancedWalletUnsupported`,
                `apiKeyOrganisationWalletScopeRequired`, `grantCapExceeded`,
                `amountAboveMaximum`, `amountBelowMinimum`, `amountUnreadable`,
                `amountsUnreadable`, `askFirst`, `authorityUnavailable`,
                `automationNeverAsks`, `availabilityUnreadable`,
                `backgroundNeverAsks`, `balanceUnreadable`,
                `defaultsUnavailable`, `walletHasNoAddress`,
                `walletUnavailable`, `bondAmountUnreadable`,
                `bondAssetUnreadable`, `catalogueUnavailable`,
                `chainFamilyUnknown`, `chainUnrecorded`,
                `clientSessionRequired`, `clockUnreadable`, `comingSoon`,
                `connectionChanged`, `connectionRevoked`, `corridorInvalid`,
                `credential`, `deadlineExceeded`, `defaultsLoading`,
                `deliverToCalldataUnsupported`, `deliverToTagUnsupported`,
                `deliverToNotPermitted`, `deliverToUnreadable`,
                `tradingPermissionRequired`, `directPatienceHarvest`,
                `economicallyInferior`, `exactAmountConflictsWithCard`,
                `exactAmountConflictsWithQuote`,
                `exactOutputDeliveryUnsupported`,
                `exactOutputEstimateUnavailable`,
                `exactRouteHypothesisUnavailable`, `expiredOnArrival`,
                `expiryUnknown`, `feeUnreadable`, `filteredOut`,
                `firmAskRefused`, `freshnessUnknown`, `fundingWindow`,
                `insufficientLiquidity`, `venueRelationship`,
                `venueRelationshipUnavailable`, `lpUnknown`,
                `mfaEnrolmentRequired`, `mfaRequired`, `minimumUnverified`,
                `mixedNetworks`, `netReceivedUnavailable`, `networkUnrecorded`,
                `noAddress`, `noCard`, `noFetcher`, `noInventory`,
                `noLaneForPair`, `noLegs`, `noOnChainCorridor`,
                `noPlannedVenue`, `noQuote`, `noRpc`, `notConnected`,
                `notEligible`, `notExecutable`, `orderPayloadMissing`,
                `outsideTopComposites`, `pairUnmapped`, `sellChainInvalid`,
                `permissionsUnreadable`, `placeOrderNotPermitted`,
                `prefundingMarkerUnreadable`, `prefundingRequired`,
                `indicative`, `priceOnRequest`, `priceOutOfRange`,
                `priceProtectionInvalid`, `pricingBookOnly`, `productNotQuoted`,
                `protocolChainMissing`, `providerFeeTreatmentUnknown`,
                `providerSiteUnrecorded`, `quoteIdUnissuable`, `quoteNotHeld`,
                `buyChainInvalid`, `buyAmountUnsupported`,
                `exactOutputDebitUnavailable`, `pairNotServed`,
                `receiveWalletNotServed`, `referenceMidUnreadable`,
                `referencePriceUnavailable`, `registryUnavailable`,
                `releaseRecheckUnavailable`, `requestUnbuildable`,
                `routeLegChainUnknown`, `routeLegUnnamed`, `routeLegUnplanned`,
                `routeUnavailable`, `secondFactorUnreadable`,
                `shortfallUnmeasured`, `shortfallUnreadable`,
                `singleChainVenue`, `siteChainUnreadable`, `sizeNotEligible`,
                `submitOrderBlocked`, `takerOnboardingIncomplete`,
                `tierNotQuoted`, `tradePaused`, `unsupportedNative`,
                `venueConnectionStorageUnavailable`, `venueDataStale`,
                `venueDeclined`, `venueNotConnected`,
                `venueNotEnabledForWorkspace`, `venueNotListed`,
                `venueTradeKeyUnavailable`, `venueTradeScopeRequired`,
                `venueTradeUnreadable`, `venueUnavailable`, `walletRefused`,
                `withdrawalFeeUnread`, `acrossRoutedViaCctp`,
                `apiKeyOrganisationWalletNotAllowlisted`,
                `balanceAvailabilityUnconfirmed`, `bankDestinationUnavailable`,
                `bebopJamKeyNotEnabled`, `bebopJamQuoteDeclined`,
                `bebopTokenUnavailable`, `relayCurrencyUnsupported`,
                `relaySwapImpactTooHigh`, `tetrafiSolverCallbackNotAuthorized`,
                `tradingLinkSnapshotChanged`, `tradingLinkSnapshotUnavailable`,
                `uniswapChainReadUnavailable`, `uniswapInsufficientDepth`,
                `uniswapQuoteUnreadable`, `uniswapUnwrapAboveDailyCap`,
                `uniswapUnwrapAboveTradeCap`, `uniswapRouteNotGranted`,
                `venueNotEnabled`, `askLimitReached`,
                `balanceMeaningUnconfirmed`, `bebopJamWalletUnsupported`,
                `bebopQuorumWalletTooSlow`, `bebopWalletQuorumUnreadable`,
                `connectionNotConfigured`, `deliveryAccountNetworkUnavailable`,
                `deliveryAccountUnavailable`, `destinationCannotSendOnChain`,
                `dexReferencePriceUnavailable`, `firmQuoteLimited`,
                `fundingAccountNetworkUnavailable`, `fundingAccountUnavailable`,
                `insufficientDepth`, `missingPermission`, `needsNativeGas`,
                `needsWallet`, `notPriced`, `payInTermsUnavailable`,
                `pilotTradeCapExceeded`, `platformFeeRateUnavailable`,
                `pricingBookPairUnserved`, `settlementDeclarationUnavailable`,
                `settlementNotAvailable`, `timedOut`, `timedOutBeforeSend`,
                `tradingSourceNetworkUnavailable`, `tradingSourceNotLinked`,
                `venueEnablementRechecking`, `venueEnablementUnavailable`,
                `venueListingTimedOut`, `venuePoliciesUnavailable`.


                New values may be added; treat unknown values as other.
              type: string
          required:
            - reason
            - kind
          type: object
      x-extensible-enum: true
    FiatDirection:
      description: |-
        Which way bank money moves at a venue.

        New values may be added; treat unknown values as other.
      enum:
        - pay_in
        - payout
      type: string
      x-extensible-enum: true
    WorkspaceVenueMovement:
      description: |-
        Which movement a workspace-venue route step makes at the LP account.

        New values may be added; treat unknown values as other.
      enum:
        - trade
        - withdrawal
        - deposit
      type: string
      x-extensible-enum: true
    CandidateBalance:
      description: >-
        A candidate's balance of the pay Asset, tagged `kind`. A cold or

        failed read is `unavailable`, never 0. `variant` names the token the

        balance was read in (an Octarine route pays mUSDC, a variant of the
        requested USDC).


        New values may be added; treat unknown values as other.
      discriminator:
        propertyName: kind
      oneOf:
        - properties:
            amount:
              $ref: '#/components/schemas/DecimalAmount'
            asset:
              $ref: '#/components/schemas/AssetId'
            kind:
              description: New values may be added; treat unknown values as other.
              enum:
                - known
              type: string
              x-extensible-enum: true
            variant:
              $ref: '#/components/schemas/AssetVariant'
              description: The pay deployment's variant whose token balance this is.
          required:
            - amount
            - asset
            - variant
            - kind
          type: object
        - properties:
            kind:
              description: New values may be added; treat unknown values as other.
              enum:
                - unavailable
              type: string
              x-extensible-enum: true
            reason:
              description: A camelCase token naming why (`notWarmed`).
              type: string
          required:
            - reason
            - kind
          type: object
      x-extensible-enum: true
    SourceCandidateRefusal:
      description: >-
        An offered candidate the card's own requote would refuse: `reason` is
        the source reason token

        its `409 REQUOTE_REFUSED` carries as `details.reason`; `detail` says it
        in member words.
      properties:
        detail:
          type: string
        reason:
          type: string
      required:
        - reason
        - detail
      type: object
    VenueRfqLimitUnit:
      description: New values may be added; treat unknown values as other.
      oneOf:
        - properties:
            asset:
              type: string
            kind:
              description: New values may be added; treat unknown values as other.
              enum:
                - asset
              type: string
              x-extensible-enum: true
          required:
            - asset
            - kind
          type: object
        - properties:
            kind:
              description: New values may be added; treat unknown values as other.
              enum:
                - usd
              type: string
              x-extensible-enum: true
          required:
            - kind
          type: object
      x-extensible-enum: true
    LateFunds:
      description: New values may be added; treat unknown values as other.
      oneOf:
        - properties:
            action:
              description: New values may be added; treat unknown values as other.
              enum:
                - returned
              type: string
              x-extensible-enum: true
          required:
            - action
          type: object
        - properties:
            action:
              description: New values may be added; treat unknown values as other.
              enum:
                - re_priced
              type: string
              x-extensible-enum: true
            untilSeconds:
              format: int32
              minimum: 0
              type: integer
          required:
            - untilSeconds
            - action
          type: object
        - properties:
            action:
              description: New values may be added; treat unknown values as other.
              enum:
                - held
              type: string
              x-extensible-enum: true
          required:
            - action
          type: object
        - properties:
            action:
              description: New values may be added; treat unknown values as other.
              enum:
                - handled_by_support
              type: string
              x-extensible-enum: true
          required:
            - action
          type: object
      x-extensible-enum: true
    FundingClock:
      description: |-
        What a pay-by deadline measures. Explicit tokens retain persisted terms.

        New values may be added; treat unknown values as other.
      enum:
        - payment_started
        - funds_arrived
      type: string
      x-extensible-enum: true
    SettlementMethod:
      description: New values may be added; treat unknown values as other.
      oneOf:
        - properties:
            method:
              description: New values may be added; treat unknown values as other.
              enum:
                - venueLedger
              type: string
              x-extensible-enum: true
          required:
            - method
          type: object
        - properties:
            method:
              description: New values may be added; treat unknown values as other.
              enum:
                - dvp
              type: string
              x-extensible-enum: true
          required:
            - method
          type: object
        - properties:
            firstLeg:
              $ref: '#/components/schemas/FirstLeg'
            method:
              description: New values may be added; treat unknown values as other.
              enum:
                - fop
              type: string
              x-extensible-enum: true
          required:
            - firstLeg
            - method
          type: object
      x-extensible-enum: true
    SettlementTiming:
      description: New values may be added; treat unknown values as other.
      enum:
        - immediate
        - byDeadline
        - delayed
      type: string
      x-extensible-enum: true
    AssumedWindowBoundary:
      description: >-
        The assumption a window's boundary rests on: the zone whose calendar day
        (or local time)

        the boundary assumes, the decision that set it, and the LP whose answer
        replaces it.
      properties:
        lpName:
          type: string
        source:
          type: string
        timeZone:
          type: string
      required:
        - timeZone
        - source
        - lpName
      type: object
    SettlementCadence:
      description: >-
        How often a settlement schedule's windows occur (the schedule owns the
        terms).


        New values may be added; treat unknown values as other.
      oneOf:
        - properties:
            dayBasis:
              $ref: '#/components/schemas/DayBasis'
            everyHours:
              format: int32
              minimum: 0
              type:
                - integer
                - 'null'
            kind:
              description: New values may be added; treat unknown values as other.
              enum:
                - intraday
              type: string
              x-extensible-enum: true
            localTimes:
              items:
                type: string
              type:
                - array
                - 'null'
          required:
            - dayBasis
            - kind
          type: object
        - properties:
            dayBasis:
              $ref: '#/components/schemas/DayBasis'
            days:
              format: int32
              minimum: 0
              type: integer
            kind:
              description: New values may be added; treat unknown values as other.
              enum:
                - daily
              type: string
              x-extensible-enum: true
          required:
            - days
            - dayBasis
            - kind
          type: object
        - properties:
            dayBasis:
              $ref: '#/components/schemas/DayBasis'
            days:
              format: int32
              minimum: 0
              type: integer
            kind:
              description: New values may be added; treat unknown values as other.
              enum:
                - multiDay
              type: string
              x-extensible-enum: true
          required:
            - days
            - dayBasis
            - kind
          type: object
      x-extensible-enum: true
    WindowSettlementBasis:
      description: >-
        What completes a window's settlement. `clock`: the occurrence's
        confirmed completion time

        (`settlesBy`). `onAgreement`: the LP issues the window's statement and
        the trade settles

        once that statement is agreed (Keyrock), so the window states no clock
        time.


        New values may be added; treat unknown values as other.
      enum:
        - clock
        - onAgreement
      type: string
      x-extensible-enum: true
    QuotePolicyRule:
      description: |-
        The rule (or named refusal) that blocked a card. Rules carry no stored
        name; readers label one by `id` from the workspace's policy read.
      properties:
        catchAll:
          type: boolean
        id:
          description: A saved rule's id, a platform-default row's id, or the refusal code.
          type: string
        position:
          description: The rule's position in its policy; absent for a refusal.
          format: int32
          type:
            - integer
            - 'null'
        source:
          $ref: '#/components/schemas/QuotePolicyRuleSource'
      required:
        - id
        - source
        - catchAll
      type: object
    FirstLeg:
      description: New values may be added; treat unknown values as other.
      enum:
        - taker
        - maker
      type: string
      x-extensible-enum: true
    DayBasis:
      description: |-
        A settlement schedule's day basis.

        New values may be added; treat unknown values as other.
      enum:
        - calendarDays
        - businessDays
      type: string
      x-extensible-enum: true
    QuotePolicyRuleSource:
      description: |-
        Where the blocking answer came from.

        New values may be added; treat unknown values as other.
      enum:
        - saved
        - platform_default
        - refusal
      type: string
      x-extensible-enum: true
  securitySchemes:
    api_key:
      description: >-
        Send the API key in `X-API-Key`.


        **Request signing.** A key with signing enabled (`POST
        /api/v1/workspaces/{workspaceId}/users/me/api-keys/{keyId}/signing`,
        which returns the signing secret once) must also sign every request:


        - `X-Timestamp`: the current Unix time in seconds, within 300 seconds of
        the server clock.

        - `X-Signature`: lower-case hex HMAC-SHA256 of the canonical string,
        keyed with the signing secret's 32 bytes (the secret is 64 hex
        characters; decode it first).


        The canonical string is four lines joined by `\n`, with no trailing
        newline: the `X-Timestamp` value, the upper-case method, the path with
        its query exactly as sent (`/api/v1/orders?limit=1`), and the lower-case
        hex SHA-256 of the exact body bytes (the SHA-256 of an empty body when
        there is none).


        A write's signature (POST, PUT, PATCH, DELETE) is accepted once: sending
        the same signed write again is refused, so a retry signs again. A read
        (GET, HEAD) changes nothing, so an identical signed read inside the
        window is admitted again and polling needs no nonce.


        A signing refusal is a 401 `AUTH_REQUIRED` whose `details.reason` names
        the cause: `SIGNATURE_REQUIRED` (a header is missing),
        `SIGNATURE_INVALID` (a malformed header or a wrong signature),
        `TIMESTAMP_OUT_OF_RANGE` or `SIGNATURE_REPLAYED`.
      in: header
      name: X-API-Key
      type: apiKey
      x-request-signing:
        algorithm: HMAC-SHA256
        canonicalRequest:
          - timestamp
          - method
          - pathWithQuery
          - bodySha256Hex
        canonicalSeparator: |+

        oneTimeMethods:
          - POST
          - PUT
          - PATCH
          - DELETE
        refusal:
          error: AUTH_REQUIRED
          reasons:
            - SIGNATURE_REQUIRED
            - SIGNATURE_INVALID
            - TIMESTAMP_OUT_OF_RANGE
            - SIGNATURE_REPLAYED
          status: 401
        secretEncoding: hex
        signatureEncoding: hex-lower
        signatureHeader: X-Signature
        timestampHeader: X-Timestamp
        timestampWindowSeconds: 300
    bearer_auth:
      bearerFormat: JWT
      scheme: bearer
      type: http

````

This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.