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

# Orderbook

> Subscribe to aggregated orderbook updates for canonical markets. Receive an initial snapshot, then incremental deltas with sequencing and checksums. Client maintains a local book by applying deltas. Request a resnapshot if your local state drifts.

**Sequencing:** `seq` increments between consecutive messages for a given market. If you receive a `seq` that is not your expected next value, request a new snapshot via `resnapshot`.



## AsyncAPI

````yaml openapi/asyncapi.json orderbook
id: orderbook
title: Orderbook
description: >-
  Subscribe to aggregated orderbook updates for canonical markets. Receive an
  initial snapshot, then incremental deltas with sequencing and checksums.
  Client maintains a local book by applying deltas. Request a resnapshot if your
  local state drifts.


  **Sequencing:** `seq` increments between consecutive messages for a given
  market. If you receive a `seq` that is not your expected next value, request a
  new snapshot via `resnapshot`.
servers:
  - id: production
    protocol: wss
    host: ws.agg.market
    bindings: []
    variables: []
address: /
parameters: []
bindings: []
operations:
  - &ref_5
    id: subscribeOrderbook
    title: Subscribe orderbook
    description: Subscribe to orderbook updates for one or more markets
    type: send
    messages:
      - &ref_13
        id: subscribe
        payload:
          - name: Subscribe to orderbook
            description: Subscribe to aggregated orderbook updates for markets
            type: object
            properties:
              - name: action
                type: string
                description: subscribe
                required: true
              - name: channel
                type: string
                required: true
              - name: outcomeIds
                type: array
                description: Outcome IDs to subscribe to
                required: true
                properties:
                  - name: item
                    type: string
                    required: false
        headers: []
        jsonPayloadSchema:
          title: Subscribe
          type: object
          required:
            - action
            - channel
            - outcomeIds
          properties:
            action:
              const: subscribe
              type: string
              x-parser-schema-id: <anonymous-schema-2>
            channel:
              anyOf:
                - const: orderbook
                  type: string
                  x-parser-schema-id: <anonymous-schema-4>
                - const: trades
                  type: string
                  x-parser-schema-id: <anonymous-schema-5>
              x-parser-schema-id: <anonymous-schema-3>
            outcomeIds:
              description: Outcome IDs to subscribe to
              type: array
              items:
                type: string
                x-parser-schema-id: <anonymous-schema-7>
              x-parser-schema-id: <anonymous-schema-6>
          x-parser-schema-id: <anonymous-schema-1>
        title: Subscribe to orderbook
        description: Subscribe to aggregated orderbook updates for markets
        example: |-
          {
            "action": "subscribe",
            "channel": "orderbook",
            "outcomeIds": [
              "clv2abc123def456",
              "clv2xyz789ghi012"
            ]
          }
        bindings: []
        extensions:
          - id: x-parser-unique-object-id
            value: subscribe
    bindings: []
    extensions: &ref_0
      - id: x-parser-unique-object-id
        value: orderbook
  - &ref_6
    id: unsubscribeOrderbook
    title: Unsubscribe orderbook
    description: Unsubscribe from orderbook updates
    type: send
    messages:
      - &ref_14
        id: unsubscribe
        payload:
          - name: Unsubscribe from orderbook
            type: object
            properties:
              - name: action
                type: string
                description: unsubscribe
                required: true
              - name: channel
                type: string
                required: true
              - name: outcomeIds
                type: array
                description: Outcome IDs to unsubscribe from
                required: true
                properties:
                  - name: item
                    type: string
                    required: false
        headers: []
        jsonPayloadSchema:
          title: Unsubscribe
          type: object
          required:
            - action
            - channel
            - outcomeIds
          properties:
            action:
              const: unsubscribe
              type: string
              x-parser-schema-id: <anonymous-schema-9>
            channel:
              anyOf:
                - const: orderbook
                  type: string
                  x-parser-schema-id: <anonymous-schema-11>
                - const: trades
                  type: string
                  x-parser-schema-id: <anonymous-schema-12>
              x-parser-schema-id: <anonymous-schema-10>
            outcomeIds:
              description: Outcome IDs to unsubscribe from
              type: array
              items:
                type: string
                x-parser-schema-id: <anonymous-schema-14>
              x-parser-schema-id: <anonymous-schema-13>
          x-parser-schema-id: <anonymous-schema-8>
        title: Unsubscribe from orderbook
        example: |-
          {
            "action": "unsubscribe",
            "channel": "orderbook",
            "outcomeIds": [
              "clv2abc123def456",
              "clv2xyz789ghi012"
            ]
          }
        bindings: []
        extensions:
          - id: x-parser-unique-object-id
            value: unsubscribe
    bindings: []
    extensions: *ref_0
  - &ref_7
    id: requestResnapshot
    title: Request resnapshot
    description: Request a full snapshot (use on checksum mismatch or seq gap)
    type: send
    messages:
      - &ref_15
        id: resnapshot
        payload:
          - name: Request full snapshot
            description: Request a fresh snapshot for the current market state
            type: object
            properties:
              - name: action
                type: string
                description: resnapshot
                required: true
              - name: channel
                type: string
                description: orderbook
                required: true
              - name: outcomeIds
                type: array
                description: Request a full snapshot for these outcomes
                required: true
                properties:
                  - name: item
                    type: string
                    required: false
        headers: []
        jsonPayloadSchema:
          title: Resnapshot
          type: object
          required:
            - action
            - channel
            - outcomeIds
          properties:
            action:
              const: resnapshot
              type: string
              x-parser-schema-id: <anonymous-schema-16>
            channel:
              const: orderbook
              type: string
              x-parser-schema-id: <anonymous-schema-17>
            outcomeIds:
              description: Request a full snapshot for these outcomes
              type: array
              items:
                type: string
                x-parser-schema-id: <anonymous-schema-19>
              x-parser-schema-id: <anonymous-schema-18>
          x-parser-schema-id: <anonymous-schema-15>
        title: Request full snapshot
        description: Request a fresh snapshot for the current market state
        example: |-
          {
            "action": "resnapshot",
            "channel": "orderbook",
            "outcomeIds": [
              "clv2abc123def456",
              "clv2xyz789ghi012"
            ]
          }
        bindings: []
        extensions:
          - id: x-parser-unique-object-id
            value: resnapshot
    bindings: []
    extensions: *ref_0
  - &ref_1
    id: receiveOrderbookSnapshot
    title: Receive orderbook snapshot
    description: Full orderbook state (sent on subscribe or seq gap)
    type: receive
    messages:
      - &ref_8
        id: orderbookSnapshot
        payload:
          - name: Orderbook snapshot
            description: Full aggregated orderbook state with venue attribution
            type: object
            properties:
              - name: type
                type: string
                description: orderbook_snapshot
                required: true
              - name: outcomeId
                type: string
                description: Outcome ID
                required: true
              - name: channel
                type: string
                required: false
              - name: seq
                type: number
                description: Sequence number for this outcome
                required: true
              - name: checksum
                type: number
                description: Checksum of the full book after this update
                required: true
              - name: bids
                type: array
                description: All bid levels, sorted desc by price
                required: true
                properties:
                  - name: price
                    type: number
                    description: Price level (0–1)
                    required: true
                  - name: totalSize
                    type: number
                    description: Total size across all venues
                    required: true
                  - name: venues
                    type: object
                    required: true
              - name: asks
                type: array
                description: All ask levels, sorted asc by price
                required: true
                properties:
                  - name: price
                    type: number
                    description: Price level (0–1)
                    required: true
                  - name: totalSize
                    type: number
                    description: Total size across all venues
                    required: true
                  - name: venues
                    type: object
                    required: true
              - name: venueOrderbooks
                type: object
                description: Per-venue orderbooks
                required: true
              - name: venues
                type: object
                description: Per-venue best bid/ask
                required: true
              - name: midpoint
                type: number
                required: true
              - name: spread
                type: number
                required: true
              - name: timestamp
                type: number
                required: true
              - name: tick
                type: number
                required: false
              - name: markSource
                type: string
                required: false
        headers: []
        jsonPayloadSchema:
          title: OrderbookSnapshot
          type: object
          required:
            - type
            - outcomeId
            - seq
            - checksum
            - bids
            - asks
            - venueOrderbooks
            - venues
            - midpoint
            - spread
            - timestamp
          properties:
            type:
              const: orderbook_snapshot
              type: string
              x-parser-schema-id: <anonymous-schema-21>
            outcomeId:
              description: Outcome ID
              type: string
              x-parser-schema-id: <anonymous-schema-22>
            channel:
              anyOf:
                - const: orderbook
                  type: string
                  x-parser-schema-id: <anonymous-schema-24>
                - const: trades
                  type: string
                  x-parser-schema-id: <anonymous-schema-25>
              x-parser-schema-id: <anonymous-schema-23>
            seq:
              description: Sequence number for this outcome
              type: number
              x-parser-schema-id: <anonymous-schema-26>
            checksum:
              description: Checksum of the full book after this update
              type: number
              x-parser-schema-id: <anonymous-schema-27>
            bids:
              description: All bid levels, sorted desc by price
              type: array
              items:
                description: |-
                  [price, totalSize, {venue: sizeAtPrice}]

                  Wire format: `[price, totalSize, {venue: sizeAtPrice}]`
                type: object
                additionalItems: false
                properties:
                  price:
                    type: number
                    description: Price level (0–1)
                    x-parser-schema-id: <anonymous-schema-30>
                  totalSize:
                    type: number
                    description: Total size across all venues
                    x-parser-schema-id: <anonymous-schema-31>
                  venues:
                    type: object
                    patternProperties:
                      ^(.*)$:
                        type: number
                        x-parser-schema-id: <anonymous-schema-33>
                    x-parser-schema-id: <anonymous-schema-32>
                required:
                  - price
                  - totalSize
                  - venues
                x-parser-schema-id: <anonymous-schema-29>
              x-parser-schema-id: <anonymous-schema-28>
            asks:
              description: All ask levels, sorted asc by price
              type: array
              items:
                description: |-
                  [price, totalSize, {venue: sizeAtPrice}]

                  Wire format: `[price, totalSize, {venue: sizeAtPrice}]`
                type: object
                additionalItems: false
                properties:
                  price:
                    type: number
                    description: Price level (0–1)
                    x-parser-schema-id: <anonymous-schema-36>
                  totalSize:
                    type: number
                    description: Total size across all venues
                    x-parser-schema-id: <anonymous-schema-37>
                  venues:
                    type: object
                    patternProperties:
                      ^(.*)$:
                        type: number
                        x-parser-schema-id: <anonymous-schema-39>
                    x-parser-schema-id: <anonymous-schema-38>
                required:
                  - price
                  - totalSize
                  - venues
                x-parser-schema-id: <anonymous-schema-35>
              x-parser-schema-id: <anonymous-schema-34>
            venueOrderbooks:
              description: Per-venue orderbooks
              type: object
              patternProperties:
                ^(.*)$:
                  type: object
                  required:
                    - bids
                    - asks
                  properties:
                    bids:
                      type: array
                      items:
                        description: |-
                          [price, size]

                          Wire format: `[price, size]`
                        type: object
                        additionalItems: false
                        properties:
                          price:
                            type: number
                            description: Price level (0–1)
                            x-parser-schema-id: <anonymous-schema-44>
                          size:
                            type: number
                            description: Size at this price
                            x-parser-schema-id: <anonymous-schema-45>
                        required:
                          - price
                          - size
                        x-parser-schema-id: <anonymous-schema-43>
                      x-parser-schema-id: <anonymous-schema-42>
                    asks:
                      type: array
                      items:
                        description: |-
                          [price, size]

                          Wire format: `[price, size]`
                        type: object
                        additionalItems: false
                        properties:
                          price:
                            type: number
                            description: Price level (0–1)
                            x-parser-schema-id: <anonymous-schema-48>
                          size:
                            type: number
                            description: Size at this price
                            x-parser-schema-id: <anonymous-schema-49>
                        required:
                          - price
                          - size
                        x-parser-schema-id: <anonymous-schema-47>
                      x-parser-schema-id: <anonymous-schema-46>
                  x-parser-schema-id: <anonymous-schema-41>
              x-parser-schema-id: <anonymous-schema-40>
            venues:
              description: Per-venue best bid/ask
              type: object
              patternProperties:
                ^(.*)$:
                  type: object
                  required:
                    - bestBid
                    - bestAsk
                  properties:
                    bestBid:
                      anyOf:
                        - type: number
                          x-parser-schema-id: <anonymous-schema-53>
                        - type: 'null'
                          x-parser-schema-id: <anonymous-schema-54>
                      x-parser-schema-id: <anonymous-schema-52>
                    bestAsk:
                      anyOf:
                        - type: number
                          x-parser-schema-id: <anonymous-schema-56>
                        - type: 'null'
                          x-parser-schema-id: <anonymous-schema-57>
                      x-parser-schema-id: <anonymous-schema-55>
                  x-parser-schema-id: <anonymous-schema-51>
              x-parser-schema-id: <anonymous-schema-50>
            midpoint:
              anyOf:
                - type: number
                  x-parser-schema-id: <anonymous-schema-59>
                - type: 'null'
                  x-parser-schema-id: <anonymous-schema-60>
              x-parser-schema-id: <anonymous-schema-58>
            spread:
              anyOf:
                - type: number
                  x-parser-schema-id: <anonymous-schema-62>
                - type: 'null'
                  x-parser-schema-id: <anonymous-schema-63>
              x-parser-schema-id: <anonymous-schema-61>
            timestamp:
              type: number
              x-parser-schema-id: <anonymous-schema-64>
            tick:
              anyOf:
                - type: number
                  x-parser-schema-id: <anonymous-schema-66>
                - type: 'null'
                  x-parser-schema-id: <anonymous-schema-67>
              x-parser-schema-id: <anonymous-schema-65>
            markSource:
              anyOf:
                - const: local
                  type: string
                  x-parser-schema-id: <anonymous-schema-69>
                - const: local_merged
                  type: string
                  x-parser-schema-id: <anonymous-schema-70>
                - const: local_one_sided
                  type: string
                  x-parser-schema-id: <anonymous-schema-71>
                - const: sibling
                  type: string
                  x-parser-schema-id: <anonymous-schema-72>
                - const: local_boundary
                  type: string
                  x-parser-schema-id: <anonymous-schema-73>
                - const: none
                  type: string
                  x-parser-schema-id: <anonymous-schema-74>
              x-parser-schema-id: <anonymous-schema-68>
          x-parser-schema-id: <anonymous-schema-20>
        title: Orderbook snapshot
        description: Full aggregated orderbook state with venue attribution
        example: |-
          {
            "type": "orderbook_snapshot",
            "outcomeId": "clv2abc123def456",
            "channel": "orderbook",
            "seq": 1710000001,
            "checksum": 2918476531,
            "bids": [
              {
                "price": 0.55,
                "totalSize": 1500,
                "venues": {}
              }
            ],
            "asks": [
              {
                "price": 0.55,
                "totalSize": 1500,
                "venues": {}
              }
            ],
            "venueOrderbooks": {},
            "venues": {},
            "midpoint": 0.55,
            "spread": 0.01,
            "timestamp": 1710000000000,
            "tick": 0,
            "markSource": "local"
          }
        bindings: []
        extensions:
          - id: x-parser-unique-object-id
            value: orderbookSnapshot
    bindings: []
    extensions: *ref_0
  - &ref_2
    id: receiveOrderbookDelta
    title: Receive orderbook delta
    description: Incremental orderbook update (only changed levels)
    type: receive
    messages:
      - &ref_9
        id: orderbookDelta
        payload:
          - name: Orderbook delta
            description: >-
              Incremental update — only changed levels. size=0 means level
              removed.
            type: object
            properties:
              - name: type
                type: string
                description: orderbook_delta
                required: true
              - name: outcomeId
                type: string
                description: Outcome ID
                required: true
              - name: channel
                type: string
                required: false
              - name: seq
                type: number
                description: Sequence number for this outcome
                required: true
              - name: checksum
                type: number
                description: Checksum of the full book after applying this delta
                required: true
              - name: bidChanges
                type: array
                description: Changed bid levels (size=0 means removed)
                required: true
                properties:
                  - name: price
                    type: number
                    description: Price level (0–1)
                    required: true
                  - name: totalSize
                    type: number
                    description: Total size across all venues
                    required: true
                  - name: venues
                    type: object
                    required: true
              - name: askChanges
                type: array
                description: Changed ask levels (size=0 means removed)
                required: true
                properties:
                  - name: price
                    type: number
                    description: Price level (0–1)
                    required: true
                  - name: totalSize
                    type: number
                    description: Total size across all venues
                    required: true
                  - name: venues
                    type: object
                    required: true
              - name: venueDeltaBooks
                type: object
                description: Per-venue level changes
                required: true
              - name: venues
                type: object
                description: Per-venue best bid/ask
                required: true
              - name: midpoint
                type: number
                required: true
              - name: spread
                type: number
                required: true
              - name: tick
                type: number
                required: false
              - name: markSource
                type: string
                required: false
              - name: timestamp
                type: number
                required: true
        headers: []
        jsonPayloadSchema:
          title: OrderbookDelta
          type: object
          required:
            - type
            - outcomeId
            - seq
            - checksum
            - bidChanges
            - askChanges
            - venueDeltaBooks
            - venues
            - midpoint
            - spread
            - timestamp
          properties:
            type:
              const: orderbook_delta
              type: string
              x-parser-schema-id: <anonymous-schema-76>
            outcomeId:
              description: Outcome ID
              type: string
              x-parser-schema-id: <anonymous-schema-77>
            channel:
              anyOf:
                - const: orderbook
                  type: string
                  x-parser-schema-id: <anonymous-schema-79>
                - const: trades
                  type: string
                  x-parser-schema-id: <anonymous-schema-80>
              x-parser-schema-id: <anonymous-schema-78>
            seq:
              description: Sequence number for this outcome
              type: number
              x-parser-schema-id: <anonymous-schema-81>
            checksum:
              description: Checksum of the full book after applying this delta
              type: number
              x-parser-schema-id: <anonymous-schema-82>
            bidChanges:
              description: Changed bid levels (size=0 means removed)
              type: array
              items:
                description: |-
                  [price, totalSize, {venue: sizeAtPrice}]

                  Wire format: `[price, totalSize, {venue: sizeAtPrice}]`
                type: object
                additionalItems: false
                properties:
                  price:
                    type: number
                    description: Price level (0–1)
                    x-parser-schema-id: <anonymous-schema-85>
                  totalSize:
                    type: number
                    description: Total size across all venues
                    x-parser-schema-id: <anonymous-schema-86>
                  venues:
                    type: object
                    patternProperties:
                      ^(.*)$:
                        type: number
                        x-parser-schema-id: <anonymous-schema-88>
                    x-parser-schema-id: <anonymous-schema-87>
                required:
                  - price
                  - totalSize
                  - venues
                x-parser-schema-id: <anonymous-schema-84>
              x-parser-schema-id: <anonymous-schema-83>
            askChanges:
              description: Changed ask levels (size=0 means removed)
              type: array
              items:
                description: |-
                  [price, totalSize, {venue: sizeAtPrice}]

                  Wire format: `[price, totalSize, {venue: sizeAtPrice}]`
                type: object
                additionalItems: false
                properties:
                  price:
                    type: number
                    description: Price level (0–1)
                    x-parser-schema-id: <anonymous-schema-91>
                  totalSize:
                    type: number
                    description: Total size across all venues
                    x-parser-schema-id: <anonymous-schema-92>
                  venues:
                    type: object
                    patternProperties:
                      ^(.*)$:
                        type: number
                        x-parser-schema-id: <anonymous-schema-94>
                    x-parser-schema-id: <anonymous-schema-93>
                required:
                  - price
                  - totalSize
                  - venues
                x-parser-schema-id: <anonymous-schema-90>
              x-parser-schema-id: <anonymous-schema-89>
            venueDeltaBooks:
              description: Per-venue level changes
              type: object
              patternProperties:
                ^(.*)$:
                  type: object
                  required:
                    - bidChanges
                    - askChanges
                  properties:
                    bidChanges:
                      type: array
                      items:
                        description: |-
                          [price, size]

                          Wire format: `[price, size]`
                        type: object
                        additionalItems: false
                        properties:
                          price:
                            type: number
                            description: Price level (0–1)
                            x-parser-schema-id: <anonymous-schema-99>
                          size:
                            type: number
                            description: Size at this price
                            x-parser-schema-id: <anonymous-schema-100>
                        required:
                          - price
                          - size
                        x-parser-schema-id: <anonymous-schema-98>
                      x-parser-schema-id: <anonymous-schema-97>
                    askChanges:
                      type: array
                      items:
                        description: |-
                          [price, size]

                          Wire format: `[price, size]`
                        type: object
                        additionalItems: false
                        properties:
                          price:
                            type: number
                            description: Price level (0–1)
                            x-parser-schema-id: <anonymous-schema-103>
                          size:
                            type: number
                            description: Size at this price
                            x-parser-schema-id: <anonymous-schema-104>
                        required:
                          - price
                          - size
                        x-parser-schema-id: <anonymous-schema-102>
                      x-parser-schema-id: <anonymous-schema-101>
                  x-parser-schema-id: <anonymous-schema-96>
              x-parser-schema-id: <anonymous-schema-95>
            venues:
              description: Per-venue best bid/ask
              type: object
              patternProperties:
                ^(.*)$:
                  type: object
                  required:
                    - bestBid
                    - bestAsk
                  properties:
                    bestBid:
                      anyOf:
                        - type: number
                          x-parser-schema-id: <anonymous-schema-108>
                        - type: 'null'
                          x-parser-schema-id: <anonymous-schema-109>
                      x-parser-schema-id: <anonymous-schema-107>
                    bestAsk:
                      anyOf:
                        - type: number
                          x-parser-schema-id: <anonymous-schema-111>
                        - type: 'null'
                          x-parser-schema-id: <anonymous-schema-112>
                      x-parser-schema-id: <anonymous-schema-110>
                  x-parser-schema-id: <anonymous-schema-106>
              x-parser-schema-id: <anonymous-schema-105>
            midpoint:
              anyOf:
                - type: number
                  x-parser-schema-id: <anonymous-schema-114>
                - type: 'null'
                  x-parser-schema-id: <anonymous-schema-115>
              x-parser-schema-id: <anonymous-schema-113>
            spread:
              anyOf:
                - type: number
                  x-parser-schema-id: <anonymous-schema-117>
                - type: 'null'
                  x-parser-schema-id: <anonymous-schema-118>
              x-parser-schema-id: <anonymous-schema-116>
            tick:
              anyOf:
                - type: number
                  x-parser-schema-id: <anonymous-schema-120>
                - type: 'null'
                  x-parser-schema-id: <anonymous-schema-121>
              x-parser-schema-id: <anonymous-schema-119>
            markSource:
              anyOf:
                - const: local
                  type: string
                  x-parser-schema-id: <anonymous-schema-123>
                - const: local_merged
                  type: string
                  x-parser-schema-id: <anonymous-schema-124>
                - const: local_one_sided
                  type: string
                  x-parser-schema-id: <anonymous-schema-125>
                - const: sibling
                  type: string
                  x-parser-schema-id: <anonymous-schema-126>
                - const: local_boundary
                  type: string
                  x-parser-schema-id: <anonymous-schema-127>
                - const: none
                  type: string
                  x-parser-schema-id: <anonymous-schema-128>
              x-parser-schema-id: <anonymous-schema-122>
            timestamp:
              type: number
              x-parser-schema-id: <anonymous-schema-129>
          x-parser-schema-id: <anonymous-schema-75>
        title: Orderbook delta
        description: Incremental update — only changed levels. size=0 means level removed.
        example: |-
          {
            "type": "orderbook_delta",
            "outcomeId": "clv2abc123def456",
            "channel": "orderbook",
            "seq": 1710000001,
            "checksum": 2918476531,
            "bidChanges": [
              {
                "price": 0.55,
                "totalSize": 1500,
                "venues": {}
              }
            ],
            "askChanges": [
              {
                "price": 0.55,
                "totalSize": 1500,
                "venues": {}
              }
            ],
            "venueDeltaBooks": {},
            "venues": {},
            "midpoint": 0.55,
            "spread": 0.01,
            "tick": 0,
            "markSource": "local",
            "timestamp": 1710000000000
          }
        bindings: []
        extensions:
          - id: x-parser-unique-object-id
            value: orderbookDelta
    bindings: []
    extensions: *ref_0
  - &ref_3
    id: receiveSubscriptionConfirmation
    title: Receive subscription confirmation
    description: Subscription/unsubscription confirmations
    type: receive
    messages:
      - &ref_10
        id: subscribed
        payload:
          - name: Subscription confirmed
            type: object
            properties:
              - name: type
                type: string
                description: subscribed
                required: true
              - name: outcomeIds
                type: array
                required: false
                properties:
                  - name: item
                    type: string
                    required: false
              - name: marketIds
                type: array
                required: false
                properties:
                  - name: item
                    type: string
                    required: false
              - name: channel
                type: string
                required: true
        headers: []
        jsonPayloadSchema:
          title: Subscribed
          type: object
          required:
            - type
            - channel
          properties:
            type:
              const: subscribed
              type: string
              x-parser-schema-id: <anonymous-schema-146>
            outcomeIds:
              type: array
              items:
                type: string
                x-parser-schema-id: <anonymous-schema-148>
              x-parser-schema-id: <anonymous-schema-147>
            marketIds:
              type: array
              items:
                type: string
                x-parser-schema-id: <anonymous-schema-150>
              x-parser-schema-id: <anonymous-schema-149>
            channel:
              anyOf:
                - const: orderbook
                  type: string
                  x-parser-schema-id: <anonymous-schema-152>
                - const: trades
                  type: string
                  x-parser-schema-id: <anonymous-schema-153>
                - const: arb
                  type: string
                  x-parser-schema-id: <anonymous-schema-154>
                - const: arb-feed
                  type: string
                  x-parser-schema-id: <anonymous-schema-155>
              x-parser-schema-id: <anonymous-schema-151>
          x-parser-schema-id: <anonymous-schema-145>
        title: Subscription confirmed
        example: |-
          {
            "type": "subscribed",
            "outcomeIds": [
              "clv2abc123def456",
              "clv2xyz789ghi012"
            ],
            "marketIds": [
              "string"
            ],
            "channel": "orderbook"
          }
        bindings: []
        extensions:
          - id: x-parser-unique-object-id
            value: subscribed
      - &ref_11
        id: unsubscribed
        payload:
          - name: Unsubscription confirmed
            type: object
            properties:
              - name: type
                type: string
                description: unsubscribed
                required: true
              - name: outcomeIds
                type: array
                required: false
                properties:
                  - name: item
                    type: string
                    required: false
              - name: marketIds
                type: array
                required: false
                properties:
                  - name: item
                    type: string
                    required: false
              - name: channel
                type: string
                required: true
        headers: []
        jsonPayloadSchema:
          title: Unsubscribed
          type: object
          required:
            - type
            - channel
          properties:
            type:
              const: unsubscribed
              type: string
              x-parser-schema-id: <anonymous-schema-157>
            outcomeIds:
              type: array
              items:
                type: string
                x-parser-schema-id: <anonymous-schema-159>
              x-parser-schema-id: <anonymous-schema-158>
            marketIds:
              type: array
              items:
                type: string
                x-parser-schema-id: <anonymous-schema-161>
              x-parser-schema-id: <anonymous-schema-160>
            channel:
              anyOf:
                - const: orderbook
                  type: string
                  x-parser-schema-id: <anonymous-schema-163>
                - const: trades
                  type: string
                  x-parser-schema-id: <anonymous-schema-164>
                - const: arb
                  type: string
                  x-parser-schema-id: <anonymous-schema-165>
                - const: arb-feed
                  type: string
                  x-parser-schema-id: <anonymous-schema-166>
              x-parser-schema-id: <anonymous-schema-162>
          x-parser-schema-id: <anonymous-schema-156>
        title: Unsubscription confirmed
        example: |-
          {
            "type": "unsubscribed",
            "outcomeIds": [
              "clv2abc123def456",
              "clv2xyz789ghi012"
            ],
            "marketIds": [
              "string"
            ],
            "channel": "orderbook"
          }
        bindings: []
        extensions:
          - id: x-parser-unique-object-id
            value: unsubscribed
    bindings: []
    extensions: *ref_0
  - &ref_4
    id: receiveMarketResolved
    title: Receive market resolved
    description: Terminal market resolution event for a subscribed outcome
    type: receive
    messages:
      - &ref_12
        id: marketResolved
        payload:
          - name: Market resolved
            description: >-
              Terminal resolution event for a subscribed outcome. Delivered once
              per outcome subscription; after delivery, the gateway closes out
              the orderbook channel for that outcome.
            type: object
            properties:
              - name: type
                type: string
                description: market_resolved
                required: true
              - name: outcomeId
                type: string
                description: Outcome ID
                required: true
              - name: status
                type: string
                required: true
              - name: result
                type: string
                description: Winning outcome label, or null if unknown
                required: true
              - name: outcomes
                type: array
                description: >-
                  Per-outcome resolution data (sibling outcomes for the same
                  market)
                required: true
                properties:
                  - name: label
                    type: string
                    required: true
                  - name: winner
                    type: boolean
                    required: false
                  - name: externalIdentifier
                    type: string
                    required: false
              - name: timestamp
                type: number
                required: true
        headers: []
        jsonPayloadSchema:
          title: MarketResolved
          type: object
          required:
            - type
            - outcomeId
            - status
            - result
            - outcomes
            - timestamp
          properties:
            type:
              const: market_resolved
              type: string
              x-parser-schema-id: <anonymous-schema-131>
            outcomeId:
              description: Outcome ID
              type: string
              x-parser-schema-id: <anonymous-schema-132>
            status:
              anyOf:
                - const: resolved
                  type: string
                  x-parser-schema-id: <anonymous-schema-134>
                - const: closed
                  type: string
                  x-parser-schema-id: <anonymous-schema-135>
              x-parser-schema-id: <anonymous-schema-133>
            result:
              description: Winning outcome label, or null if unknown
              anyOf:
                - type: string
                  x-parser-schema-id: <anonymous-schema-137>
                - type: 'null'
                  x-parser-schema-id: <anonymous-schema-138>
              x-parser-schema-id: <anonymous-schema-136>
            outcomes:
              description: >-
                Per-outcome resolution data (sibling outcomes for the same
                market)
              type: array
              items:
                type: object
                required:
                  - label
                properties:
                  label:
                    type: string
                    x-parser-schema-id: <anonymous-schema-141>
                  winner:
                    type: boolean
                    x-parser-schema-id: <anonymous-schema-142>
                  externalIdentifier:
                    type: string
                    x-parser-schema-id: <anonymous-schema-143>
                x-parser-schema-id: <anonymous-schema-140>
              x-parser-schema-id: <anonymous-schema-139>
            timestamp:
              type: number
              x-parser-schema-id: <anonymous-schema-144>
          x-parser-schema-id: <anonymous-schema-130>
        title: Market resolved
        description: >-
          Terminal resolution event for a subscribed outcome. Delivered once per
          outcome subscription; after delivery, the gateway closes out the
          orderbook channel for that outcome.
        example: |-
          {
            "type": "market_resolved",
            "outcomeId": "clv2abc123def456",
            "status": "resolved",
            "result": "Yes",
            "outcomes": [
              {
                "label": "Yes",
                "winner": true,
                "externalIdentifier": "0xabc123"
              }
            ],
            "timestamp": 1710000000000
          }
        bindings: []
        extensions:
          - id: x-parser-unique-object-id
            value: marketResolved
    bindings: []
    extensions: *ref_0
sendOperations:
  - *ref_1
  - *ref_2
  - *ref_3
  - *ref_4
receiveOperations:
  - *ref_5
  - *ref_6
  - *ref_7
sendMessages:
  - *ref_8
  - *ref_9
  - *ref_10
  - *ref_11
  - *ref_12
receiveMessages:
  - *ref_13
  - *ref_14
  - *ref_15
extensions:
  - id: x-parser-unique-object-id
    value: orderbook
securitySchemes:
  - id: appId
    name: appId
    type: userPassword
    description: >-
      App-level auth: pass appId as a query parameter on connect. Required for
      all connections. The appId must belong to an active app with matching
      allowed origins.
    extensions: []
  - id: jwt
    name: jwt
    type: http
    description: >-
      User-level auth: pass JWT as token query param on connect, or send {
      action: 'authenticate', token } mid-session. Required for user-specific
      events (orders, balances). Same JWT as the REST API.
    scheme: bearer
    bearerFormat: JWT
    extensions: []

````