> ## 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.

# Stream prices

> Server-sent `snapshot` events for each pair whenever its prices change.



## OpenAPI

````yaml api-reference/openapi.json GET /api/v1/prices/stream
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:
  - description: Production. Uses real assets and venue accounts.
    url: https://api.tetrafi.io
  - description: >-
      Shared development sandbox backed by the dev testnet chain registry. Use
      testnet assets and your workspace's sandbox/testnet venue accounts; makers
      are not simulated. Credentials and workspaces are environment-specific.
    url: https://api-dev.tetrafi.io
security:
  - api_key: []
tags:
  - description: >-
      Exchange service-account credentials for a token, and read the credential
      you are calling with: its identity, scopes and rate limits.
    name: auth
  - description: >-
      Discover the assets, chains and venues you can trade, and read or stream
      their indicative prices.
    name: trading
  - description: >-
      Request firm or indicative quotes for an asset pair from every eligible
      venue, requote one, and read a quote request again.
    name: quotes
  - description: >-
      Place an order from a quote you hold, follow its status, and cancel it
      before it is sent to a venue.
    name: orders
  - description: >-
      Your trade history: every order and venue trade, with its settlement and
      settlement obligations.
    name: trades
  - description: >-
      Your venue accounts' settlement windows, obligations, movements and
      schedules, and the plan of what is due across them.
    name: settlements
  - description: Balances across the workspace's wallets and venue accounts.
    name: treasury
  - description: >-
      One venue account's balances, deposit instructions and history, credit and
      ledger.
    name: venue-accounts
  - description: >-
      The workspace's venue accounts, with where their funds are held and each
      venue's key state.
    name: venue-enablements
  - description: >-
      Register endpoints for signed event deliveries, rotate their secrets, send
      test deliveries and read the delivery log.
    name: webhooks
  - description: >-
      The workspace's verification state, the capabilities it allows, and its
      fee schedule.
    name: workspaces
  - description: >-
      Read up to 20 resources in one request, each answered exactly as its own
      GET.
    name: batch
paths:
  /api/v1/prices/stream:
    get:
      tags:
        - trading
      summary: Stream indicative prices
      description: Server-sent `snapshot` events for each pair whenever its prices change.
      operationId: get_prices_stream
      parameters:
        - $ref: '#/components/parameters/WorkspaceId'
        - description: 1 to 25 comma-separated SELL:BUY Asset pairs (USDC:USDT,USDC:ZAR)
          in: query
          name: pairs
          required: true
          schema:
            type: string
        - description: As GET /prices, applied to every pair
          in: query
          name: sellAmount
          required: false
          schema:
            type: string
        - description: As GET /prices, applied to every pair
          in: query
          name: buyAmount
          required: false
          schema:
            type: string
        - description: >-
            1 to 8 comma-separated positive sell amounts, applied to every pair;
            pairs × sizes at most 125
          in: query
          name: sizes
          required: false
          schema:
            type: string
        - description: CAIP-2 pin for the sell side
          in: query
          name: sell.chain
          required: false
          schema:
            type: string
        - description: CAIP-2 pin for the buy side
          in: query
          name: buy.chain
          required: false
          schema:
            type: string
        - description: Comma-separated venue ids to keep
          in: query
          name: venues.include
          required: false
          schema:
            type: string
        - description: Comma-separated venue ids to drop
          in: query
          name: venues.exclude
          required: false
          schema:
            type: string
        - description: any | nativeOnly
          in: query
          name: variants.sell
          required: false
          schema:
            type: string
        - description: any | nativeOnly
          in: query
          name: variants.buy
          required: false
          schema:
            type: string
        - description: Comma-separated singleChain, crossChain, offChain
          in: query
          name: locations
          required: false
          schema:
            type: string
        - description: Comma-separated amm, solver, bridge, rfq, orderBook, fiat
          in: query
          name: modalities
          required: false
          schema:
            type: string
      responses:
        '200':
          content:
            text/event-stream:
              schema:
                $ref: '#/components/schemas/PricesResponse'
          description: >-
            text/event-stream: a `snapshot` event (a GET /prices body for one
            pair) when that pair's rows change, a keep-alive comment every 15 s;
            the stream ends after 10 minutes
          headers:
            Deprecation:
              description: >-
                Present when this operation is deprecated: an RFC 9745
                structured date, for example @1792443399. Absence makes no
                deprecation claim.
              schema:
                type: string
            Link:
              description: >-
                When deprecation applies, links to the deprecation notice with
                rel=deprecation; other link relations may also be sent.
              schema:
                type: string
            RateLimit:
              description: >-
                draft-ietf-httpapi-ratelimit-headers-07 section 3.1 structured
                dictionary, for example `limit=100, remaining=41, reset=19`.
                Remaining is the admitted decision's headroom; reset is whole
                seconds until quota next becomes available, not an epoch or a
                promise of a full burst refill. On a limiter's 429 remaining is
                0 and reset equals Retry-After. Accepted key, route and
                per-address policies are compared by lowest remaining, then
                longest reset. A venue refusal without a known quota makes no
                rate-limit header claim.
              schema:
                type: string
            RateLimit-Policy:
              description: >-
                draft-ietf-httpapi-ratelimit-headers-07 section 3.5: quota and
                window in seconds, for example `100;w=60`. Sent on every status
                when a finite limiter counted the request. The applicable policy
                closest to exhaustion is reported (section 3.2): lowest
                remaining, then longest reset. On a limiter's 429 this is
                exactly the policy that refused; if a venue discloses no quota,
                the headers are absent.
              schema:
                type: string
            Sunset:
              description: >-
                Present when retirement is scheduled: the HTTP-date after which
                this version may stop being served (RFC 8594).
              schema:
                type: string
            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: More than 25 pairs, or a query GET /prices refuses
          headers:
            Deprecation:
              description: >-
                Present when this operation is deprecated: an RFC 9745
                structured date, for example @1792443399. Absence makes no
                deprecation claim.
              schema:
                type: string
            Link:
              description: >-
                When deprecation applies, links to the deprecation notice with
                rel=deprecation; other link relations may also be sent.
              schema:
                type: string
            RateLimit:
              description: >-
                draft-ietf-httpapi-ratelimit-headers-07 section 3.1 structured
                dictionary, for example `limit=100, remaining=41, reset=19`.
                Remaining is the admitted decision's headroom; reset is whole
                seconds until quota next becomes available, not an epoch or a
                promise of a full burst refill. On a limiter's 429 remaining is
                0 and reset equals Retry-After. Accepted key, route and
                per-address policies are compared by lowest remaining, then
                longest reset. A venue refusal without a known quota makes no
                rate-limit header claim.
              schema:
                type: string
            RateLimit-Policy:
              description: >-
                draft-ietf-httpapi-ratelimit-headers-07 section 3.5: quota and
                window in seconds, for example `100;w=60`. Sent on every status
                when a finite limiter counted the request. The applicable policy
                closest to exhaustion is reported (section 3.2): lowest
                remaining, then longest reset. On a limiter's 429 this is
                exactly the policy that refused; if a venue discloses no quota,
                the headers are absent.
              schema:
                type: string
            Sunset:
              description: >-
                Present when retirement is scheduled: the HTTP-date after which
                this version may stop being served (RFC 8594).
              schema:
                type: string
            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: Missing or invalid credentials
          headers:
            Deprecation:
              description: >-
                Present when this operation is deprecated: an RFC 9745
                structured date, for example @1792443399. Absence makes no
                deprecation claim.
              schema:
                type: string
            Link:
              description: >-
                When deprecation applies, links to the deprecation notice with
                rel=deprecation; other link relations may also be sent.
              schema:
                type: string
            Sunset:
              description: >-
                Present when retirement is scheduled: the HTTP-date after which
                this version may stop being served (RFC 8594).
              schema:
                type: string
            WWW-Authenticate:
              description: >-
                Always sent on 401: `api_key, Bearer`, naming the `api_key`
                security scheme (X-API-Key and its HMAC request-signing
                contract) and the `bearer_auth` security scheme's HTTP scheme
                (Bearer). A presented bearer token adds `error="invalid_token"`
                to the Bearer challenge (RFC 6750 section 3).
              schema:
                type: string
            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: As GET /prices
          headers:
            Deprecation:
              description: >-
                Present when this operation is deprecated: an RFC 9745
                structured date, for example @1792443399. Absence makes no
                deprecation claim.
              schema:
                type: string
            Link:
              description: >-
                When deprecation applies, links to the deprecation notice with
                rel=deprecation; other link relations may also be sent.
              schema:
                type: string
            RateLimit:
              description: >-
                draft-ietf-httpapi-ratelimit-headers-07 section 3.1 structured
                dictionary, for example `limit=100, remaining=41, reset=19`.
                Remaining is the admitted decision's headroom; reset is whole
                seconds until quota next becomes available, not an epoch or a
                promise of a full burst refill. On a limiter's 429 remaining is
                0 and reset equals Retry-After. Accepted key, route and
                per-address policies are compared by lowest remaining, then
                longest reset. A venue refusal without a known quota makes no
                rate-limit header claim.
              schema:
                type: string
            RateLimit-Policy:
              description: >-
                draft-ietf-httpapi-ratelimit-headers-07 section 3.5: quota and
                window in seconds, for example `100;w=60`. Sent on every status
                when a finite limiter counted the request. The applicable policy
                closest to exhaustion is reported (section 3.2): lowest
                remaining, then longest reset. On a limiter's 429 this is
                exactly the policy that refused; if a venue discloses no quota,
                the headers are absent.
              schema:
                type: string
            Sunset:
              description: >-
                Present when retirement is scheduled: the HTTP-date after which
                this version may stop being served (RFC 8594).
              schema:
                type: string
            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:
            Deprecation:
              description: >-
                Present when this operation is deprecated: an RFC 9745
                structured date, for example @1792443399. Absence makes no
                deprecation claim.
              schema:
                type: string
            Link:
              description: >-
                When deprecation applies, links to the deprecation notice with
                rel=deprecation; other link relations may also be sent.
              schema:
                type: string
            RateLimit:
              description: >-
                draft-ietf-httpapi-ratelimit-headers-07 section 3.1 structured
                dictionary, for example `limit=100, remaining=41, reset=19`.
                Remaining is the admitted decision's headroom; reset is whole
                seconds until quota next becomes available, not an epoch or a
                promise of a full burst refill. On a limiter's 429 remaining is
                0 and reset equals Retry-After. Accepted key, route and
                per-address policies are compared by lowest remaining, then
                longest reset. A venue refusal without a known quota makes no
                rate-limit header claim.
              schema:
                type: string
            RateLimit-Policy:
              description: >-
                draft-ietf-httpapi-ratelimit-headers-07 section 3.5: quota and
                window in seconds, for example `100;w=60`. Sent on every status
                when a finite limiter counted the request. The applicable policy
                closest to exhaustion is reported (section 3.2): lowest
                remaining, then longest reset. On a limiter's 429 this is
                exactly the policy that refused; if a venue discloses no quota,
                the headers are absent.
              schema:
                type: string
            Sunset:
              description: >-
                Present when retirement is scheduled: the HTTP-date after which
                this version may stop being served (RFC 8594).
              schema:
                type: string
            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: >-
            PRICES_RATE_LIMIT, or PRICES_STREAM_LIMIT above 4 subscriptions per
            principal
          headers:
            Deprecation:
              description: >-
                Present when this operation is deprecated: an RFC 9745
                structured date, for example @1792443399. Absence makes no
                deprecation claim.
              schema:
                type: string
            Link:
              description: >-
                When deprecation applies, links to the deprecation notice with
                rel=deprecation; other link relations may also be sent.
              schema:
                type: string
            RateLimit:
              description: >-
                draft-ietf-httpapi-ratelimit-headers-07 section 3.1 structured
                dictionary, for example `limit=100, remaining=41, reset=19`.
                Remaining is the admitted decision's headroom; reset is whole
                seconds until quota next becomes available, not an epoch or a
                promise of a full burst refill. On a limiter's 429 remaining is
                0 and reset equals Retry-After. Accepted key, route and
                per-address policies are compared by lowest remaining, then
                longest reset. A venue refusal without a known quota makes no
                rate-limit header claim.
              schema:
                type: string
            RateLimit-Policy:
              description: >-
                draft-ietf-httpapi-ratelimit-headers-07 section 3.5: quota and
                window in seconds, for example `100;w=60`. Sent on every status
                when a finite limiter counted the request. The applicable policy
                closest to exhaustion is reported (section 3.2): lowest
                remaining, then longest reset. On a limiter's 429 this is
                exactly the policy that refused; if a venue discloses no quota,
                the headers are absent.
              schema:
                type: string
            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
            Sunset:
              description: >-
                Present when retirement is scheduled: the HTTP-date after which
                this version may stop being served (RFC 8594).
              schema:
                type: string
            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:
            Deprecation:
              description: >-
                Present when this operation is deprecated: an RFC 9745
                structured date, for example @1792443399. Absence makes no
                deprecation claim.
              schema:
                type: string
            Link:
              description: >-
                When deprecation applies, links to the deprecation notice with
                rel=deprecation; other link relations may also be sent.
              schema:
                type: string
            RateLimit:
              description: >-
                draft-ietf-httpapi-ratelimit-headers-07 section 3.1 structured
                dictionary, for example `limit=100, remaining=41, reset=19`.
                Remaining is the admitted decision's headroom; reset is whole
                seconds until quota next becomes available, not an epoch or a
                promise of a full burst refill. On a limiter's 429 remaining is
                0 and reset equals Retry-After. Accepted key, route and
                per-address policies are compared by lowest remaining, then
                longest reset. A venue refusal without a known quota makes no
                rate-limit header claim.
              schema:
                type: string
            RateLimit-Policy:
              description: >-
                draft-ietf-httpapi-ratelimit-headers-07 section 3.5: quota and
                window in seconds, for example `100;w=60`. Sent on every status
                when a finite limiter counted the request. The applicable policy
                closest to exhaustion is reported (section 3.2): lowest
                remaining, then longest reset. On a limiter's 429 this is
                exactly the policy that refused; if a venue discloses no quota,
                the headers are absent.
              schema:
                type: string
            Sunset:
              description: >-
                Present when retirement is scheduled: the HTTP-date after which
                this version may stop being served (RFC 8594).
              schema:
                type: string
            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: As GET /prices
          headers:
            Deprecation:
              description: >-
                Present when this operation is deprecated: an RFC 9745
                structured date, for example @1792443399. Absence makes no
                deprecation claim.
              schema:
                type: string
            Link:
              description: >-
                When deprecation applies, links to the deprecation notice with
                rel=deprecation; other link relations may also be sent.
              schema:
                type: string
            RateLimit:
              description: >-
                draft-ietf-httpapi-ratelimit-headers-07 section 3.1 structured
                dictionary, for example `limit=100, remaining=41, reset=19`.
                Remaining is the admitted decision's headroom; reset is whole
                seconds until quota next becomes available, not an epoch or a
                promise of a full burst refill. On a limiter's 429 remaining is
                0 and reset equals Retry-After. Accepted key, route and
                per-address policies are compared by lowest remaining, then
                longest reset. A venue refusal without a known quota makes no
                rate-limit header claim.
              schema:
                type: string
            RateLimit-Policy:
              description: >-
                draft-ietf-httpapi-ratelimit-headers-07 section 3.5: quota and
                window in seconds, for example `100;w=60`. Sent on every status
                when a finite limiter counted the request. The applicable policy
                closest to exhaustion is reported (section 3.2): lowest
                remaining, then longest reset. On a limiter's 429 this is
                exactly the policy that refused; if a venue discloses no quota,
                the headers are absent.
              schema:
                type: string
            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
            Sunset:
              description: >-
                Present when retirement is scheduled: the HTTP-date after which
                this version may stop being served (RFC 8594).
              schema:
                type: string
            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:
            - prices_read
        - bearer_auth:
            - prices_read
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:
    PricesResponse:
      description: '`GET /prices` 200, and each `snapshot` event of `GET /prices/stream`.'
      properties:
        buy:
          $ref: '#/components/schemas/AssetId'
        computedAt:
          description: >-
            When the server built this snapshot (it reuses one for about a
            second).
          format: date-time
          type: string
        referenceMid:
          oneOf:
            - type: 'null'
            - $ref: '#/components/schemas/ReferenceMid'
              description: >-
                The pair's indicative reference mid, from the same source as
                POST /quotes. null only when the read failed, with the cause in
                referenceMidUnavailable; never zero, stale or guessed. Never a
                quote input.
          x-undiscriminated-union-reason: >-
            Nullable value: JSON null has no properties and cannot carry a
            discriminator.
        referenceMidUnavailable:
          oneOf:
            - type: 'null'
            - $ref: '#/components/schemas/ReferenceMidUnavailable'
              description: >-
                Why `referenceMid` is `null`: `marketDataUnavailable` (a
                market-data refusal or outage),

                `notPriced` (no reference price exists for an asset) or
                `timedOut` (past the read's budget).
          x-undiscriminated-union-reason: >-
            Nullable value: JSON null has no properties and cannot carry a
            discriminator.
        rows:
          description: >-
            Sorted like quotes: `netReceived` at the first size descending, an
            unavailable value

            last, then by venue id (there is no `best`).
          items:
            $ref: '#/components/schemas/PriceRow'
          type: array
        sell:
          $ref: '#/components/schemas/AssetId'
        sellBalances:
          description: >-
            The sell Asset in the caller's own Default-binding wallets, one
            memory-only read

            per deployment (only the pinned chain when `sell.chain` is set).
            Display only, never a

            quote input. Empty for an API key, before the first warm, or with no
            bound wallet:

            unknown, never zero. A client totals the `fresh` entries and names
            every other entry

            as not read, never a silent partial total.
          items:
            $ref: '#/components/schemas/PayBalance'
          type: array
      required:
        - sell
        - buy
        - computedAt
        - rows
        - sellBalances
        - referenceMid
      type: object
    ApiError:
      description: >-
        The shared refusal body of every integrator operation, including
        edge-layer errors.

        `error` is an open, stable machine-readable code; `docUrl` links to its
        documentation and

        `retryable` says whether an unchanged request may succeed later.
        `message` is for people,

        not matching. `timestamp` is RFC 3339 UTC; optional `requestId` mirrors
        `X-Request-Id`.

        Optional `next` describes recovery and `details` carries code-specific
        information.

        Handle known codes and fall back on the HTTP status for unknown ones.
      properties:
        details:
          oneOf:
            - type: 'null'
            - $ref: '#/components/schemas/ApiErrorDetails'
          x-undiscriminated-union-reason: >-
            Nullable value: JSON null has no properties and cannot carry a
            discriminator.
        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).
          x-undiscriminated-union-reason: >-
            Nullable value: JSON null has no properties and cannot carry a
            discriminator.
        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, as an RFC 3339 UTC timestamp.
          format: date-time
          type: string
      required:
        - error
        - docUrl
        - retryable
        - message
        - timestamp
      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
    ReferenceMid:
      description: >-
        The Reference USD price of the request's two assets, and the mid they
        imply.
      properties:
        buyPerSell:
          description: Buy-asset units per one sell-asset unit (`sellUsd / buyUsd`).
          type: string
        buyUsd:
          description: USD per one unit of the buy asset.
          type: string
        sellUsd:
          description: USD per one unit of the sell asset.
          type: string
      required:
        - sellUsd
        - buyUsd
        - buyPerSell
      type: object
    ReferenceMidUnavailable:
      description: New values may be added; treat unknown values as other.
      enum:
        - marketDataUnavailable
        - notPriced
        - timedOut
      type: string
      x-extensible-enum: true
    PriceRow:
      allOf:
        - $ref: '#/components/schemas/PriceRowStatus'
        - $ref: '#/components/schemas/CardFirmness'
          description: >-
            Written as `firm` and `lastLook`, both always false: a price binds
            no venue. Uses the

            card's one firmness writer, so a row and a card never disagree on
            the shape.
        - properties:
            basis:
              oneOf:
                - type: 'null'
                - $ref: '#/components/schemas/QuoteBasis'
                  description: '`levels` or `model`; `null` when the row holds no price.'
              x-undiscriminated-union-reason: >-
                Nullable value: JSON null has no properties and cannot carry a
                discriminator.
            blockNumber:
              format: int64
              minimum: 0
              type:
                - integer
                - 'null'
            buyVariant:
              $ref: '#/components/schemas/AssetVariant'
            ladderSemantics:
              oneOf:
                - type: 'null'
                - $ref: '#/components/schemas/LadderSemantics'
                  description: '`incremental` whenever `levels` is present.'
              x-undiscriminated-union-reason: >-
                Nullable value: JSON null has no properties and cannot carry a
                discriminator.
            levels:
              description: >-
                The venue's own levels, normalized to incremental, in sell
                units.
              items:
                $ref: '#/components/schemas/PricesLadderLevel'
              type:
                - array
                - 'null'
            location:
              oneOf:
                - type: 'null'
                - $ref: '#/components/schemas/LegLocation'
                  description: >-
                    Where the price executes; `null` on a row with no cached
                    corridor (a venue that

                    holds nothing for the pair).
              x-undiscriminated-union-reason: >-
                Nullable value: JSON null has no properties and cannot carry a
                discriminator.
            observedAt:
              format: date-time
              type:
                - string
                - 'null'
            sellVariant:
              $ref: '#/components/schemas/AssetVariant'
            sizes:
              description: >-
                One entry per requested size, in request order; empty when the
                row holds no price.
              items:
                $ref: '#/components/schemas/PriceSize'
              type: array
            spreadFromMidBps:
              $ref: '#/components/schemas/SpreadFromMid'
              description: >-
                At the first size, against the Reference mid; `unavailable` when
                the mid cannot be

                read, never 0.
            staleAfter:
              format: date-time
              type:
                - string
                - 'null'
            venue:
              $ref: '#/components/schemas/QuoteVenue'
          required:
            - venue
            - location
            - sellVariant
            - buyVariant
            - basis
            - observedAt
            - staleAfter
            - blockNumber
            - sizes
            - levels
            - ladderSemantics
            - spreadFromMidBps
          type: object
      description: One venue's price for one location and variant pair.
    PayBalance:
      description: >-
        One chain's read of the sell Asset in the caller's Default-binding
        wallet.


        New values may be added; treat unknown values as other.
      discriminator:
        mapping:
          fresh: '#/components/schemas/PayBalance/oneOf/0'
          unavailable: '#/components/schemas/PayBalance/oneOf/1'
        propertyName: state
      oneOf:
        - properties:
            amount:
              $ref: '#/components/schemas/DecimalAmount'
            chain:
              description: CAIP-2 chain of the deployment read.
              type: string
            observedAt:
              format: date-time
              type: string
            state:
              description: New values may be added; treat unknown values as other.
              enum:
                - fresh
              type: string
              x-extensible-enum: true
          required:
            - chain
            - amount
            - observedAt
            - state
          type: object
        - description: >-
            No measured amount is usable: `cold` (the first read is in flight),
            `expired`,

            `failed`, `noRpc`, `noFetcher`, or a named chain read failure such
            as

            `NATIVE_BALANCE_UNAVAILABLE`.
          properties:
            chain:
              type: string
            reason:
              type: string
            state:
              description: New values may be added; treat unknown values as other.
              enum:
                - unavailable
              type: string
              x-extensible-enum: true
          required:
            - chain
            - reason
            - state
          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'
        consentedWindow:
          oneOf:
            - type: 'null'
            - $ref: '#/components/schemas/SettlementWindowTerms'
              description: >-
                `SETTLEMENT_WINDOW_CHANGED`: the settlement window the order
                consented to (the quoted

                window, or the one its `settlementWindowId` named), which is no
                longer the one assigned.
          x-undiscriminated-union-reason: >-
            Nullable value: JSON null has no properties and cannot carry a
            discriminator.
        currentWindow:
          oneOf:
            - type: 'null'
            - $ref: '#/components/schemas/SettlementWindowTerms'
              description: >-
                `SETTLEMENT_WINDOW_CHANGED`: the settlement window the server
                assigns the trade now.

                Send the same quote again with `settlementWindowId` set to
                `details.currentWindow.windowId`

                to consent to it.
          x-undiscriminated-union-reason: >-
            Nullable value: JSON null has no properties and cannot carry a
            discriminator.
        field:
          description: >-
            `INVALID_REQUEST`: the path of a missing required, unknown, mistyped
            or out-of-range

            field (for example `buy` or `sell.asset`), never the parser's
            message or input value.
          type:
            - string
            - 'null'
        reason:
          anyOf:
            - $ref: '#/components/schemas/SourceReason'
            - type: 'null'
          description: >-
            A machine-readable reason token the refusing step gave.


            Known source reason tokens (not all apply to every status):
            `clockUnavailable`, `assetUnsupported`, `referenceUndeclarable`,
            `referenceNotAdmitted`, `referenceStale`, `referenceDepth`,
            `marketDataUnavailable`, `calibrationUnavailable`,
            `livePriceUnavailable`, `lpQuoteUnavailable`,
            `platformJurisdictionCountryRequired`,
            `platformJurisdictionUnavailable`, `platformJurisdictionBlocked`,
            `venueJurisdictionExcluded`, `workspaceJurisdictionRequired`,
            `jurisdictionRegionRequired`, `jurisdictionUnavailable`,
            `venueKeyRefusedLikelyIpAllowlist`,
            `venueWithdrawalDestinationNotWhitelisted`,
            `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`, `signerLacksRight`,
            `signerUnavailable`, `signingGrantAmbiguous`, `signingGrantExpired`,
            `nativeGrantExpiryReapprovalRequired`, `nativeBalanceUnavailable`,
            `solanaFinalityUnavailable`, `tronSolidBlockUnavailable`,
            `signingGrantPolicyUnreadable`, `signingGrantPolicyChecking`,
            `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`, `cctpWalletRequired`, `acrossWalletRequired`,
            `walletBrowserSigningEvmOnly`, `relayChainNotCarried`,
            `apiKeyAdvancedWalletUnsupported`,
            `apiKeyOrganisationWalletScopeRequired`, `grantCapExceeded`,
            `amountAboveMaximum`, `amountBelowMinimum`, `belowVenueMinimum`,
            `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`, `firmAskFundsTimedOut`,
            `firmAskPreparationTimedOut`, `quotePreparationFailed`,
            `firmAskAdmissionTimedOut`, `seliniFirmAskMarketsTimedOut`,
            `seliniFirmAskHandoffTimedOut`, `seliniFirmAskBeforePostTimedOut`,
            `seliniFirmAskValidationTimedOut`, `seliniFirmAskResponseTimedOut`,
            `seliniFirmAskTransportFailure`, `rfqQuoteRefusedQuoteNotAvailable`,
            `rfqQuoteRefusedQuotingDisabled`,
            `rfqQuoteRefusedClientRfqNotConfigured`,
            `rfqQuoteRefusedClientProfileNotLoaded`,
            `rfqQuoteRefusedMarketDisabled`, `rfqQuoteRefusedInvalidQuantity`,
            `rfqQuoteRefusedInvalidSide`, `rfqQuoteRefusedInvalidCurrency`,
            `rfqQuoteRefusedPricePrecisionError`, `rfqQuoteRefusedRfqError`,
            `rfqQuoteRefused`, `venueOutcomeIndeterminate`,
            `venueBodyUnreadable`, `venueResponseUnmapped`, `venueRateLimited`,
            `venueQuoteAdmissionExpired`, `placementSignedPastDeadline`,
            `quoteIdentityConflict`, `symbolUnsupported`,
            `marketSymbolAmbiguous`, `firmAskPrincipalRequired`,
            `indicativeRequested`, `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`, `accountFundingReadUnverified`,
            `quoteReconfirmationRequired`, `quoteRejected`,
            `keyrockSecurityCatalogueUnavailable`,
            `venueAnsweredAfterQuoteWindow`, `venueQuoteIntentMismatch`,
            `payExactUnsupported`, `receiveWalletNotServed`,
            `referenceMidUnreadable`, `referencePriceUnavailable`,
            `registryUnavailable`, `releaseRecheckUnavailable`,
            `requestUnbuildable`, `routeLegChainUnknown`, `routeLegUnnamed`,
            `routeLegUnplanned`, `routeUnavailable`, `secondFactorUnreadable`,
            `shortfallUnmeasured`, `shortfallUnreadable`, `singleChainVenue`,
            `siteChainUnreadable`, `sizeNotEligible`, `submitOrderBlocked`,
            `takerOnboardingIncomplete`, `tierNotQuoted`, `tradePaused`,
            `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`,
            `bebopQuorumWalletTooSlow`, `bebopWalletQuorumUnreadable`,
            `bebopBrowserWalletUnsupported`, `connectionNotConfigured`,
            `deliveryAccountNetworkUnavailable`, `deliveryAccountUnavailable`,
            `destinationCannotSendOnChain`, `dexReferencePriceUnavailable`,
            `firmQuoteLimited`, `fundingAccountNetworkUnavailable`,
            `fundingAccountUnavailable`, `insufficientDepth`,
            `missingPermission`, `needsNativeGas`, `needsWallet`, `notPriced`,
            `payInTermsUnavailable`, `pilotTradeCapExceeded`,
            `pilotMinimumAboveTradeCap`, `platformFeeRateUnavailable`,
            `pricingBookPairUnserved`, `settlementDeclarationUnavailable`,
            `settlementNotAvailable`, `timedOut`, `timedOutBeforeSend`,
            `tradingSourceNetworkUnavailable`, `tradingSourceNotLinked`,
            `venueEnablementRechecking`, `venueEnablementUnavailable`,
            `venueListingTimedOut`, `venuePoliciesUnavailable`,
            `multiliquidPaused`, `multiliquidAssetNotAccepted`,
            `walletNotAllowlistedForAsset`, `walletBlacklisted`,
            `multiliquidPriceInvalid`, `multiliquidStablePriceOutOfBand`,
            `multiliquidInsufficientLiquidity`,
            `multiliquidProviderPrefundUnavailable`,
            `multiliquidDailyLimitReached`, `eligibilityUnverifiable`,
            `multiliquidInsufficientBalance`,
            `multiliquidWalletFundsInsufficient`,
            `multiliquidInsufficientAllowance`, `walletTokenAccountFrozen`,
            `multiliquidAmountInTooHigh`, `multiliquidAmountOutTooLow`,
            `multiliquidInsufficientLpFeeBalance`,
            `multiliquidTransferFeeNotSupported`,
            `multiliquidParticipantUnavailable`, `multiliquidChainNotSupported`,
            `multiliquidObservationWalletUnavailable`,
            `privyMultiliquidArrayPinsUnsupported`, `cctpDestinationNotGranted`,
            `signingGrantNativeOnly`, `quoteRejectedInsufficientBalance`,
            `walletGateUnreadable`, `policyBlocked`,
            `treasuryPolicyApprovalRequired`, `destinationTagRequired`,
            `destinationTagMismatch`, `destinationTagInvalid`,
            `acrossBasicLaneNotEnabled`, `creditReadUnavailable`,
            `exactOutputFirmAskUnsupported`, `grantEndsBeforeVenueFunding`,
            `jurisdictionNotServed`, `pairUnsupported`,
            `requesterJurisdictionUnknown`, `venueAccountHasNoKey`,
            `venueAssessmentRequired`, `venueConnectionInvalid`,
            `venueReenableRequiresNewCredentials`, `venueTradingPaused`,
            `balanceNotObserved`, `notPermitted`, `balanceNotPermitted`,
            `gasUnchecked`, `catalogueWaitStateUnavailable`,
            `cctpRouteUpgrading`, `creditOnly`, `dexReferencePriceMissing`,
            `quoteAuthorityUnavailable`, `venueRoutingOff`,
            `venueRoutingStateUnavailable`, `indicativeUnavailable`,
            `marketUnavailable`, `noReferenceMid`,
            `observationBindingUnavailable`, `quoteIdUnavailable`, `stalePrice`.


            New values may be added; treat unknown values as other.
          x-undiscriminated-union-reason: >-
            Nullable value: JSON null has no properties and cannot carry a
            discriminator.
        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.
          x-undiscriminated-union-reason: >-
            Nullable value: JSON null has no properties and cannot carry a
            discriminator.
        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:
        mapping:
          contact: '#/components/schemas/QuoteNextAction/oneOf/8'
          fund: '#/components/schemas/QuoteNextAction/oneOf/4'
          order: '#/components/schemas/QuoteNextAction/oneOf/0'
          preflight: '#/components/schemas/QuoteNextAction/oneOf/1'
          requote: '#/components/schemas/QuoteNextAction/oneOf/5'
          search: '#/components/schemas/QuoteNextAction/oneOf/6'
          sign: '#/components/schemas/QuoteNextAction/oneOf/3'
          transact: '#/components/schemas/QuoteNextAction/oneOf/2'
          wait: '#/components/schemas/QuoteNextAction/oneOf/7'
        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: >-
            This quote requires Advanced wallet preparation, which is not
            available to integrators at launch. Do not submit this quote; select
            an orderable Basic quote.
          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'
              x-undiscriminated-union-reason: >-
                Nullable value: JSON null has no properties and cannot carry a
                discriminator.
            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 funding or delivery selections
            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
    PriceRowStatus:
      description: >-
        A row's outcome:


        | status | meaning |

        |---|---|

        | `priced` | a fresh cached price |

        | `stale` | past `staleAfter`, or a private source still warming; any
        price kept |

        | `unsupported` | `pairNotServed`: the venue holds nothing for the pair;
        `priceSourceNone`: it publishes no price (asked only on `POST /quotes`);
        `buyAmountUnsupported` |

        | `belowMin` | the first size is under the source's minimum |

        | `insufficientDepth` | the source cannot fill the first size |

        | `needsWallet` | the venue prices only for a wallet |

        | `restricted` | a gate keeps the desk price from this principal |

        | `unavailable` | a read failed, or a fee could not be computed;
        `notYetPublished`: the venue publishes this pair and nothing is cached
        for it yet |


        New values may be added; treat unknown values as other.
      discriminator:
        mapping:
          belowMin: '#/components/schemas/PriceRowStatus/oneOf/3'
          insufficientDepth: '#/components/schemas/PriceRowStatus/oneOf/4'
          needsWallet: '#/components/schemas/PriceRowStatus/oneOf/5'
          priced: '#/components/schemas/PriceRowStatus/oneOf/0'
          restricted: '#/components/schemas/PriceRowStatus/oneOf/6'
          stale: '#/components/schemas/PriceRowStatus/oneOf/1'
          unavailable: '#/components/schemas/PriceRowStatus/oneOf/7'
          unsupported: '#/components/schemas/PriceRowStatus/oneOf/2'
        propertyName: status
      oneOf:
        - properties:
            status:
              description: New values may be added; treat unknown values as other.
              enum:
                - priced
              type: string
              x-extensible-enum: true
          required:
            - status
          type: object
        - properties:
            status:
              description: New values may be added; treat unknown values as other.
              enum:
                - stale
              type: string
              x-extensible-enum: true
          required:
            - status
          type: object
        - properties:
            reason:
              $ref: '#/components/schemas/SourceReason'
              description: >-
                Known source reason tokens (not all apply to every status):
                `clockUnavailable`, `assetUnsupported`, `referenceUndeclarable`,
                `referenceNotAdmitted`, `referenceStale`, `referenceDepth`,
                `marketDataUnavailable`, `calibrationUnavailable`,
                `livePriceUnavailable`, `lpQuoteUnavailable`,
                `platformJurisdictionCountryRequired`,
                `platformJurisdictionUnavailable`,
                `platformJurisdictionBlocked`, `venueJurisdictionExcluded`,
                `workspaceJurisdictionRequired`, `jurisdictionRegionRequired`,
                `jurisdictionUnavailable`, `venueKeyRefusedLikelyIpAllowlist`,
                `venueWithdrawalDestinationNotWhitelisted`,
                `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`, `signerLacksRight`,
                `signerUnavailable`, `signingGrantAmbiguous`,
                `signingGrantExpired`, `nativeGrantExpiryReapprovalRequired`,
                `nativeBalanceUnavailable`, `solanaFinalityUnavailable`,
                `tronSolidBlockUnavailable`, `signingGrantPolicyUnreadable`,
                `signingGrantPolicyChecking`, `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`,
                `cctpWalletRequired`, `acrossWalletRequired`,
                `walletBrowserSigningEvmOnly`, `relayChainNotCarried`,
                `apiKeyAdvancedWalletUnsupported`,
                `apiKeyOrganisationWalletScopeRequired`, `grantCapExceeded`,
                `amountAboveMaximum`, `amountBelowMinimum`, `belowVenueMinimum`,
                `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`, `firmAskFundsTimedOut`,
                `firmAskPreparationTimedOut`, `quotePreparationFailed`,
                `firmAskAdmissionTimedOut`, `seliniFirmAskMarketsTimedOut`,
                `seliniFirmAskHandoffTimedOut`,
                `seliniFirmAskBeforePostTimedOut`,
                `seliniFirmAskValidationTimedOut`,
                `seliniFirmAskResponseTimedOut`,
                `seliniFirmAskTransportFailure`,
                `rfqQuoteRefusedQuoteNotAvailable`,
                `rfqQuoteRefusedQuotingDisabled`,
                `rfqQuoteRefusedClientRfqNotConfigured`,
                `rfqQuoteRefusedClientProfileNotLoaded`,
                `rfqQuoteRefusedMarketDisabled`,
                `rfqQuoteRefusedInvalidQuantity`, `rfqQuoteRefusedInvalidSide`,
                `rfqQuoteRefusedInvalidCurrency`,
                `rfqQuoteRefusedPricePrecisionError`, `rfqQuoteRefusedRfqError`,
                `rfqQuoteRefused`, `venueOutcomeIndeterminate`,
                `venueBodyUnreadable`, `venueResponseUnmapped`,
                `venueRateLimited`, `venueQuoteAdmissionExpired`,
                `placementSignedPastDeadline`, `quoteIdentityConflict`,
                `symbolUnsupported`, `marketSymbolAmbiguous`,
                `firmAskPrincipalRequired`, `indicativeRequested`,
                `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`,
                `accountFundingReadUnverified`, `quoteReconfirmationRequired`,
                `quoteRejected`, `keyrockSecurityCatalogueUnavailable`,
                `venueAnsweredAfterQuoteWindow`, `venueQuoteIntentMismatch`,
                `payExactUnsupported`, `receiveWalletNotServed`,
                `referenceMidUnreadable`, `referencePriceUnavailable`,
                `registryUnavailable`, `releaseRecheckUnavailable`,
                `requestUnbuildable`, `routeLegChainUnknown`, `routeLegUnnamed`,
                `routeLegUnplanned`, `routeUnavailable`,
                `secondFactorUnreadable`, `shortfallUnmeasured`,
                `shortfallUnreadable`, `singleChainVenue`,
                `siteChainUnreadable`, `sizeNotEligible`, `submitOrderBlocked`,
                `takerOnboardingIncomplete`, `tierNotQuoted`, `tradePaused`,
                `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`, `bebopQuorumWalletTooSlow`,
                `bebopWalletQuorumUnreadable`, `bebopBrowserWalletUnsupported`,
                `connectionNotConfigured`, `deliveryAccountNetworkUnavailable`,
                `deliveryAccountUnavailable`, `destinationCannotSendOnChain`,
                `dexReferencePriceUnavailable`, `firmQuoteLimited`,
                `fundingAccountNetworkUnavailable`, `fundingAccountUnavailable`,
                `insufficientDepth`, `missingPermission`, `needsNativeGas`,
                `needsWallet`, `notPriced`, `payInTermsUnavailable`,
                `pilotTradeCapExceeded`, `pilotMinimumAboveTradeCap`,
                `platformFeeRateUnavailable`, `pricingBookPairUnserved`,
                `settlementDeclarationUnavailable`, `settlementNotAvailable`,
                `timedOut`, `timedOutBeforeSend`,
                `tradingSourceNetworkUnavailable`, `tradingSourceNotLinked`,
                `venueEnablementRechecking`, `venueEnablementUnavailable`,
                `venueListingTimedOut`, `venuePoliciesUnavailable`,
                `multiliquidPaused`, `multiliquidAssetNotAccepted`,
                `walletNotAllowlistedForAsset`, `walletBlacklisted`,
                `multiliquidPriceInvalid`, `multiliquidStablePriceOutOfBand`,
                `multiliquidInsufficientLiquidity`,
                `multiliquidProviderPrefundUnavailable`,
                `multiliquidDailyLimitReached`, `eligibilityUnverifiable`,
                `multiliquidInsufficientBalance`,
                `multiliquidWalletFundsInsufficient`,
                `multiliquidInsufficientAllowance`, `walletTokenAccountFrozen`,
                `multiliquidAmountInTooHigh`, `multiliquidAmountOutTooLow`,
                `multiliquidInsufficientLpFeeBalance`,
                `multiliquidTransferFeeNotSupported`,
                `multiliquidParticipantUnavailable`,
                `multiliquidChainNotSupported`,
                `multiliquidObservationWalletUnavailable`,
                `privyMultiliquidArrayPinsUnsupported`,
                `cctpDestinationNotGranted`, `signingGrantNativeOnly`,
                `quoteRejectedInsufficientBalance`, `walletGateUnreadable`,
                `policyBlocked`, `treasuryPolicyApprovalRequired`,
                `destinationTagRequired`, `destinationTagMismatch`,
                `destinationTagInvalid`, `acrossBasicLaneNotEnabled`,
                `creditReadUnavailable`, `exactOutputFirmAskUnsupported`,
                `grantEndsBeforeVenueFunding`, `jurisdictionNotServed`,
                `pairUnsupported`, `requesterJurisdictionUnknown`,
                `venueAccountHasNoKey`, `venueAssessmentRequired`,
                `venueConnectionInvalid`, `venueReenableRequiresNewCredentials`,
                `venueTradingPaused`, `balanceNotObserved`, `notPermitted`,
                `balanceNotPermitted`, `gasUnchecked`,
                `catalogueWaitStateUnavailable`, `cctpRouteUpgrading`,
                `creditOnly`, `dexReferencePriceMissing`,
                `quoteAuthorityUnavailable`, `venueRoutingOff`,
                `venueRoutingStateUnavailable`, `indicativeUnavailable`,
                `marketUnavailable`, `noReferenceMid`,
                `observationBindingUnavailable`, `quoteIdUnavailable`,
                `stalePrice`.


                New values may be added; treat unknown values as other.
            status:
              description: New values may be added; treat unknown values as other.
              enum:
                - unsupported
              type: string
              x-extensible-enum: true
          required:
            - reason
            - status
          type: object
        - properties:
            status:
              description: New values may be added; treat unknown values as other.
              enum:
                - belowMin
              type: string
              x-extensible-enum: true
          required:
            - status
          type: object
        - properties:
            status:
              description: New values may be added; treat unknown values as other.
              enum:
                - insufficientDepth
              type: string
              x-extensible-enum: true
          required:
            - status
          type: object
        - properties:
            status:
              description: New values may be added; treat unknown values as other.
              enum:
                - needsWallet
              type: string
              x-extensible-enum: true
          required:
            - status
          type: object
        - properties:
            reason:
              $ref: '#/components/schemas/RestrictedReason'
              description: >-
                Known source reason tokens (not all apply to every status):
                `clockUnavailable`, `assetUnsupported`, `referenceUndeclarable`,
                `referenceNotAdmitted`, `referenceStale`, `referenceDepth`,
                `marketDataUnavailable`, `calibrationUnavailable`,
                `livePriceUnavailable`, `lpQuoteUnavailable`,
                `platformJurisdictionCountryRequired`,
                `platformJurisdictionUnavailable`,
                `platformJurisdictionBlocked`, `venueJurisdictionExcluded`,
                `workspaceJurisdictionRequired`, `jurisdictionRegionRequired`,
                `jurisdictionUnavailable`, `venueKeyRefusedLikelyIpAllowlist`,
                `venueWithdrawalDestinationNotWhitelisted`,
                `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`, `signerLacksRight`,
                `signerUnavailable`, `signingGrantAmbiguous`,
                `signingGrantExpired`, `nativeGrantExpiryReapprovalRequired`,
                `nativeBalanceUnavailable`, `solanaFinalityUnavailable`,
                `tronSolidBlockUnavailable`, `signingGrantPolicyUnreadable`,
                `signingGrantPolicyChecking`, `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`,
                `cctpWalletRequired`, `acrossWalletRequired`,
                `walletBrowserSigningEvmOnly`, `relayChainNotCarried`,
                `apiKeyAdvancedWalletUnsupported`,
                `apiKeyOrganisationWalletScopeRequired`, `grantCapExceeded`,
                `amountAboveMaximum`, `amountBelowMinimum`, `belowVenueMinimum`,
                `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`, `firmAskFundsTimedOut`,
                `firmAskPreparationTimedOut`, `quotePreparationFailed`,
                `firmAskAdmissionTimedOut`, `seliniFirmAskMarketsTimedOut`,
                `seliniFirmAskHandoffTimedOut`,
                `seliniFirmAskBeforePostTimedOut`,
                `seliniFirmAskValidationTimedOut`,
                `seliniFirmAskResponseTimedOut`,
                `seliniFirmAskTransportFailure`,
                `rfqQuoteRefusedQuoteNotAvailable`,
                `rfqQuoteRefusedQuotingDisabled`,
                `rfqQuoteRefusedClientRfqNotConfigured`,
                `rfqQuoteRefusedClientProfileNotLoaded`,
                `rfqQuoteRefusedMarketDisabled`,
                `rfqQuoteRefusedInvalidQuantity`, `rfqQuoteRefusedInvalidSide`,
                `rfqQuoteRefusedInvalidCurrency`,
                `rfqQuoteRefusedPricePrecisionError`, `rfqQuoteRefusedRfqError`,
                `rfqQuoteRefused`, `venueOutcomeIndeterminate`,
                `venueBodyUnreadable`, `venueResponseUnmapped`,
                `venueRateLimited`, `venueQuoteAdmissionExpired`,
                `placementSignedPastDeadline`, `quoteIdentityConflict`,
                `symbolUnsupported`, `marketSymbolAmbiguous`,
                `firmAskPrincipalRequired`, `indicativeRequested`,
                `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`,
                `accountFundingReadUnverified`, `quoteReconfirmationRequired`,
                `quoteRejected`, `keyrockSecurityCatalogueUnavailable`,
                `venueAnsweredAfterQuoteWindow`, `venueQuoteIntentMismatch`,
                `payExactUnsupported`, `receiveWalletNotServed`,
                `referenceMidUnreadable`, `referencePriceUnavailable`,
                `registryUnavailable`, `releaseRecheckUnavailable`,
                `requestUnbuildable`, `routeLegChainUnknown`, `routeLegUnnamed`,
                `routeLegUnplanned`, `routeUnavailable`,
                `secondFactorUnreadable`, `shortfallUnmeasured`,
                `shortfallUnreadable`, `singleChainVenue`,
                `siteChainUnreadable`, `sizeNotEligible`, `submitOrderBlocked`,
                `takerOnboardingIncomplete`, `tierNotQuoted`, `tradePaused`,
                `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`, `bebopQuorumWalletTooSlow`,
                `bebopWalletQuorumUnreadable`, `bebopBrowserWalletUnsupported`,
                `connectionNotConfigured`, `deliveryAccountNetworkUnavailable`,
                `deliveryAccountUnavailable`, `destinationCannotSendOnChain`,
                `dexReferencePriceUnavailable`, `firmQuoteLimited`,
                `fundingAccountNetworkUnavailable`, `fundingAccountUnavailable`,
                `insufficientDepth`, `missingPermission`, `needsNativeGas`,
                `needsWallet`, `notPriced`, `payInTermsUnavailable`,
                `pilotTradeCapExceeded`, `pilotMinimumAboveTradeCap`,
                `platformFeeRateUnavailable`, `pricingBookPairUnserved`,
                `settlementDeclarationUnavailable`, `settlementNotAvailable`,
                `timedOut`, `timedOutBeforeSend`,
                `tradingSourceNetworkUnavailable`, `tradingSourceNotLinked`,
                `venueEnablementRechecking`, `venueEnablementUnavailable`,
                `venueListingTimedOut`, `venuePoliciesUnavailable`,
                `multiliquidPaused`, `multiliquidAssetNotAccepted`,
                `walletNotAllowlistedForAsset`, `walletBlacklisted`,
                `multiliquidPriceInvalid`, `multiliquidStablePriceOutOfBand`,
                `multiliquidInsufficientLiquidity`,
                `multiliquidProviderPrefundUnavailable`,
                `multiliquidDailyLimitReached`, `eligibilityUnverifiable`,
                `multiliquidInsufficientBalance`,
                `multiliquidWalletFundsInsufficient`,
                `multiliquidInsufficientAllowance`, `walletTokenAccountFrozen`,
                `multiliquidAmountInTooHigh`, `multiliquidAmountOutTooLow`,
                `multiliquidInsufficientLpFeeBalance`,
                `multiliquidTransferFeeNotSupported`,
                `multiliquidParticipantUnavailable`,
                `multiliquidChainNotSupported`,
                `multiliquidObservationWalletUnavailable`,
                `privyMultiliquidArrayPinsUnsupported`,
                `cctpDestinationNotGranted`, `signingGrantNativeOnly`,
                `quoteRejectedInsufficientBalance`, `walletGateUnreadable`,
                `policyBlocked`, `treasuryPolicyApprovalRequired`,
                `destinationTagRequired`, `destinationTagMismatch`,
                `destinationTagInvalid`, `acrossBasicLaneNotEnabled`,
                `creditReadUnavailable`, `exactOutputFirmAskUnsupported`,
                `grantEndsBeforeVenueFunding`, `jurisdictionNotServed`,
                `pairUnsupported`, `requesterJurisdictionUnknown`,
                `venueAccountHasNoKey`, `venueAssessmentRequired`,
                `venueConnectionInvalid`, `venueReenableRequiresNewCredentials`,
                `venueTradingPaused`, `balanceNotObserved`, `notPermitted`,
                `balanceNotPermitted`, `gasUnchecked`,
                `catalogueWaitStateUnavailable`, `cctpRouteUpgrading`,
                `creditOnly`, `dexReferencePriceMissing`,
                `quoteAuthorityUnavailable`, `venueRoutingOff`,
                `venueRoutingStateUnavailable`, `indicativeUnavailable`,
                `marketUnavailable`, `noReferenceMid`,
                `observationBindingUnavailable`, `quoteIdUnavailable`,
                `stalePrice`.


                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
          required:
            - reason
            - status
          type: object
        - properties:
            reason:
              $ref: '#/components/schemas/SourceReason'
              description: >-
                Known source reason tokens (not all apply to every status):
                `clockUnavailable`, `assetUnsupported`, `referenceUndeclarable`,
                `referenceNotAdmitted`, `referenceStale`, `referenceDepth`,
                `marketDataUnavailable`, `calibrationUnavailable`,
                `livePriceUnavailable`, `lpQuoteUnavailable`,
                `platformJurisdictionCountryRequired`,
                `platformJurisdictionUnavailable`,
                `platformJurisdictionBlocked`, `venueJurisdictionExcluded`,
                `workspaceJurisdictionRequired`, `jurisdictionRegionRequired`,
                `jurisdictionUnavailable`, `venueKeyRefusedLikelyIpAllowlist`,
                `venueWithdrawalDestinationNotWhitelisted`,
                `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`, `signerLacksRight`,
                `signerUnavailable`, `signingGrantAmbiguous`,
                `signingGrantExpired`, `nativeGrantExpiryReapprovalRequired`,
                `nativeBalanceUnavailable`, `solanaFinalityUnavailable`,
                `tronSolidBlockUnavailable`, `signingGrantPolicyUnreadable`,
                `signingGrantPolicyChecking`, `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`,
                `cctpWalletRequired`, `acrossWalletRequired`,
                `walletBrowserSigningEvmOnly`, `relayChainNotCarried`,
                `apiKeyAdvancedWalletUnsupported`,
                `apiKeyOrganisationWalletScopeRequired`, `grantCapExceeded`,
                `amountAboveMaximum`, `amountBelowMinimum`, `belowVenueMinimum`,
                `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`, `firmAskFundsTimedOut`,
                `firmAskPreparationTimedOut`, `quotePreparationFailed`,
                `firmAskAdmissionTimedOut`, `seliniFirmAskMarketsTimedOut`,
                `seliniFirmAskHandoffTimedOut`,
                `seliniFirmAskBeforePostTimedOut`,
                `seliniFirmAskValidationTimedOut`,
                `seliniFirmAskResponseTimedOut`,
                `seliniFirmAskTransportFailure`,
                `rfqQuoteRefusedQuoteNotAvailable`,
                `rfqQuoteRefusedQuotingDisabled`,
                `rfqQuoteRefusedClientRfqNotConfigured`,
                `rfqQuoteRefusedClientProfileNotLoaded`,
                `rfqQuoteRefusedMarketDisabled`,
                `rfqQuoteRefusedInvalidQuantity`, `rfqQuoteRefusedInvalidSide`,
                `rfqQuoteRefusedInvalidCurrency`,
                `rfqQuoteRefusedPricePrecisionError`, `rfqQuoteRefusedRfqError`,
                `rfqQuoteRefused`, `venueOutcomeIndeterminate`,
                `venueBodyUnreadable`, `venueResponseUnmapped`,
                `venueRateLimited`, `venueQuoteAdmissionExpired`,
                `placementSignedPastDeadline`, `quoteIdentityConflict`,
                `symbolUnsupported`, `marketSymbolAmbiguous`,
                `firmAskPrincipalRequired`, `indicativeRequested`,
                `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`,
                `accountFundingReadUnverified`, `quoteReconfirmationRequired`,
                `quoteRejected`, `keyrockSecurityCatalogueUnavailable`,
                `venueAnsweredAfterQuoteWindow`, `venueQuoteIntentMismatch`,
                `payExactUnsupported`, `receiveWalletNotServed`,
                `referenceMidUnreadable`, `referencePriceUnavailable`,
                `registryUnavailable`, `releaseRecheckUnavailable`,
                `requestUnbuildable`, `routeLegChainUnknown`, `routeLegUnnamed`,
                `routeLegUnplanned`, `routeUnavailable`,
                `secondFactorUnreadable`, `shortfallUnmeasured`,
                `shortfallUnreadable`, `singleChainVenue`,
                `siteChainUnreadable`, `sizeNotEligible`, `submitOrderBlocked`,
                `takerOnboardingIncomplete`, `tierNotQuoted`, `tradePaused`,
                `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`, `bebopQuorumWalletTooSlow`,
                `bebopWalletQuorumUnreadable`, `bebopBrowserWalletUnsupported`,
                `connectionNotConfigured`, `deliveryAccountNetworkUnavailable`,
                `deliveryAccountUnavailable`, `destinationCannotSendOnChain`,
                `dexReferencePriceUnavailable`, `firmQuoteLimited`,
                `fundingAccountNetworkUnavailable`, `fundingAccountUnavailable`,
                `insufficientDepth`, `missingPermission`, `needsNativeGas`,
                `needsWallet`, `notPriced`, `payInTermsUnavailable`,
                `pilotTradeCapExceeded`, `pilotMinimumAboveTradeCap`,
                `platformFeeRateUnavailable`, `pricingBookPairUnserved`,
                `settlementDeclarationUnavailable`, `settlementNotAvailable`,
                `timedOut`, `timedOutBeforeSend`,
                `tradingSourceNetworkUnavailable`, `tradingSourceNotLinked`,
                `venueEnablementRechecking`, `venueEnablementUnavailable`,
                `venueListingTimedOut`, `venuePoliciesUnavailable`,
                `multiliquidPaused`, `multiliquidAssetNotAccepted`,
                `walletNotAllowlistedForAsset`, `walletBlacklisted`,
                `multiliquidPriceInvalid`, `multiliquidStablePriceOutOfBand`,
                `multiliquidInsufficientLiquidity`,
                `multiliquidProviderPrefundUnavailable`,
                `multiliquidDailyLimitReached`, `eligibilityUnverifiable`,
                `multiliquidInsufficientBalance`,
                `multiliquidWalletFundsInsufficient`,
                `multiliquidInsufficientAllowance`, `walletTokenAccountFrozen`,
                `multiliquidAmountInTooHigh`, `multiliquidAmountOutTooLow`,
                `multiliquidInsufficientLpFeeBalance`,
                `multiliquidTransferFeeNotSupported`,
                `multiliquidParticipantUnavailable`,
                `multiliquidChainNotSupported`,
                `multiliquidObservationWalletUnavailable`,
                `privyMultiliquidArrayPinsUnsupported`,
                `cctpDestinationNotGranted`, `signingGrantNativeOnly`,
                `quoteRejectedInsufficientBalance`, `walletGateUnreadable`,
                `policyBlocked`, `treasuryPolicyApprovalRequired`,
                `destinationTagRequired`, `destinationTagMismatch`,
                `destinationTagInvalid`, `acrossBasicLaneNotEnabled`,
                `creditReadUnavailable`, `exactOutputFirmAskUnsupported`,
                `grantEndsBeforeVenueFunding`, `jurisdictionNotServed`,
                `pairUnsupported`, `requesterJurisdictionUnknown`,
                `venueAccountHasNoKey`, `venueAssessmentRequired`,
                `venueConnectionInvalid`, `venueReenableRequiresNewCredentials`,
                `venueTradingPaused`, `balanceNotObserved`, `notPermitted`,
                `balanceNotPermitted`, `gasUnchecked`,
                `catalogueWaitStateUnavailable`, `cctpRouteUpgrading`,
                `creditOnly`, `dexReferencePriceMissing`,
                `quoteAuthorityUnavailable`, `venueRoutingOff`,
                `venueRoutingStateUnavailable`, `indicativeUnavailable`,
                `marketUnavailable`, `noReferenceMid`,
                `observationBindingUnavailable`, `quoteIdUnavailable`,
                `stalePrice`.


                New values may be added; treat unknown values as other.
            status:
              description: New values may be added; treat unknown values as other.
              enum:
                - unavailable
              type: string
              x-extensible-enum: true
          required:
            - reason
            - status
          type: object
      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`, derived
            from `quality`.
          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
        quality:
          $ref: '#/components/schemas/QuoteQuality'
          description: >-
            The price guarantee: firm, executable with a minimum, or indicative
            only.
      required:
        - quality
        - firm
        - lastLook
      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
    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
    LadderSemantics:
      description: New values may be added; treat unknown values as other.
      enum:
        - incremental
      type: string
      x-extensible-enum: true
    PricesLadderLevel:
      description: >-
        One incremental level: `size` more sell units, each buying `price` buy
        units.
      properties:
        price:
          $ref: '#/components/schemas/DecimalAmount'
        size:
          $ref: '#/components/schemas/DecimalAmount'
      required:
        - size
        - price
      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:
        mapping:
          crossChain: '#/components/schemas/LegLocation/oneOf/1'
          offChain: '#/components/schemas/LegLocation/oneOf/2'
          singleChain: '#/components/schemas/LegLocation/oneOf/0'
        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.
              x-undiscriminated-union-reason: >-
                Nullable value: JSON null has no properties and cannot carry a
                discriminator.
          required:
            - kind
          type: object
      x-extensible-enum: true
    PriceSize:
      description: >-
        One requested size, with a quote's meanings: `buy` is what lands after
        every

        `included` fee taken in the buy Asset, `netReceived` is for comparison
        only.
      properties:
        buy:
          oneOf:
            - type: 'null'
            - $ref: '#/components/schemas/DecimalAmount'
              description: >-
                The buy amount: the request's on a `buyAmount` read; on a
                `sellAmount` read, what the sell

                amount buys, `null` when nothing could be priced at this size,
                never `0`.
          x-undiscriminated-union-reason: >-
            Nullable value: JSON null has no properties and cannot carry a
            discriminator.
        feeObservedAt:
          description: >-
            When the included account commission was observed; display only, not
            quote consent.
          format: date-time
          type:
            - string
            - 'null'
        fees:
          items:
            $ref: '#/components/schemas/QuoteFee'
          type: array
        filled:
          $ref: '#/components/schemas/SizeFill'
        netReceived:
          $ref: '#/components/schemas/NetReceived'
        sell:
          oneOf:
            - type: 'null'
            - $ref: '#/components/schemas/DecimalAmount'
              description: >-
                The sell amount: the request's on a `sellAmount` read, rounded
                down to the source's

                precision; on a `buyAmount` read, what the buy amount costs,
                `null` when nothing could be

                priced at this size, never `0`.
          x-undiscriminated-union-reason: >-
            Nullable value: JSON null has no properties and cannot carry a
            discriminator.
      required:
        - sell
        - buy
        - netReceived
        - filled
        - fees
      type: object
    SpreadFromMid:
      description: |-
        The spread from the Reference mid in basis points.

        New values may be added; treat unknown values as other.
      discriminator:
        mapping:
          known: '#/components/schemas/SpreadFromMid/oneOf/0'
          unavailable: '#/components/schemas/SpreadFromMid/oneOf/1'
        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:
              $ref: '#/components/schemas/SourceReason'
              description: >-
                Known source reason tokens (not all apply to every status):
                `clockUnavailable`, `assetUnsupported`, `referenceUndeclarable`,
                `referenceNotAdmitted`, `referenceStale`, `referenceDepth`,
                `marketDataUnavailable`, `calibrationUnavailable`,
                `livePriceUnavailable`, `lpQuoteUnavailable`,
                `platformJurisdictionCountryRequired`,
                `platformJurisdictionUnavailable`,
                `platformJurisdictionBlocked`, `venueJurisdictionExcluded`,
                `workspaceJurisdictionRequired`, `jurisdictionRegionRequired`,
                `jurisdictionUnavailable`, `venueKeyRefusedLikelyIpAllowlist`,
                `venueWithdrawalDestinationNotWhitelisted`,
                `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`, `signerLacksRight`,
                `signerUnavailable`, `signingGrantAmbiguous`,
                `signingGrantExpired`, `nativeGrantExpiryReapprovalRequired`,
                `nativeBalanceUnavailable`, `solanaFinalityUnavailable`,
                `tronSolidBlockUnavailable`, `signingGrantPolicyUnreadable`,
                `signingGrantPolicyChecking`, `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`,
                `cctpWalletRequired`, `acrossWalletRequired`,
                `walletBrowserSigningEvmOnly`, `relayChainNotCarried`,
                `apiKeyAdvancedWalletUnsupported`,
                `apiKeyOrganisationWalletScopeRequired`, `grantCapExceeded`,
                `amountAboveMaximum`, `amountBelowMinimum`, `belowVenueMinimum`,
                `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`, `firmAskFundsTimedOut`,
                `firmAskPreparationTimedOut`, `quotePreparationFailed`,
                `firmAskAdmissionTimedOut`, `seliniFirmAskMarketsTimedOut`,
                `seliniFirmAskHandoffTimedOut`,
                `seliniFirmAskBeforePostTimedOut`,
                `seliniFirmAskValidationTimedOut`,
                `seliniFirmAskResponseTimedOut`,
                `seliniFirmAskTransportFailure`,
                `rfqQuoteRefusedQuoteNotAvailable`,
                `rfqQuoteRefusedQuotingDisabled`,
                `rfqQuoteRefusedClientRfqNotConfigured`,
                `rfqQuoteRefusedClientProfileNotLoaded`,
                `rfqQuoteRefusedMarketDisabled`,
                `rfqQuoteRefusedInvalidQuantity`, `rfqQuoteRefusedInvalidSide`,
                `rfqQuoteRefusedInvalidCurrency`,
                `rfqQuoteRefusedPricePrecisionError`, `rfqQuoteRefusedRfqError`,
                `rfqQuoteRefused`, `venueOutcomeIndeterminate`,
                `venueBodyUnreadable`, `venueResponseUnmapped`,
                `venueRateLimited`, `venueQuoteAdmissionExpired`,
                `placementSignedPastDeadline`, `quoteIdentityConflict`,
                `symbolUnsupported`, `marketSymbolAmbiguous`,
                `firmAskPrincipalRequired`, `indicativeRequested`,
                `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`,
                `accountFundingReadUnverified`, `quoteReconfirmationRequired`,
                `quoteRejected`, `keyrockSecurityCatalogueUnavailable`,
                `venueAnsweredAfterQuoteWindow`, `venueQuoteIntentMismatch`,
                `payExactUnsupported`, `receiveWalletNotServed`,
                `referenceMidUnreadable`, `referencePriceUnavailable`,
                `registryUnavailable`, `releaseRecheckUnavailable`,
                `requestUnbuildable`, `routeLegChainUnknown`, `routeLegUnnamed`,
                `routeLegUnplanned`, `routeUnavailable`,
                `secondFactorUnreadable`, `shortfallUnmeasured`,
                `shortfallUnreadable`, `singleChainVenue`,
                `siteChainUnreadable`, `sizeNotEligible`, `submitOrderBlocked`,
                `takerOnboardingIncomplete`, `tierNotQuoted`, `tradePaused`,
                `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`, `bebopQuorumWalletTooSlow`,
                `bebopWalletQuorumUnreadable`, `bebopBrowserWalletUnsupported`,
                `connectionNotConfigured`, `deliveryAccountNetworkUnavailable`,
                `deliveryAccountUnavailable`, `destinationCannotSendOnChain`,
                `dexReferencePriceUnavailable`, `firmQuoteLimited`,
                `fundingAccountNetworkUnavailable`, `fundingAccountUnavailable`,
                `insufficientDepth`, `missingPermission`, `needsNativeGas`,
                `needsWallet`, `notPriced`, `payInTermsUnavailable`,
                `pilotTradeCapExceeded`, `pilotMinimumAboveTradeCap`,
                `platformFeeRateUnavailable`, `pricingBookPairUnserved`,
                `settlementDeclarationUnavailable`, `settlementNotAvailable`,
                `timedOut`, `timedOutBeforeSend`,
                `tradingSourceNetworkUnavailable`, `tradingSourceNotLinked`,
                `venueEnablementRechecking`, `venueEnablementUnavailable`,
                `venueListingTimedOut`, `venuePoliciesUnavailable`,
                `multiliquidPaused`, `multiliquidAssetNotAccepted`,
                `walletNotAllowlistedForAsset`, `walletBlacklisted`,
                `multiliquidPriceInvalid`, `multiliquidStablePriceOutOfBand`,
                `multiliquidInsufficientLiquidity`,
                `multiliquidProviderPrefundUnavailable`,
                `multiliquidDailyLimitReached`, `eligibilityUnverifiable`,
                `multiliquidInsufficientBalance`,
                `multiliquidWalletFundsInsufficient`,
                `multiliquidInsufficientAllowance`, `walletTokenAccountFrozen`,
                `multiliquidAmountInTooHigh`, `multiliquidAmountOutTooLow`,
                `multiliquidInsufficientLpFeeBalance`,
                `multiliquidTransferFeeNotSupported`,
                `multiliquidParticipantUnavailable`,
                `multiliquidChainNotSupported`,
                `multiliquidObservationWalletUnavailable`,
                `privyMultiliquidArrayPinsUnsupported`,
                `cctpDestinationNotGranted`, `signingGrantNativeOnly`,
                `quoteRejectedInsufficientBalance`, `walletGateUnreadable`,
                `policyBlocked`, `treasuryPolicyApprovalRequired`,
                `destinationTagRequired`, `destinationTagMismatch`,
                `destinationTagInvalid`, `acrossBasicLaneNotEnabled`,
                `creditReadUnavailable`, `exactOutputFirmAskUnsupported`,
                `grantEndsBeforeVenueFunding`, `jurisdictionNotServed`,
                `pairUnsupported`, `requesterJurisdictionUnknown`,
                `venueAccountHasNoKey`, `venueAssessmentRequired`,
                `venueConnectionInvalid`, `venueReenableRequiresNewCredentials`,
                `venueTradingPaused`, `balanceNotObserved`, `notPermitted`,
                `balanceNotPermitted`, `gasUnchecked`,
                `catalogueWaitStateUnavailable`, `cctpRouteUpgrading`,
                `creditOnly`, `dexReferencePriceMissing`,
                `quoteAuthorityUnavailable`, `venueRoutingOff`,
                `venueRoutingStateUnavailable`, `indicativeUnavailable`,
                `marketUnavailable`, `noReferenceMid`,
                `observationBindingUnavailable`, `quoteIdUnavailable`,
                `stalePrice`.


                New values may be added; treat unknown values as other.
          required:
            - reason
            - kind
          type: object
      x-extensible-enum: true
    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.
          x-undiscriminated-union-reason: >-
            Nullable value: JSON null has no properties and cannot carry a
            discriminator.
        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
    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
    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
    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.
          x-undiscriminated-union-reason: >-
            Nullable value: JSON null has no properties and cannot carry a
            discriminator.
        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
    SourceReason:
      description: >-
        Known source reason tokens (not all apply to every status):
        `clockUnavailable`, `assetUnsupported`, `referenceUndeclarable`,
        `referenceNotAdmitted`, `referenceStale`, `referenceDepth`,
        `marketDataUnavailable`, `calibrationUnavailable`,
        `livePriceUnavailable`, `lpQuoteUnavailable`,
        `platformJurisdictionCountryRequired`,
        `platformJurisdictionUnavailable`, `platformJurisdictionBlocked`,
        `venueJurisdictionExcluded`, `workspaceJurisdictionRequired`,
        `jurisdictionRegionRequired`, `jurisdictionUnavailable`,
        `venueKeyRefusedLikelyIpAllowlist`,
        `venueWithdrawalDestinationNotWhitelisted`,
        `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`, `signerLacksRight`, `signerUnavailable`,
        `signingGrantAmbiguous`, `signingGrantExpired`,
        `nativeGrantExpiryReapprovalRequired`, `nativeBalanceUnavailable`,
        `solanaFinalityUnavailable`, `tronSolidBlockUnavailable`,
        `signingGrantPolicyUnreadable`, `signingGrantPolicyChecking`,
        `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`,
        `cctpWalletRequired`, `acrossWalletRequired`,
        `walletBrowserSigningEvmOnly`, `relayChainNotCarried`,
        `apiKeyAdvancedWalletUnsupported`,
        `apiKeyOrganisationWalletScopeRequired`, `grantCapExceeded`,
        `amountAboveMaximum`, `amountBelowMinimum`, `belowVenueMinimum`,
        `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`, `firmAskFundsTimedOut`, `firmAskPreparationTimedOut`,
        `quotePreparationFailed`, `firmAskAdmissionTimedOut`,
        `seliniFirmAskMarketsTimedOut`, `seliniFirmAskHandoffTimedOut`,
        `seliniFirmAskBeforePostTimedOut`, `seliniFirmAskValidationTimedOut`,
        `seliniFirmAskResponseTimedOut`, `seliniFirmAskTransportFailure`,
        `rfqQuoteRefusedQuoteNotAvailable`, `rfqQuoteRefusedQuotingDisabled`,
        `rfqQuoteRefusedClientRfqNotConfigured`,
        `rfqQuoteRefusedClientProfileNotLoaded`,
        `rfqQuoteRefusedMarketDisabled`, `rfqQuoteRefusedInvalidQuantity`,
        `rfqQuoteRefusedInvalidSide`, `rfqQuoteRefusedInvalidCurrency`,
        `rfqQuoteRefusedPricePrecisionError`, `rfqQuoteRefusedRfqError`,
        `rfqQuoteRefused`, `venueOutcomeIndeterminate`, `venueBodyUnreadable`,
        `venueResponseUnmapped`, `venueRateLimited`,
        `venueQuoteAdmissionExpired`, `placementSignedPastDeadline`,
        `quoteIdentityConflict`, `symbolUnsupported`, `marketSymbolAmbiguous`,
        `firmAskPrincipalRequired`, `indicativeRequested`, `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`,
        `accountFundingReadUnverified`, `quoteReconfirmationRequired`,
        `quoteRejected`, `keyrockSecurityCatalogueUnavailable`,
        `venueAnsweredAfterQuoteWindow`, `venueQuoteIntentMismatch`,
        `payExactUnsupported`, `receiveWalletNotServed`,
        `referenceMidUnreadable`, `referencePriceUnavailable`,
        `registryUnavailable`, `releaseRecheckUnavailable`,
        `requestUnbuildable`, `routeLegChainUnknown`, `routeLegUnnamed`,
        `routeLegUnplanned`, `routeUnavailable`, `secondFactorUnreadable`,
        `shortfallUnmeasured`, `shortfallUnreadable`, `singleChainVenue`,
        `siteChainUnreadable`, `sizeNotEligible`, `submitOrderBlocked`,
        `takerOnboardingIncomplete`, `tierNotQuoted`, `tradePaused`,
        `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`,
        `bebopQuorumWalletTooSlow`, `bebopWalletQuorumUnreadable`,
        `bebopBrowserWalletUnsupported`, `connectionNotConfigured`,
        `deliveryAccountNetworkUnavailable`, `deliveryAccountUnavailable`,
        `destinationCannotSendOnChain`, `dexReferencePriceUnavailable`,
        `firmQuoteLimited`, `fundingAccountNetworkUnavailable`,
        `fundingAccountUnavailable`, `insufficientDepth`, `missingPermission`,
        `needsNativeGas`, `needsWallet`, `notPriced`, `payInTermsUnavailable`,
        `pilotTradeCapExceeded`, `pilotMinimumAboveTradeCap`,
        `platformFeeRateUnavailable`, `pricingBookPairUnserved`,
        `settlementDeclarationUnavailable`, `settlementNotAvailable`,
        `timedOut`, `timedOutBeforeSend`, `tradingSourceNetworkUnavailable`,
        `tradingSourceNotLinked`, `venueEnablementRechecking`,
        `venueEnablementUnavailable`, `venueListingTimedOut`,
        `venuePoliciesUnavailable`, `multiliquidPaused`,
        `multiliquidAssetNotAccepted`, `walletNotAllowlistedForAsset`,
        `walletBlacklisted`, `multiliquidPriceInvalid`,
        `multiliquidStablePriceOutOfBand`, `multiliquidInsufficientLiquidity`,
        `multiliquidProviderPrefundUnavailable`, `multiliquidDailyLimitReached`,
        `eligibilityUnverifiable`, `multiliquidInsufficientBalance`,
        `multiliquidWalletFundsInsufficient`,
        `multiliquidInsufficientAllowance`, `walletTokenAccountFrozen`,
        `multiliquidAmountInTooHigh`, `multiliquidAmountOutTooLow`,
        `multiliquidInsufficientLpFeeBalance`,
        `multiliquidTransferFeeNotSupported`,
        `multiliquidParticipantUnavailable`, `multiliquidChainNotSupported`,
        `multiliquidObservationWalletUnavailable`,
        `privyMultiliquidArrayPinsUnsupported`, `cctpDestinationNotGranted`,
        `signingGrantNativeOnly`, `quoteRejectedInsufficientBalance`,
        `walletGateUnreadable`, `policyBlocked`,
        `treasuryPolicyApprovalRequired`, `destinationTagRequired`,
        `destinationTagMismatch`, `destinationTagInvalid`,
        `acrossBasicLaneNotEnabled`, `creditReadUnavailable`,
        `exactOutputFirmAskUnsupported`, `grantEndsBeforeVenueFunding`,
        `jurisdictionNotServed`, `pairUnsupported`,
        `requesterJurisdictionUnknown`, `venueAccountHasNoKey`,
        `venueAssessmentRequired`, `venueConnectionInvalid`,
        `venueReenableRequiresNewCredentials`, `venueTradingPaused`,
        `balanceNotObserved`, `notPermitted`, `balanceNotPermitted`,
        `gasUnchecked`, `catalogueWaitStateUnavailable`, `cctpRouteUpgrading`,
        `creditOnly`, `dexReferencePriceMissing`, `quoteAuthorityUnavailable`,
        `venueRoutingOff`, `venueRoutingStateUnavailable`,
        `indicativeUnavailable`, `marketUnavailable`, `noReferenceMid`,
        `observationBindingUnavailable`, `quoteIdUnavailable`, `stalePrice`.


        New values may be added; treat unknown values as other.
      enum:
        - clockUnavailable
        - assetUnsupported
        - referenceUndeclarable
        - referenceNotAdmitted
        - referenceStale
        - referenceDepth
        - marketDataUnavailable
        - calibrationUnavailable
        - livePriceUnavailable
        - lpQuoteUnavailable
        - platformJurisdictionCountryRequired
        - platformJurisdictionUnavailable
        - platformJurisdictionBlocked
        - venueJurisdictionExcluded
        - workspaceJurisdictionRequired
        - jurisdictionRegionRequired
        - jurisdictionUnavailable
        - venueKeyRefusedLikelyIpAllowlist
        - venueWithdrawalDestinationNotWhitelisted
        - 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
        - signerLacksRight
        - signerUnavailable
        - signingGrantAmbiguous
        - signingGrantExpired
        - nativeGrantExpiryReapprovalRequired
        - nativeBalanceUnavailable
        - solanaFinalityUnavailable
        - tronSolidBlockUnavailable
        - signingGrantPolicyUnreadable
        - signingGrantPolicyChecking
        - 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
        - cctpWalletRequired
        - acrossWalletRequired
        - walletBrowserSigningEvmOnly
        - relayChainNotCarried
        - apiKeyAdvancedWalletUnsupported
        - apiKeyOrganisationWalletScopeRequired
        - grantCapExceeded
        - amountAboveMaximum
        - amountBelowMinimum
        - belowVenueMinimum
        - 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
        - firmAskFundsTimedOut
        - firmAskPreparationTimedOut
        - quotePreparationFailed
        - firmAskAdmissionTimedOut
        - seliniFirmAskMarketsTimedOut
        - seliniFirmAskHandoffTimedOut
        - seliniFirmAskBeforePostTimedOut
        - seliniFirmAskValidationTimedOut
        - seliniFirmAskResponseTimedOut
        - seliniFirmAskTransportFailure
        - rfqQuoteRefusedQuoteNotAvailable
        - rfqQuoteRefusedQuotingDisabled
        - rfqQuoteRefusedClientRfqNotConfigured
        - rfqQuoteRefusedClientProfileNotLoaded
        - rfqQuoteRefusedMarketDisabled
        - rfqQuoteRefusedInvalidQuantity
        - rfqQuoteRefusedInvalidSide
        - rfqQuoteRefusedInvalidCurrency
        - rfqQuoteRefusedPricePrecisionError
        - rfqQuoteRefusedRfqError
        - rfqQuoteRefused
        - venueOutcomeIndeterminate
        - venueBodyUnreadable
        - venueResponseUnmapped
        - venueRateLimited
        - venueQuoteAdmissionExpired
        - placementSignedPastDeadline
        - quoteIdentityConflict
        - symbolUnsupported
        - marketSymbolAmbiguous
        - firmAskPrincipalRequired
        - indicativeRequested
        - 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
        - accountFundingReadUnverified
        - quoteReconfirmationRequired
        - quoteRejected
        - keyrockSecurityCatalogueUnavailable
        - venueAnsweredAfterQuoteWindow
        - venueQuoteIntentMismatch
        - payExactUnsupported
        - receiveWalletNotServed
        - referenceMidUnreadable
        - referencePriceUnavailable
        - registryUnavailable
        - releaseRecheckUnavailable
        - requestUnbuildable
        - routeLegChainUnknown
        - routeLegUnnamed
        - routeLegUnplanned
        - routeUnavailable
        - secondFactorUnreadable
        - shortfallUnmeasured
        - shortfallUnreadable
        - singleChainVenue
        - siteChainUnreadable
        - sizeNotEligible
        - submitOrderBlocked
        - takerOnboardingIncomplete
        - tierNotQuoted
        - tradePaused
        - 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
        - bebopQuorumWalletTooSlow
        - bebopWalletQuorumUnreadable
        - bebopBrowserWalletUnsupported
        - connectionNotConfigured
        - deliveryAccountNetworkUnavailable
        - deliveryAccountUnavailable
        - destinationCannotSendOnChain
        - dexReferencePriceUnavailable
        - firmQuoteLimited
        - fundingAccountNetworkUnavailable
        - fundingAccountUnavailable
        - insufficientDepth
        - missingPermission
        - needsNativeGas
        - needsWallet
        - notPriced
        - payInTermsUnavailable
        - pilotTradeCapExceeded
        - pilotMinimumAboveTradeCap
        - platformFeeRateUnavailable
        - pricingBookPairUnserved
        - settlementDeclarationUnavailable
        - settlementNotAvailable
        - timedOut
        - timedOutBeforeSend
        - tradingSourceNetworkUnavailable
        - tradingSourceNotLinked
        - venueEnablementRechecking
        - venueEnablementUnavailable
        - venueListingTimedOut
        - venuePoliciesUnavailable
        - multiliquidPaused
        - multiliquidAssetNotAccepted
        - walletNotAllowlistedForAsset
        - walletBlacklisted
        - multiliquidPriceInvalid
        - multiliquidStablePriceOutOfBand
        - multiliquidInsufficientLiquidity
        - multiliquidProviderPrefundUnavailable
        - multiliquidDailyLimitReached
        - eligibilityUnverifiable
        - multiliquidInsufficientBalance
        - multiliquidWalletFundsInsufficient
        - multiliquidInsufficientAllowance
        - walletTokenAccountFrozen
        - multiliquidAmountInTooHigh
        - multiliquidAmountOutTooLow
        - multiliquidInsufficientLpFeeBalance
        - multiliquidTransferFeeNotSupported
        - multiliquidParticipantUnavailable
        - multiliquidChainNotSupported
        - multiliquidObservationWalletUnavailable
        - privyMultiliquidArrayPinsUnsupported
        - cctpDestinationNotGranted
        - signingGrantNativeOnly
        - quoteRejectedInsufficientBalance
        - walletGateUnreadable
        - policyBlocked
        - treasuryPolicyApprovalRequired
        - destinationTagRequired
        - destinationTagMismatch
        - destinationTagInvalid
        - acrossBasicLaneNotEnabled
        - creditReadUnavailable
        - exactOutputFirmAskUnsupported
        - grantEndsBeforeVenueFunding
        - jurisdictionNotServed
        - pairUnsupported
        - requesterJurisdictionUnknown
        - venueAccountHasNoKey
        - venueAssessmentRequired
        - venueConnectionInvalid
        - venueReenableRequiresNewCredentials
        - venueTradingPaused
        - balanceNotObserved
        - notPermitted
        - balanceNotPermitted
        - gasUnchecked
        - catalogueWaitStateUnavailable
        - cctpRouteUpgrading
        - creditOnly
        - dexReferencePriceMissing
        - quoteAuthorityUnavailable
        - venueRoutingOff
        - venueRoutingStateUnavailable
        - indicativeUnavailable
        - marketUnavailable
        - noReferenceMid
        - observationBindingUnavailable
        - quoteIdUnavailable
        - stalePrice
      type: string
      x-extensible-enum: true
    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
    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:
        mapping:
          bankDeposit: '#/components/schemas/FundInstructions/oneOf/1'
          depositFirstNotOffered: '#/components/schemas/FundInstructions/oneOf/4'
          nativeGas: '#/components/schemas/FundInstructions/oneOf/3'
          venueDeposit: '#/components/schemas/FundInstructions/oneOf/0'
          walletTopUp: '#/components/schemas/FundInstructions/oneOf/2'
        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.
              x-undiscriminated-union-reason: >-
                Nullable value: JSON null has no properties and cannot carry a
                discriminator.
            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 funding or delivery selection 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
    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
    QuoteQuality:
      description: >-
        A quote's price guarantee. New response values may be added; clients
        retain unknown values.


        New values may be added; treat unknown values as other.
      enum:
        - firm
        - executable
        - indicative
      type: string
      x-extensible-enum: true
    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
    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
    TradingSource:
      description: >-
        The exact source selected for a quote, retained through execution and
        recovery.


        New values may be added; treat unknown values as other.
      discriminator:
        mapping:
          venueAccount: '#/components/schemas/TradingSource/oneOf/0'
          wallet: '#/components/schemas/TradingSource/oneOf/1'
        propertyName: kind
      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
    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`.
          x-undiscriminated-union-reason: >-
            Nullable value: JSON null has no properties and cannot carry a
            discriminator.
        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.
          x-undiscriminated-union-reason: >-
            Nullable value: JSON null has no properties and cannot carry a
            discriminator.
        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.
          x-undiscriminated-union-reason: >-
            Nullable value: JSON null has no properties and cannot carry a
            discriminator.
        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
    SizeFill:
      description: |-
        How much of a size the source fills.

        New values may be added; treat unknown values as other.
      enum:
        - full
        - partial
        - none
      type: string
      x-extensible-enum: true
    NetReceived:
      description: |-
        The comparison value: known, or unavailable with its reason, never 0.

        New values may be added; treat unknown values as other.
      discriminator:
        mapping:
          known: '#/components/schemas/NetReceived/oneOf/0'
          unavailable: '#/components/schemas/NetReceived/oneOf/1'
        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:
              $ref: '#/components/schemas/SourceReason'
              description: >-
                Known source reason tokens (not all apply to every status):
                `clockUnavailable`, `assetUnsupported`, `referenceUndeclarable`,
                `referenceNotAdmitted`, `referenceStale`, `referenceDepth`,
                `marketDataUnavailable`, `calibrationUnavailable`,
                `livePriceUnavailable`, `lpQuoteUnavailable`,
                `platformJurisdictionCountryRequired`,
                `platformJurisdictionUnavailable`,
                `platformJurisdictionBlocked`, `venueJurisdictionExcluded`,
                `workspaceJurisdictionRequired`, `jurisdictionRegionRequired`,
                `jurisdictionUnavailable`, `venueKeyRefusedLikelyIpAllowlist`,
                `venueWithdrawalDestinationNotWhitelisted`,
                `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`, `signerLacksRight`,
                `signerUnavailable`, `signingGrantAmbiguous`,
                `signingGrantExpired`, `nativeGrantExpiryReapprovalRequired`,
                `nativeBalanceUnavailable`, `solanaFinalityUnavailable`,
                `tronSolidBlockUnavailable`, `signingGrantPolicyUnreadable`,
                `signingGrantPolicyChecking`, `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`,
                `cctpWalletRequired`, `acrossWalletRequired`,
                `walletBrowserSigningEvmOnly`, `relayChainNotCarried`,
                `apiKeyAdvancedWalletUnsupported`,
                `apiKeyOrganisationWalletScopeRequired`, `grantCapExceeded`,
                `amountAboveMaximum`, `amountBelowMinimum`, `belowVenueMinimum`,
                `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`, `firmAskFundsTimedOut`,
                `firmAskPreparationTimedOut`, `quotePreparationFailed`,
                `firmAskAdmissionTimedOut`, `seliniFirmAskMarketsTimedOut`,
                `seliniFirmAskHandoffTimedOut`,
                `seliniFirmAskBeforePostTimedOut`,
                `seliniFirmAskValidationTimedOut`,
                `seliniFirmAskResponseTimedOut`,
                `seliniFirmAskTransportFailure`,
                `rfqQuoteRefusedQuoteNotAvailable`,
                `rfqQuoteRefusedQuotingDisabled`,
                `rfqQuoteRefusedClientRfqNotConfigured`,
                `rfqQuoteRefusedClientProfileNotLoaded`,
                `rfqQuoteRefusedMarketDisabled`,
                `rfqQuoteRefusedInvalidQuantity`, `rfqQuoteRefusedInvalidSide`,
                `rfqQuoteRefusedInvalidCurrency`,
                `rfqQuoteRefusedPricePrecisionError`, `rfqQuoteRefusedRfqError`,
                `rfqQuoteRefused`, `venueOutcomeIndeterminate`,
                `venueBodyUnreadable`, `venueResponseUnmapped`,
                `venueRateLimited`, `venueQuoteAdmissionExpired`,
                `placementSignedPastDeadline`, `quoteIdentityConflict`,
                `symbolUnsupported`, `marketSymbolAmbiguous`,
                `firmAskPrincipalRequired`, `indicativeRequested`,
                `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`,
                `accountFundingReadUnverified`, `quoteReconfirmationRequired`,
                `quoteRejected`, `keyrockSecurityCatalogueUnavailable`,
                `venueAnsweredAfterQuoteWindow`, `venueQuoteIntentMismatch`,
                `payExactUnsupported`, `receiveWalletNotServed`,
                `referenceMidUnreadable`, `referencePriceUnavailable`,
                `registryUnavailable`, `releaseRecheckUnavailable`,
                `requestUnbuildable`, `routeLegChainUnknown`, `routeLegUnnamed`,
                `routeLegUnplanned`, `routeUnavailable`,
                `secondFactorUnreadable`, `shortfallUnmeasured`,
                `shortfallUnreadable`, `singleChainVenue`,
                `siteChainUnreadable`, `sizeNotEligible`, `submitOrderBlocked`,
                `takerOnboardingIncomplete`, `tierNotQuoted`, `tradePaused`,
                `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`, `bebopQuorumWalletTooSlow`,
                `bebopWalletQuorumUnreadable`, `bebopBrowserWalletUnsupported`,
                `connectionNotConfigured`, `deliveryAccountNetworkUnavailable`,
                `deliveryAccountUnavailable`, `destinationCannotSendOnChain`,
                `dexReferencePriceUnavailable`, `firmQuoteLimited`,
                `fundingAccountNetworkUnavailable`, `fundingAccountUnavailable`,
                `insufficientDepth`, `missingPermission`, `needsNativeGas`,
                `needsWallet`, `notPriced`, `payInTermsUnavailable`,
                `pilotTradeCapExceeded`, `pilotMinimumAboveTradeCap`,
                `platformFeeRateUnavailable`, `pricingBookPairUnserved`,
                `settlementDeclarationUnavailable`, `settlementNotAvailable`,
                `timedOut`, `timedOutBeforeSend`,
                `tradingSourceNetworkUnavailable`, `tradingSourceNotLinked`,
                `venueEnablementRechecking`, `venueEnablementUnavailable`,
                `venueListingTimedOut`, `venuePoliciesUnavailable`,
                `multiliquidPaused`, `multiliquidAssetNotAccepted`,
                `walletNotAllowlistedForAsset`, `walletBlacklisted`,
                `multiliquidPriceInvalid`, `multiliquidStablePriceOutOfBand`,
                `multiliquidInsufficientLiquidity`,
                `multiliquidProviderPrefundUnavailable`,
                `multiliquidDailyLimitReached`, `eligibilityUnverifiable`,
                `multiliquidInsufficientBalance`,
                `multiliquidWalletFundsInsufficient`,
                `multiliquidInsufficientAllowance`, `walletTokenAccountFrozen`,
                `multiliquidAmountInTooHigh`, `multiliquidAmountOutTooLow`,
                `multiliquidInsufficientLpFeeBalance`,
                `multiliquidTransferFeeNotSupported`,
                `multiliquidParticipantUnavailable`,
                `multiliquidChainNotSupported`,
                `multiliquidObservationWalletUnavailable`,
                `privyMultiliquidArrayPinsUnsupported`,
                `cctpDestinationNotGranted`, `signingGrantNativeOnly`,
                `quoteRejectedInsufficientBalance`, `walletGateUnreadable`,
                `policyBlocked`, `treasuryPolicyApprovalRequired`,
                `destinationTagRequired`, `destinationTagMismatch`,
                `destinationTagInvalid`, `acrossBasicLaneNotEnabled`,
                `creditReadUnavailable`, `exactOutputFirmAskUnsupported`,
                `grantEndsBeforeVenueFunding`, `jurisdictionNotServed`,
                `pairUnsupported`, `requesterJurisdictionUnknown`,
                `venueAccountHasNoKey`, `venueAssessmentRequired`,
                `venueConnectionInvalid`, `venueReenableRequiresNewCredentials`,
                `venueTradingPaused`, `balanceNotObserved`, `notPermitted`,
                `balanceNotPermitted`, `gasUnchecked`,
                `catalogueWaitStateUnavailable`, `cctpRouteUpgrading`,
                `creditOnly`, `dexReferencePriceMissing`,
                `quoteAuthorityUnavailable`, `venueRoutingOff`,
                `venueRoutingStateUnavailable`, `indicativeUnavailable`,
                `marketUnavailable`, `noReferenceMid`,
                `observationBindingUnavailable`, `quoteIdUnavailable`,
                `stalePrice`.


                New values may be added; treat unknown values as other.
          required:
            - reason
            - kind
          type: object
      x-extensible-enum: true
    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
    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
    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
        - formsThenReview
        - adminAction
        - otherParty
        - unknown
        - notUnlockable
      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:
        - finishOnboarding
        - companyDetails
        - kybProfile
        - kycDialog
        - linkWallet
        - askAdmin
        - contactBroker
        - manageDirectUsers
        - manageApiKey
        - connectCustodian
        - switchAccountScope
        - contactSupport
        - awaitScreening
        - none
      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:
          description: >-
            Where the assumed boundary came from, as recorded in the settlement
            schedule; free text.
          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.
      discriminator:
        mapping:
          daily: '#/components/schemas/SettlementCadence/oneOf/1'
          intraday: '#/components/schemas/SettlementCadence/oneOf/0'
          multiDay: '#/components/schemas/SettlementCadence/oneOf/2'
        propertyName: kind
      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
    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
    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
    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
  securitySchemes:
    api_key:
      description: >-
        Send the API key in `X-API-Key`.


        **Request signing.** A key with signing enabled (enabled for the key in
        its workspace's credential settings, which return the signing secret
        once; see [Sign
        requests](https://docs.tetrafi.io/authentication#sign-requests)) must
        also sign every request:


        - `X-Timestamp`: the current Unix time in seconds, within 300 seconds of
        the server clock (at most 10 seconds ahead of it on a request that sends
        `X-Nonce`).

        - `X-Nonce`: a fresh random value for each request, 16 to 128 characters
        of `A-Z`, `a-z`, `0-9`, `-` and `_` (a UUID fits). Required on a write
        (POST, PUT, PATCH, DELETE); optional on a read (GET, HEAD).

        - `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 joined by `\n`, with no trailing newline: the
        `X-Timestamp` value, the `X-Nonce` 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 request without `X-Nonce` (a read) omits the
        nonce line and signs four lines.


        A nonce is accepted once per key: the same nonce again inside the window
        is refused, whatever the body, so two identical writes in one second
        each carry their own nonce and both succeed, and a retry signs again
        with a new nonce. Every API server shares one nonce record, so a nonce
        accepted by one server is refused by all of them. Rate admission runs
        first: a rate-limited write (429) does not consume its nonce, and a
        replay sent while the key is rate limited is answered 429; otherwise a
        replay spends a rate token and is refused. A read without a nonce
        changes nothing, so an identical signed read inside the window is
        admitted again. A write whose window has already passed on the nonce
        record's clock when its nonce is recorded is refused as
        `TIMESTAMP_OUT_OF_RANGE`. If the nonce record cannot be read or written
        the request is refused with 503 `API_KEY_UNAVAILABLE`; the nonce may
        have been consumed, so sign again with a new `X-Timestamp` and `X-Nonce`
        before retrying.


        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`, `NONCE_REQUIRED` (a write without `X-Nonce`),
        `NONCE_INVALID` (a malformed or repeated `X-Nonce` header),
        `SIGNATURE_REPLAYED` (the nonce was already accepted).
        `SIGNATURE_PREDATES_RESTART` and 429 `REPLAY_WINDOW_FULL` are reserved
        and not answered today.
      in: header
      name: X-API-Key
      type: apiKey
      x-request-signing:
        algorithm: HMAC-SHA256
        canonicalRequest:
          - timestamp
          - nonce
          - method
          - pathWithQuery
          - bodySha256Hex
        canonicalRequestWithoutNonce:
          - timestamp
          - method
          - pathWithQuery
          - bodySha256Hex
        canonicalSeparator: |+

        nonceFutureSkewSeconds: 10
        nonceHeader: X-Nonce
        noncePattern: ^[A-Za-z0-9_-]{16,128}$
        nonceRequiredMethods:
          - POST
          - PUT
          - PATCH
          - DELETE
        refusal:
          error: AUTH_REQUIRED
          reasons:
            - SIGNATURE_REQUIRED
            - SIGNATURE_INVALID
            - TIMESTAMP_OUT_OF_RANGE
            - NONCE_REQUIRED
            - NONCE_INVALID
            - SIGNATURE_REPLAYED
          status: 401
        reserved:
          - error: AUTH_REQUIRED
            reason: SIGNATURE_PREDATES_RESTART
            status: 401
          - error: REPLAY_WINDOW_FULL
            status: 429
        secretEncoding: hex
        signatureEncoding: hex-lower
        signatureHeader: X-Signature
        timestampHeader: X-Timestamp
        timestampWindowSeconds: 300
      x-tetrafi-scopes:
        compliance_read:
          description: View compliance policies, denials, evidence, and reports
          permission: Read compliance
          permissionIds:
            - ReadCompliance
        fee_schedule_read:
          description: >-
            Read the current and upcoming fee rates for this workspace. Does not
            change rates.
          permission: Read fee schedule
          permissionIds:
            - ReadFeeSchedule
        orders_read:
          description: View order status and history
          permission: Read orders
          permissionIds:
            - ReadOrders
        orders_write:
          description: Submit orders for execution
          permission: Submit orders
          permissionIds:
            - SubmitOrders
        prices_read:
          description: >-
            Read-only access to prices and recorded quotes. Also select Submit
            orders to request new quotes.
          permission: Read quotes
          permissionIds:
            - ReadQuotes
        quotes_read:
          description: >-
            Read-only access to prices and recorded quotes. Also select Submit
            orders to request new quotes.
          permission: Read quotes
          permissionIds:
            - ReadQuotes
        quotes_request:
          description: >-
            Read-only access to prices and recorded quotes. Also select Submit
            orders to request new quotes. Submit orders for execution
          permission: Read quotes + Submit orders
          permissionIds:
            - ReadQuotes
            - SubmitOrders
        settlements_read:
          description: See settlement status and detail.
          permission: Read settlements
          permissionIds:
            - ReadSettlements
        trades_read:
          description: View trade history and audit trails
          permission: Read trades
          permissionIds:
            - ReadTrades
        treasury_read:
          description: >-
            See permitted accounts, balances, payouts and Runs, and refresh
            balances. Does not move money.
          permission: Treasury read
          permissionIds:
            - ReadWallets
        webhooks_manage:
          description: >-
            Configure endpoints and events, test deliveries, read outcomes and
            redeliver. Requires your current Manage webhooks permission.
          permission: Manage webhooks
          permissionIds:
            - ManageWebhooks
    bearer_auth:
      bearerFormat: JWT
      scheme: bearer
      type: http

````

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