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

# Trading rpc



## AsyncAPI

````yaml _generated/asyncapi.yaml tradingRpc
id: tradingRpc
title: Trading rpc
description: ''
servers:
  - id: trading
    protocol: wss
    host: joyride.exchange
    bindings: []
    variables: []
address: /
parameters: []
bindings: []
operations:
  - &ref_19
    id: tradingRequest
    title: Trading request
    type: send
    messages:
      - &ref_23
        id: TradingRpcRequest
        contentType: application/json
        payload:
          - name: TradingRpcRequest
            type: object
            properties:
              - name: const
                type: string
                description: '2.0'
                required: false
              - name: id
                type: oneOf
                required: true
              - name: method
                type: string
                enumValues:
                  - public/get_nonce
                  - public/auth
                  - public/session_resume
                  - public/get_market_config
                  - public/get_instruments
                  - rfq.create
                  - rfq.accept
                  - rfq.get
                  - rfq.list
                  - rfq.subscribe
                  - rfq.maker.poll
                  - rfq.maker.respond
                  - rfq.maker.decline
                  - rfq.maker.subscribe
                required: true
              - name: params
                type: object
                required: false
        headers: []
        jsonPayloadSchema:
          description: Requests accepted on the trading endpoint.
          type: object
          required:
            - jsonrpc
            - id
            - method
          properties:
            jsonrpc:
              const: '2.0'
              x-parser-schema-id: <anonymous-schema-1>
            id: &ref_0
              oneOf:
                - type: string
                  x-parser-schema-id: <anonymous-schema-2>
                - type: integer
                  x-parser-schema-id: <anonymous-schema-3>
                - type: 'null'
                  x-parser-schema-id: <anonymous-schema-4>
              x-parser-schema-id: RpcId
            method:
              type: string
              enum:
                - public/get_nonce
                - public/auth
                - public/session_resume
                - public/get_market_config
                - public/get_instruments
                - rfq.create
                - rfq.accept
                - rfq.get
                - rfq.list
                - rfq.subscribe
                - rfq.maker.poll
                - rfq.maker.respond
                - rfq.maker.decline
                - rfq.maker.subscribe
              x-parser-schema-id: <anonymous-schema-5>
            params:
              type: object
              additionalProperties: true
              x-parser-schema-id: <anonymous-schema-6>
          x-parser-schema-id: TradingRpcRequest
        title: Trading rpc request
        example: No examples found
        bindings: []
        extensions:
          - id: x-parser-unique-object-id
            value: TradingRpcRequest
          - id: x-parser-message-name
            value: TradingRpcRequest
      - &ref_24
        id: RfqCreateRequest
        contentType: application/json
        payload:
          - allOf: &ref_1
              - &ref_2
                type: object
                required:
                  - jsonrpc
                  - id
                properties:
                  jsonrpc:
                    const: '2.0'
                    x-parser-schema-id: <anonymous-schema-21>
                  id: *ref_0
                x-parser-schema-id: RpcRequestBase
              - type: object
                properties:
                  method:
                    type: string
                    const: rfq.create
                    x-parser-schema-id: <anonymous-schema-23>
                  params:
                    type: object
                    additionalProperties: false
                    properties:
                      client_ref:
                        type: string
                        pattern: >-
                          ^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$
                        description: >-
                          Idempotency key; the same `(account, client_ref)` with
                          a different or reordered leg array is a canonical-body
                          mismatch.
                        x-parser-schema-id: <anonymous-schema-25>
                      legs:
                        type: array
                        minItems: 1
                        maxItems: 13
                        items:
                          type: object
                          additionalProperties: false
                          description: >
                            One strategy leg. `quantity` is signed and taker-buy
                            oriented: on a

                            `buy` accept the taker receives `quantity` and the
                            maker its negation;

                            on a `sell` accept the taker receives `-quantity`
                            and the maker

                            `quantity`. A 1x2 spread is `+1.000000` and
                            `-2.000000`. Legs keep the

                            taker's submitted order everywhere; nothing sorts
                            them.
                          properties:
                            instrument:
                              type: string
                              description: Listed instrument symbol.
                              example: SOL_USDC-6MAR26-150-C
                              x-parser-schema-id: <anonymous-schema-26>
                            quantity:
                              allOf:
                                - &ref_9
                                  type: string
                                  pattern: ^-?(0|[1-9][0-9]*)(\.[0-9]{1,6})?$
                                  description: >
                                    Canonical signed decimal with at most six
                                    fractional digits. Negative

                                    zero, JSON numbers, exponents, and values
                                    outside the signed 64-bit

                                    6dp range (`i64::MIN` excluded) are
                                    rejected.
                                  x-parser-schema-id: RfqSignedDecimal
                              description: >-
                                Non-zero signed 6dp contracts in taker-buy
                                orientation.
                              x-parser-schema-id: <anonymous-schema-27>
                          required:
                            - instrument
                            - quantity
                          x-parser-schema-id: RfqLeg
                        description: >
                          Ordered strategy legs. Every instrument must be listed
                          and open, share

                          one underlying and expiry, and be unique both by
                          symbol and by resolved

                          terms `(asset, strike, expiry, kind)`.
                        x-parser-schema-id: RfqLegs
                    required:
                      - client_ref
                      - legs
                    x-parser-schema-id: <anonymous-schema-24>
                required:
                  - method
                  - params
                x-parser-schema-id: <anonymous-schema-22>
            x-parser-schema-id: RfqCreateRpcRequest
            name: Create an RFQ
            description: >-
              Open an idempotent request for quote on a 1-13 leg strategy as an
              allowlisted taker.
        headers: []
        jsonPayloadSchema:
          allOf: *ref_1
          x-parser-schema-id: RfqCreateRpcRequest
        title: Create an RFQ
        description: >-
          Open an idempotent request for quote on a 1-13 leg strategy as an
          allowlisted taker.
        example: '{}'
        bindings: []
        extensions:
          - id: x-parser-unique-object-id
            value: RfqCreateRequest
      - &ref_25
        id: RfqAcceptRequest
        contentType: application/json
        payload:
          - allOf: &ref_3
              - *ref_2
              - type: object
                properties:
                  method:
                    type: string
                    const: rfq.accept
                    x-parser-schema-id: <anonymous-schema-29>
                  params:
                    type: object
                    additionalProperties: false
                    properties:
                      quote_id: &ref_14
                        type: string
                        pattern: ^[0-9a-f]{64}$
                        description: >-
                          SHA-256 of the canonical 1,050-byte
                          StrategyQuotePayload.
                        x-parser-schema-id: QuoteId
                      side:
                        type: string
                        enum:
                          - buy
                          - sell
                        x-parser-schema-id: <anonymous-schema-31>
                      expires_at:
                        type: integer
                        format: int64
                        description: Unix seconds; at or before the quote's `expires_at`.
                        x-parser-schema-id: <anonymous-schema-32>
                      taker_signature:
                        type: string
                        description: >-
                          Canonical base64 encoding of exactly 64 Ed25519
                          signature bytes over the 105-byte
                          StrategyAcceptPayload.
                        x-parser-schema-id: <anonymous-schema-33>
                    required:
                      - quote_id
                      - side
                      - expires_at
                      - taker_signature
                    x-parser-schema-id: <anonymous-schema-30>
                required:
                  - method
                  - params
                x-parser-schema-id: <anonymous-schema-28>
            x-parser-schema-id: RfqAcceptRpcRequest
            name: Accept an RFQ quote
            description: >-
              Submit the taker's Ed25519 signature over the canonical
              StrategyAcceptPayload for one side of the package.
        headers: []
        jsonPayloadSchema:
          allOf: *ref_3
          x-parser-schema-id: RfqAcceptRpcRequest
        title: Accept an RFQ quote
        description: >-
          Submit the taker's Ed25519 signature over the canonical
          StrategyAcceptPayload for one side of the package.
        example: '{}'
        bindings: []
        extensions:
          - id: x-parser-unique-object-id
            value: RfqAcceptRequest
      - &ref_26
        id: RfqGetRequest
        contentType: application/json
        payload:
          - allOf: &ref_4
              - *ref_2
              - type: object
                properties:
                  method:
                    type: string
                    const: rfq.get
                    x-parser-schema-id: <anonymous-schema-35>
                  params:
                    type: object
                    additionalProperties: false
                    properties:
                      rfq_id: &ref_5
                        type: string
                        pattern: ^[0-9a-f]{32}$
                        description: 16-byte RFQ id encoded as lowercase hexadecimal.
                        x-parser-schema-id: RfqId
                    required:
                      - rfq_id
                    x-parser-schema-id: <anonymous-schema-36>
                required:
                  - method
                  - params
                x-parser-schema-id: <anonymous-schema-34>
            x-parser-schema-id: RfqGetRpcRequest
            name: Read one taker RFQ
            description: >-
              Returns a live-book RFQ only when it belongs to the authenticated
              account.
        headers: []
        jsonPayloadSchema:
          allOf: *ref_4
          x-parser-schema-id: RfqGetRpcRequest
        title: Read one taker RFQ
        description: >-
          Returns a live-book RFQ only when it belongs to the authenticated
          account.
        example: '{}'
        bindings: []
        extensions:
          - id: x-parser-unique-object-id
            value: RfqGetRequest
      - &ref_27
        id: RfqListRequest
        contentType: application/json
        payload:
          - allOf: &ref_6
              - *ref_2
              - type: object
                properties:
                  method:
                    type: string
                    const: rfq.list
                    x-parser-schema-id: <anonymous-schema-38>
                  params:
                    type: object
                    additionalProperties: false
                    properties:
                      states:
                        type: array
                        uniqueItems: true
                        items:
                          type: string
                          enum:
                            - pending
                            - quoted
                            - accepted
                            - submitting
                            - filled
                            - declined
                            - expired
                            - failed
                          x-parser-schema-id: RfqState
                        x-parser-schema-id: <anonymous-schema-40>
                      cursor: *ref_5
                      limit:
                        type: integer
                        minimum: 1
                        maximum: 100
                        default: 100
                        x-parser-schema-id: <anonymous-schema-41>
                    x-parser-schema-id: <anonymous-schema-39>
                required:
                  - method
                  - params
                x-parser-schema-id: <anonymous-schema-37>
            x-parser-schema-id: RfqListRpcRequest
            name: Page through taker RFQs
            description: >-
              Returns the authenticated account's live-book RFQs; settled
              history is available from `GET /api/query/rfq-fills`.
        headers: []
        jsonPayloadSchema:
          allOf: *ref_6
          x-parser-schema-id: RfqListRpcRequest
        title: Page through taker RFQs
        description: >-
          Returns the authenticated account's live-book RFQs; settled history is
          available from `GET /api/query/rfq-fills`.
        example: '{}'
        bindings: []
        extensions:
          - id: x-parser-unique-object-id
            value: RfqListRequest
      - &ref_28
        id: RfqSubscribeRequest
        contentType: application/json
        payload:
          - allOf: &ref_7
              - *ref_2
              - type: object
                properties:
                  method:
                    const: rfq.subscribe
                    x-parser-schema-id: <anonymous-schema-44>
                  params:
                    type: object
                    additionalProperties: false
                    x-parser-schema-id: <anonymous-schema-45>
                required:
                  - method
                  - params
                x-parser-schema-id: <anonymous-schema-43>
            x-parser-schema-id: <anonymous-schema-42>
            name: Subscribe to taker RFQ events
            description: >-
              Result is `{channel:"rfq", subscribed:true}`; events then arrive
              on the `rfq` channel.
        headers: []
        jsonPayloadSchema:
          allOf: *ref_7
          x-parser-schema-id: <anonymous-schema-42>
        title: Subscribe to taker RFQ events
        description: >-
          Result is `{channel:"rfq", subscribed:true}`; events then arrive on
          the `rfq` channel.
        example: '{}'
        bindings: []
        extensions:
          - id: x-parser-unique-object-id
            value: RfqSubscribeRequest
      - &ref_29
        id: RfqMakerPollRequest
        contentType: application/json
        payload:
          - allOf: &ref_8
              - *ref_2
              - type: object
                properties:
                  method:
                    const: rfq.maker.poll
                    x-parser-schema-id: <anonymous-schema-48>
                  params:
                    type: object
                    additionalProperties: false
                    properties:
                      cursor: *ref_5
                      limit:
                        type: integer
                        minimum: 1
                        maximum: 100
                        default: 100
                        x-parser-schema-id: <anonymous-schema-49>
                    x-parser-schema-id: RfqPageParams
                required:
                  - method
                  - params
                x-parser-schema-id: <anonymous-schema-47>
            x-parser-schema-id: <anonymous-schema-46>
            name: Poll open RFQs
            description: >-
              Page through pending requests as a quoter; result is
              `{items:[OpenRfqObject], next_cursor?}`.
        headers: []
        jsonPayloadSchema:
          allOf: *ref_8
          x-parser-schema-id: <anonymous-schema-46>
        title: Poll open RFQs
        description: >-
          Page through pending requests as a quoter; result is
          `{items:[OpenRfqObject], next_cursor?}`.
        example: '{}'
        bindings: []
        extensions:
          - id: x-parser-unique-object-id
            value: RfqMakerPollRequest
      - &ref_30
        id: RfqMakerRespondRequest
        contentType: application/json
        payload:
          - allOf: &ref_10
              - *ref_2
              - type: object
                properties:
                  method:
                    type: string
                    const: rfq.maker.respond
                    x-parser-schema-id: <anonymous-schema-51>
                  params:
                    type: object
                    additionalProperties: false
                    description: >
                      A signed two-sided quote for the whole package. `bid <=
                      ask`;

                      neither side needs to be positive. Buy cash delta is

                      `taker = -ask`, `maker = +ask`; sell cash delta is

                      `taker = +bid`, `maker = -bid`. There is no quantity
                      multiplier:

                      the legs in the open object are the exact structure being
                      quoted.
                    properties:
                      rfq_id: *ref_5
                      quote_nonce:
                        type: string
                        pattern: ^[1-9][0-9]*$
                        description: >-
                          Canonical decimal u64 string; strictly increasing per
                          maker account across restarts.
                        x-parser-schema-id: <anonymous-schema-53>
                      bid:
                        allOf:
                          - *ref_9
                        description: >-
                          Signed vault-USDC amount the maker pays for the
                          package when the taker sells.
                        x-parser-schema-id: <anonymous-schema-54>
                      ask:
                        allOf:
                          - *ref_9
                        description: >-
                          Signed vault-USDC amount the maker receives for the
                          package when the taker buys.
                        x-parser-schema-id: <anonymous-schema-55>
                      issued_at:
                        type: integer
                        format: int64
                        description: Unix seconds.
                        x-parser-schema-id: <anonymous-schema-56>
                      expires_at:
                        type: integer
                        format: int64
                        description: >
                          Unix seconds. Must satisfy `issued_at < expires_at`,

                          `expires_at - issued_at <= 3600`, and

                          `expires_at <= max_quote_expires_at` from the open
                          object;

                          a later value is rejected with
                          `RFQ_VALUE_OUT_OF_RANGE`,

                          never clamped.
                        x-parser-schema-id: <anonymous-schema-57>
                      maker_signature:
                        type: string
                        description: >-
                          Canonical base64 encoding of exactly 64 Ed25519
                          signature bytes over the 1,050-byte
                          StrategyQuotePayload.
                        x-parser-schema-id: <anonymous-schema-58>
                    required:
                      - rfq_id
                      - quote_nonce
                      - bid
                      - ask
                      - issued_at
                      - expires_at
                      - maker_signature
                    x-parser-schema-id: <anonymous-schema-52>
                required:
                  - method
                  - params
                x-parser-schema-id: <anonymous-schema-50>
            x-parser-schema-id: RfqMakerRespondRpcRequest
            name: Respond with a signed two-sided package quote
            description: >
              Quote the whole package with signed `bid` and `ask`; result is

              `{rfq_id, quote_id, state:"quoted"}`. One quote per RFQ, first
              wins;

              a delivered quote is firm until `expires_at`.
        headers: []
        jsonPayloadSchema:
          allOf: *ref_10
          x-parser-schema-id: RfqMakerRespondRpcRequest
        title: Respond with a signed two-sided package quote
        description: |
          Quote the whole package with signed `bid` and `ask`; result is
          `{rfq_id, quote_id, state:"quoted"}`. One quote per RFQ, first wins;
          a delivered quote is firm until `expires_at`.
        example: '{}'
        bindings: []
        extensions:
          - id: x-parser-unique-object-id
            value: RfqMakerRespondRequest
      - &ref_31
        id: RfqMakerDeclineRequest
        contentType: application/json
        payload:
          - allOf: &ref_11
              - *ref_2
              - type: object
                properties:
                  method:
                    type: string
                    const: rfq.maker.decline
                    x-parser-schema-id: <anonymous-schema-60>
                  params:
                    type: object
                    additionalProperties: false
                    properties:
                      rfq_id: *ref_5
                      reason:
                        type: string
                        enum:
                          - unlisted_instrument
                          - near_expiry
                          - size_limit
                          - stale_data
                          - low_confidence
                          - queue_overflow
                        x-parser-schema-id: <anonymous-schema-62>
                    required:
                      - rfq_id
                      - reason
                    x-parser-schema-id: <anonymous-schema-61>
                required:
                  - method
                  - params
                x-parser-schema-id: <anonymous-schema-59>
            x-parser-schema-id: RfqMakerDeclineRpcRequest
            name: Decline a pending RFQ
            description: Result is `{rfq_id, state:"declined", decline_reason}`.
        headers: []
        jsonPayloadSchema:
          allOf: *ref_11
          x-parser-schema-id: RfqMakerDeclineRpcRequest
        title: Decline a pending RFQ
        description: Result is `{rfq_id, state:"declined", decline_reason}`.
        example: '{}'
        bindings: []
        extensions:
          - id: x-parser-unique-object-id
            value: RfqMakerDeclineRequest
      - &ref_32
        id: RfqMakerSubscribeRequest
        contentType: application/json
        payload:
          - allOf: &ref_12
              - *ref_2
              - type: object
                properties:
                  method:
                    const: rfq.maker.subscribe
                    x-parser-schema-id: <anonymous-schema-65>
                  params:
                    type: object
                    additionalProperties: false
                    x-parser-schema-id: <anonymous-schema-66>
                required:
                  - method
                  - params
                x-parser-schema-id: <anonymous-schema-64>
            x-parser-schema-id: <anonymous-schema-63>
            name: Subscribe to market-maker RFQ events
            description: >-
              Result is `{channel:"rfq_maker", subscribed:true}`; requires the
              quoter role, otherwise `RFQ_WRONG_ROLE`.
        headers: []
        jsonPayloadSchema:
          allOf: *ref_12
          x-parser-schema-id: <anonymous-schema-63>
        title: Subscribe to market-maker RFQ events
        description: >-
          Result is `{channel:"rfq_maker", subscribed:true}`; requires the
          quoter role, otherwise `RFQ_WRONG_ROLE`.
        example: '{}'
        bindings: []
        extensions:
          - id: x-parser-unique-object-id
            value: RfqMakerSubscribeRequest
    bindings: []
    extensions: &ref_17
      - id: x-parser-unique-object-id
        value: tradingRpc
  - &ref_18
    id: tradingReceive
    title: Trading receive
    type: receive
    messages:
      - &ref_20
        id: RpcResponse
        contentType: application/json
        payload:
          - oneOf: &ref_13
              - type: object
                required:
                  - jsonrpc
                  - id
                  - result
                properties:
                  jsonrpc:
                    const: '2.0'
                    x-parser-schema-id: <anonymous-schema-8>
                  id: *ref_0
                  result:
                    type: object
                    additionalProperties: true
                    x-parser-schema-id: <anonymous-schema-9>
                x-parser-schema-id: RpcSuccess
              - type: object
                required:
                  - jsonrpc
                  - id
                  - error
                properties:
                  jsonrpc:
                    const: '2.0'
                    x-parser-schema-id: <anonymous-schema-10>
                  id: *ref_0
                  error:
                    type: object
                    required:
                      - code
                      - message
                    properties:
                      code:
                        type: integer
                        x-parser-schema-id: <anonymous-schema-12>
                      message:
                        type: string
                        x-parser-schema-id: <anonymous-schema-13>
                      data: true
                    x-parser-schema-id: <anonymous-schema-11>
                x-parser-schema-id: RpcError
            x-parser-schema-id: <anonymous-schema-7>
            name: RpcResponse
        headers: []
        jsonPayloadSchema:
          oneOf: *ref_13
          x-parser-schema-id: <anonymous-schema-7>
        title: Rpc response
        example: '{}'
        bindings: []
        extensions:
          - id: x-parser-unique-object-id
            value: RpcResponse
          - id: x-parser-message-name
            value: RpcResponse
      - &ref_21
        id: RfqError
        contentType: application/json
        payload:
          - name: Typed RFQ method error
            description: |
              Every `rfq.*` method failure is a JSON-RPC error with code `1200`
              and a `data` object carrying the `RFQ_*` error code.
            type: object
            properties:
              - name: const
                type: string
                description: '2.0'
                required: false
              - name: id
                type: oneOf
                required: true
              - name: error
                type: object
                required: true
                properties:
                  - name: const
                    type: number
                    required: false
                  - name: message
                    type: string
                    required: true
                  - name: data
                    type: object
                    description: >-
                      The `error.data` object of every `rfq.*` failure (JSON-RPC
                      code `1200`).
                    required: true
                    properties:
                      - name: error
                        type: string
                        description: >-
                          RFQ_NOT_READY is retryable and covers five causes the
                          message does not distinguish: no reconciled subaccount
                          for the account, the chain service view is cold or
                          gapped, no deployment epoch is ready, stale or missing
                          mark/IV/spot for a leg or the account's RFQ positions,
                          or the maker is absent from the lookup table.
                          RFQ_INVALID_INSTRUMENT identifies the blocking leg by
                          submitted index. RFQ_TAKER_UNFUNDED is non-retryable
                          and carries the live funding view in `details`.
                          RFQ_STATE_CONFLICT is returned to the second and later
                          `rfq.maker.respond` on an RFQ that already holds a
                          quote, and on a `quote_nonce` at or below the
                          account's high-water mark. RFQ_RATE_LIMITED is
                          retryable.
                        enumValues:
                          - RFQ_NOT_ENABLED
                          - RFQ_NOT_READY
                          - RFQ_INVALID_INSTRUMENT
                          - RFQ_SIZE_INVALID
                          - RFQ_PRECISION_UNSUPPORTED
                          - RFQ_VALUE_OUT_OF_RANGE
                          - RFQ_OPEN_LIMIT
                          - RFQ_NOT_FOUND
                          - RFQ_WRONG_ROLE
                          - RFQ_INVALID_SIGNATURE
                          - RFQ_CANONICAL_MISMATCH
                          - RFQ_QUOTE_EXPIRED
                          - RFQ_STATE_CONFLICT
                          - RFQ_TAKER_UNFUNDED
                          - RFQ_BALANCE_INSUFFICIENT
                          - RFQ_PRICE_TOLERANCE
                          - RFQ_ATTESTATION_FAILED
                          - RFQ_TX_FAILED
                          - RFQ_RATE_LIMITED
                        required: true
                      - name: message
                        type: string
                        required: true
                      - name: operation_id
                        type: string
                        description: >-
                          Server-side correlation id; quote it when asking for
                          support.
                        required: true
                      - name: retryable
                        type: boolean
                        required: true
                      - name: rfq_id
                        type: string
                        description: 16-byte RFQ id encoded as lowercase hexadecimal.
                        required: false
                      - name: quote_id
                        type: string
                        description: >-
                          SHA-256 of the canonical 1,050-byte
                          StrategyQuotePayload.
                        required: false
                      - name: details
                        type: object
                        description: >-
                          Present for RFQ_TAKER_UNFUNDED and contains the
                          funding view directly.
                        required: false
                        properties:
                          - name: anchored
                            type: boolean
                            description: >-
                              Whether a durable subaccount anchor is covered by
                              the live watcher heartbeat.
                            required: true
                          - name: free_balance
                            type: string
                            required: true
                          - name: buy
                            type: object
                            required: true
                            properties:
                              - name: estimate
                                type: boolean
                                description: >-
                                  True only for a writer-side requirement
                                  computed over a never-anchored empty
                                  portfolio.
                                required: true
                              - name: funded
                                type: boolean
                                description: >-
                                  True only for a non-estimated requirement with
                                  a covered anchor and `free_balance >=
                                  required`.
                                required: true
                              - name: package_cash_delta
                                type: string
                                description: >-
                                  Signed cash movement before fees; positive
                                  means the taker receives premium.
                                required: false
                              - name: cash_debit
                                type: string
                                description: '`max(-package_cash_delta, 0)`.'
                                required: false
                              - name: fee
                                type: string
                                description: >-
                                  Taker trading fee over the current prices: per
                                  leg `min(index_notional × taker_fee_bps /
                                  10000, leg_value × trade_fee_cap_bps /
                                  10000)`, floored and summed.
                                required: false
                              - name: max_fee
                                type: string
                                description: >-
                                  `fee` plus the taker fee tolerance (1 % by
                                  default), rounded up. `required` is computed
                                  with `max_fee`; the signer charges the exact
                                  fee.
                                required: false
                              - name: writer
                                type: boolean
                                description: >-
                                  True when this side leaves the taker short at
                                  least one leg.
                                required: false
                              - name: lock_increase
                                type: string
                                description: >-
                                  `max(post_fill_locked - current_locked, 0)`;
                                  zero when the taker is not a writer.
                                required: false
                              - name: post_fill_locked
                                type: string
                                description: Absolute taker lock after the fill.
                                required: false
                          - name: sell
                            type: object
                            required: true
                            properties:
                              - name: estimate
                                type: boolean
                                description: >-
                                  True only for a writer-side requirement
                                  computed over a never-anchored empty
                                  portfolio.
                                required: true
                              - name: funded
                                type: boolean
                                description: >-
                                  True only for a non-estimated requirement with
                                  a covered anchor and `free_balance >=
                                  required`.
                                required: true
                              - name: package_cash_delta
                                type: string
                                description: >-
                                  Signed cash movement before fees; positive
                                  means the taker receives premium.
                                required: false
                              - name: cash_debit
                                type: string
                                description: '`max(-package_cash_delta, 0)`.'
                                required: false
                              - name: fee
                                type: string
                                description: >-
                                  Taker trading fee over the current prices: per
                                  leg `min(index_notional × taker_fee_bps /
                                  10000, leg_value × trade_fee_cap_bps /
                                  10000)`, floored and summed.
                                required: false
                              - name: max_fee
                                type: string
                                description: >-
                                  `fee` plus the taker fee tolerance (1 % by
                                  default), rounded up. `required` is computed
                                  with `max_fee`; the signer charges the exact
                                  fee.
                                required: false
                              - name: writer
                                type: boolean
                                description: >-
                                  True when this side leaves the taker short at
                                  least one leg.
                                required: false
                              - name: lock_increase
                                type: string
                                description: >-
                                  `max(post_fill_locked - current_locked, 0)`;
                                  zero when the taker is not a writer.
                                required: false
                              - name: post_fill_locked
                                type: string
                                description: Absolute taker lock after the fill.
                                required: false
        headers: []
        jsonPayloadSchema:
          type: object
          description: >-
            JSON-RPC error envelope for every `rfq.*` method failure. The code
            is always `1200`; the `RFQ_*` discriminator lives in
            `error.data.error`.
          required:
            - jsonrpc
            - id
            - error
          properties:
            jsonrpc:
              const: '2.0'
              x-parser-schema-id: <anonymous-schema-67>
            id: *ref_0
            error:
              type: object
              required:
                - code
                - message
                - data
              properties:
                code:
                  const: 1200
                  x-parser-schema-id: <anonymous-schema-69>
                message:
                  type: string
                  x-parser-schema-id: <anonymous-schema-70>
                data:
                  type: object
                  description: >-
                    The `error.data` object of every `rfq.*` failure (JSON-RPC
                    code `1200`).
                  properties:
                    error:
                      type: string
                      description: >-
                        RFQ_NOT_READY is retryable and covers five causes the
                        message does not distinguish: no reconciled subaccount
                        for the account, the chain service view is cold or
                        gapped, no deployment epoch is ready, stale or missing
                        mark/IV/spot for a leg or the account's RFQ positions,
                        or the maker is absent from the lookup table.
                        RFQ_INVALID_INSTRUMENT identifies the blocking leg by
                        submitted index. RFQ_TAKER_UNFUNDED is non-retryable and
                        carries the live funding view in `details`.
                        RFQ_STATE_CONFLICT is returned to the second and later
                        `rfq.maker.respond` on an RFQ that already holds a
                        quote, and on a `quote_nonce` at or below the account's
                        high-water mark. RFQ_RATE_LIMITED is retryable.
                      enum:
                        - RFQ_NOT_ENABLED
                        - RFQ_NOT_READY
                        - RFQ_INVALID_INSTRUMENT
                        - RFQ_SIZE_INVALID
                        - RFQ_PRECISION_UNSUPPORTED
                        - RFQ_VALUE_OUT_OF_RANGE
                        - RFQ_OPEN_LIMIT
                        - RFQ_NOT_FOUND
                        - RFQ_WRONG_ROLE
                        - RFQ_INVALID_SIGNATURE
                        - RFQ_CANONICAL_MISMATCH
                        - RFQ_QUOTE_EXPIRED
                        - RFQ_STATE_CONFLICT
                        - RFQ_TAKER_UNFUNDED
                        - RFQ_BALANCE_INSUFFICIENT
                        - RFQ_PRICE_TOLERANCE
                        - RFQ_ATTESTATION_FAILED
                        - RFQ_TX_FAILED
                        - RFQ_RATE_LIMITED
                      x-parser-schema-id: <anonymous-schema-71>
                    message:
                      type: string
                      x-parser-schema-id: <anonymous-schema-72>
                    operation_id:
                      type: string
                      description: >-
                        Server-side correlation id; quote it when asking for
                        support.
                      x-parser-schema-id: <anonymous-schema-73>
                    retryable:
                      type: boolean
                      x-parser-schema-id: <anonymous-schema-74>
                    rfq_id: *ref_5
                    quote_id: *ref_14
                    details:
                      allOf:
                        - type: object
                          additionalProperties: false
                          description: >-
                            Live advisory funding view; the attestation signer
                            remains authoritative.
                          properties:
                            anchored:
                              type: boolean
                              description: >-
                                Whether a durable subaccount anchor is covered
                                by the live watcher heartbeat.
                              x-parser-schema-id: <anonymous-schema-76>
                            free_balance:
                              oneOf:
                                - &ref_15
                                  type: string
                                  pattern: ^(0|[1-9][0-9]*)(\.[0-9]{1,6})?$
                                  description: >-
                                    Canonical unsigned decimal with at most six
                                    fractional digits; JSON numbers and
                                    exponents are rejected.
                                  x-parser-schema-id: RfqDecimal
                                - type: 'null'
                                  x-parser-schema-id: <anonymous-schema-78>
                              x-parser-schema-id: <anonymous-schema-77>
                            buy:
                              oneOf:
                                - &ref_16
                                  type: object
                                  additionalProperties: false
                                  description: >
                                    Taker-perspective requirement for one accept
                                    side, computed from one

                                    frozen strategy risk view:

                                    `required = cash_debit + max_fee +
                                    lock_increase`.
                                  properties:
                                    required:
                                      allOf:
                                        - *ref_15
                                      description: >-
                                        Free balance required to accept this
                                        side of the quote.
                                      x-parser-schema-id: <anonymous-schema-80>
                                    estimate:
                                      type: boolean
                                      description: >-
                                        True only for a writer-side requirement
                                        computed over a never-anchored empty
                                        portfolio.
                                      x-parser-schema-id: <anonymous-schema-81>
                                    funded:
                                      type: boolean
                                      description: >-
                                        True only for a non-estimated
                                        requirement with a covered anchor and
                                        `free_balance >= required`.
                                      x-parser-schema-id: <anonymous-schema-82>
                                    package_cash_delta:
                                      allOf:
                                        - *ref_9
                                      description: >-
                                        Signed cash movement before fees;
                                        positive means the taker receives
                                        premium.
                                      x-parser-schema-id: <anonymous-schema-83>
                                    cash_debit:
                                      allOf:
                                        - *ref_15
                                      description: '`max(-package_cash_delta, 0)`.'
                                      x-parser-schema-id: <anonymous-schema-84>
                                    fee:
                                      allOf:
                                        - *ref_15
                                      description: >-
                                        Taker trading fee over the current
                                        prices: per leg `min(index_notional ×
                                        taker_fee_bps / 10000, leg_value ×
                                        trade_fee_cap_bps / 10000)`, floored and
                                        summed.
                                      x-parser-schema-id: <anonymous-schema-85>
                                    max_fee:
                                      allOf:
                                        - *ref_15
                                      description: >-
                                        `fee` plus the taker fee tolerance (1 %
                                        by default), rounded up. `required` is
                                        computed with `max_fee`; the signer
                                        charges the exact fee.
                                      x-parser-schema-id: <anonymous-schema-86>
                                    writer:
                                      type: boolean
                                      description: >-
                                        True when this side leaves the taker
                                        short at least one leg.
                                      x-parser-schema-id: <anonymous-schema-87>
                                    lock_increase:
                                      allOf:
                                        - *ref_15
                                      description: >-
                                        `max(post_fill_locked - current_locked,
                                        0)`; zero when the taker is not a
                                        writer.
                                      x-parser-schema-id: <anonymous-schema-88>
                                    post_fill_locked:
                                      allOf:
                                        - *ref_15
                                      description: Absolute taker lock after the fill.
                                      x-parser-schema-id: <anonymous-schema-89>
                                  required:
                                    - required
                                    - estimate
                                    - funded
                                  x-parser-schema-id: RfqFundingRequirement
                                - type: 'null'
                                  x-parser-schema-id: <anonymous-schema-90>
                              x-parser-schema-id: <anonymous-schema-79>
                            sell:
                              oneOf:
                                - *ref_16
                                - type: 'null'
                                  x-parser-schema-id: <anonymous-schema-92>
                              x-parser-schema-id: <anonymous-schema-91>
                          required:
                            - anchored
                            - free_balance
                            - buy
                            - sell
                          x-parser-schema-id: RfqTakerFunding
                      description: >-
                        Present for RFQ_TAKER_UNFUNDED and contains the funding
                        view directly.
                      x-parser-schema-id: <anonymous-schema-75>
                  required:
                    - error
                    - message
                    - operation_id
                    - retryable
                  x-parser-schema-id: RfqTypedError
              x-parser-schema-id: <anonymous-schema-68>
          x-parser-schema-id: RfqRpcError
        title: Typed RFQ method error
        description: |
          Every `rfq.*` method failure is a JSON-RPC error with code `1200`
          and a `data` object carrying the `RFQ_*` error code.
        example: No examples found
        bindings: []
        extensions:
          - id: x-parser-unique-object-id
            value: RfqError
      - &ref_22
        id: Subscription
        contentType: application/json
        payload:
          - name: Subscription
            type: object
            properties:
              - name: const
                type: string
                description: '2.0'
                required: false
              - name: const
                type: string
                description: subscription
                required: false
              - name: params
                type: object
                required: true
                properties:
                  - name: channel
                    type: string
                    description: Subscribed channel.
                    required: true
                  - name: data
                    type: object
                    description: >
                      Channel-specific payload. The `rfq` and `rfq_maker`
                      channel

                      payloads are specified by the `rfq` and `rfq_maker`
                      channels of

                      this document; other typed payloads are listed below.
                    required: true
        headers: []
        jsonPayloadSchema:
          type: object
          required:
            - jsonrpc
            - method
            - params
          properties:
            jsonrpc:
              const: '2.0'
              x-parser-schema-id: <anonymous-schema-16>
            method:
              const: subscription
              x-parser-schema-id: <anonymous-schema-17>
            params:
              type: object
              required:
                - channel
                - data
              properties:
                channel:
                  type: string
                  description: Subscribed channel.
                  x-parser-schema-id: <anonymous-schema-19>
                data:
                  description: >
                    Channel-specific payload. The `rfq` and `rfq_maker` channel

                    payloads are specified by the `rfq` and `rfq_maker` channels
                    of

                    this document; other typed payloads are listed below.
                  oneOf:
                    - type: object
                      description: Payload for any channel without a specified schema.
                      additionalProperties: true
                      x-parser-schema-id: UntypedNotification
                  x-parser-schema-id: <anonymous-schema-20>
              x-parser-schema-id: <anonymous-schema-18>
          x-parser-schema-id: Subscription
        title: Subscription
        example: No examples found
        bindings: []
        extensions:
          - id: x-parser-unique-object-id
            value: Subscription
          - id: x-parser-message-name
            value: Subscription
    bindings: []
    extensions: *ref_17
sendOperations:
  - *ref_18
receiveOperations:
  - *ref_19
sendMessages:
  - *ref_20
  - *ref_21
  - *ref_22
receiveMessages:
  - *ref_23
  - *ref_24
  - *ref_25
  - *ref_26
  - *ref_27
  - *ref_28
  - *ref_29
  - *ref_30
  - *ref_31
  - *ref_32
extensions:
  - id: x-parser-unique-object-id
    value: tradingRpc
securitySchemes: []

````