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

# RFQ market-maker feed

> Role-gated `open` requests for every quoter plus the quoting maker's
own `state`, `fill`, and `finality` events, delivered as `subscription`
frames with `params.channel: rfq_maker` on the trading connection
after `rfq.maker.subscribe`. The subscription is per socket and is not
restored by `public/session_resume`; page `rfq.maker.poll` on every
connect to recover requests opened while disconnected.




## AsyncAPI

````yaml _generated/asyncapi.yaml rfq_maker
id: rfq_maker
title: RFQ market-maker feed
description: |
  Role-gated `open` requests for every quoter plus the quoting maker's
  own `state`, `fill`, and `finality` events, delivered as `subscription`
  frames with `params.channel: rfq_maker` on the trading connection
  after `rfq.maker.subscribe`. The subscription is per socket and is not
  restored by `public/session_resume`; page `rfq.maker.poll` on every
  connect to recover requests opened while disconnected.
servers:
  - id: trading
    protocol: wss
    host: joyride.exchange
    bindings: []
    variables: []
address: rfq_maker
parameters: []
bindings: []
operations:
  - &ref_4
    id: rfqMakerReceive
    title: Receive market-maker RFQ events
    type: receive
    messages:
      - &ref_5
        id: RfqMakerNotification
        contentType: application/json
        payload:
          - name: Private market-maker RFQ event
            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: const
                    type: string
                    description: rfq_maker
                    required: false
                  - name: data
                    type: object
                    required: true
                    properties:
                      - name: const
                        type: string
                        description: open
                        required: false
                      - name: rfq
                        type: object
                        description: >
                          A pending request as seen by every quoter, from
                          `rfq.maker.poll`

                          items and the `open` push. Everything the maker signs
                          is here:

                          `rfq_id`, the ordered `legs`, `taker_subaccount`, and
                          `deployment`.
                        required: true
                        properties:
                          - name: rfq_id
                            type: string
                            description: 16-byte RFQ id encoded as lowercase hexadecimal.
                            required: true
                          - name: legs
                            type: array
                            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)`.
                            required: true
                            properties:
                              - name: instrument
                                type: string
                                description: Listed instrument symbol.
                                required: true
                              - name: quantity
                                type: string
                                description: >-
                                  Non-zero signed 6dp contracts in taker-buy
                                  orientation.
                                required: true
                          - name: taker_account
                            type: integer
                            description: Taker account id.
                            required: true
                          - name: taker_subaccount
                            type: string
                            description: >-
                              Solana base58 subaccount PDA (`["subaccount",
                              owner]` under `deployment.program_id`).
                            required: true
                          - name: taker_funded
                            type: boolean
                            description: >-
                              True when the taker has a covered anchor and
                              positive free balance; balances, side
                              requirements, and writer status are not disclosed.
                            required: true
                          - name: request_deadline
                            type: string
                            description: >-
                              RFC3339 UTC; the RFQ drains to `declined/timeout`
                              if no quote arrives by then.
                            required: true
                          - name: deployment
                            type: object
                            description: >-
                              Immutable margin-vault deployment identity the RFQ
                              is bound to; copied verbatim into the signed
                              payloads.
                            required: true
                            properties:
                              - name: program_id
                                type: string
                                description: Solana base58 program id.
                                required: true
                              - name: deployment_id
                                type: string
                                required: true
                              - name: config_pda
                                type: string
                                description: Solana base58 config PDA.
                                required: true
                              - name: epoch
                                type: integer
                                description: Deployment epoch the RFQ was created under.
                                required: true
                          - name: nearest_leg_close
                            type: integer
                            description: >-
                              Unix seconds; `min(leg.expiry)` over the legs. No
                              quote may expire after it.
                            required: true
                          - name: max_quote_expires_at
                            type: integer
                            description: >
                              Unix seconds; the latest `expires_at` accepted for
                              a quote on this

                              RFQ. Never later than `nearest_leg_close`, and
                              further bounded by

                              the quote TTL ceiling. Sign an `expires_at` at or
                              before this

                              value; a later value is rejected, never clamped.
                            required: true
                      - name: const
                        type: string
                        description: state
                        required: false
                      - name: rfq_id
                        type: string
                        description: 16-byte RFQ id encoded as lowercase hexadecimal.
                        required: true
                      - name: quote_id
                        type: string
                        required: true
                      - name: state
                        type: string
                        enumValues:
                          - pending
                          - quoted
                          - accepted
                          - submitting
                          - filled
                          - declined
                          - expired
                          - failed
                        required: true
                      - name: accepted_side
                        type: string
                        description: >-
                          The taker's accepted side once `state` is `accepted`
                          or later; `null` before that. Decides which party
                          writes.
                        required: true
                      - name: type
                        type: string
                        enumValues:
                          - fill
                          - finality
                        required: true
                      - name: fill
                        type: object
                        description: >
                          The quoting maker's fill, carried by the `fill` push
                          and re-emitted

                          unchanged except for `finality` by the `finality`
                          push. Durable

                          history is `GET /api/query/rfq-fills?role=maker`.
                        required: true
                        properties:
                          - name: rfq_id
                            type: string
                            description: 16-byte RFQ id encoded as lowercase hexadecimal.
                            required: true
                          - name: quote_id
                            type: string
                            description: >-
                              SHA-256 of the canonical 1,050-byte
                              StrategyQuotePayload.
                            required: true
                          - name: legs
                            type: array
                            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)`.
                            required: true
                            properties:
                              - name: instrument
                                type: string
                                description: Listed instrument symbol.
                                required: true
                              - name: quantity
                                type: string
                                description: >-
                                  Non-zero signed 6dp contracts in taker-buy
                                  orientation.
                                required: true
                          - name: maker_side
                            type: string
                            description: >-
                              The maker's side of the package; the opposite of
                              the taker's accepted side.
                            enumValues:
                              - buy
                              - sell
                            required: true
                          - name: bid
                            type: string
                            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.
                            required: true
                          - name: ask
                            type: string
                            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.
                            required: true
                          - name: premium
                            type: string
                            description: >-
                              Signed package cash movement for the maker before
                              fees; `+ask` when the taker bought, `-bid` when
                              the taker sold.
                            required: true
                          - name: maker_fee
                            type: string
                            description: >-
                              `floor(abs(premium) * maker_bps / 10000)`, settled
                              on chain with the fill.
                            required: true
                          - name: writer
                            type: boolean
                            description: >-
                              True when the fill leaves the maker short at least
                              one leg, so a new lock and attestation sequence
                              applied to the maker subaccount.
                            required: true
                          - name: tx_signature
                            type: string
                            description: Solana base58 transaction signature.
                            required: true
                          - name: finality
                            type: string
                            enumValues:
                              - confirmed
                              - finalized
                              - reverted
                            required: true
                          - name: filled_at
                            type: string
                            description: >-
                              RFC3339 UTC chain block time of the fill; stable
                              across finality re-emissions.
                            required: true
        headers: []
        jsonPayloadSchema:
          type: object
          required:
            - jsonrpc
            - method
            - params
          properties:
            jsonrpc:
              const: '2.0'
              x-parser-schema-id: <anonymous-schema-123>
            method:
              const: subscription
              x-parser-schema-id: <anonymous-schema-124>
            params:
              type: object
              required:
                - channel
                - data
              properties:
                channel:
                  const: rfq_maker
                  x-parser-schema-id: <anonymous-schema-126>
                data:
                  oneOf:
                    - type: object
                      additionalProperties: false
                      description: Broadcast to every quoter when a request opens.
                      properties:
                        type:
                          const: open
                          x-parser-schema-id: <anonymous-schema-128>
                        rfq:
                          type: object
                          description: >
                            A pending request as seen by every quoter, from
                            `rfq.maker.poll`

                            items and the `open` push. Everything the maker
                            signs is here:

                            `rfq_id`, the ordered `legs`, `taker_subaccount`,
                            and `deployment`.
                          properties:
                            rfq_id: &ref_0
                              type: string
                              pattern: ^[0-9a-f]{32}$
                              description: 16-byte RFQ id encoded as lowercase hexadecimal.
                              x-parser-schema-id: RfqId
                            legs: &ref_2
                              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_3
                                        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
                            taker_account:
                              type: integer
                              minimum: 0
                              description: Taker account id.
                              x-parser-schema-id: <anonymous-schema-129>
                            taker_subaccount:
                              type: string
                              description: >-
                                Solana base58 subaccount PDA (`["subaccount",
                                owner]` under `deployment.program_id`).
                              x-parser-schema-id: <anonymous-schema-130>
                            taker_funded:
                              type: boolean
                              description: >-
                                True when the taker has a covered anchor and
                                positive free balance; balances, side
                                requirements, and writer status are not
                                disclosed.
                              x-parser-schema-id: <anonymous-schema-131>
                            request_deadline:
                              type: string
                              format: date-time
                              description: >-
                                RFC3339 UTC; the RFQ drains to
                                `declined/timeout` if no quote arrives by then.
                              x-parser-schema-id: <anonymous-schema-132>
                            deployment:
                              type: object
                              description: >-
                                Immutable margin-vault deployment identity the
                                RFQ is bound to; copied verbatim into the signed
                                payloads.
                              properties:
                                program_id:
                                  type: string
                                  description: Solana base58 program id.
                                  x-parser-schema-id: <anonymous-schema-102>
                                deployment_id:
                                  type: string
                                  pattern: ^[0-9a-f]{64}$
                                  x-parser-schema-id: <anonymous-schema-103>
                                config_pda:
                                  type: string
                                  description: Solana base58 config PDA.
                                  x-parser-schema-id: <anonymous-schema-104>
                                epoch:
                                  type: integer
                                  minimum: 0
                                  description: Deployment epoch the RFQ was created under.
                                  x-parser-schema-id: <anonymous-schema-105>
                              required:
                                - program_id
                                - deployment_id
                                - config_pda
                                - epoch
                              x-parser-schema-id: RfqDeployment
                            nearest_leg_close:
                              type: integer
                              format: int64
                              description: >-
                                Unix seconds; `min(leg.expiry)` over the legs.
                                No quote may expire after it.
                              x-parser-schema-id: <anonymous-schema-133>
                            max_quote_expires_at:
                              type: integer
                              format: int64
                              description: >
                                Unix seconds; the latest `expires_at` accepted
                                for a quote on this

                                RFQ. Never later than `nearest_leg_close`, and
                                further bounded by

                                the quote TTL ceiling. Sign an `expires_at` at
                                or before this

                                value; a later value is rejected, never clamped.
                              x-parser-schema-id: <anonymous-schema-134>
                          required:
                            - rfq_id
                            - legs
                            - taker_account
                            - taker_subaccount
                            - taker_funded
                            - request_deadline
                            - deployment
                            - nearest_leg_close
                            - max_quote_expires_at
                          x-parser-schema-id: OpenRfqObject
                      required:
                        - type
                        - rfq
                      x-parser-schema-id: <anonymous-schema-127>
                    - type: object
                      additionalProperties: false
                      description: >
                        Sent to the quoting maker on every transition after its
                        quote

                        (accepted, submitting, filled, expired, failed);
                        broadcast to all

                        quoters only when no quote exists. A losing quote
                        receives no push.
                      properties:
                        type:
                          const: state
                          x-parser-schema-id: <anonymous-schema-136>
                        rfq_id: *ref_0
                        quote_id:
                          oneOf:
                            - &ref_1
                              type: string
                              pattern: ^[0-9a-f]{64}$
                              description: >-
                                SHA-256 of the canonical 1,050-byte
                                StrategyQuotePayload.
                              x-parser-schema-id: QuoteId
                            - type: 'null'
                              x-parser-schema-id: <anonymous-schema-138>
                          x-parser-schema-id: <anonymous-schema-137>
                        state:
                          type: string
                          enum:
                            - pending
                            - quoted
                            - accepted
                            - submitting
                            - filled
                            - declined
                            - expired
                            - failed
                          x-parser-schema-id: RfqState
                        accepted_side:
                          oneOf:
                            - type: string
                              enum:
                                - buy
                                - sell
                              x-parser-schema-id: <anonymous-schema-140>
                            - type: 'null'
                              x-parser-schema-id: <anonymous-schema-141>
                          description: >-
                            The taker's accepted side once `state` is `accepted`
                            or later; `null` before that. Decides which party
                            writes.
                          x-parser-schema-id: <anonymous-schema-139>
                      required:
                        - type
                        - rfq_id
                        - quote_id
                        - state
                        - accepted_side
                      x-parser-schema-id: <anonymous-schema-135>
                    - type: object
                      additionalProperties: false
                      properties:
                        type:
                          type: string
                          enum:
                            - fill
                            - finality
                          x-parser-schema-id: <anonymous-schema-143>
                        fill:
                          type: object
                          description: >
                            The quoting maker's fill, carried by the `fill` push
                            and re-emitted

                            unchanged except for `finality` by the `finality`
                            push. Durable

                            history is `GET /api/query/rfq-fills?role=maker`.
                          properties:
                            rfq_id: *ref_0
                            quote_id: *ref_1
                            legs: *ref_2
                            maker_side:
                              type: string
                              enum:
                                - buy
                                - sell
                              description: >-
                                The maker's side of the package; the opposite of
                                the taker's accepted side.
                              x-parser-schema-id: <anonymous-schema-144>
                            bid: *ref_3
                            ask: *ref_3
                            premium:
                              allOf:
                                - *ref_3
                              description: >-
                                Signed package cash movement for the maker
                                before fees; `+ask` when the taker bought,
                                `-bid` when the taker sold.
                              x-parser-schema-id: <anonymous-schema-145>
                            maker_fee:
                              allOf:
                                - 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
                              description: >-
                                `floor(abs(premium) * maker_bps / 10000)`,
                                settled on chain with the fill.
                              x-parser-schema-id: <anonymous-schema-146>
                            writer:
                              type: boolean
                              description: >-
                                True when the fill leaves the maker short at
                                least one leg, so a new lock and attestation
                                sequence applied to the maker subaccount.
                              x-parser-schema-id: <anonymous-schema-147>
                            tx_signature:
                              type: string
                              description: Solana base58 transaction signature.
                              x-parser-schema-id: <anonymous-schema-148>
                            finality:
                              type: string
                              enum:
                                - confirmed
                                - finalized
                                - reverted
                              x-parser-schema-id: <anonymous-schema-149>
                            filled_at:
                              type: string
                              format: date-time
                              description: >-
                                RFC3339 UTC chain block time of the fill; stable
                                across finality re-emissions.
                              x-parser-schema-id: <anonymous-schema-150>
                          required:
                            - rfq_id
                            - quote_id
                            - legs
                            - maker_side
                            - bid
                            - ask
                            - premium
                            - maker_fee
                            - writer
                            - tx_signature
                            - finality
                            - filled_at
                          x-parser-schema-id: MakerFillObject
                      required:
                        - type
                        - fill
                      x-parser-schema-id: <anonymous-schema-142>
                  x-parser-schema-id: RfqMakerEvent
              x-parser-schema-id: <anonymous-schema-125>
          x-parser-schema-id: RfqMakerSubscriptionFrame
        title: Private market-maker RFQ event
        example: No examples found
        bindings: []
        extensions:
          - id: x-parser-unique-object-id
            value: RfqMakerNotification
    bindings: []
    extensions:
      - id: x-parser-unique-object-id
        value: rfq_maker
sendOperations:
  - *ref_4
receiveOperations: []
sendMessages:
  - *ref_5
receiveMessages: []
extensions:
  - id: x-parser-unique-object-id
    value: rfq_maker
securitySchemes: []

````