{
  "openapi": "3.1.0",
  "info": {
    "title": "CantonCap API",
    "version": "1.0.0",
    "description": "Public market data, asset and issuer information, venue features, and data availability. Requests require an API key. Monetary values are exact decimal strings; stable asset IDs and Canton instrument identities identify assets."
  },
  "servers": [
    {
      "url": "https://api.cantoncap.cc",
      "description": "Production"
    },
    {
      "url": "http://localhost:3000",
      "description": "Local development"
    }
  ],
  "security": [
    {
      "apiKey": []
    }
  ],
  "tags": [
    {
      "name": "Simple",
      "description": "Convenience price lookups."
    },
    {
      "name": "Assets",
      "description": "Canonical assets, listings, prices, and history."
    },
    {
      "name": "Markets",
      "description": "Venue markets, observations, books, trades, and candles."
    },
    {
      "name": "Pools",
      "description": "AMM pool state, liquidity, and read-only quotes."
    },
    {
      "name": "Venues",
      "description": "Venue metadata, capabilities, and market coverage."
    },
    {
      "name": "Issuers",
      "description": "Curated issuers, evidence, and linked assets."
    },
    {
      "name": "Global",
      "description": "Cross-market CantonCap metrics."
    },
    {
      "name": "Status",
      "description": "Data availability and freshness."
    },
    {
      "name": "Activity",
      "description": "Stored volume and execution-count history."
    }
  ],
  "paths": {
    "/v1/activity/markets/latest": {
      "get": {
        "operationId": "getLatestMarketActivity",
        "summary": "Get current activity for up to 100 markets",
        "tags": [
          "Activity"
        ],
        "description": "One current stored snapshot per requested eligible market, in request order. Missing or ineligible markets are omitted. Each measurement keeps its own as_of, coverage and methods, exactly as in a single-market current read. No historical ranges or calculations on reads.",
        "parameters": [
          {
            "in": "query",
            "name": "ids",
            "required": true,
            "description": "One to 100 distinct stable market IDs, comma-separated. Each ID is at most 255 characters. Missing or ineligible markets are omitted.",
            "schema": {
              "type": "string",
              "maxLength": 25599,
              "pattern": "^mkt_[A-Za-z0-9_-]+(?:,mkt_[A-Za-z0-9_-]+)*$"
            }
          },
          {
            "in": "query",
            "name": "network",
            "required": false,
            "schema": {
              "type": "string",
              "default": "mainnet",
              "enum": [
                "mainnet",
                "testnet",
                "devnet"
              ]
            }
          },
          {
            "in": "query",
            "name": "window",
            "required": false,
            "schema": {
              "type": "string",
              "default": "24h",
              "enum": [
                "24h",
                "7d",
                "30d"
              ]
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Current eligible market snapshots in request order.",
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ActivityResponse"
                }
              }
            }
          },
          "default": {
            "$ref": "#/components/responses/DefaultError"
          }
        }
      }
    },
    "/v1/activity/{entity_kind}/{entity_id}": {
      "get": {
        "operationId": "getActivity",
        "summary": "Get rolling volume and execution-count history",
        "tags": [
          "Activity"
        ],
        "description": "Newest-first stored 24h, 7d or 30d activity. Default limit 1 returns the latest snapshot; in that current read a measurement the latest snapshot lacks keeps its latest usable value with that value's own as_of. time_start is inclusive and time_end exclusive; use the oldest returned as_of as the next time_end. History returns stored snapshots unchanged. Reported and CCXT-derived USD remain separate. Missing fields are null. Coverage is per measurement. No calculations are performed on reads.",
        "parameters": [
          {
            "schema": {
              "default": "mainnet",
              "type": "string",
              "enum": [
                "mainnet",
                "testnet",
                "devnet"
              ]
            },
            "in": "query",
            "name": "network",
            "required": false
          },
          {
            "schema": {
              "default": "24h",
              "type": "string",
              "enum": [
                "24h",
                "7d",
                "30d"
              ]
            },
            "in": "query",
            "name": "window",
            "required": false
          },
          {
            "schema": {
              "type": "string",
              "format": "date-time",
              "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
            },
            "in": "query",
            "name": "time_start",
            "required": false
          },
          {
            "schema": {
              "type": "string",
              "format": "date-time",
              "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
            },
            "in": "query",
            "name": "time_end",
            "required": false
          },
          {
            "schema": {
              "default": 1,
              "type": "integer",
              "minimum": 1,
              "maximum": 500
            },
            "in": "query",
            "name": "limit",
            "required": false
          },
          {
            "schema": {
              "type": "string",
              "enum": [
                "market",
                "asset",
                "venue",
                "global"
              ]
            },
            "in": "path",
            "name": "entity_kind",
            "required": true
          },
          {
            "schema": {
              "type": "string",
              "pattern": "^[A-Za-z0-9_-]{1,255}$"
            },
            "in": "path",
            "name": "entity_id",
            "required": true
          }
        ],
        "responses": {
          "200": {
            "description": "Stored volume and execution-count snapshots, newest first.",
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ActivityResponse"
                }
              }
            }
          },
          "default": {
            "$ref": "#/components/responses/DefaultError"
          }
        }
      }
    },
    "/v1/simple/price": {
      "get": {
        "tags": [
          "Simple"
        ],
        "operationId": "getSimplePrice",
        "summary": "Get latest prices for stable asset IDs",
        "parameters": [
          {
            "schema": {
              "type": "string",
              "pattern": "^ast_[A-Za-z0-9_-]+(?:,ast_[A-Za-z0-9_-]+)*$"
            },
            "in": "query",
            "name": "ids",
            "required": true,
            "description": "One to 100 distinct stable CantonCap asset IDs, comma-separated. Unknown and unpublished IDs are omitted without revealing private records."
          },
          {
            "schema": {
              "default": "USD",
              "type": "string",
              "pattern": "^[A-Z]{3,12}(?:,[A-Z]{3,12}){0,2}$"
            },
            "in": "query",
            "name": "convert",
            "required": false,
            "description": "One ISO-style quote currency code, or a comma-delimited set where the operation explicitly documents a bounded collection."
          },
          {
            "$ref": "#/components/parameters/IfNoneMatch"
          }
        ],
        "responses": {
          "200": {
            "$ref": "#/components/responses/SimplePrice"
          },
          "304": {
            "$ref": "#/components/responses/NotModified"
          },
          "default": {
            "$ref": "#/components/responses/DefaultError"
          }
        },
        "x-cantoncap-comma-separated-parameters": {
          "ids": {
            "maximumItems": 100,
            "uniqueItems": true,
            "itemPattern": "^ast_[A-Za-z0-9_-]+$"
          },
          "convert": {
            "maximumItems": 3,
            "uniqueItems": true,
            "itemPattern": "^[A-Z]{3,12}$"
          }
        }
      }
    },
    "/v1/assets/map": {
      "get": {
        "tags": [
          "Assets"
        ],
        "operationId": "getAssetMap",
        "summary": "Map venue-listed assets to stable IDs and Canton instrument identities",
        "description": "Includes assets listed in a trading market on a supported venue visible to the caller. Registry-only instruments are excluded, including when listing_status=all. A USD price or order book is not required.",
        "parameters": [
          {
            "schema": {
              "default": "mainnet",
              "type": "string",
              "enum": [
                "mainnet",
                "testnet",
                "devnet"
              ]
            },
            "in": "query",
            "name": "network",
            "required": false
          },
          {
            "schema": {
              "default": "active",
              "type": "string",
              "enum": [
                "active",
                "inactive",
                "untracked",
                "suspended",
                "all"
              ]
            },
            "in": "query",
            "name": "listing_status",
            "required": false
          },
          {
            "schema": {
              "type": "string",
              "minLength": 1,
              "maxLength": 100
            },
            "in": "query",
            "name": "symbol",
            "required": false
          },
          {
            "schema": {
              "type": "string",
              "minLength": 1,
              "maxLength": 1024
            },
            "in": "query",
            "name": "instrument_admin",
            "required": false
          },
          {
            "schema": {
              "type": "string",
              "minLength": 1,
              "maxLength": 1024
            },
            "in": "query",
            "name": "instrument_id",
            "required": false
          },
          {
            "schema": {
              "default": 100,
              "type": "integer",
              "minimum": 1,
              "maximum": 500
            },
            "in": "query",
            "name": "limit",
            "required": false,
            "description": "Maximum page size, bounded by the caller's plan."
          },
          {
            "schema": {
              "type": "string",
              "minLength": 1,
              "maxLength": 8192,
              "pattern": "^[A-Za-z0-9_-]+$"
            },
            "in": "query",
            "name": "cursor",
            "required": false,
            "description": "Opaque continuation cursor from the previous response."
          },
          {
            "$ref": "#/components/parameters/IfNoneMatch"
          }
        ],
        "responses": {
          "200": {
            "$ref": "#/components/responses/AssetMapList"
          },
          "304": {
            "$ref": "#/components/responses/NotModified"
          },
          "default": {
            "$ref": "#/components/responses/DefaultError"
          }
        }
      }
    },
    "/v1/assets/listings/latest": {
      "get": {
        "tags": [
          "Assets"
        ],
        "operationId": "getLatestAssetListings",
        "summary": "Get ranked latest asset market data",
        "x-cantoncap-comma-separated-parameters": {
          "convert": {
            "maximumItems": 3,
            "uniqueItems": true,
            "itemPattern": "^[A-Z]{3,12}$"
          }
        },
        "parameters": [
          {
            "schema": {
              "default": "mainnet",
              "type": "string",
              "enum": [
                "mainnet",
                "testnet",
                "devnet"
              ]
            },
            "in": "query",
            "name": "network",
            "required": false
          },
          {
            "schema": {
              "default": "USD",
              "type": "string",
              "pattern": "^[A-Z]{3,12}(?:,[A-Z]{3,12}){0,2}$"
            },
            "in": "query",
            "name": "convert",
            "required": false,
            "description": "One ISO-style quote currency code, or a comma-delimited set where the operation explicitly documents a bounded collection."
          },
          {
            "schema": {
              "default": "fdv",
              "type": "string",
              "enum": [
                "market_cap",
                "fdv",
                "volume_24h",
                "liquidity",
                "price_change_24h",
                "symbol"
              ]
            },
            "in": "query",
            "name": "sort",
            "required": false
          },
          {
            "schema": {
              "default": "desc",
              "type": "string",
              "enum": [
                "asc",
                "desc"
              ]
            },
            "in": "query",
            "name": "sort_dir",
            "required": false
          },
          {
            "schema": {
              "default": 100,
              "type": "integer",
              "minimum": 1,
              "maximum": 500
            },
            "in": "query",
            "name": "limit",
            "required": false,
            "description": "Maximum page size, bounded by the caller's plan."
          },
          {
            "schema": {
              "type": "string",
              "minLength": 1,
              "maxLength": 4096,
              "pattern": "^[A-Za-z0-9_-]+$"
            },
            "in": "query",
            "name": "cursor",
            "required": false,
            "description": "Opaque continuation cursor from the previous response."
          },
          {
            "$ref": "#/components/parameters/IfNoneMatch"
          }
        ],
        "responses": {
          "200": {
            "$ref": "#/components/responses/AssetListingList"
          },
          "304": {
            "$ref": "#/components/responses/NotModified"
          },
          "default": {
            "$ref": "#/components/responses/DefaultError"
          }
        }
      }
    },
    "/v1/assets/info": {
      "get": {
        "tags": [
          "Assets"
        ],
        "operationId": "getAssetInfoBatch",
        "summary": "Get descriptive token metadata for stable asset IDs",
        "parameters": [
          {
            "schema": {
              "type": "string",
              "enum": [
                "registry"
              ]
            },
            "in": "query",
            "name": "include",
            "required": false
          },
          {
            "schema": {
              "type": "string",
              "pattern": "^ast_[A-Za-z0-9_-]+(?:,ast_[A-Za-z0-9_-]+)*$"
            },
            "in": "query",
            "name": "ids",
            "required": true,
            "description": "One to 100 distinct stable CantonCap asset IDs, comma-separated. Unknown and unpublished IDs are omitted without revealing private records."
          },
          {
            "$ref": "#/components/parameters/IfNoneMatch"
          }
        ],
        "responses": {
          "200": {
            "$ref": "#/components/responses/AssetList"
          },
          "304": {
            "$ref": "#/components/responses/NotModified"
          },
          "default": {
            "$ref": "#/components/responses/DefaultError"
          }
        },
        "x-cantoncap-comma-separated-parameters": {
          "ids": {
            "maximumItems": 100,
            "uniqueItems": true,
            "itemPattern": "^ast_[A-Za-z0-9_-]+$"
          }
        }
      }
    },
    "/v1/assets/{asset_id}": {
      "get": {
        "tags": [
          "Assets"
        ],
        "operationId": "getAsset",
        "summary": "Get one asset by stable ID",
        "parameters": [
          {
            "schema": {
              "type": "string",
              "enum": [
                "registry"
              ]
            },
            "in": "query",
            "name": "include",
            "required": false
          },
          {
            "schema": {
              "type": "string",
              "pattern": "^ast_[A-Za-z0-9_-]+$"
            },
            "in": "path",
            "name": "asset_id",
            "required": true,
            "description": "Stable opaque CantonCap asset ID."
          },
          {
            "$ref": "#/components/parameters/IfNoneMatch"
          }
        ],
        "responses": {
          "200": {
            "$ref": "#/components/responses/Asset"
          },
          "304": {
            "$ref": "#/components/responses/NotModified"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "default": {
            "$ref": "#/components/responses/DefaultError"
          }
        }
      }
    },
    "/v1/assets/quotes/latest": {
      "get": {
        "tags": [
          "Assets"
        ],
        "operationId": "getLatestAssetQuotes",
        "summary": "Get latest aggregate quotes for stable asset IDs",
        "parameters": [
          {
            "schema": {
              "type": "string",
              "pattern": "^ast_[A-Za-z0-9_-]+(?:,ast_[A-Za-z0-9_-]+)*$"
            },
            "in": "query",
            "name": "ids",
            "required": true,
            "description": "One to 100 distinct stable CantonCap asset IDs, comma-separated. Unknown and unpublished IDs are omitted without revealing private records."
          },
          {
            "schema": {
              "default": "USD",
              "type": "string",
              "pattern": "^[A-Z]{3,12}(?:,[A-Z]{3,12}){0,2}$"
            },
            "in": "query",
            "name": "convert",
            "required": false,
            "description": "One ISO-style quote currency code, or a comma-delimited set where the operation explicitly documents a bounded collection."
          },
          {
            "schema": {
              "default": "1h,24h,7d,30d",
              "type": "string",
              "pattern": "^(?:1h|24h|7d|30d)(?:,(?:1h|24h|7d|30d))*$"
            },
            "in": "query",
            "name": "price_change_periods",
            "required": false
          },
          {
            "$ref": "#/components/parameters/IfNoneMatch"
          }
        ],
        "responses": {
          "200": {
            "$ref": "#/components/responses/AssetQuoteList"
          },
          "304": {
            "$ref": "#/components/responses/NotModified"
          },
          "default": {
            "$ref": "#/components/responses/DefaultError"
          }
        },
        "x-cantoncap-comma-separated-parameters": {
          "ids": {
            "maximumItems": 100,
            "uniqueItems": true,
            "itemPattern": "^ast_[A-Za-z0-9_-]+$"
          },
          "convert": {
            "maximumItems": 3,
            "uniqueItems": true,
            "itemPattern": "^[A-Z]{3,12}$"
          }
        }
      }
    },
    "/v1/assets/quotes/historical": {
      "get": {
        "tags": [
          "Assets"
        ],
        "operationId": "getHistoricalAssetQuotes",
        "summary": "Get historical quote snapshots",
        "description": "Newest-first sampled reference-price history of one to 100 assets in one quote currency. Each point is the latest eligible quote calculated in one UTC interval; intervals without a quote are omitted, never filled. A point's `timestamp` is the instant its quote was calculated: its `price` and `fdv` are both valued at that instant, and `interval`, `time_start` (inclusive) and `time_end` (exclusive) apply to it.\n\n`fdv` is the exact decimal product of the point's `price` and the registry total supply known when the quote was calculated: the latest approved observation that applied and had been observed by `timestamp`, provided its as-of time lies within the supply freshness window (24 hours by default, stored with the calculation) before `timestamp`. Supply observed later, corrections included, never revalues a past point; a new quote uses it. `fdv` is null when that supply was missing or stale, when the quote predates FDV calculation, or when the supply's registrar no longer publishes it to the caller; unavailable is never zero, and a valid zero supply gives an `fdv` of zero. `market_cap` is null: no reviewed circulating-supply methodology exists.\n\nEvery page re-applies current publication controls. A revoked quote is omitted; a withdrawn supply nulls `fdv` without hiding the price. A continuation cursor pins the query and the quotes retained before its first page, so later quotes never enter that traversal and pages never duplicate, omit or reorder points; a new query sees them. Use a cursor only with the query that returned it. `limit` bounds the points of all requested series together. A range spans at most 31 days, further bounded by plan history depth.",
        "parameters": [
          {
            "schema": {
              "type": "string",
              "pattern": "^ast_[A-Za-z0-9_-]+(?:,ast_[A-Za-z0-9_-]+)*$"
            },
            "in": "query",
            "name": "ids",
            "required": true,
            "description": "One to 100 distinct stable CantonCap asset IDs, comma-separated. Unknown and unpublished IDs are omitted without revealing private records."
          },
          {
            "schema": {
              "default": "USD",
              "type": "string",
              "pattern": "^[A-Z]{3,12}$"
            },
            "in": "query",
            "name": "convert",
            "required": false,
            "description": "One ISO-style quote currency code, or a comma-delimited set where the operation explicitly documents a bounded collection."
          },
          {
            "schema": {
              "default": "1h",
              "type": "string",
              "enum": [
                "1m",
                "5m",
                "10m",
                "15m",
                "30m",
                "1h",
                "4h",
                "1d",
                "7d",
                "1w"
              ]
            },
            "in": "query",
            "name": "interval",
            "required": false,
            "description": "UTC-aligned candle duration or historical quote sampling interval. Results are newest first; missing buckets are omitted. Quote sampling selects the latest eligible measurement in each interval."
          },
          {
            "schema": {
              "type": "string",
              "format": "date-time"
            },
            "in": "query",
            "name": "time_start",
            "required": false,
            "description": "Inclusive UTC range start; defaults to 24 hours before time_end. At most 31 days per request, further bounded by plan history depth."
          },
          {
            "schema": {
              "type": "string",
              "format": "date-time"
            },
            "in": "query",
            "name": "time_end",
            "required": false,
            "description": "Exclusive UTC range end; defaults to request time and is pinned by continuation cursors."
          },
          {
            "schema": {
              "default": 100,
              "type": "integer",
              "minimum": 1,
              "maximum": 500
            },
            "in": "query",
            "name": "limit",
            "required": false,
            "description": "Maximum page size, bounded by the caller's plan."
          },
          {
            "schema": {
              "type": "string",
              "minLength": 1,
              "maxLength": 8192,
              "pattern": "^[A-Za-z0-9_-]+$"
            },
            "in": "query",
            "name": "cursor",
            "required": false,
            "description": "Opaque continuation cursor from the previous response."
          }
        ],
        "responses": {
          "200": {
            "$ref": "#/components/responses/HistoricalQuoteList"
          },
          "default": {
            "$ref": "#/components/responses/DefaultError"
          }
        },
        "x-cantoncap-comma-separated-parameters": {
          "ids": {
            "maximumItems": 100,
            "uniqueItems": true,
            "itemPattern": "^ast_[A-Za-z0-9_-]+$"
          }
        }
      }
    },
    "/v1/assets/ohlcv/historical": {
      "get": {
        "tags": [
          "Assets"
        ],
        "operationId": "getHistoricalAssetOhlcv",
        "summary": "Get aggregate asset OHLCV candles",
        "description": "Closed CantonCap bars built by background workers from reference-price observations and served from storage; no candle is calculated at request time. OHLC prices are in `convert`; volume and volume_usd are always the USD notional of the asset's observed public trades across its markets, with volume_coverage separating a verified zero from a partial subtotal or an unavailable measurement. A projection that is not yet published, is behind the requested range or was invalidated by a publication-policy change returns a retryable 503 source_unavailable. Cursors from earlier releases return 400 invalid_request.",
        "parameters": [
          {
            "schema": {
              "type": "string",
              "pattern": "^ast_[A-Za-z0-9_-]+(?:,ast_[A-Za-z0-9_-]+)*$"
            },
            "in": "query",
            "name": "ids",
            "required": true,
            "description": "One to 100 distinct stable CantonCap asset IDs, comma-separated. Unknown and unpublished IDs are omitted without revealing private records."
          },
          {
            "schema": {
              "default": "USD",
              "type": "string",
              "pattern": "^[A-Z]{3,12}$"
            },
            "in": "query",
            "name": "convert",
            "required": false,
            "description": "One ISO-style quote currency code, or a comma-delimited set where the operation explicitly documents a bounded collection."
          },
          {
            "schema": {
              "default": "1h",
              "type": "string",
              "enum": [
                "1m",
                "5m",
                "10m",
                "15m",
                "30m",
                "1h",
                "4h",
                "1d",
                "7d",
                "1w"
              ]
            },
            "in": "query",
            "name": "interval",
            "required": false,
            "description": "UTC-aligned candle duration or historical quote sampling interval. Results are newest first; missing buckets are omitted. Quote sampling selects the latest eligible measurement in each interval."
          },
          {
            "schema": {
              "type": "string",
              "format": "date-time"
            },
            "in": "query",
            "name": "time_start",
            "required": false,
            "description": "Inclusive UTC range start; defaults to 24 hours before time_end. At most 31 days per request, further bounded by plan history depth."
          },
          {
            "schema": {
              "type": "string",
              "format": "date-time"
            },
            "in": "query",
            "name": "time_end",
            "required": false,
            "description": "Exclusive UTC range end; defaults to request time and is pinned by continuation cursors."
          },
          {
            "schema": {
              "default": 100,
              "type": "integer",
              "minimum": 1,
              "maximum": 500
            },
            "in": "query",
            "name": "limit",
            "required": false,
            "description": "Maximum page size, bounded by the caller's plan."
          },
          {
            "schema": {
              "type": "string",
              "minLength": 1,
              "maxLength": 8192,
              "pattern": "^[A-Za-z0-9_-]+$"
            },
            "in": "query",
            "name": "cursor",
            "required": false,
            "description": "Opaque continuation cursor from the previous response."
          }
        ],
        "responses": {
          "200": {
            "$ref": "#/components/responses/AssetCandleList"
          },
          "default": {
            "$ref": "#/components/responses/DefaultError"
          }
        },
        "x-cantoncap-comma-separated-parameters": {
          "ids": {
            "maximumItems": 100,
            "uniqueItems": true,
            "itemPattern": "^ast_[A-Za-z0-9_-]+$"
          }
        }
      }
    },
    "/v1/assets/{asset_id}/market-chart": {
      "get": {
        "tags": [
          "Assets"
        ],
        "operationId": "getAssetMarketChart",
        "summary": "Get price, FDV, market-cap, and volume series for one asset",
        "description": "Newest-first chart series of one asset, sampled from the same quotes as `GET /v1/assets/quotes/historical`: for the same asset, currency, interval, range and page size, every page holds the same points with the same `timestamp`, `price`, `market_cap` and `fdv`, and `volume` is that endpoint's `volume_24h` (rolling 24-hour volume, not interval volume). A point's `timestamp` is the instant its quote was calculated, when its `price` and `fdv` are valued. `fdv` follows the same rules: the exact product of `price` and the total supply known at `timestamp`, null when that supply was missing, stale, not calculated or is no longer published to the caller, and never revalued by later observations. `market_cap` is null. `last_updated_at` is the newest point's `timestamp` on the page.\n\nEvery page re-applies current publication controls, and a continuation cursor pins the query and the quotes retained before its first page. A request with no published point on the requested page returns 404 without saying why: an unknown or unpublished asset, a range without quotes, or a continuation whose remaining quotes were withdrawn. A range spans at most 31 days, further bounded by plan history depth.",
        "parameters": [
          {
            "schema": {
              "default": "USD",
              "type": "string",
              "pattern": "^[A-Z]{3,12}$"
            },
            "in": "query",
            "name": "convert",
            "required": false,
            "description": "One ISO-style quote currency code, or a comma-delimited set where the operation explicitly documents a bounded collection."
          },
          {
            "schema": {
              "default": "1h",
              "type": "string",
              "enum": [
                "1m",
                "5m",
                "10m",
                "15m",
                "30m",
                "1h",
                "4h",
                "1d",
                "7d",
                "1w"
              ]
            },
            "in": "query",
            "name": "interval",
            "required": false,
            "description": "UTC-aligned candle duration or historical quote sampling interval. Results are newest first; missing buckets are omitted. Quote sampling selects the latest eligible measurement in each interval."
          },
          {
            "schema": {
              "type": "string",
              "format": "date-time"
            },
            "in": "query",
            "name": "time_start",
            "required": false,
            "description": "Inclusive UTC range start; defaults to 24 hours before time_end. At most 31 days per request, further bounded by plan history depth."
          },
          {
            "schema": {
              "type": "string",
              "format": "date-time"
            },
            "in": "query",
            "name": "time_end",
            "required": false,
            "description": "Exclusive UTC range end; defaults to request time and is pinned by continuation cursors."
          },
          {
            "schema": {
              "default": 100,
              "type": "integer",
              "minimum": 1,
              "maximum": 500
            },
            "in": "query",
            "name": "limit",
            "required": false,
            "description": "Maximum page size, bounded by the caller's plan."
          },
          {
            "schema": {
              "type": "string",
              "minLength": 1,
              "maxLength": 8192,
              "pattern": "^[A-Za-z0-9_-]+$"
            },
            "in": "query",
            "name": "cursor",
            "required": false,
            "description": "Opaque continuation cursor from the previous response."
          },
          {
            "schema": {
              "type": "string",
              "pattern": "^ast_[A-Za-z0-9_-]+$"
            },
            "in": "path",
            "name": "asset_id",
            "required": true,
            "description": "Stable opaque CantonCap asset ID."
          }
        ],
        "responses": {
          "200": {
            "$ref": "#/components/responses/MarketChart"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "default": {
            "$ref": "#/components/responses/DefaultError"
          }
        }
      }
    },
    "/v1/assets/{asset_id}/supply/historical": {
      "get": {
        "tags": [
          "Assets"
        ],
        "operationId": "getHistoricalAssetSupply",
        "summary": "Get the reported total supply history of one asset",
        "description": "Newest-first sampled history of the total supply that the Digital Asset registry reports for one asset. Each point contains only `supply`, the exact retained decimal, and `timestamp`, the UTC instant at which the registry reports that supply applies (its as-of time). Ingestion times, provenance and freshness evidence stay internal.\n\nIntervals are UTC and epoch-aligned, and `7d`/`1w` intervals start on Monday 00:00 UTC. An interval contains the timestamps from its start, inclusive, to its end, exclusive; `time_start` is inclusive and `time_end` exclusive on the same timestamp. Each interval with at least one eligible observation returns the observation with the latest timestamp. When several observations report the same timestamp, the most recently retained revision (a correction or replay) is returned, and identical observation times fall back to retention order, so results are deterministic. Supply changes inside one interval are represented by its last value only; request a smaller interval to see more of them.\n\nIntervals without an eligible observation are omitted: no zero, carried-forward or interpolated value is invented. An empty `points` array means no eligible observation in the range, not a zero supply; repeated unchanged observations appear as one point per interval with the same `supply`. This is not a complete mint/burn history, circulating supply or maximum supply. An observation whose as-of time is later than its own observation time is not published. A point reports the latest retained revision of its as-of time, not what was known at that time.\n\nOnly registry observations of an active asset approved under the registrar's current publication policy are published, with the asset's own publication. The asset must be published to the caller, otherwise the response is 404 without revealing whether it exists. Every page re-applies the current policy, so a revocation or opt-out withdraws points on the next page. A continuation cursor pins the asset, interval, range and observation boundary of its first page: observations, corrections and late observations retained afterwards never enter that traversal, so pages never duplicate, omit or reorder the selected history. A range spans at most 31 days; a request reading more than 100,000 eligible observations is rejected as unsupported.",
        "parameters": [
          {
            "schema": {
              "default": "1h",
              "type": "string",
              "enum": [
                "1m",
                "5m",
                "10m",
                "15m",
                "30m",
                "1h",
                "4h",
                "1d",
                "7d",
                "1w"
              ]
            },
            "in": "query",
            "name": "interval",
            "required": false,
            "description": "UTC-aligned sampling interval of the supply as-of timestamp. Results are newest first; intervals without an eligible observation are omitted."
          },
          {
            "schema": {
              "type": "string",
              "format": "date-time"
            },
            "in": "query",
            "name": "time_start",
            "required": false,
            "description": "Inclusive UTC start of the supply as-of range; defaults to 24 hours before time_end. At most 31 days per request, further bounded by plan history depth."
          },
          {
            "schema": {
              "type": "string",
              "format": "date-time"
            },
            "in": "query",
            "name": "time_end",
            "required": false,
            "description": "Exclusive UTC end of the supply as-of range; defaults to request time and is pinned by continuation cursors."
          },
          {
            "schema": {
              "default": 100,
              "type": "integer",
              "minimum": 1,
              "maximum": 500
            },
            "in": "query",
            "name": "limit",
            "required": false,
            "description": "Maximum number of points per page, bounded by the caller's plan."
          },
          {
            "schema": {
              "type": "string",
              "minLength": 1,
              "maxLength": 8192,
              "pattern": "^[A-Za-z0-9_-]+$"
            },
            "in": "query",
            "name": "cursor",
            "required": false,
            "description": "Opaque continuation cursor from the previous response. It must be used with the same asset, interval and range."
          },
          {
            "schema": {
              "type": "string",
              "pattern": "^ast_[A-Za-z0-9_-]+$"
            },
            "in": "path",
            "name": "asset_id",
            "required": true,
            "description": "Stable opaque CantonCap asset ID."
          }
        ],
        "responses": {
          "200": {
            "$ref": "#/components/responses/HistoricalSupply"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "default": {
            "$ref": "#/components/responses/DefaultError"
          }
        }
      }
    },
    "/v1/assets/market-pairs/latest": {
      "get": {
        "tags": [
          "Assets"
        ],
        "operationId": "getLatestAssetMarketPairs",
        "summary": "Get market pairs with current price, volume, and liquidity",
        "x-cantoncap-comma-separated-parameters": {
          "ids": {
            "maximumItems": 100,
            "uniqueItems": true,
            "itemPattern": "^ast_[A-Za-z0-9_-]+$"
          }
        },
        "parameters": [
          {
            "schema": {
              "type": "string",
              "pattern": "^ast_[A-Za-z0-9_-]+(?:,ast_[A-Za-z0-9_-]+)*$"
            },
            "in": "query",
            "name": "ids",
            "required": true,
            "description": "One to 100 distinct stable CantonCap asset IDs, comma-separated. Unknown and unpublished IDs are omitted without revealing private records."
          },
          {
            "schema": {
              "type": "string",
              "enum": [
                "temple",
                "cantex",
                "oneswap",
                "silvana",
                "tradecraft",
                "kora",
                "rocky",
                "send"
              ]
            },
            "in": "query",
            "name": "venue_id",
            "required": false
          },
          {
            "schema": {
              "default": "mainnet",
              "type": "string",
              "enum": [
                "mainnet",
                "testnet",
                "devnet"
              ]
            },
            "in": "query",
            "name": "network",
            "required": false
          },
          {
            "schema": {
              "type": "string",
              "enum": [
                "amm",
                "order_book",
                "order_book_rfq",
                "hybrid"
              ]
            },
            "in": "query",
            "name": "model",
            "required": false
          },
          {
            "schema": {
              "type": "string",
              "enum": [
                "amm",
                "clmm",
                "orderbook",
                "hybrid"
              ]
            },
            "in": "query",
            "name": "category",
            "required": false
          },
          {
            "schema": {
              "type": "string",
              "pattern": "^ast_[A-Za-z0-9_-]+$"
            },
            "in": "query",
            "name": "quote_asset_id",
            "required": false
          },
          {
            "schema": {
              "default": 100,
              "type": "integer",
              "minimum": 1,
              "maximum": 100
            },
            "in": "query",
            "name": "limit",
            "required": false,
            "description": "Maximum page size, bounded by the caller's plan."
          },
          {
            "schema": {
              "type": "string",
              "minLength": 1,
              "pattern": "^[A-Za-z0-9_-]+$"
            },
            "in": "query",
            "name": "cursor",
            "required": false,
            "description": "Opaque continuation cursor from the previous response."
          },
          {
            "$ref": "#/components/parameters/IfNoneMatch"
          }
        ],
        "responses": {
          "200": {
            "$ref": "#/components/responses/MarketPairList"
          },
          "304": {
            "$ref": "#/components/responses/NotModified"
          },
          "default": {
            "$ref": "#/components/responses/DefaultError"
          }
        }
      }
    },
    "/v1/markets": {
      "get": {
        "tags": [
          "Markets"
        ],
        "operationId": "listMarkets",
        "summary": "List venue markets",
        "parameters": [
          {
            "schema": {
              "type": "string",
              "enum": [
                "temple",
                "cantex",
                "oneswap",
                "silvana",
                "tradecraft",
                "kora",
                "rocky",
                "send"
              ]
            },
            "in": "query",
            "name": "venue_id",
            "required": false
          },
          {
            "schema": {
              "type": "string",
              "pattern": "^ast_[A-Za-z0-9_-]+$"
            },
            "in": "query",
            "name": "asset_id",
            "required": false
          },
          {
            "schema": {
              "type": "string",
              "enum": [
                "amm",
                "order_book",
                "order_book_rfq",
                "hybrid"
              ]
            },
            "in": "query",
            "name": "model",
            "required": false
          },
          {
            "schema": {
              "type": "string",
              "enum": [
                "amm",
                "clmm",
                "orderbook",
                "hybrid"
              ]
            },
            "in": "query",
            "name": "category",
            "required": false
          },
          {
            "schema": {
              "type": "string",
              "enum": [
                "mainnet",
                "testnet",
                "devnet"
              ]
            },
            "in": "query",
            "name": "network",
            "required": false
          },
          {
            "schema": {
              "default": 100,
              "type": "integer",
              "minimum": 1,
              "maximum": 500
            },
            "in": "query",
            "name": "limit",
            "required": false,
            "description": "Maximum page size, bounded by the caller's plan."
          },
          {
            "schema": {
              "type": "string",
              "minLength": 1,
              "pattern": "^[A-Za-z0-9_-]+$"
            },
            "in": "query",
            "name": "cursor",
            "required": false,
            "description": "Opaque continuation cursor from the previous response."
          },
          {
            "$ref": "#/components/parameters/IfNoneMatch"
          }
        ],
        "responses": {
          "200": {
            "$ref": "#/components/responses/MarketList"
          },
          "304": {
            "$ref": "#/components/responses/NotModified"
          },
          "default": {
            "$ref": "#/components/responses/DefaultError"
          }
        }
      }
    },
    "/v1/markets/{market_id}": {
      "get": {
        "tags": [
          "Markets"
        ],
        "operationId": "getMarket",
        "summary": "Get market metadata and latest state",
        "parameters": [
          {
            "schema": {
              "type": "string",
              "pattern": "^mkt_[A-Za-z0-9_-]+$"
            },
            "in": "path",
            "name": "market_id",
            "required": true,
            "description": "Stable opaque CantonCap market ID."
          },
          {
            "$ref": "#/components/parameters/IfNoneMatch"
          }
        ],
        "responses": {
          "200": {
            "$ref": "#/components/responses/Market"
          },
          "304": {
            "$ref": "#/components/responses/NotModified"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "default": {
            "$ref": "#/components/responses/DefaultError"
          }
        }
      }
    },
    "/v1/markets/{market_id}/ticker": {
      "get": {
        "tags": [
          "Markets"
        ],
        "operationId": "getMarketTicker",
        "summary": "Get the latest venue ticker",
        "parameters": [
          {
            "schema": {
              "type": "string",
              "pattern": "^mkt_[A-Za-z0-9_-]+$"
            },
            "in": "path",
            "name": "market_id",
            "required": true,
            "description": "Stable opaque CantonCap market ID."
          },
          {
            "$ref": "#/components/parameters/IfNoneMatch"
          }
        ],
        "responses": {
          "200": {
            "$ref": "#/components/responses/Ticker"
          },
          "304": {
            "$ref": "#/components/responses/NotModified"
          },
          "default": {
            "$ref": "#/components/responses/DefaultError"
          }
        }
      }
    },
    "/v1/markets/{market_id}/orderbook": {
      "get": {
        "tags": [
          "Markets"
        ],
        "operationId": "getMarketOrderBook",
        "summary": "Get the latest public order-book snapshot",
        "parameters": [
          {
            "schema": {
              "default": 100,
              "type": "integer",
              "minimum": 1,
              "maximum": 1000
            },
            "in": "query",
            "name": "depth",
            "required": false
          },
          {
            "schema": {
              "type": "string",
              "pattern": "^mkt_[A-Za-z0-9_-]+$"
            },
            "in": "path",
            "name": "market_id",
            "required": true,
            "description": "Stable opaque CantonCap market ID."
          },
          {
            "$ref": "#/components/parameters/IfNoneMatch"
          }
        ],
        "responses": {
          "200": {
            "$ref": "#/components/responses/OrderBook"
          },
          "304": {
            "$ref": "#/components/responses/NotModified"
          },
          "422": {
            "$ref": "#/components/responses/UnsupportedCapability"
          },
          "default": {
            "$ref": "#/components/responses/DefaultError"
          }
        },
        "description": "Returns the public venue feed. Available quantities may exclude the source account’s own resting orders; available_quantity_excludes_own_orders identifies that convention. Full-depth levels are retained for 30 days; a market with no book snapshot observed in the last 29 days has no current order book and returns 404 not_found until the venue sends a new one."
      }
    },
    "/v1/markets/{market_id}/trades": {
      "get": {
        "tags": [
          "Markets"
        ],
        "operationId": "getMarketTrades",
        "summary": "Get public market trades and coverage",
        "parameters": [
          {
            "schema": {
              "type": "string",
              "format": "date-time"
            },
            "in": "query",
            "name": "time_start",
            "required": false,
            "description": "Inclusive UTC range start; defaults to 24 hours before time_end. At most 31 days per request, further bounded by plan history depth."
          },
          {
            "schema": {
              "type": "string",
              "format": "date-time"
            },
            "in": "query",
            "name": "time_end",
            "required": false,
            "description": "Exclusive UTC range end; defaults to request time and is pinned by continuation cursors."
          },
          {
            "schema": {
              "default": 100,
              "type": "integer",
              "minimum": 1,
              "maximum": 500
            },
            "in": "query",
            "name": "limit",
            "required": false,
            "description": "Maximum page size, bounded by the caller's plan."
          },
          {
            "schema": {
              "type": "string",
              "minLength": 1,
              "pattern": "^[A-Za-z0-9_-]+$"
            },
            "in": "query",
            "name": "cursor",
            "required": false,
            "description": "Opaque continuation cursor from the previous response."
          },
          {
            "schema": {
              "type": "string",
              "pattern": "^mkt_[A-Za-z0-9_-]+$"
            },
            "in": "path",
            "name": "market_id",
            "required": true,
            "description": "Stable opaque CantonCap market ID."
          }
        ],
        "responses": {
          "200": {
            "$ref": "#/components/responses/TradeList"
          },
          "default": {
            "$ref": "#/components/responses/DefaultError"
          }
        }
      }
    },
    "/v1/markets/{market_id}/ohlcv": {
      "get": {
        "tags": [
          "Markets"
        ],
        "operationId": "getMarketOhlcv",
        "summary": "Get venue or CantonCap-rollup candles",
        "description": "Stored venue candles, including a venue's forming bar, and closed CantonCap rollup bars built by background workers from canonical trades; no candle is calculated at request time. A projection that is not yet published, is behind the requested range or was invalidated by a publication-policy change returns a retryable 503 source_unavailable. Cursors from earlier releases return 400 invalid_request.",
        "parameters": [
          {
            "schema": {
              "default": "1h",
              "type": "string",
              "enum": [
                "1m",
                "5m",
                "10m",
                "15m",
                "30m",
                "1h",
                "4h",
                "1d",
                "7d",
                "1w"
              ]
            },
            "in": "query",
            "name": "interval",
            "required": false,
            "description": "UTC-aligned candle duration or historical quote sampling interval. Results are newest first; missing buckets are omitted. Quote sampling selects the latest eligible measurement in each interval."
          },
          {
            "schema": {
              "type": "string",
              "format": "date-time"
            },
            "in": "query",
            "name": "time_start",
            "required": false,
            "description": "Inclusive UTC range start; defaults to 24 hours before time_end. At most 31 days per request, further bounded by plan history depth."
          },
          {
            "schema": {
              "type": "string",
              "format": "date-time"
            },
            "in": "query",
            "name": "time_end",
            "required": false,
            "description": "Exclusive UTC range end; defaults to request time and is pinned by continuation cursors."
          },
          {
            "schema": {
              "default": 100,
              "type": "integer",
              "minimum": 1,
              "maximum": 500
            },
            "in": "query",
            "name": "limit",
            "required": false,
            "description": "Maximum page size, bounded by the caller's plan."
          },
          {
            "schema": {
              "type": "string",
              "minLength": 1,
              "pattern": "^[A-Za-z0-9_-]+$"
            },
            "in": "query",
            "name": "cursor",
            "required": false,
            "description": "Opaque continuation cursor from the previous response."
          },
          {
            "schema": {
              "type": "string",
              "pattern": "^mkt_[A-Za-z0-9_-]+$"
            },
            "in": "path",
            "name": "market_id",
            "required": true,
            "description": "Stable opaque CantonCap market ID."
          }
        ],
        "responses": {
          "200": {
            "$ref": "#/components/responses/CandleList"
          },
          "default": {
            "$ref": "#/components/responses/DefaultError"
          }
        }
      }
    },
    "/v1/markets/{market_id}/liquidity": {
      "get": {
        "tags": [
          "Markets"
        ],
        "operationId": "getMarketLiquidity",
        "summary": "Get the latest model-specific liquidity snapshot",
        "description": "Order-book liquidity is computed from a book snapshot observed in the last 29 days (full-depth levels are retained for 30 days). A market with no snapshot inside that window has no liquidity and returns 404 not_found.",
        "parameters": [
          {
            "schema": {
              "type": "string",
              "pattern": "^mkt_[A-Za-z0-9_-]+$"
            },
            "in": "path",
            "name": "market_id",
            "required": true,
            "description": "Stable opaque CantonCap market ID."
          },
          {
            "$ref": "#/components/parameters/IfNoneMatch"
          }
        ],
        "responses": {
          "200": {
            "$ref": "#/components/responses/Liquidity"
          },
          "304": {
            "$ref": "#/components/responses/NotModified"
          },
          "default": {
            "$ref": "#/components/responses/DefaultError"
          }
        }
      }
    },
    "/v1/pools": {
      "get": {
        "tags": [
          "Pools"
        ],
        "operationId": "listPools",
        "summary": "List liquidity pools and their asset pairs",
        "parameters": [
          {
            "schema": {
              "type": "string",
              "enum": [
                "temple",
                "cantex",
                "oneswap",
                "silvana",
                "tradecraft",
                "kora",
                "rocky",
                "send"
              ]
            },
            "in": "query",
            "name": "venue_id",
            "required": false
          },
          {
            "schema": {
              "type": "string",
              "pattern": "^ast_[A-Za-z0-9_-]+$"
            },
            "in": "query",
            "name": "asset_id",
            "required": false
          },
          {
            "schema": {
              "type": "string",
              "enum": [
                "mainnet",
                "testnet",
                "devnet"
              ]
            },
            "in": "query",
            "name": "network",
            "required": false
          },
          {
            "schema": {
              "default": 100,
              "type": "integer",
              "minimum": 1,
              "maximum": 500
            },
            "in": "query",
            "name": "limit",
            "required": false,
            "description": "Maximum page size, bounded by the caller's plan."
          },
          {
            "schema": {
              "type": "string",
              "minLength": 1,
              "pattern": "^[A-Za-z0-9_-]+$"
            },
            "in": "query",
            "name": "cursor",
            "required": false,
            "description": "Opaque continuation cursor from the previous response."
          },
          {
            "$ref": "#/components/parameters/IfNoneMatch"
          }
        ],
        "responses": {
          "200": {
            "$ref": "#/components/responses/PoolList"
          },
          "304": {
            "$ref": "#/components/responses/NotModified"
          },
          "default": {
            "$ref": "#/components/responses/DefaultError"
          }
        }
      }
    },
    "/v1/pools/{pool_id}": {
      "get": {
        "tags": [
          "Pools"
        ],
        "operationId": "getPool",
        "summary": "Get pool information and its asset pair",
        "parameters": [
          {
            "schema": {
              "type": "string",
              "pattern": "^pool_[A-Za-z0-9_-]+$"
            },
            "in": "path",
            "name": "pool_id",
            "required": true,
            "description": "Stable opaque CantonCap pool ID."
          },
          {
            "$ref": "#/components/parameters/IfNoneMatch"
          }
        ],
        "responses": {
          "200": {
            "$ref": "#/components/responses/Pool"
          },
          "304": {
            "$ref": "#/components/responses/NotModified"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "default": {
            "$ref": "#/components/responses/DefaultError"
          }
        }
      }
    },
    "/v1/venues": {
      "get": {
        "tags": [
          "Venues"
        ],
        "operationId": "listVenues",
        "summary": "List venues and current data availability",
        "parameters": [
          {
            "$ref": "#/components/parameters/IfNoneMatch"
          }
        ],
        "responses": {
          "200": {
            "$ref": "#/components/responses/VenueList"
          },
          "304": {
            "$ref": "#/components/responses/NotModified"
          },
          "default": {
            "$ref": "#/components/responses/DefaultError"
          }
        }
      }
    },
    "/v1/venues/{venue_id}": {
      "get": {
        "tags": [
          "Venues"
        ],
        "operationId": "getVenue",
        "summary": "Get venue detail and source-reported statistics",
        "parameters": [
          {
            "schema": {
              "type": "string",
              "enum": [
                "temple",
                "cantex",
                "oneswap",
                "silvana",
                "tradecraft",
                "kora",
                "rocky",
                "send"
              ]
            },
            "in": "path",
            "name": "venue_id",
            "required": true,
            "description": "Stable CantonCap venue ID."
          },
          {
            "$ref": "#/components/parameters/IfNoneMatch"
          }
        ],
        "responses": {
          "200": {
            "$ref": "#/components/responses/Venue"
          },
          "304": {
            "$ref": "#/components/responses/NotModified"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "default": {
            "$ref": "#/components/responses/DefaultError"
          }
        }
      }
    },
    "/v1/venues/{venue_id}/markets": {
      "get": {
        "tags": [
          "Venues"
        ],
        "operationId": "getVenueMarkets",
        "summary": "List markets supplied by a venue",
        "parameters": [
          {
            "schema": {
              "default": "mainnet",
              "type": "string",
              "enum": [
                "mainnet",
                "testnet",
                "devnet"
              ]
            },
            "in": "query",
            "name": "network",
            "required": false
          },
          {
            "schema": {
              "type": "string",
              "enum": [
                "amm",
                "order_book",
                "order_book_rfq",
                "hybrid"
              ]
            },
            "in": "query",
            "name": "model",
            "required": false
          },
          {
            "schema": {
              "type": "string",
              "enum": [
                "amm",
                "clmm",
                "orderbook",
                "hybrid"
              ]
            },
            "in": "query",
            "name": "category",
            "required": false
          },
          {
            "schema": {
              "type": "string",
              "pattern": "^ast_[A-Za-z0-9_-]+$"
            },
            "in": "query",
            "name": "quote_asset_id",
            "required": false
          },
          {
            "schema": {
              "default": 100,
              "type": "integer",
              "minimum": 1,
              "maximum": 100
            },
            "in": "query",
            "name": "limit",
            "required": false,
            "description": "Maximum page size, bounded by the caller's plan."
          },
          {
            "schema": {
              "type": "string",
              "minLength": 1,
              "pattern": "^[A-Za-z0-9_-]+$"
            },
            "in": "query",
            "name": "cursor",
            "required": false,
            "description": "Opaque continuation cursor from the previous response."
          },
          {
            "schema": {
              "type": "string",
              "enum": [
                "temple",
                "cantex",
                "oneswap",
                "silvana",
                "tradecraft",
                "kora",
                "rocky",
                "send"
              ]
            },
            "in": "path",
            "name": "venue_id",
            "required": true,
            "description": "Stable CantonCap venue ID."
          },
          {
            "$ref": "#/components/parameters/IfNoneMatch"
          }
        ],
        "responses": {
          "200": {
            "$ref": "#/components/responses/MarketPairList"
          },
          "304": {
            "$ref": "#/components/responses/NotModified"
          },
          "default": {
            "$ref": "#/components/responses/DefaultError"
          }
        }
      }
    },
    "/v1/venues/{venue_id}/capabilities": {
      "get": {
        "tags": [
          "Venues"
        ],
        "operationId": "getVenueCapabilities",
        "summary": "Get supported market-data features and history for a venue",
        "parameters": [
          {
            "schema": {
              "type": "string",
              "enum": [
                "temple",
                "cantex",
                "oneswap",
                "silvana",
                "tradecraft",
                "kora",
                "rocky",
                "send"
              ]
            },
            "in": "path",
            "name": "venue_id",
            "required": true,
            "description": "Stable CantonCap venue ID."
          },
          {
            "$ref": "#/components/parameters/IfNoneMatch"
          }
        ],
        "responses": {
          "200": {
            "$ref": "#/components/responses/Capabilities"
          },
          "304": {
            "$ref": "#/components/responses/NotModified"
          },
          "default": {
            "$ref": "#/components/responses/DefaultError"
          }
        }
      }
    },
    "/v1/issuers": {
      "get": {
        "tags": [
          "Issuers"
        ],
        "operationId": "listIssuers",
        "summary": "List verified and curated issuer entities",
        "parameters": [
          {
            "schema": {
              "default": 100,
              "type": "integer",
              "minimum": 1,
              "maximum": 500
            },
            "in": "query",
            "name": "limit",
            "required": false,
            "description": "Maximum page size, bounded by the caller's plan."
          },
          {
            "schema": {
              "type": "string",
              "minLength": 1,
              "maxLength": 4096,
              "pattern": "^[A-Za-z0-9_-]+$"
            },
            "in": "query",
            "name": "cursor",
            "required": false,
            "description": "Opaque continuation cursor from the previous response."
          },
          {
            "$ref": "#/components/parameters/IfNoneMatch"
          }
        ],
        "responses": {
          "200": {
            "$ref": "#/components/responses/IssuerList"
          },
          "304": {
            "$ref": "#/components/responses/NotModified"
          },
          "default": {
            "$ref": "#/components/responses/DefaultError"
          }
        }
      }
    },
    "/v1/issuers/{issuer_id}": {
      "get": {
        "tags": [
          "Issuers"
        ],
        "operationId": "getIssuer",
        "summary": "Get an issuer profile and linked assets",
        "parameters": [
          {
            "schema": {
              "type": "string",
              "pattern": "^iss_[A-Za-z0-9_-]+$"
            },
            "in": "path",
            "name": "issuer_id",
            "required": true,
            "description": "Stable opaque CantonCap issuer ID."
          },
          {
            "$ref": "#/components/parameters/IfNoneMatch"
          }
        ],
        "responses": {
          "200": {
            "$ref": "#/components/responses/Issuer"
          },
          "304": {
            "$ref": "#/components/responses/NotModified"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "default": {
            "$ref": "#/components/responses/DefaultError"
          }
        },
        "description": "Published issuer profile and linked asset IDs. Sources and technical relationships are available from the evidence and relationships endpoints."
      }
    },
    "/v1/fear-and-greed/latest": {
      "get": {
        "tags": [
          "Global"
        ],
        "operationId": "getLatestFearAndGreed",
        "summary": "Get the latest published Canton Ecosystem Fear & Greed Index",
        "description": "One ecosystem-wide index with daily 00:00:00Z reference times. CMC-style semantics, not exact CMC compatibility. Delayed publication retains the previous observation with its original timestamp. No query parameters. Returns data: null before the first publication.",
        "parameters": [],
        "responses": {
          "200": {
            "description": "Latest published observation or null before the first publication.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/FearAndGreedEnvelope"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              }
            }
          },
          "default": {
            "$ref": "#/components/responses/DefaultError"
          }
        }
      }
    },
    "/v1/fear-and-greed/historical": {
      "get": {
        "tags": [
          "Global"
        ],
        "operationId": "getHistoricalFearAndGreed",
        "summary": "Get published Canton Ecosystem Fear & Greed Index history",
        "description": "Intentional offset-pagination exception to the usual cursor contract. start is a 1-based record offset, not a date or timestamp. Apply offsets within the plan-permitted historical population, newest first. Missing days stay absent. Default limit is clamped to the plan page size; an explicit limit exceeding that cap returns 403. No history entitlement returns 403. Malformed or out-of-range pagination returns 400. After start=1 and limit=50, use start=51. New publications can shift offsets; no pinned multi-page snapshot is promised. Deduplicate by observation timestamp.",
        "parameters": [
          {
            "in": "query",
            "name": "start",
            "required": false,
            "description": "1-based record offset within permitted history.",
            "schema": {
              "type": "integer",
              "minimum": 1,
              "maximum": 9007199254740991,
              "default": 1
            }
          },
          {
            "in": "query",
            "name": "limit",
            "required": false,
            "description": "Maximum records, subject to the caller's plan page-size cap.",
            "schema": {
              "type": "integer",
              "minimum": 1,
              "maximum": 500,
              "default": 50
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Newest-first observations; empty array when no permitted records remain.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/FearAndGreedHistoryEnvelope"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              }
            }
          },
          "default": {
            "$ref": "#/components/responses/DefaultError"
          }
        }
      }
    },
    "/v1/global/metrics/latest": {
      "get": {
        "tags": [
          "Global"
        ],
        "operationId": "getLatestGlobalMetrics",
        "summary": "Get aggregate public Canton market metrics",
        "parameters": [
          {
            "schema": {
              "default": "USD",
              "type": "string",
              "pattern": "^[A-Z]{3,12}$"
            },
            "in": "query",
            "name": "convert",
            "required": false,
            "description": "One ISO-style quote currency code, or a comma-delimited set where the operation explicitly documents a bounded collection."
          },
          {
            "$ref": "#/components/parameters/IfNoneMatch"
          }
        ],
        "responses": {
          "200": {
            "$ref": "#/components/responses/GlobalMetrics"
          },
          "304": {
            "$ref": "#/components/responses/NotModified"
          },
          "default": {
            "$ref": "#/components/responses/DefaultError"
          }
        }
      }
    },
    "/v1/status/sources": {
      "get": {
        "tags": [
          "Status"
        ],
        "operationId": "getSourceStatus",
        "summary": "Get market-data availability and freshness",
        "responses": {
          "200": {
            "$ref": "#/components/responses/SourceStatusList"
          },
          "default": {
            "$ref": "#/components/responses/DefaultError"
          }
        },
        "parameters": []
      }
    },
    "/v1/assets/{asset_id}/registry-configurations": {
      "get": {
        "tags": [
          "Assets"
        ],
        "operationId": "getAssetRegistryConfigurations",
        "summary": "List registry configurations for an asset",
        "parameters": [
          {
            "schema": {
              "default": 20,
              "type": "integer",
              "minimum": 1,
              "maximum": 100
            },
            "in": "query",
            "name": "limit",
            "required": false,
            "description": "Maximum page size, bounded by the caller's plan."
          },
          {
            "schema": {
              "type": "string",
              "maxLength": 1024
            },
            "in": "query",
            "name": "cursor",
            "required": false,
            "description": "Opaque continuation cursor from the previous response."
          },
          {
            "schema": {
              "type": "string",
              "pattern": "^ast_[A-Za-z0-9_-]+$"
            },
            "in": "path",
            "name": "asset_id",
            "required": true,
            "description": "Stable opaque CantonCap asset ID."
          }
        ],
        "responses": {
          "200": {
            "description": "Registry configuration page.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AssetRegistryConfigurationsEnvelope"
                }
              }
            },
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              }
            }
          },
          "default": {
            "$ref": "#/components/responses/DefaultError"
          }
        }
      }
    },
    "/v1/issuers/{issuer_id}/evidence": {
      "get": {
        "tags": [
          "Issuers"
        ],
        "operationId": "getIssuerEvidence",
        "summary": "Get published sources for issuer profile facts",
        "parameters": [
          {
            "schema": {
              "type": "string",
              "pattern": "^iss_[A-Za-z0-9_-]+$"
            },
            "in": "path",
            "name": "issuer_id",
            "required": true,
            "description": "Stable opaque CantonCap issuer ID."
          },
          {
            "$ref": "#/components/parameters/IfNoneMatch"
          }
        ],
        "responses": {
          "200": {
            "$ref": "#/components/responses/IssuerEvidence"
          },
          "304": {
            "$ref": "#/components/responses/NotModified"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "default": {
            "$ref": "#/components/responses/DefaultError"
          }
        },
        "description": "Get published sources for issuer profile facts. Only approved public facts are returned."
      }
    },
    "/v1/issuers/{issuer_id}/relationships": {
      "get": {
        "tags": [
          "Issuers"
        ],
        "operationId": "getIssuerRelationships",
        "summary": "Get published issuer validators and instrument administrators",
        "parameters": [
          {
            "schema": {
              "type": "string",
              "pattern": "^iss_[A-Za-z0-9_-]+$"
            },
            "in": "path",
            "name": "issuer_id",
            "required": true,
            "description": "Stable opaque CantonCap issuer ID."
          },
          {
            "$ref": "#/components/parameters/IfNoneMatch"
          }
        ],
        "responses": {
          "200": {
            "$ref": "#/components/responses/IssuerRelationships"
          },
          "304": {
            "$ref": "#/components/responses/NotModified"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "default": {
            "$ref": "#/components/responses/DefaultError"
          }
        },
        "description": "Get published issuer validators and instrument administrators. Only approved public facts are returned."
      }
    }
  },
  "components": {
    "securitySchemes": {
      "apiKey": {
        "type": "apiKey",
        "in": "header",
        "name": "X-API-Key",
        "description": "Public CantonCap API key used for plan, entitlement, history-depth, page-size, request-rate, and concurrent-stream checks. Every REST authenticated response exposes the deterministic plan window through X-RateLimit-Limit, X-RateLimit-Remaining, and X-RateLimit-Reset."
      }
    },
    "parameters": {
      "IfNoneMatch": {
        "name": "If-None-Match",
        "in": "header",
        "description": "Return 304 when this entity tag matches the current representation.",
        "schema": {
          "type": "string",
          "minLength": 1
        }
      }
    },
    "headers": {
      "ETag": {
        "description": "Strong entity tag for conditional metadata and listing requests.",
        "schema": {
          "type": "string",
          "minLength": 1
        }
      },
      "PrivateCacheControl": {
        "description": "Prevents authenticated responses from being stored in shared caches.",
        "schema": {
          "type": "string",
          "enum": [
            "private, no-cache"
          ]
        }
      },
      "VaryApiKey": {
        "description": "Declares that the representation varies by CantonCap API key.",
        "schema": {
          "type": "string",
          "enum": [
            "X-API-Key"
          ]
        }
      },
      "RateLimitLimit": {
        "description": "Maximum requests admitted in the current plan window.",
        "schema": {
          "type": "integer",
          "minimum": 1
        }
      },
      "RateLimitRemaining": {
        "description": "Requests remaining in the current plan window.",
        "schema": {
          "type": "integer",
          "minimum": 0
        }
      },
      "RateLimitReset": {
        "description": "Unix timestamp in seconds when the current plan window resets.",
        "schema": {
          "type": "integer",
          "minimum": 0
        }
      },
      "RetryAfter": {
        "description": "Whole seconds before a rate-limited request should be retried.",
        "schema": {
          "type": "integer",
          "minimum": 1
        }
      }
    },
    "responses": {
      "SimplePrice": {
        "description": "Latest prices keyed by stable asset ID.",
        "headers": {
          "X-RateLimit-Limit": {
            "$ref": "#/components/headers/RateLimitLimit"
          },
          "X-RateLimit-Remaining": {
            "$ref": "#/components/headers/RateLimitRemaining"
          },
          "X-RateLimit-Reset": {
            "$ref": "#/components/headers/RateLimitReset"
          },
          "ETag": {
            "$ref": "#/components/headers/ETag"
          },
          "Cache-Control": {
            "$ref": "#/components/headers/PrivateCacheControl"
          },
          "Vary": {
            "$ref": "#/components/headers/VaryApiKey"
          }
        },
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/SimplePriceEnvelope"
            }
          }
        }
      },
      "AssetList": {
        "description": "Asset collection.",
        "headers": {
          "X-RateLimit-Limit": {
            "$ref": "#/components/headers/RateLimitLimit"
          },
          "X-RateLimit-Remaining": {
            "$ref": "#/components/headers/RateLimitRemaining"
          },
          "X-RateLimit-Reset": {
            "$ref": "#/components/headers/RateLimitReset"
          },
          "ETag": {
            "$ref": "#/components/headers/ETag"
          }
        },
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/AssetListEnvelope"
            }
          }
        }
      },
      "Asset": {
        "description": "Asset detail.",
        "headers": {
          "X-RateLimit-Limit": {
            "$ref": "#/components/headers/RateLimitLimit"
          },
          "X-RateLimit-Remaining": {
            "$ref": "#/components/headers/RateLimitRemaining"
          },
          "X-RateLimit-Reset": {
            "$ref": "#/components/headers/RateLimitReset"
          },
          "ETag": {
            "$ref": "#/components/headers/ETag"
          }
        },
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/AssetEnvelope"
            }
          }
        }
      },
      "AssetQuoteList": {
        "description": "Asset quote collection.",
        "headers": {
          "X-RateLimit-Limit": {
            "$ref": "#/components/headers/RateLimitLimit"
          },
          "X-RateLimit-Remaining": {
            "$ref": "#/components/headers/RateLimitRemaining"
          },
          "X-RateLimit-Reset": {
            "$ref": "#/components/headers/RateLimitReset"
          },
          "ETag": {
            "$ref": "#/components/headers/ETag"
          },
          "Cache-Control": {
            "$ref": "#/components/headers/PrivateCacheControl"
          },
          "Vary": {
            "$ref": "#/components/headers/VaryApiKey"
          }
        },
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/AssetQuoteListEnvelope"
            }
          }
        }
      },
      "CandleList": {
        "description": "Candle collection.",
        "headers": {
          "X-RateLimit-Limit": {
            "$ref": "#/components/headers/RateLimitLimit"
          },
          "X-RateLimit-Remaining": {
            "$ref": "#/components/headers/RateLimitRemaining"
          },
          "X-RateLimit-Reset": {
            "$ref": "#/components/headers/RateLimitReset"
          },
          "Cache-Control": {
            "$ref": "#/components/headers/PrivateCacheControl"
          },
          "Vary": {
            "$ref": "#/components/headers/VaryApiKey"
          }
        },
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/CandleListEnvelope"
            }
          }
        }
      },
      "MarketChart": {
        "description": "Chart-ready asset series.",
        "headers": {
          "X-RateLimit-Limit": {
            "$ref": "#/components/headers/RateLimitLimit"
          },
          "X-RateLimit-Remaining": {
            "$ref": "#/components/headers/RateLimitRemaining"
          },
          "X-RateLimit-Reset": {
            "$ref": "#/components/headers/RateLimitReset"
          },
          "Cache-Control": {
            "$ref": "#/components/headers/PrivateCacheControl"
          },
          "Vary": {
            "$ref": "#/components/headers/VaryApiKey"
          }
        },
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/MarketChartEnvelope"
            },
            "examples": {
              "fdv_first_page": {
                "summary": "First page of an hourly FDV chart",
                "description": "The same points as the historical quotes example; `volume` is the rolling 24-hour volume.",
                "value": {
                  "status": {
                    "timestamp": "2026-09-18T12:00:00.000Z",
                    "elapsed_ms": 14,
                    "error_code": 0,
                    "error_message": null,
                    "request_id": "req_example"
                  },
                  "data": {
                    "asset_id": "ast_example",
                    "convert": "USD",
                    "points": [
                      {
                        "timestamp": "2026-09-18T10:30:00.000000Z",
                        "price": "0.1525",
                        "market_cap": null,
                        "fdv": "152500000.07625",
                        "volume": "48211.37"
                      },
                      {
                        "timestamp": "2026-09-18T09:30:00.000000Z",
                        "price": "0.1519",
                        "market_cap": null,
                        "fdv": "151900000.07595",
                        "volume": "47100.05"
                      },
                      {
                        "timestamp": "2026-09-18T08:00:00.001000Z",
                        "price": "0.15",
                        "market_cap": null,
                        "fdv": null,
                        "volume": "46010"
                      }
                    ],
                    "last_updated_at": "2026-09-18T10:30:00.000000Z"
                  },
                  "pagination": {
                    "next_cursor": "eyJraW5kIjoicXVvdGVzIn0"
                  }
                }
              },
              "fdv_last_page": {
                "summary": "Last page, with zero and unavailable FDV",
                "value": {
                  "status": {
                    "timestamp": "2026-09-18T12:00:00.000Z",
                    "elapsed_ms": 14,
                    "error_code": 0,
                    "error_message": null,
                    "request_id": "req_example"
                  },
                  "data": {
                    "asset_id": "ast_example",
                    "convert": "USD",
                    "points": [
                      {
                        "timestamp": "2026-09-18T04:10:00.000000Z",
                        "price": "0.149",
                        "market_cap": null,
                        "fdv": "0",
                        "volume": null
                      },
                      {
                        "timestamp": "2026-09-18T00:35:00.000000Z",
                        "price": "0.148",
                        "market_cap": null,
                        "fdv": null,
                        "volume": null
                      }
                    ],
                    "last_updated_at": "2026-09-18T04:10:00.000000Z"
                  },
                  "pagination": {
                    "next_cursor": null
                  }
                }
              }
            }
          }
        }
      },
      "HistoricalSupply": {
        "description": "Sampled reported total-supply history of one asset.",
        "headers": {
          "X-RateLimit-Limit": {
            "$ref": "#/components/headers/RateLimitLimit"
          },
          "X-RateLimit-Remaining": {
            "$ref": "#/components/headers/RateLimitRemaining"
          },
          "X-RateLimit-Reset": {
            "$ref": "#/components/headers/RateLimitReset"
          },
          "Cache-Control": {
            "$ref": "#/components/headers/PrivateCacheControl"
          },
          "Vary": {
            "$ref": "#/components/headers/VaryApiKey"
          }
        },
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/HistoricalSupplyEnvelope"
            },
            "examples": {
              "changing": {
                "summary": "Populated history with changing and unchanged supply",
                "description": "Hourly points, newest first. The supply changed between 01:00 and 03:00 and is unchanged in the two newest intervals; the 02:00 interval had no observation and is omitted.",
                "value": {
                  "status": {
                    "timestamp": "2026-09-18T07:00:00.000Z",
                    "elapsed_ms": 12,
                    "error_code": 0,
                    "error_message": null,
                    "request_id": "req_example"
                  },
                  "data": {
                    "asset_id": "ast_example",
                    "interval": "1h",
                    "points": [
                      {
                        "supply": "1000250.5000000000",
                        "timestamp": "2026-09-18T04:35:00.000000Z"
                      },
                      {
                        "supply": "1000250.5000000000",
                        "timestamp": "2026-09-18T03:20:00.000000Z"
                      },
                      {
                        "supply": "1000000.0000000000",
                        "timestamp": "2026-09-18T01:05:00.000000Z"
                      },
                      {
                        "supply": "0.0000000000",
                        "timestamp": "2026-09-18T00:00:00.000000Z"
                      }
                    ]
                  },
                  "pagination": {
                    "next_cursor": null
                  }
                }
              },
              "missing": {
                "summary": "Missing history",
                "description": "The asset is published but no eligible observation lies in the range.",
                "value": {
                  "status": {
                    "timestamp": "2026-09-18T07:00:00.000Z",
                    "elapsed_ms": 3,
                    "error_code": 0,
                    "error_message": null,
                    "request_id": "req_example"
                  },
                  "data": {
                    "asset_id": "ast_example",
                    "interval": "1d",
                    "points": []
                  },
                  "pagination": {
                    "next_cursor": null
                  }
                }
              }
            }
          }
        }
      },
      "MarketList": {
        "description": "Market collection.",
        "headers": {
          "X-RateLimit-Limit": {
            "$ref": "#/components/headers/RateLimitLimit"
          },
          "X-RateLimit-Remaining": {
            "$ref": "#/components/headers/RateLimitRemaining"
          },
          "X-RateLimit-Reset": {
            "$ref": "#/components/headers/RateLimitReset"
          },
          "ETag": {
            "$ref": "#/components/headers/ETag"
          }
        },
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/MarketListEnvelope"
            }
          }
        }
      },
      "Market": {
        "description": "Market detail and latest state.",
        "headers": {
          "X-RateLimit-Limit": {
            "$ref": "#/components/headers/RateLimitLimit"
          },
          "X-RateLimit-Remaining": {
            "$ref": "#/components/headers/RateLimitRemaining"
          },
          "X-RateLimit-Reset": {
            "$ref": "#/components/headers/RateLimitReset"
          },
          "ETag": {
            "$ref": "#/components/headers/ETag"
          }
        },
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/MarketEnvelope"
            }
          }
        }
      },
      "Ticker": {
        "description": "Latest market ticker.",
        "headers": {
          "X-RateLimit-Limit": {
            "$ref": "#/components/headers/RateLimitLimit"
          },
          "X-RateLimit-Remaining": {
            "$ref": "#/components/headers/RateLimitRemaining"
          },
          "X-RateLimit-Reset": {
            "$ref": "#/components/headers/RateLimitReset"
          },
          "ETag": {
            "$ref": "#/components/headers/ETag"
          }
        },
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/TickerEnvelope"
            }
          }
        }
      },
      "OrderBook": {
        "description": "Latest order-book snapshot.",
        "headers": {
          "X-RateLimit-Limit": {
            "$ref": "#/components/headers/RateLimitLimit"
          },
          "X-RateLimit-Remaining": {
            "$ref": "#/components/headers/RateLimitRemaining"
          },
          "X-RateLimit-Reset": {
            "$ref": "#/components/headers/RateLimitReset"
          },
          "ETag": {
            "$ref": "#/components/headers/ETag"
          }
        },
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/OrderBookEnvelope"
            }
          }
        }
      },
      "TradeList": {
        "description": "Canonical trade collection.",
        "headers": {
          "X-RateLimit-Limit": {
            "$ref": "#/components/headers/RateLimitLimit"
          },
          "X-RateLimit-Remaining": {
            "$ref": "#/components/headers/RateLimitRemaining"
          },
          "X-RateLimit-Reset": {
            "$ref": "#/components/headers/RateLimitReset"
          },
          "Cache-Control": {
            "$ref": "#/components/headers/PrivateCacheControl"
          },
          "Vary": {
            "$ref": "#/components/headers/VaryApiKey"
          }
        },
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/TradeListEnvelope"
            }
          }
        }
      },
      "Liquidity": {
        "description": "Model-specific liquidity snapshot.",
        "headers": {
          "X-RateLimit-Limit": {
            "$ref": "#/components/headers/RateLimitLimit"
          },
          "X-RateLimit-Remaining": {
            "$ref": "#/components/headers/RateLimitRemaining"
          },
          "X-RateLimit-Reset": {
            "$ref": "#/components/headers/RateLimitReset"
          },
          "ETag": {
            "$ref": "#/components/headers/ETag"
          }
        },
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/LiquidityEnvelope"
            }
          }
        }
      },
      "PoolList": {
        "description": "Pool collection.",
        "headers": {
          "X-RateLimit-Limit": {
            "$ref": "#/components/headers/RateLimitLimit"
          },
          "X-RateLimit-Remaining": {
            "$ref": "#/components/headers/RateLimitRemaining"
          },
          "X-RateLimit-Reset": {
            "$ref": "#/components/headers/RateLimitReset"
          },
          "ETag": {
            "$ref": "#/components/headers/ETag"
          }
        },
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/PoolListEnvelope"
            }
          }
        }
      },
      "Pool": {
        "description": "Pool detail and latest state.",
        "headers": {
          "X-RateLimit-Limit": {
            "$ref": "#/components/headers/RateLimitLimit"
          },
          "X-RateLimit-Remaining": {
            "$ref": "#/components/headers/RateLimitRemaining"
          },
          "X-RateLimit-Reset": {
            "$ref": "#/components/headers/RateLimitReset"
          },
          "ETag": {
            "$ref": "#/components/headers/ETag"
          }
        },
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/PoolEnvelope"
            }
          }
        }
      },
      "VenueList": {
        "description": "Venue collection.",
        "headers": {
          "X-RateLimit-Limit": {
            "$ref": "#/components/headers/RateLimitLimit"
          },
          "X-RateLimit-Remaining": {
            "$ref": "#/components/headers/RateLimitRemaining"
          },
          "X-RateLimit-Reset": {
            "$ref": "#/components/headers/RateLimitReset"
          },
          "ETag": {
            "$ref": "#/components/headers/ETag"
          }
        },
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/VenueListEnvelope"
            }
          }
        }
      },
      "Venue": {
        "description": "Venue detail.",
        "headers": {
          "X-RateLimit-Limit": {
            "$ref": "#/components/headers/RateLimitLimit"
          },
          "X-RateLimit-Remaining": {
            "$ref": "#/components/headers/RateLimitRemaining"
          },
          "X-RateLimit-Reset": {
            "$ref": "#/components/headers/RateLimitReset"
          },
          "ETag": {
            "$ref": "#/components/headers/ETag"
          }
        },
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/VenueEnvelope"
            }
          }
        }
      },
      "Capabilities": {
        "description": "Supported market-data features and historical coverage for a venue.",
        "headers": {
          "X-RateLimit-Limit": {
            "$ref": "#/components/headers/RateLimitLimit"
          },
          "X-RateLimit-Remaining": {
            "$ref": "#/components/headers/RateLimitRemaining"
          },
          "X-RateLimit-Reset": {
            "$ref": "#/components/headers/RateLimitReset"
          },
          "ETag": {
            "$ref": "#/components/headers/ETag"
          }
        },
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/CapabilitiesEnvelope"
            }
          }
        }
      },
      "IssuerList": {
        "description": "Issuer collection.",
        "headers": {
          "X-RateLimit-Limit": {
            "$ref": "#/components/headers/RateLimitLimit"
          },
          "X-RateLimit-Remaining": {
            "$ref": "#/components/headers/RateLimitRemaining"
          },
          "X-RateLimit-Reset": {
            "$ref": "#/components/headers/RateLimitReset"
          },
          "ETag": {
            "$ref": "#/components/headers/ETag"
          },
          "Cache-Control": {
            "$ref": "#/components/headers/PrivateCacheControl"
          },
          "Vary": {
            "$ref": "#/components/headers/VaryApiKey"
          }
        },
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/IssuerListEnvelope"
            }
          }
        }
      },
      "Issuer": {
        "description": "Issuer detail with evidence and linked assets.",
        "headers": {
          "X-RateLimit-Limit": {
            "$ref": "#/components/headers/RateLimitLimit"
          },
          "X-RateLimit-Remaining": {
            "$ref": "#/components/headers/RateLimitRemaining"
          },
          "X-RateLimit-Reset": {
            "$ref": "#/components/headers/RateLimitReset"
          },
          "ETag": {
            "$ref": "#/components/headers/ETag"
          },
          "Cache-Control": {
            "$ref": "#/components/headers/PrivateCacheControl"
          },
          "Vary": {
            "$ref": "#/components/headers/VaryApiKey"
          }
        },
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/IssuerEnvelope"
            }
          }
        }
      },
      "GlobalMetrics": {
        "description": "Latest global market metrics.",
        "headers": {
          "X-RateLimit-Limit": {
            "$ref": "#/components/headers/RateLimitLimit"
          },
          "X-RateLimit-Remaining": {
            "$ref": "#/components/headers/RateLimitRemaining"
          },
          "X-RateLimit-Reset": {
            "$ref": "#/components/headers/RateLimitReset"
          },
          "ETag": {
            "$ref": "#/components/headers/ETag"
          },
          "Cache-Control": {
            "$ref": "#/components/headers/PrivateCacheControl"
          },
          "Vary": {
            "$ref": "#/components/headers/VaryApiKey"
          }
        },
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/GlobalMetricsEnvelope"
            }
          }
        }
      },
      "SourceStatusList": {
        "description": "Public source status collection.",
        "headers": {
          "X-RateLimit-Limit": {
            "$ref": "#/components/headers/RateLimitLimit"
          },
          "X-RateLimit-Remaining": {
            "$ref": "#/components/headers/RateLimitRemaining"
          },
          "X-RateLimit-Reset": {
            "$ref": "#/components/headers/RateLimitReset"
          }
        },
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/SourceStatusListEnvelope"
            }
          }
        }
      },
      "NotFound": {
        "description": "Resource not found.",
        "headers": {
          "X-RateLimit-Limit": {
            "$ref": "#/components/headers/RateLimitLimit"
          },
          "X-RateLimit-Remaining": {
            "$ref": "#/components/headers/RateLimitRemaining"
          },
          "X-RateLimit-Reset": {
            "$ref": "#/components/headers/RateLimitReset"
          }
        },
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/ErrorEnvelope"
            }
          }
        }
      },
      "UnsupportedCapability": {
        "description": "The source or market model does not support this operation.",
        "headers": {
          "X-RateLimit-Limit": {
            "$ref": "#/components/headers/RateLimitLimit"
          },
          "X-RateLimit-Remaining": {
            "$ref": "#/components/headers/RateLimitRemaining"
          },
          "X-RateLimit-Reset": {
            "$ref": "#/components/headers/RateLimitReset"
          }
        },
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/ErrorEnvelope"
            }
          }
        }
      },
      "NotModified": {
        "description": "The current representation matches If-None-Match.",
        "headers": {
          "X-RateLimit-Limit": {
            "$ref": "#/components/headers/RateLimitLimit"
          },
          "X-RateLimit-Remaining": {
            "$ref": "#/components/headers/RateLimitRemaining"
          },
          "X-RateLimit-Reset": {
            "$ref": "#/components/headers/RateLimitReset"
          },
          "ETag": {
            "$ref": "#/components/headers/ETag"
          }
        }
      },
      "DefaultError": {
        "description": "Authentication, authorization, validation, quota, or server error.",
        "headers": {
          "X-RateLimit-Limit": {
            "$ref": "#/components/headers/RateLimitLimit"
          },
          "X-RateLimit-Remaining": {
            "$ref": "#/components/headers/RateLimitRemaining"
          },
          "X-RateLimit-Reset": {
            "$ref": "#/components/headers/RateLimitReset"
          },
          "Retry-After": {
            "$ref": "#/components/headers/RetryAfter"
          }
        },
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/ErrorEnvelope"
            }
          }
        }
      },
      "AssetMapList": {
        "description": "Asset collection.",
        "headers": {
          "X-RateLimit-Limit": {
            "$ref": "#/components/headers/RateLimitLimit"
          },
          "X-RateLimit-Remaining": {
            "$ref": "#/components/headers/RateLimitRemaining"
          },
          "X-RateLimit-Reset": {
            "$ref": "#/components/headers/RateLimitReset"
          },
          "ETag": {
            "$ref": "#/components/headers/ETag"
          }
        },
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/AssetMapListEnvelope"
            }
          }
        }
      },
      "AssetListingList": {
        "description": "Ranked asset listings with prices keyed by currency.",
        "headers": {
          "X-RateLimit-Limit": {
            "$ref": "#/components/headers/RateLimitLimit"
          },
          "X-RateLimit-Remaining": {
            "$ref": "#/components/headers/RateLimitRemaining"
          },
          "X-RateLimit-Reset": {
            "$ref": "#/components/headers/RateLimitReset"
          },
          "ETag": {
            "$ref": "#/components/headers/ETag"
          },
          "Cache-Control": {
            "$ref": "#/components/headers/PrivateCacheControl"
          },
          "Vary": {
            "$ref": "#/components/headers/VaryApiKey"
          }
        },
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/AssetListingListEnvelope"
            }
          }
        }
      },
      "IssuerEvidence": {
        "description": "Published issuer information",
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/IssuerEvidenceEnvelope"
            }
          }
        },
        "headers": {
          "X-RateLimit-Limit": {
            "$ref": "#/components/headers/RateLimitLimit"
          },
          "X-RateLimit-Remaining": {
            "$ref": "#/components/headers/RateLimitRemaining"
          },
          "X-RateLimit-Reset": {
            "$ref": "#/components/headers/RateLimitReset"
          },
          "ETag": {
            "$ref": "#/components/headers/ETag"
          },
          "Cache-Control": {
            "$ref": "#/components/headers/PrivateCacheControl"
          },
          "Vary": {
            "$ref": "#/components/headers/VaryApiKey"
          }
        }
      },
      "IssuerRelationships": {
        "description": "Published issuer information",
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/IssuerRelationshipsEnvelope"
            }
          }
        },
        "headers": {
          "X-RateLimit-Limit": {
            "$ref": "#/components/headers/RateLimitLimit"
          },
          "X-RateLimit-Remaining": {
            "$ref": "#/components/headers/RateLimitRemaining"
          },
          "X-RateLimit-Reset": {
            "$ref": "#/components/headers/RateLimitReset"
          },
          "ETag": {
            "$ref": "#/components/headers/ETag"
          },
          "Cache-Control": {
            "$ref": "#/components/headers/PrivateCacheControl"
          },
          "Vary": {
            "$ref": "#/components/headers/VaryApiKey"
          }
        }
      },
      "HistoricalQuoteList": {
        "description": "Asset quote collection.",
        "headers": {
          "X-RateLimit-Limit": {
            "$ref": "#/components/headers/RateLimitLimit"
          },
          "X-RateLimit-Remaining": {
            "$ref": "#/components/headers/RateLimitRemaining"
          },
          "X-RateLimit-Reset": {
            "$ref": "#/components/headers/RateLimitReset"
          },
          "ETag": {
            "$ref": "#/components/headers/ETag"
          },
          "Cache-Control": {
            "$ref": "#/components/headers/PrivateCacheControl"
          },
          "Vary": {
            "$ref": "#/components/headers/VaryApiKey"
          }
        },
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/HistoricalQuoteListEnvelope"
            },
            "examples": {
              "fdv_first_page": {
                "summary": "First page of an hourly FDV series",
                "description": "Hourly points, newest first, three per page. Each `fdv` is the exact product of the point's price and the total supply known when it was calculated (1000000000.5 here); the 08:00 point has none because the supply known then was stale. Pass `next_cursor` with the same query for the next page.",
                "value": {
                  "status": {
                    "timestamp": "2026-09-18T12:00:00.000Z",
                    "elapsed_ms": 14,
                    "error_code": 0,
                    "error_message": null,
                    "request_id": "req_example"
                  },
                  "data": [
                    {
                      "asset_id": "ast_example",
                      "convert": "USD",
                      "interval": "1h",
                      "points": [
                        {
                          "timestamp": "2026-09-18T10:30:00.000000Z",
                          "price": "0.1525",
                          "market_cap": null,
                          "fdv": "152500000.07625",
                          "volume_24h": "48211.37",
                          "last_updated_at": "2026-09-18T10:30:00.000000Z"
                        },
                        {
                          "timestamp": "2026-09-18T09:30:00.000000Z",
                          "price": "0.1519",
                          "market_cap": null,
                          "fdv": "151900000.07595",
                          "volume_24h": "47100.05",
                          "last_updated_at": "2026-09-18T09:30:00.000000Z"
                        },
                        {
                          "timestamp": "2026-09-18T08:00:00.001000Z",
                          "price": "0.15",
                          "market_cap": null,
                          "fdv": null,
                          "volume_24h": "46010",
                          "last_updated_at": "2026-09-18T08:00:00.001000Z"
                        }
                      ]
                    }
                  ],
                  "pagination": {
                    "next_cursor": "eyJraW5kIjoicXVvdGVzIn0"
                  }
                }
              },
              "fdv_last_page": {
                "summary": "Last page, with zero and unavailable FDV",
                "description": "The registry reported a zero total supply at 04:00, so that point's FDV is zero; the 00:35 point was calculated before any supply was observed, so its FDV is unavailable.",
                "value": {
                  "status": {
                    "timestamp": "2026-09-18T12:00:00.000Z",
                    "elapsed_ms": 14,
                    "error_code": 0,
                    "error_message": null,
                    "request_id": "req_example"
                  },
                  "data": [
                    {
                      "asset_id": "ast_example",
                      "convert": "USD",
                      "interval": "1h",
                      "points": [
                        {
                          "timestamp": "2026-09-18T04:10:00.000000Z",
                          "price": "0.149",
                          "market_cap": null,
                          "fdv": "0",
                          "volume_24h": null,
                          "last_updated_at": "2026-09-18T04:10:00.000000Z"
                        },
                        {
                          "timestamp": "2026-09-18T00:35:00.000000Z",
                          "price": "0.148",
                          "market_cap": null,
                          "fdv": null,
                          "volume_24h": null,
                          "last_updated_at": "2026-09-18T00:35:00.000000Z"
                        }
                      ]
                    }
                  ],
                  "pagination": {
                    "next_cursor": null
                  }
                }
              }
            }
          }
        }
      },
      "AssetCandleList": {
        "description": "Candle collection.",
        "headers": {
          "X-RateLimit-Limit": {
            "$ref": "#/components/headers/RateLimitLimit"
          },
          "X-RateLimit-Remaining": {
            "$ref": "#/components/headers/RateLimitRemaining"
          },
          "X-RateLimit-Reset": {
            "$ref": "#/components/headers/RateLimitReset"
          },
          "Cache-Control": {
            "$ref": "#/components/headers/PrivateCacheControl"
          },
          "Vary": {
            "$ref": "#/components/headers/VaryApiKey"
          }
        },
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/AssetCandleListEnvelope"
            }
          }
        }
      },
      "MarketPairList": {
        "description": "Market collection.",
        "headers": {
          "X-RateLimit-Limit": {
            "$ref": "#/components/headers/RateLimitLimit"
          },
          "X-RateLimit-Remaining": {
            "$ref": "#/components/headers/RateLimitRemaining"
          },
          "X-RateLimit-Reset": {
            "$ref": "#/components/headers/RateLimitReset"
          },
          "ETag": {
            "$ref": "#/components/headers/ETag"
          }
        },
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/MarketPairListEnvelope"
            }
          }
        }
      }
    },
    "schemas": {
      "ActivityMeasure": {
        "type": "object",
        "properties": {
          "market_coverage": {
            "type": "object",
            "properties": {
              "eligible_market_count": {
                "type": "integer",
                "minimum": 0,
                "maximum": 9007199254740991
              },
              "included_market_count": {
                "type": "integer",
                "minimum": 0,
                "maximum": 9007199254740991
              },
              "missing_activity_market_count": {
                "type": "integer",
                "minimum": 0,
                "maximum": 9007199254740991
              },
              "unvalued_market_count": {
                "type": "integer",
                "minimum": 0,
                "maximum": 9007199254740991
              },
              "partial_market_count": {
                "type": "integer",
                "minimum": 0,
                "maximum": 9007199254740991
              },
              "incomplete_time_market_count": {
                "type": "integer",
                "minimum": 0,
                "maximum": 9007199254740991
              }
            },
            "required": [
              "eligible_market_count",
              "included_market_count",
              "missing_activity_market_count",
              "unvalued_market_count",
              "partial_market_count",
              "incomplete_time_market_count"
            ],
            "additionalProperties": false,
            "description": "For selected USD volume only: counts over the same eligible market population and measurement window. Older snapshots omit it. Native quantities are never relabelled as USD."
          },
          "value": {
            "anyOf": [
              {
                "type": "string",
                "pattern": "^\\d+(?:\\.\\d+)?$"
              },
              {
                "type": "null"
              }
            ]
          },
          "completeness": {
            "type": "string",
            "enum": [
              "complete",
              "partial",
              "unknown"
            ]
          },
          "covered_seconds": {
            "type": "number",
            "minimum": 0
          },
          "methods": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "as_of": {
            "description": "End of the window this value covers. Equals the snapshot as_of, except in a current read (no time_start or time_end, limit 1): when the newest snapshot has no value for this measurement, the latest usable value is kept with its own earlier as_of, coverage and methods. It is the window total at that time, not a complete current window.",
            "type": "string"
          }
        },
        "required": [
          "value",
          "completeness",
          "covered_seconds",
          "methods"
        ],
        "additionalProperties": false
      },
      "ActivitySnapshot": {
        "type": "object",
        "properties": {
          "entity_kind": {
            "type": "string",
            "enum": [
              "market",
              "asset",
              "venue",
              "global"
            ]
          },
          "entity_id": {
            "type": "string"
          },
          "network": {
            "type": "string",
            "enum": [
              "mainnet",
              "testnet",
              "devnet"
            ]
          },
          "window": {
            "type": "string",
            "enum": [
              "24h",
              "7d",
              "30d"
            ]
          },
          "as_of": {
            "type": "string"
          },
          "starts_at": {
            "type": "string"
          },
          "methodology_version": {
            "type": "string"
          },
          "markets": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "market_id": {
                  "type": "string"
                },
                "venue_id": {
                  "type": "string",
                  "minLength": 1
                },
                "network": {
                  "type": "string",
                  "enum": [
                    "mainnet",
                    "testnet",
                    "devnet"
                  ]
                },
                "base_asset_id": {
                  "type": "string"
                },
                "quote_asset_id": {
                  "type": "string"
                }
              },
              "required": [
                "market_id",
                "venue_id",
                "network",
                "base_asset_id",
                "quote_asset_id"
              ],
              "additionalProperties": false
            }
          },
          "measurements": {
            "type": "object",
            "properties": {
              "volume_base": {
                "$ref": "#/components/schemas/ActivityMeasure"
              },
              "volume_quote": {
                "$ref": "#/components/schemas/ActivityMeasure"
              },
              "volume_native": {
                "$ref": "#/components/schemas/ActivityMeasure"
              },
              "volume_usd_reported": {
                "$ref": "#/components/schemas/ActivityMeasure"
              },
              "volume_usd_derived": {
                "$ref": "#/components/schemas/ActivityMeasure"
              },
              "volume_usd": {
                "$ref": "#/components/schemas/ActivityMeasure"
              },
              "execution_count": {
                "$ref": "#/components/schemas/ActivityMeasure"
              }
            },
            "required": [
              "volume_base",
              "volume_quote",
              "volume_native",
              "volume_usd_reported",
              "volume_usd_derived",
              "volume_usd",
              "execution_count"
            ],
            "additionalProperties": false
          }
        },
        "required": [
          "entity_kind",
          "entity_id",
          "network",
          "window",
          "as_of",
          "starts_at",
          "methodology_version",
          "markets",
          "measurements"
        ],
        "additionalProperties": false
      },
      "ActivityResponse": {
        "type": "object",
        "properties": {
          "status": {
            "$ref": "#/components/schemas/ResponseStatus"
          },
          "data": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ActivitySnapshot"
            }
          }
        },
        "required": [
          "status",
          "data"
        ],
        "additionalProperties": false
      },
      "ResponseStatus": {
        "type": "object",
        "properties": {
          "timestamp": {
            "type": "string",
            "format": "date-time",
            "example": "2026-09-07T20:00:00.000Z"
          },
          "elapsed_ms": {
            "type": "integer",
            "minimum": 0,
            "maximum": 9007199254740991,
            "example": 12
          },
          "error_code": {
            "type": "integer",
            "minimum": -9007199254740991,
            "maximum": 9007199254740991,
            "example": 0
          },
          "error_message": {
            "example": null,
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ]
          },
          "request_id": {
            "type": "string",
            "pattern": "^req_[A-Za-z0-9_-]+$",
            "example": "req_example"
          }
        },
        "required": [
          "timestamp",
          "elapsed_ms",
          "error_code",
          "error_message",
          "request_id"
        ],
        "additionalProperties": false
      },
      "Pagination": {
        "type": "object",
        "properties": {
          "next_cursor": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ]
          }
        },
        "required": [
          "next_cursor"
        ],
        "additionalProperties": false
      },
      "ErrorDetail": {
        "type": "object",
        "required": [
          "code",
          "message",
          "retryable"
        ],
        "properties": {
          "code": {
            "type": "string",
            "enum": [
              "invalid_request",
              "unauthenticated",
              "forbidden",
              "not_found",
              "unsupported_capability",
              "rate_limited",
              "quota_exceeded",
              "conflict",
              "source_unavailable",
              "internal_error"
            ]
          },
          "message": {
            "type": "string"
          },
          "retryable": {
            "type": "boolean"
          },
          "retry_after_ms": {
            "type": "integer",
            "minimum": 0,
            "maximum": 86400000,
            "description": "Exact retry delay for typed rate or concurrent-stream quota responses."
          },
          "details": {
            "type": "object",
            "additionalProperties": true
          }
        }
      },
      "ErrorEnvelope": {
        "type": "object",
        "required": [
          "status",
          "error"
        ],
        "properties": {
          "status": {
            "$ref": "#/components/schemas/ResponseStatus"
          },
          "error": {
            "$ref": "#/components/schemas/ErrorDetail"
          }
        }
      },
      "Asset": {
        "type": "object",
        "properties": {
          "asset_id": {
            "type": "string"
          },
          "network": {
            "type": "string",
            "enum": [
              "mainnet",
              "testnet",
              "devnet"
            ]
          },
          "instrument_admin": {
            "type": "string"
          },
          "instrument_id": {
            "type": "string"
          },
          "name": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ]
          },
          "symbol": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ]
          },
          "status": {
            "type": "string",
            "enum": [
              "active",
              "inactive",
              "untracked",
              "suspended"
            ]
          },
          "aliases": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "decimals": {
            "anyOf": [
              {
                "type": "integer",
                "minimum": -9007199254740991,
                "maximum": 9007199254740991
              },
              {
                "type": "null"
              }
            ]
          },
          "total_supply": {
            "anyOf": [
              {
                "description": "Reported total supply in instrument units; null when unavailable.",
                "type": "string",
                "pattern": "^[0-9]+(?:\\.[0-9]+)?$"
              },
              {
                "type": "null"
              }
            ]
          },
          "total_supply_as_of": {
            "anyOf": [
              {
                "description": "Source timestamp for the reported total supply.",
                "type": "string",
                "format": "date-time"
              },
              {
                "type": "null"
              }
            ]
          },
          "token_standard_apis": {
            "type": "object",
            "additionalProperties": {
              "type": "string"
            }
          },
          "description": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ]
          },
          "website_url": {
            "anyOf": [
              {
                "type": "string",
                "format": "uri"
              },
              {
                "type": "null"
              }
            ]
          },
          "logo_url": {
            "anyOf": [
              {
                "type": "string",
                "format": "uri"
              },
              {
                "type": "null"
              }
            ]
          },
          "last_updated_at": {
            "type": "string",
            "format": "date-time"
          },
          "registry": {
            "anyOf": [
              {
                "type": "object",
                "properties": {
                  "configuration_count": {
                    "type": "integer",
                    "minimum": 0,
                    "maximum": 9007199254740991
                  },
                  "url": {
                    "type": "string"
                  }
                },
                "required": [
                  "configuration_count",
                  "url"
                ],
                "additionalProperties": false
              },
              {
                "type": "null"
              }
            ]
          },
          "registry_configurations": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/RegistryMetadata"
              },
              {
                "type": "null"
              }
            ]
          },
          "issuers": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "issuer_id": {
                  "type": "string"
                },
                "legal_name": {
                  "anyOf": [
                    {
                      "type": "string"
                    },
                    {
                      "type": "null"
                    }
                  ]
                },
                "brand_name": {
                  "anyOf": [
                    {
                      "type": "string"
                    },
                    {
                      "type": "null"
                    }
                  ]
                },
                "verification_status": {
                  "type": "string",
                  "enum": [
                    "unverified",
                    "domain_verified",
                    "issuer_attested",
                    "manually_verified"
                  ]
                },
                "relationship": {
                  "type": "string"
                }
              },
              "required": [
                "issuer_id",
                "legal_name",
                "brand_name",
                "verification_status",
                "relationship"
              ],
              "additionalProperties": false
            }
          },
          "documentation_url": {
            "anyOf": [
              {
                "type": "string",
                "format": "uri"
              },
              {
                "type": "null"
              }
            ]
          },
          "social_links": {
            "default": [],
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "label": {
                  "type": "string",
                  "minLength": 1,
                  "maxLength": 128
                },
                "url": {
                  "type": "string",
                  "maxLength": 2048,
                  "format": "uri"
                }
              },
              "required": [
                "label",
                "url"
              ],
              "additionalProperties": false
            }
          },
          "categories": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "liquidity_score": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/AssetLiquidityScoreValue"
              },
              {
                "type": "null"
              }
            ],
            "description": "Equal average of up to three highest non-null public market liquidity scores, rounded to two decimals. Zero is a measured score; null means no scored markets."
          },
          "liquidity_score_methodology": {
            "type": "string",
            "enum": [
              "asset-top-three-liquidity-v1"
            ]
          },
          "liquidity_score_updated_at": {
            "anyOf": [
              {
                "type": "string",
                "format": "date-time"
              },
              {
                "type": "null"
              }
            ],
            "description": "Oldest contributing market measurement time; null when unavailable. Listings retain their browse snapshot value."
          }
        },
        "required": [
          "asset_id",
          "network",
          "instrument_admin",
          "instrument_id",
          "name",
          "symbol",
          "status",
          "aliases",
          "decimals",
          "token_standard_apis",
          "description",
          "website_url",
          "logo_url",
          "last_updated_at",
          "registry",
          "issuers",
          "documentation_url",
          "categories"
        ],
        "additionalProperties": false
      },
      "AssetQuote": {
        "type": "object",
        "properties": {
          "asset_id": {
            "type": "string",
            "pattern": "^ast_[A-Za-z0-9_-]+$"
          },
          "quotes": {
            "type": "object",
            "additionalProperties": {
              "$ref": "#/components/schemas/PriceQuote"
            }
          }
        },
        "required": [
          "asset_id",
          "quotes"
        ],
        "additionalProperties": false
      },
      "ListingLiquidity": {
        "type": "object",
        "properties": {
          "liquidity_usd": {
            "anyOf": [
              {
                "type": "string",
                "pattern": "^-?[0-9]+(?:\\.[0-9]+)?$"
              },
              {
                "type": "null"
              }
            ]
          },
          "bid_depth_usd": {
            "anyOf": [
              {
                "type": "string",
                "pattern": "^-?[0-9]+(?:\\.[0-9]+)?$"
              },
              {
                "type": "null"
              }
            ]
          },
          "ask_depth_usd": {
            "anyOf": [
              {
                "type": "string",
                "pattern": "^-?[0-9]+(?:\\.[0-9]+)?$"
              },
              {
                "type": "null"
              }
            ]
          }
        },
        "required": [
          "liquidity_usd",
          "bid_depth_usd",
          "ask_depth_usd"
        ],
        "additionalProperties": false
      },
      "AssetLiquidityScoreValue": {
        "type": "number",
        "minimum": 0,
        "maximum": 100,
        "description": "Arithmetic mean of an asset's top three market liquidity scores."
      },
      "AssetListing": {
        "type": "object",
        "properties": {
          "asset_id": {
            "type": "string",
            "pattern": "^ast_[A-Za-z0-9_-]+$"
          },
          "quotes": {
            "type": "object",
            "additionalProperties": {
              "$ref": "#/components/schemas/PriceQuote"
            }
          },
          "position": {
            "type": "integer",
            "exclusiveMinimum": 0,
            "maximum": 9007199254740991,
            "description": "One-based position within this snapshot and requested sort; not a market-cap rank."
          },
          "rank": {
            "anyOf": [
              {
                "type": "integer",
                "exclusiveMinimum": 0,
                "maximum": 9007199254740991
              },
              {
                "type": "null"
              }
            ],
            "description": "Canonical one-based coin rank over the whole listing snapshot, from FDV, pool liquidity and rolling 24-hour volume; the same whatever sort, page or display currency is requested. Null for snapshots written before ranks existed."
          },
          "name": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ]
          },
          "symbol": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ]
          },
          "status": {
            "type": "string",
            "enum": [
              "active",
              "inactive",
              "untracked",
              "suspended"
            ]
          },
          "liquidity": {
            "$ref": "#/components/schemas/ListingLiquidity"
          },
          "liquidity_to_fdv_ratio": {
            "anyOf": [
              {
                "type": "string",
                "pattern": "^-?[0-9]+(?:\\.[0-9]+)?$"
              },
              {
                "type": "null"
              }
            ],
            "description": "Aggregate AMM pool liquidity USD divided by FDV USD: a raw ratio, 0.025 displays as 2.5%, exact to 18 fractional digits, not capped at 1. Pool depth only (each eligible pool once per asset); order-book depth and executable capacity are excluded. Identical in every display currency. Null when the asset has no pools, no pool is valued, or FDV is missing, stale, revoked or zero; a measured zero pool liquidity with a positive FDV is 0."
          },
          "liquidity_to_fdv_coverage": {
            "$ref": "#/components/schemas/ListingLiquidityToFdvCoverage"
          },
          "volume_24h_to_fdv_ratio": {
            "anyOf": [
              {
                "type": "string",
                "pattern": "^-?[0-9]+(?:\\.[0-9]+)?$"
              },
              {
                "type": "null"
              }
            ],
            "description": "Best available rolling 24-hour volume USD divided by FDV USD: a raw ratio, 0.12 displays as 12%, exact to 18 fractional digits, not capped at 1. The numerator is the listing's selected volume measurement (reported or observed trades, never their sum) over the eligible market population, pools and order books alike. Identical in every display currency. Null when volume is unavailable or FDV is missing, stale, revoked or zero; a measured zero volume with a positive FDV is 0."
          },
          "volume_24h_to_fdv_coverage": {
            "$ref": "#/components/schemas/ListingVolumeToFdvCoverage"
          },
          "liquidity_score": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/AssetLiquidityScoreValue"
              },
              {
                "type": "null"
              }
            ],
            "description": "Equal average of up to three highest non-null public market liquidity scores, rounded to two decimals. Zero is a measured score; null means no scored markets."
          },
          "liquidity_score_methodology": {
            "type": "string",
            "enum": [
              "asset-top-three-liquidity-v1"
            ]
          },
          "liquidity_score_updated_at": {
            "anyOf": [
              {
                "type": "string",
                "format": "date-time"
              },
              {
                "type": "null"
              }
            ],
            "description": "Oldest contributing market measurement time; null when unavailable. Listings retain their browse snapshot value."
          }
        },
        "required": [
          "asset_id",
          "quotes",
          "position",
          "rank",
          "name",
          "symbol",
          "status",
          "liquidity",
          "liquidity_to_fdv_ratio",
          "liquidity_to_fdv_coverage",
          "volume_24h_to_fdv_ratio",
          "volume_24h_to_fdv_coverage"
        ],
        "additionalProperties": false
      },
      "ListingVolumeToFdvCoverage": {
        "type": "object",
        "description": "The volume measurement behind volume_24h_to_fdv_ratio: its rolling window, the selected method and that measurement's coverage, so a ratio over partial coverage is distinguishable.",
        "properties": {
          "window": {
            "type": "string",
            "enum": [
              "24h"
            ]
          },
          "method": {
            "anyOf": [
              {
                "type": "string",
                "enum": [
                  "reported",
                  "trades"
                ]
              },
              {
                "type": "null"
              }
            ]
          },
          "completeness": {
            "type": "string",
            "enum": [
              "complete",
              "partial",
              "unknown"
            ]
          }
        },
        "required": [
          "window",
          "method",
          "completeness"
        ],
        "additionalProperties": false
      },
      "ListingLiquidityToFdvCoverage": {
        "type": "object",
        "description": "Pool coverage behind liquidity_to_fdv_ratio: partial when an eligible pool has no valuation, unknown when the asset has no pools. Order-book measurements do not affect it.",
        "properties": {
          "completeness": {
            "type": "string",
            "enum": [
              "complete",
              "partial",
              "unknown"
            ]
          },
          "eligible_pool_count": {
            "type": "integer",
            "minimum": 0,
            "maximum": 9007199254740991
          },
          "included_pool_count": {
            "type": "integer",
            "minimum": 0,
            "maximum": 9007199254740991
          }
        },
        "required": [
          "completeness",
          "eligible_pool_count",
          "included_pool_count"
        ],
        "additionalProperties": false
      },
      "VolumeMetrics": {
        "type": "object",
        "properties": {
          "selection_method": {
            "description": "Actual selected method. The legacy method field keeps its reported/trades enum.",
            "anyOf": [
              {
                "type": "string",
                "enum": [
                  "venue_reported_aggregate",
                  "canonical_trades",
                  "activity"
                ]
              },
              {
                "type": "null"
              }
            ]
          },
          "methodology_version": {
            "type": "string"
          },
          "interpretation": {
            "description": "Completeness applies to the measurement's own window, not the current wall clock. A zero is a value, not unavailable activity.",
            "type": "string",
            "enum": [
              "complete_total",
              "partial_subtotal",
              "unavailable",
              "coverage_unknown"
            ]
          },
          "coverage_detail": {
            "description": "Counts come from the selected evidence, never ticker nulls. Null means the detail was not recorded. Missing activity has no native or USD volume; unvalued activity has native volume but no selected USD. Partial and incomplete-time counts concern included markets and may overlap. Retained is null when retention status was not established. No restricted market identities are exposed.",
            "type": "object",
            "properties": {
              "unit": {
                "type": "string",
                "enum": [
                  "USD",
                  "display_currency"
                ]
              },
              "window": {
                "type": "string",
                "enum": [
                  "24h"
                ]
              },
              "starts_at": {
                "anyOf": [
                  {
                    "type": "string",
                    "format": "date-time",
                    "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "ends_at": {
                "anyOf": [
                  {
                    "type": "string",
                    "format": "date-time",
                    "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "covered_seconds": {
                "anyOf": [
                  {
                    "type": "number",
                    "minimum": 0,
                    "maximum": 86400
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "retained": {
                "type": [
                  "boolean",
                  "null"
                ]
              },
              "eligible_market_count": {
                "anyOf": [
                  {
                    "type": "integer",
                    "minimum": 0,
                    "maximum": 9007199254740991
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "included_market_count": {
                "anyOf": [
                  {
                    "type": "integer",
                    "minimum": 0,
                    "maximum": 9007199254740991
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "missing_activity_market_count": {
                "anyOf": [
                  {
                    "type": "integer",
                    "minimum": 0,
                    "maximum": 9007199254740991
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "unvalued_market_count": {
                "anyOf": [
                  {
                    "type": "integer",
                    "minimum": 0,
                    "maximum": 9007199254740991
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "partial_market_count": {
                "anyOf": [
                  {
                    "type": "integer",
                    "minimum": 0,
                    "maximum": 9007199254740991
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "incomplete_time_market_count": {
                "anyOf": [
                  {
                    "type": "integer",
                    "minimum": 0,
                    "maximum": 9007199254740991
                  },
                  {
                    "type": "null"
                  }
                ]
              }
            },
            "required": [
              "unit",
              "window",
              "starts_at",
              "ends_at",
              "covered_seconds",
              "retained",
              "eligible_market_count",
              "included_market_count",
              "missing_activity_market_count",
              "unvalued_market_count",
              "partial_market_count",
              "incomplete_time_market_count"
            ],
            "additionalProperties": false
          },
          "method": {
            "anyOf": [
              {
                "type": "string",
                "enum": [
                  "reported",
                  "trades"
                ]
              },
              {
                "type": "null"
              }
            ]
          },
          "coverage": {
            "type": "string",
            "enum": [
              "complete",
              "partial",
              "unknown"
            ]
          },
          "change_24h_pct": {
            "anyOf": [
              {
                "type": "string",
                "pattern": "^-?[0-9]+(?:\\.[0-9]+)?$"
              },
              {
                "type": "null"
              }
            ]
          },
          "as_of": {
            "type": "string",
            "format": "date-time",
            "description": "Measurement time of this volume, independent of the quote price update time."
          }
        },
        "required": [
          "method",
          "coverage",
          "change_24h_pct"
        ],
        "additionalProperties": false
      },
      "Market": {
        "type": "object",
        "properties": {
          "market_category": {
            "type": "string",
            "enum": [
              "amm",
              "clmm",
              "orderbook",
              "hybrid"
            ]
          },
          "last_updated_at": {
            "type": "string",
            "format": "date-time"
          },
          "market_id": {
            "type": "string",
            "pattern": "^mkt_[A-Za-z0-9_-]+$"
          },
          "venue_id": {
            "type": "string",
            "minLength": 1
          },
          "network": {
            "type": "string",
            "enum": [
              "mainnet",
              "testnet",
              "devnet"
            ]
          },
          "venue_market_id": {
            "type": "string"
          },
          "market_model": {
            "type": "string",
            "enum": [
              "amm",
              "order_book",
              "order_book_rfq",
              "hybrid"
            ]
          },
          "base_asset_id": {
            "type": "string",
            "pattern": "^ast_[A-Za-z0-9_-]+$"
          },
          "quote_asset_id": {
            "type": "string",
            "pattern": "^ast_[A-Za-z0-9_-]+$"
          },
          "status": {
            "type": "string",
            "enum": [
              "active",
              "inactive",
              "suspended"
            ]
          },
          "price_tick": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ]
          },
          "amount_step": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ]
          },
          "min_order_amount": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ]
          },
          "fee_model": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "description": "Legacy free-form venue fee description, unchanged for existing consumers. Its contents vary by venue and are not verified; use `fees` for sourced fee schedules."
          },
          "fees": {
            "$ref": "#/components/schemas/MarketFees"
          }
        },
        "required": [
          "last_updated_at",
          "market_id",
          "venue_id",
          "network",
          "venue_market_id",
          "market_model",
          "base_asset_id",
          "quote_asset_id",
          "status",
          "price_tick",
          "amount_step",
          "min_order_amount",
          "fee_model"
        ],
        "additionalProperties": false
      },
      "MarketFeeRate": {
        "type": "string",
        "pattern": "^(?:0|[1-9][0-9]{0,29})(?:\\.[0-9]{0,29}[1-9])?$",
        "description": "Exact canonical non-negative decimal string (no exponent, sign, leading or trailing zeros). Basis points of traded notional when the unit is `basis_points`, for example \"0.5\" for 0.005%."
      },
      "MarketFees": {
        "type": "object",
        "description": "Sourced fees of one market (#289), published additively beside the legacy `fee_model`. `status` is `verified` when the latest recorded check of the official source confirmed the schedule; `verification_failed` when the latest check could not confirm it (the previously verified components remain and `source.verified_at` is not advanced); `withheld` when a reviewed schedule exists but its rates are not published (`withheld_reason` explains why and `components` is empty); and `unknown` when no sourced schedule applies (all other fields are null or empty). Unknown is never zero, a known zero is published as rate \"0\", and charges with different scopes (trading, pool, Connect, settlement, wallet or network) are separate components or `separate_charges` and are never summed. Age thresholds are left to consumers: compare `source.verified_at` with your own policy. Reviewed venue schedules (`source.kind` `official_documentation`, such as Temple and Rocky) carry a `schedule_id` and `revision`; a pool venue without a reviewed schedule derives its fees from its own native pools at read time (`source.kind` `venue_api`, such as Cantex): one `pool_swap` component that is `known` when every eligible pool shares a rate or `variable` with the exact range and per-pool breakdown when they differ, an optional `pool_admin_share`, and Connect or network charges kept separate with explicit availability. Such a market has no `schedule_id`, and `source.verified_at` is the latest pool observation.",
        "properties": {
          "status": {
            "type": "string",
            "enum": [
              "verified",
              "verification_failed",
              "withheld",
              "unknown"
            ]
          },
          "schedule_id": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "description": "Stable identifier of the venue schedule that governs this market."
          },
          "revision": {
            "anyOf": [
              {
                "type": "integer",
                "exclusiveMinimum": 0,
                "maximum": 9007199254740991
              },
              {
                "type": "null"
              }
            ],
            "description": "Revision of the schedule definition; it increases when reviewed rates, applicability or evidence scope change."
          },
          "withheld_reason": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "description": "Machine-readable reason, such as `conflicting_sources`, when status is `withheld`."
          },
          "note": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "description": "Reviewer note qualifying the schedule, such as a conflicting source."
          },
          "components": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/FeeComponent"
            }
          },
          "applicability": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/FeeApplicability"
              },
              {
                "type": "null"
              }
            ]
          },
          "payment": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/FeePayment"
              },
              {
                "type": "null"
              }
            ]
          },
          "separate_charges": {
            "type": "array",
            "description": "Charges the source documents separately (deposit, withdrawal, wallet, network and similar). They are not part of `components` and must not be added to them.",
            "items": {
              "$ref": "#/components/schemas/FeeSeparateCharge"
            }
          },
          "source": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/FeeSource"
              },
              {
                "type": "null"
              }
            ]
          }
        },
        "required": [
          "status",
          "schedule_id",
          "revision",
          "withheld_reason",
          "note",
          "components",
          "applicability",
          "payment",
          "separate_charges",
          "source"
        ],
        "additionalProperties": false
      },
      "FeeComponent": {
        "type": "object",
        "description": "One charge for one liquidity role. `known` carries one exact `rate`; `variable` carries an exact `minimum_rate`/`maximum_rate` range; `unknown` and `not_applicable` carry no numbers. A pool-derived component (#291) also lists every eligible pool behind the rate in `pools`, so membership and coverage stay visible whether the pools share one rate or differ.",
        "properties": {
          "charge": {
            "type": "string",
            "enum": [
              "trading",
              "pool_swap",
              "pool_admin_share",
              "connect",
              "network",
              "settlement"
            ]
          },
          "liquidity_role": {
            "type": "string",
            "enum": [
              "maker",
              "taker",
              "all"
            ]
          },
          "unit": {
            "type": "string",
            "enum": [
              "basis_points",
              "share_of_charge",
              "asset_amount"
            ],
            "description": "`basis_points` of traded notional; `share_of_charge` is a fraction (0 to 1) of another charge and is not an additional charge; `asset_amount` is a fixed amount of `asset_id`."
          },
          "availability": {
            "type": "string",
            "enum": [
              "known",
              "variable",
              "unknown",
              "not_applicable"
            ]
          },
          "rate": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/MarketFeeRate"
              },
              {
                "type": "null"
              }
            ]
          },
          "minimum_rate": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/MarketFeeRate"
              },
              {
                "type": "null"
              }
            ]
          },
          "maximum_rate": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/MarketFeeRate"
              },
              {
                "type": "null"
              }
            ]
          },
          "asset_id": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ]
          },
          "qualification": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "description": "Component-specific scope, such as \"Wallet-funded side only\"."
          },
          "unpriced_pools": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/FeeUnpricedPool"
            },
            "description": "Current eligible pools without a valid fee; their presence makes the market-wide component unknown while pools retains the known subset."
          },
          "pools": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/FeePoolRate"
            }
          }
        },
        "required": [
          "charge",
          "liquidity_role",
          "unit",
          "availability",
          "rate",
          "minimum_rate",
          "maximum_rate",
          "asset_id",
          "qualification",
          "pools"
        ],
        "additionalProperties": false
      },
      "FeePoolRate": {
        "type": "object",
        "description": "One native pool's exact contribution to a pool-derived component, in the component's unit, with the observation that supplied it.",
        "properties": {
          "evidence": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/FeeObservationEvidence"
              },
              {
                "type": "null"
              }
            ],
            "description": "Immutable ingestion references for this pool observation; omitted by older servers."
          },
          "pool_id": {
            "type": "string"
          },
          "venue_pool_id": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "description": "The pool's identifier at the venue. Omitted by servers that predate the pool-derived breakdown."
          },
          "rate": {
            "$ref": "#/components/schemas/MarketFeeRate"
          },
          "observed_at": {
            "type": "string",
            "format": "date-time"
          },
          "coverage": {
            "anyOf": [
              {
                "type": "string",
                "enum": [
                  "complete",
                  "partial",
                  "sampled",
                  "accumulation_only",
                  "unknown"
                ]
              },
              {
                "type": "null"
              }
            ],
            "description": "Completeness of the pool observation behind this rate. Omitted by servers that predate the pool-derived breakdown."
          }
        },
        "required": [
          "pool_id",
          "rate",
          "observed_at"
        ],
        "additionalProperties": false
      },
      "FeeUnpricedPool": {
        "type": "object",
        "description": "One current eligible pool whose exact swap rate is unavailable.",
        "properties": {
          "evidence": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/FeeObservationEvidence"
              },
              {
                "type": "null"
              }
            ],
            "description": "Immutable ingestion references for this pool observation; omitted by older servers."
          },
          "pool_id": {
            "type": "string"
          },
          "venue_pool_id": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "description": "The pool's identifier at the venue. Omitted by servers that predate the pool-derived breakdown."
          },
          "observed_at": {
            "type": "string",
            "format": "date-time"
          },
          "coverage": {
            "anyOf": [
              {
                "type": "string",
                "enum": [
                  "complete",
                  "partial",
                  "sampled",
                  "accumulation_only",
                  "unknown"
                ]
              },
              {
                "type": "null"
              }
            ],
            "description": "Completeness of the pool observation behind this rate. Omitted by servers that predate the pool-derived breakdown."
          }
        },
        "required": [
          "pool_id",
          "observed_at"
        ],
        "additionalProperties": false
      },
      "FeeApplicability": {
        "type": "object",
        "description": "Where the schedule applies. A rate is never universal beyond this scope; `exclusions` lists documented cases it does not describe.",
        "properties": {
          "network": {
            "type": "string",
            "enum": [
              "mainnet",
              "testnet",
              "devnet"
            ]
          },
          "market_models": {
            "type": "array",
            "items": {
              "type": "string",
              "enum": [
                "amm",
                "order_book",
                "order_book_rfq",
                "hybrid"
              ]
            }
          },
          "execution_path": {
            "type": "string",
            "enum": [
              "order_book",
              "rfq",
              "pool_swap",
              "connect"
            ]
          },
          "account_scope": {
            "type": "string",
            "enum": [
              "all_accounts",
              "standard_accounts",
              "wallet_funded_side",
              "unspecified"
            ]
          },
          "summary": {
            "type": "string"
          },
          "exclusions": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/FeeExclusion"
            }
          }
        },
        "required": [
          "network",
          "market_models",
          "execution_path",
          "account_scope",
          "summary",
          "exclusions"
        ],
        "additionalProperties": false
      },
      "FeeExclusion": {
        "type": "object",
        "description": "A documented case the schedule does not describe.",
        "properties": {
          "code": {
            "type": "string"
          },
          "description": {
            "type": "string"
          }
        },
        "required": [
          "code",
          "description"
        ],
        "additionalProperties": false
      },
      "FeePayment": {
        "type": "object",
        "description": "How fees are paid, such as Temple's pre-paid fee balance.",
        "properties": {
          "method": {
            "type": "string",
            "enum": [
              "prepaid_fee_balance",
              "deducted_from_fill",
              "unspecified"
            ]
          },
          "description": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ]
          }
        },
        "required": [
          "method",
          "description"
        ],
        "additionalProperties": false
      },
      "FeeSeparateCharge": {
        "type": "object",
        "properties": {
          "availability": {
            "type": "string",
            "enum": [
              "known",
              "unknown"
            ],
            "description": "Availability of a separately scoped asset amount; omitted for narrative-only charges."
          },
          "amount": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/MarketFeeRate"
              },
              {
                "type": "null"
              }
            ],
            "description": "Exact amount per operation described by charge and description, never a per-swap total."
          },
          "asset_id": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ]
          },
          "evidence": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/FeeObservationEvidence"
              },
              {
                "type": "null"
              }
            ]
          },
          "charge": {
            "type": "string",
            "enum": [
              "deposit",
              "withdrawal",
              "wallet",
              "network",
              "transfer",
              "allocation",
              "bank_transfer",
              "bridge",
              "connect",
              "settlement"
            ]
          },
          "description": {
            "type": "string"
          }
        },
        "required": [
          "charge",
          "description"
        ],
        "additionalProperties": false
      },
      "FeeObservationEvidence": {
        "type": "object",
        "description": "Retained venue API evidence, independently timestamped for each pool or separately scoped charge.",
        "properties": {
          "source_id": {
            "type": "string"
          },
          "source_method": {
            "type": "string"
          },
          "source_timestamp": {
            "anyOf": [
              {
                "type": "string",
                "format": "date-time"
              },
              {
                "type": "null"
              }
            ]
          },
          "observed_at": {
            "type": "string",
            "format": "date-time"
          },
          "raw_event_ids": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "Immutable ingestion event references; this response does not grant access to raw payloads."
          }
        },
        "required": [
          "source_id",
          "source_method",
          "source_timestamp",
          "observed_at",
          "raw_event_ids"
        ],
        "additionalProperties": false
      },
      "FeeSource": {
        "type": "object",
        "description": "Evidence for the schedule. `verified_at` is the latest successful verification and is never advanced by a failed check; `last_checked_at` and `last_check_outcome` describe the latest attempt. `content_hash` is the SHA-256 of the captured source bytes.",
        "properties": {
          "kind": {
            "type": "string",
            "enum": [
              "official_documentation",
              "venue_api"
            ]
          },
          "url": {
            "anyOf": [
              {
                "type": "string",
                "format": "uri"
              },
              {
                "type": "null"
              }
            ]
          },
          "title": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ]
          },
          "effective_at": {
            "anyOf": [
              {
                "type": "string",
                "format": "date-time"
              },
              {
                "type": "null"
              }
            ],
            "description": "Effective time stated by the source, when it states one."
          },
          "recorded_at": {
            "type": "string",
            "format": "date-time",
            "description": "Check time of the review that recorded this revision."
          },
          "verified_at": {
            "type": "string",
            "format": "date-time"
          },
          "retrieved_at": {
            "type": "string",
            "format": "date-time",
            "description": "Retrieval time of the capture that last verified the schedule."
          },
          "content_hash": {
            "anyOf": [
              {
                "type": "string",
                "pattern": "^sha256:[a-f0-9]{64}$"
              },
              {
                "type": "null"
              }
            ]
          },
          "excerpt": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ]
          },
          "last_checked_at": {
            "type": "string",
            "format": "date-time"
          },
          "last_check_outcome": {
            "type": "string",
            "enum": [
              "verified",
              "failed"
            ]
          },
          "last_check_error": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "description": "Error code of a failed latest check."
          }
        },
        "required": [
          "kind",
          "url",
          "title",
          "effective_at",
          "recorded_at",
          "verified_at",
          "retrieved_at",
          "content_hash",
          "excerpt",
          "last_checked_at",
          "last_check_outcome",
          "last_check_error"
        ],
        "additionalProperties": false
      },
      "Pool": {
        "type": "object",
        "properties": {
          "market_category": {
            "type": "string",
            "enum": [
              "amm",
              "clmm",
              "orderbook",
              "hybrid"
            ]
          },
          "last_updated_at": {
            "type": "string",
            "format": "date-time"
          },
          "pool_id": {
            "type": "string",
            "pattern": "^pool_[A-Za-z0-9_-]+$"
          },
          "venue_id": {
            "type": "string",
            "minLength": 1
          },
          "network": {
            "type": "string",
            "enum": [
              "mainnet",
              "testnet",
              "devnet"
            ]
          },
          "venue_pool_id": {
            "type": "string"
          },
          "market_id": {
            "type": "string",
            "pattern": "^mkt_[A-Za-z0-9_-]+$"
          },
          "asset_x_id": {
            "type": "string",
            "pattern": "^ast_[A-Za-z0-9_-]+$"
          },
          "asset_y_id": {
            "type": "string",
            "pattern": "^ast_[A-Za-z0-9_-]+$"
          },
          "curve_type": {
            "type": "string"
          },
          "fee_bps": {
            "type": "integer",
            "minimum": 0,
            "maximum": 9007199254740991
          },
          "fee_rate": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ]
          },
          "protocol_fee_bps": {
            "anyOf": [
              {
                "type": "integer",
                "minimum": 0,
                "maximum": 9007199254740991
              },
              {
                "type": "null"
              }
            ]
          },
          "admin_fee_share": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ]
          },
          "reserve_x": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ]
          },
          "reserve_y": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ]
          },
          "source_price": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ]
          },
          "tvl_cc": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ]
          },
          "liquidity_usd": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ]
          },
          "created_at": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ]
          },
          "status": {
            "type": "string",
            "enum": [
              "active",
              "inactive",
              "suspended"
            ]
          }
        },
        "required": [
          "last_updated_at",
          "pool_id",
          "venue_id",
          "network",
          "venue_pool_id",
          "market_id",
          "asset_x_id",
          "asset_y_id",
          "curve_type",
          "fee_bps",
          "fee_rate",
          "protocol_fee_bps",
          "admin_fee_share",
          "reserve_x",
          "reserve_y",
          "source_price",
          "tvl_cc",
          "liquidity_usd",
          "created_at",
          "status"
        ],
        "additionalProperties": false
      },
      "Ticker": {
        "type": "object",
        "properties": {
          "market_category": {
            "anyOf": [
              {
                "type": "string",
                "enum": [
                  "amm",
                  "clmm",
                  "orderbook",
                  "hybrid"
                ]
              },
              {
                "type": "null"
              }
            ]
          },
          "liquidity_score": {
            "anyOf": [
              {
                "description": "Displayed liquidity score, 0–100. Simulated buys and sells at $100, $500, $1,000, $5,000 and $10,000; fees excluded. Null means insufficient inputs, never a hidden market.",
                "type": "number",
                "minimum": 0,
                "maximum": 100
              },
              {
                "type": "null"
              }
            ]
          },
          "liquidity_score_methodology": {
            "type": "string",
            "enum": [
              "execution-impact-v1"
            ]
          },
          "liquidity_score_updated_at": {
            "anyOf": [
              {
                "type": "string",
                "format": "date-time"
              },
              {
                "type": "null"
              }
            ]
          },
          "last_updated_at": {
            "type": "string",
            "format": "date-time"
          },
          "venue_id": {
            "type": "string",
            "minLength": 1
          },
          "market_id": {
            "type": "string",
            "pattern": "^mkt_[A-Za-z0-9_-]+$"
          },
          "price_origin": {
            "type": "string",
            "enum": [
              "venue_pool",
              "venue_book",
              "venue_trade",
              "external_reference",
              "derived"
            ]
          },
          "last_price": {
            "anyOf": [
              {
                "type": "string",
                "pattern": "^(?:0|[1-9]\\d*)(?:\\.\\d+)?$"
              },
              {
                "type": "null"
              }
            ]
          },
          "best_bid": {
            "anyOf": [
              {
                "type": "string",
                "pattern": "^(?:0|[1-9]\\d*)(?:\\.\\d+)?$"
              },
              {
                "type": "null"
              }
            ]
          },
          "best_ask": {
            "anyOf": [
              {
                "type": "string",
                "pattern": "^(?:0|[1-9]\\d*)(?:\\.\\d+)?$"
              },
              {
                "type": "null"
              }
            ]
          },
          "mid_price": {
            "anyOf": [
              {
                "type": "string",
                "pattern": "^(?:0|[1-9]\\d*)(?:\\.\\d+)?$"
              },
              {
                "type": "null"
              }
            ]
          },
          "volume_base_24h": {
            "anyOf": [
              {
                "type": "string",
                "pattern": "^(?:0|[1-9]\\d*)(?:\\.\\d+)?$"
              },
              {
                "type": "null"
              }
            ]
          },
          "volume_quote_24h": {
            "anyOf": [
              {
                "type": "string",
                "pattern": "^(?:0|[1-9]\\d*)(?:\\.\\d+)?$"
              },
              {
                "type": "null"
              }
            ]
          },
          "trade_count_24h": {
            "anyOf": [
              {
                "type": "integer",
                "minimum": 0,
                "maximum": 9007199254740991
              },
              {
                "type": "null"
              }
            ]
          },
          "open_24h": {
            "anyOf": [
              {
                "type": "string",
                "pattern": "^(?:0|[1-9]\\d*)(?:\\.\\d+)?$"
              },
              {
                "type": "null"
              }
            ]
          },
          "high_24h": {
            "anyOf": [
              {
                "type": "string",
                "pattern": "^(?:0|[1-9]\\d*)(?:\\.\\d+)?$"
              },
              {
                "type": "null"
              }
            ]
          },
          "low_24h": {
            "anyOf": [
              {
                "type": "string",
                "pattern": "^(?:0|[1-9]\\d*)(?:\\.\\d+)?$"
              },
              {
                "type": "null"
              }
            ]
          },
          "close_24h": {
            "anyOf": [
              {
                "type": "string",
                "pattern": "^(?:0|[1-9]\\d*)(?:\\.\\d+)?$"
              },
              {
                "type": "null"
              }
            ]
          },
          "vwap_24h": {
            "anyOf": [
              {
                "type": "string",
                "pattern": "^(?:0|[1-9]\\d*)(?:\\.\\d+)?$"
              },
              {
                "type": "null"
              }
            ]
          },
          "price_change_abs_24h": {
            "anyOf": [
              {
                "type": "string",
                "pattern": "^-?(?:0|[1-9]\\d*)(?:\\.\\d+)?$"
              },
              {
                "type": "null"
              }
            ]
          },
          "reference_price_usd": {
            "anyOf": [
              {
                "type": "string",
                "pattern": "^(?:0|[1-9]\\d*)(?:\\.\\d+)?$"
              },
              {
                "type": "null"
              }
            ]
          },
          "price_change_24h_pct": {
            "anyOf": [
              {
                "type": "string",
                "pattern": "^-?(?:0|[1-9]\\d*)(?:\\.\\d+)?$"
              },
              {
                "type": "null"
              }
            ]
          },
          "volume_usd_24h": {
            "anyOf": [
              {
                "type": "string",
                "pattern": "^(?:0|[1-9]\\d*)(?:\\.\\d+)?$"
              },
              {
                "type": "null"
              }
            ]
          }
        },
        "required": [
          "last_updated_at",
          "venue_id",
          "market_id",
          "price_origin",
          "last_price",
          "best_bid",
          "best_ask",
          "mid_price",
          "volume_base_24h",
          "volume_quote_24h",
          "trade_count_24h",
          "open_24h",
          "high_24h",
          "low_24h",
          "close_24h",
          "vwap_24h",
          "price_change_abs_24h",
          "reference_price_usd",
          "price_change_24h_pct",
          "volume_usd_24h"
        ],
        "additionalProperties": false
      },
      "Trade": {
        "type": "object",
        "properties": {
          "last_updated_at": {
            "type": "string",
            "format": "date-time"
          },
          "trade_id": {
            "type": "string",
            "pattern": "^trd_[A-Za-z0-9_-]+$"
          },
          "venue_id": {
            "type": "string",
            "minLength": 1
          },
          "market_id": {
            "type": "string",
            "pattern": "^mkt_[A-Za-z0-9_-]+$"
          },
          "trade_timestamp": {
            "type": "string",
            "format": "date-time"
          },
          "side": {
            "type": "string",
            "enum": [
              "buy",
              "sell",
              "unknown"
            ]
          },
          "price": {
            "type": "string",
            "pattern": "^(?:0|[1-9]\\d*)(?:\\.\\d+)?$"
          },
          "base_amount": {
            "type": "string",
            "pattern": "^(?:0|[1-9]\\d*)(?:\\.\\d+)?$"
          },
          "quote_amount": {
            "type": "string",
            "pattern": "^(?:0|[1-9]\\d*)(?:\\.\\d+)?$"
          },
          "fee_amounts": {
            "type": "array",
            "items": {
              "type": "string",
              "pattern": "^(?:0|[1-9]\\d*)(?:\\.\\d+)?$"
            }
          }
        },
        "required": [
          "last_updated_at",
          "trade_id",
          "venue_id",
          "market_id",
          "trade_timestamp",
          "side",
          "price",
          "base_amount",
          "quote_amount",
          "fee_amounts"
        ],
        "additionalProperties": false
      },
      "OrderBook": {
        "type": "object",
        "properties": {
          "last_updated_at": {
            "type": "string",
            "format": "date-time"
          },
          "venue_id": {
            "type": "string",
            "minLength": 1
          },
          "network": {
            "type": "string",
            "enum": [
              "mainnet",
              "testnet",
              "devnet"
            ]
          },
          "market_id": {
            "type": "string",
            "pattern": "^mkt_[A-Za-z0-9_-]+$"
          },
          "sequence": {
            "type": "string",
            "pattern": "^\\d+$"
          },
          "bids": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "price": {
                  "type": "string",
                  "pattern": "^(?:0|[1-9]\\d*)(?:\\.\\d+)?$"
                },
                "amount": {
                  "type": "string",
                  "pattern": "^(?:0|[1-9]\\d*)(?:\\.\\d+)?$"
                },
                "total_amount": {
                  "type": "string",
                  "pattern": "^(?:0|[1-9]\\d*)(?:\\.\\d+)?$"
                },
                "available_amount": {
                  "type": "string",
                  "pattern": "^(?:0|[1-9]\\d*)(?:\\.\\d+)?$"
                },
                "cumulative_amount": {
                  "type": "string",
                  "pattern": "^(?:0|[1-9]\\d*)(?:\\.\\d+)?$"
                },
                "order_count": {
                  "type": [
                    "integer",
                    "null"
                  ],
                  "minimum": 0,
                  "maximum": 9007199254740991
                }
              },
              "required": [
                "price",
                "amount",
                "total_amount",
                "available_amount",
                "cumulative_amount",
                "order_count"
              ],
              "additionalProperties": false
            }
          },
          "asks": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "price": {
                  "type": "string",
                  "pattern": "^(?:0|[1-9]\\d*)(?:\\.\\d+)?$"
                },
                "amount": {
                  "type": "string",
                  "pattern": "^(?:0|[1-9]\\d*)(?:\\.\\d+)?$"
                },
                "total_amount": {
                  "type": "string",
                  "pattern": "^(?:0|[1-9]\\d*)(?:\\.\\d+)?$"
                },
                "available_amount": {
                  "type": "string",
                  "pattern": "^(?:0|[1-9]\\d*)(?:\\.\\d+)?$"
                },
                "cumulative_amount": {
                  "type": "string",
                  "pattern": "^(?:0|[1-9]\\d*)(?:\\.\\d+)?$"
                },
                "order_count": {
                  "type": [
                    "integer",
                    "null"
                  ],
                  "minimum": 0,
                  "maximum": 9007199254740991
                }
              },
              "required": [
                "price",
                "amount",
                "total_amount",
                "available_amount",
                "cumulative_amount",
                "order_count"
              ],
              "additionalProperties": false
            }
          },
          "best_bid": {
            "anyOf": [
              {
                "type": "string",
                "pattern": "^(?:0|[1-9]\\d*)(?:\\.\\d+)?$"
              },
              {
                "type": "null"
              }
            ]
          },
          "best_ask": {
            "anyOf": [
              {
                "type": "string",
                "pattern": "^(?:0|[1-9]\\d*)(?:\\.\\d+)?$"
              },
              {
                "type": "null"
              }
            ]
          },
          "spread": {
            "anyOf": [
              {
                "type": "string",
                "pattern": "^(?:0|[1-9]\\d*)(?:\\.\\d+)?$"
              },
              {
                "type": "null"
              }
            ]
          },
          "available_quantity_excludes_own_orders": {
            "type": "boolean"
          }
        },
        "required": [
          "last_updated_at",
          "venue_id",
          "network",
          "market_id",
          "sequence",
          "bids",
          "asks",
          "best_bid",
          "best_ask",
          "spread",
          "available_quantity_excludes_own_orders"
        ],
        "additionalProperties": false
      },
      "PoolDepthUnavailableReason": {
        "description": "Why a synthetic depth value is null. A measured zero is returned as 0, never as a reason.",
        "type": "string",
        "enum": [
          "not_calculated",
          "unsupported_curve",
          "unsupported_fee_model",
          "missing_fee_configuration",
          "invalid_pool_state",
          "stale_pool_state",
          "no_eligible_pool",
          "missing_quote_usd_price",
          "stale_quote_usd_price"
        ]
      },
      "PoolDepthContribution": {
        "description": "One pool's contribution to the market's common depth boundaries.",
        "type": "object",
        "properties": {
          "pool_id": {
            "type": "string",
            "pattern": "^pool_[A-Za-z0-9_-]+$"
          },
          "included": {
            "type": "boolean"
          },
          "unavailable_reason": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/PoolDepthUnavailableReason"
              },
              {
                "type": "null"
              }
            ]
          },
          "reference_price": {
            "anyOf": [
              {
                "description": "The pool's own reserve-ratio price, quote per base.",
                "type": "string",
                "pattern": "^(?:0|[1-9]\\d*)(?:\\.\\d+)?$"
              },
              {
                "type": "null"
              }
            ]
          },
          "fee_rate": {
            "anyOf": [
              {
                "type": "string",
                "pattern": "^(?:0|[1-9]\\d*)(?:\\.\\d+)?$"
              },
              {
                "type": "null"
              }
            ]
          },
          "retained_fee_share": {
            "anyOf": [
              {
                "description": "Share of the pool fee credited back to the pool reserves; the rest leaves the pool.",
                "type": "string",
                "pattern": "^(?:0|[1-9]\\d*)(?:\\.\\d+)?$"
              },
              {
                "type": "null"
              }
            ]
          },
          "bid_depth_2pct_base": {
            "anyOf": [
              {
                "description": "Base this pool takes, fee included, until its price reaches the common bid boundary.",
                "type": "string",
                "pattern": "^(?:0|[1-9]\\d*)(?:\\.\\d+)?$"
              },
              {
                "type": "null"
              }
            ]
          },
          "bid_depth_2pct_quote": {
            "anyOf": [
              {
                "description": "Quote this pool pays for that base.",
                "type": "string",
                "pattern": "^(?:0|[1-9]\\d*)(?:\\.\\d+)?$"
              },
              {
                "type": "null"
              }
            ]
          },
          "ask_depth_2pct_base": {
            "anyOf": [
              {
                "description": "Base this pool releases until its price reaches the common ask boundary.",
                "type": "string",
                "pattern": "^(?:0|[1-9]\\d*)(?:\\.\\d+)?$"
              },
              {
                "type": "null"
              }
            ]
          },
          "ask_depth_2pct_quote": {
            "anyOf": [
              {
                "description": "Quote, fee included, this pool takes for that base.",
                "type": "string",
                "pattern": "^(?:0|[1-9]\\d*)(?:\\.\\d+)?$"
              },
              {
                "type": "null"
              }
            ]
          },
          "state_observed_at": {
            "anyOf": [
              {
                "type": "string",
                "format": "date-time"
              },
              {
                "type": "null"
              }
            ]
          },
          "state_source_timestamp": {
            "anyOf": [
              {
                "type": "string",
                "format": "date-time"
              },
              {
                "type": "null"
              }
            ]
          }
        },
        "required": [
          "pool_id",
          "included",
          "unavailable_reason",
          "reference_price",
          "fee_rate",
          "retained_fee_share",
          "bid_depth_2pct_base",
          "bid_depth_2pct_quote",
          "ask_depth_2pct_base",
          "ask_depth_2pct_quote",
          "state_observed_at",
          "state_source_timestamp"
        ],
        "additionalProperties": false
      },
      "PoolSyntheticDepth": {
        "description": "Synthetic ±2% depth calculated by the worker from stored pool state (pool-synthetic-depth-v1). It is a modelled curve measurement, not an order book, a venue quote or an execution guarantee, and is distinct from liquidity_score. Network, Connect, wallet and routing charges are excluded.",
        "type": "object",
        "properties": {
          "origin": {
            "type": "string",
            "enum": [
              "synthetic_pool"
            ]
          },
          "methodology_version": {
            "type": "string",
            "enum": [
              "pool-synthetic-depth-v1"
            ]
          },
          "band_bps": {
            "type": "integer",
            "minimum": 0,
            "maximum": 9007199254740991
          },
          "reference_price": {
            "anyOf": [
              {
                "description": "Common marginal pool price in quote per base, the sum of quote reserves over the sum of base reserves of the included pools.",
                "type": "string",
                "pattern": "^(?:0|[1-9]\\d*)(?:\\.\\d+)?$"
              },
              {
                "type": "null"
              }
            ]
          },
          "bid_boundary_price": {
            "anyOf": [
              {
                "description": "reference_price × (1 − band_bps / 10,000).",
                "type": "string",
                "pattern": "^(?:0|[1-9]\\d*)(?:\\.\\d+)?$"
              },
              {
                "type": "null"
              }
            ]
          },
          "ask_boundary_price": {
            "anyOf": [
              {
                "description": "reference_price × (1 + band_bps / 10,000).",
                "type": "string",
                "pattern": "^(?:0|[1-9]\\d*)(?:\\.\\d+)?$"
              },
              {
                "type": "null"
              }
            ]
          },
          "bid_depth_2pct_base": {
            "anyOf": [
              {
                "description": "Base sold, fee included, until every included pool's marginal price falls to the bid boundary.",
                "type": "string",
                "pattern": "^(?:0|[1-9]\\d*)(?:\\.\\d+)?$"
              },
              {
                "type": "null"
              }
            ]
          },
          "bid_depth_2pct_quote": {
            "anyOf": [
              {
                "description": "Quote received for that sale.",
                "type": "string",
                "pattern": "^(?:0|[1-9]\\d*)(?:\\.\\d+)?$"
              },
              {
                "type": "null"
              }
            ]
          },
          "bid_depth_2pct_usd": {
            "anyOf": [
              {
                "description": "bid_depth_2pct_quote × quote_usd_price. Null with usd_unavailable_reason when the conversion is missing or stale.",
                "type": "string",
                "pattern": "^(?:0|[1-9]\\d*)(?:\\.\\d+)?$"
              },
              {
                "type": "null"
              }
            ]
          },
          "ask_depth_2pct_base": {
            "anyOf": [
              {
                "description": "Base bought until every included pool's marginal price rises to the ask boundary.",
                "type": "string",
                "pattern": "^(?:0|[1-9]\\d*)(?:\\.\\d+)?$"
              },
              {
                "type": "null"
              }
            ]
          },
          "ask_depth_2pct_quote": {
            "anyOf": [
              {
                "description": "Quote paid, fee included, for that purchase.",
                "type": "string",
                "pattern": "^(?:0|[1-9]\\d*)(?:\\.\\d+)?$"
              },
              {
                "type": "null"
              }
            ]
          },
          "ask_depth_2pct_usd": {
            "anyOf": [
              {
                "description": "ask_depth_2pct_quote × quote_usd_price.",
                "type": "string",
                "pattern": "^(?:0|[1-9]\\d*)(?:\\.\\d+)?$"
              },
              {
                "type": "null"
              }
            ]
          },
          "quote_usd_price": {
            "anyOf": [
              {
                "description": "The quote asset's public USD reference price used for conversion.",
                "type": "string",
                "pattern": "^(?:0|[1-9]\\d*)(?:\\.\\d+)?$"
              },
              {
                "type": "null"
              }
            ]
          },
          "quote_usd_price_observed_at": {
            "anyOf": [
              {
                "type": "string",
                "format": "date-time"
              },
              {
                "type": "null"
              }
            ]
          },
          "unavailable_reason": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/PoolDepthUnavailableReason"
              },
              {
                "type": "null"
              }
            ]
          },
          "usd_unavailable_reason": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/PoolDepthUnavailableReason"
              },
              {
                "type": "null"
              }
            ]
          },
          "completeness": {
            "description": "Partial when an eligible pool of the market is excluded; its reason is listed in pools.",
            "type": "string",
            "enum": [
              "complete",
              "partial",
              "unknown"
            ]
          },
          "eligible_pool_count": {
            "type": "integer",
            "minimum": 0,
            "maximum": 9007199254740991
          },
          "included_pool_count": {
            "type": "integer",
            "minimum": 0,
            "maximum": 9007199254740991
          },
          "pools": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/PoolDepthContribution"
            }
          },
          "calculated_at": {
            "anyOf": [
              {
                "type": "string",
                "format": "date-time"
              },
              {
                "type": "null"
              }
            ]
          }
        },
        "required": [
          "origin",
          "methodology_version",
          "band_bps",
          "reference_price",
          "bid_boundary_price",
          "ask_boundary_price",
          "bid_depth_2pct_base",
          "bid_depth_2pct_quote",
          "bid_depth_2pct_usd",
          "ask_depth_2pct_base",
          "ask_depth_2pct_quote",
          "ask_depth_2pct_usd",
          "quote_usd_price",
          "quote_usd_price_observed_at",
          "unavailable_reason",
          "usd_unavailable_reason",
          "completeness",
          "eligible_pool_count",
          "included_pool_count",
          "pools",
          "calculated_at"
        ],
        "additionalProperties": false
      },
      "LiquiditySnapshot": {
        "oneOf": [
          {
            "type": "object",
            "properties": {
              "liquidity_score": {
                "anyOf": [
                  {
                    "description": "Displayed liquidity score, 0–100. Simulated buys and sells at $100, $500, $1,000, $5,000 and $10,000; fees excluded. Null means insufficient inputs, never a hidden market.",
                    "type": "number",
                    "minimum": 0,
                    "maximum": 100
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "liquidity_score_methodology": {
                "type": "string",
                "enum": [
                  "execution-impact-v1"
                ]
              },
              "liquidity_score_updated_at": {
                "anyOf": [
                  {
                    "type": "string",
                    "format": "date-time"
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "score_probes": {
                "type": "array",
                "items": {
                  "type": "object",
                  "properties": {
                    "side": {
                      "type": "string",
                      "enum": [
                        "buy",
                        "sell"
                      ]
                    },
                    "notional_usd": {
                      "type": "string"
                    },
                    "impact_bps": {
                      "anyOf": [
                        {
                          "type": "string"
                        },
                        {
                          "type": "null"
                        }
                      ]
                    },
                    "filled": {
                      "anyOf": [
                        {
                          "type": "boolean"
                        },
                        {
                          "type": "null"
                        }
                      ]
                    }
                  },
                  "required": [
                    "side",
                    "notional_usd",
                    "impact_bps",
                    "filled"
                  ],
                  "additionalProperties": false
                }
              },
              "last_updated_at": {
                "type": "string",
                "format": "date-time"
              },
              "model": {
                "type": "string",
                "enum": [
                  "amm"
                ]
              },
              "venue_id": {
                "type": "string",
                "minLength": 1
              },
              "market_id": {
                "type": "string",
                "pattern": "^mkt_[A-Za-z0-9_-]+$"
              },
              "pool_id": {
                "type": "string",
                "pattern": "^pool_[A-Za-z0-9_-]+$"
              },
              "reserve_x": {
                "type": "string",
                "pattern": "^(?:0|[1-9]\\d*)(?:\\.\\d+)?$"
              },
              "reserve_y": {
                "type": "string",
                "pattern": "^(?:0|[1-9]\\d*)(?:\\.\\d+)?$"
              },
              "mid_price": {
                "anyOf": [
                  {
                    "type": "string",
                    "pattern": "^(?:0|[1-9]\\d*)(?:\\.\\d+)?$"
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "reserve_x_value_usd": {
                "anyOf": [
                  {
                    "type": "string",
                    "pattern": "^(?:0|[1-9]\\d*)(?:\\.\\d+)?$"
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "reserve_y_value_usd": {
                "anyOf": [
                  {
                    "type": "string",
                    "pattern": "^(?:0|[1-9]\\d*)(?:\\.\\d+)?$"
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "tvl_cc": {
                "anyOf": [
                  {
                    "type": "string",
                    "pattern": "^(?:0|[1-9]\\d*)(?:\\.\\d+)?$"
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "liquidity_usd": {
                "anyOf": [
                  {
                    "type": "string",
                    "pattern": "^(?:0|[1-9]\\d*)(?:\\.\\d+)?$"
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "curve_type": {
                "type": "string"
              },
              "curve_parameters": {
                "type": "object",
                "additionalProperties": {
                  "type": "string",
                  "pattern": "^(?:0|[1-9]\\d*)(?:\\.\\d+)?$"
                }
              },
              "fee_bps": {
                "type": "integer",
                "minimum": 0,
                "maximum": 9007199254740991
              },
              "fee_rate": {
                "anyOf": [
                  {
                    "type": "string",
                    "pattern": "^(?:0|[1-9]\\d*)(?:\\.\\d+)?$"
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "probes": {
                "type": "array",
                "items": {
                  "type": "object",
                  "properties": {
                    "notional_usd": {
                      "type": "string",
                      "pattern": "^(?:0|[1-9]\\d*)(?:\\.\\d+)?$"
                    },
                    "executable_price": {
                      "anyOf": [
                        {
                          "type": "string",
                          "pattern": "^(?:0|[1-9]\\d*)(?:\\.\\d+)?$"
                        },
                        {
                          "type": "null"
                        }
                      ]
                    },
                    "price_impact_bps": {
                      "anyOf": [
                        {
                          "type": "string",
                          "pattern": "^(?:0|[1-9]\\d*)(?:\\.\\d+)?$"
                        },
                        {
                          "type": "null"
                        }
                      ]
                    }
                  },
                  "required": [
                    "notional_usd",
                    "executable_price",
                    "price_impact_bps"
                  ],
                  "additionalProperties": false
                }
              },
              "asset_probes": {
                "type": "array",
                "items": {
                  "type": "object",
                  "properties": {
                    "input_asset_id": {
                      "type": "string",
                      "pattern": "^ast_[A-Za-z0-9_-]+$"
                    },
                    "output_asset_id": {
                      "type": "string",
                      "pattern": "^ast_[A-Za-z0-9_-]+$"
                    },
                    "notional_usd": {
                      "anyOf": [
                        {
                          "type": "string",
                          "pattern": "^(?:0|[1-9]\\d*)(?:\\.\\d+)?$"
                        },
                        {
                          "type": "null"
                        }
                      ]
                    },
                    "amount_in": {
                      "type": "string",
                      "pattern": "^(?:0|[1-9]\\d*)(?:\\.\\d+)?$"
                    },
                    "amount_out": {
                      "type": "string",
                      "pattern": "^(?:0|[1-9]\\d*)(?:\\.\\d+)?$"
                    },
                    "effective_price": {
                      "type": "string",
                      "pattern": "^(?:0|[1-9]\\d*)(?:\\.\\d+)?$"
                    },
                    "price_impact_pct": {
                      "anyOf": [
                        {
                          "type": "string"
                        },
                        {
                          "type": "null"
                        }
                      ]
                    }
                  },
                  "required": [
                    "input_asset_id",
                    "output_asset_id",
                    "notional_usd",
                    "amount_in",
                    "amount_out",
                    "effective_price",
                    "price_impact_pct"
                  ],
                  "additionalProperties": false
                }
              },
              "synthetic_depth": {
                "$ref": "#/components/schemas/PoolSyntheticDepth"
              }
            },
            "required": [
              "last_updated_at",
              "model",
              "venue_id",
              "market_id",
              "pool_id",
              "reserve_x",
              "reserve_y",
              "mid_price",
              "reserve_x_value_usd",
              "reserve_y_value_usd",
              "tvl_cc",
              "liquidity_usd",
              "curve_type",
              "curve_parameters",
              "fee_bps",
              "fee_rate",
              "probes",
              "asset_probes"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "liquidity_score": {
                "anyOf": [
                  {
                    "description": "Displayed liquidity score, 0–100. Simulated buys and sells at $100, $500, $1,000, $5,000 and $10,000; fees excluded. Null means insufficient inputs, never a hidden market.",
                    "type": "number",
                    "minimum": 0,
                    "maximum": 100
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "liquidity_score_methodology": {
                "type": "string",
                "enum": [
                  "execution-impact-v1"
                ]
              },
              "liquidity_score_updated_at": {
                "anyOf": [
                  {
                    "type": "string",
                    "format": "date-time"
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "score_probes": {
                "type": "array",
                "items": {
                  "type": "object",
                  "properties": {
                    "side": {
                      "type": "string",
                      "enum": [
                        "buy",
                        "sell"
                      ]
                    },
                    "notional_usd": {
                      "type": "string"
                    },
                    "impact_bps": {
                      "anyOf": [
                        {
                          "type": "string"
                        },
                        {
                          "type": "null"
                        }
                      ]
                    },
                    "filled": {
                      "anyOf": [
                        {
                          "type": "boolean"
                        },
                        {
                          "type": "null"
                        }
                      ]
                    }
                  },
                  "required": [
                    "side",
                    "notional_usd",
                    "impact_bps",
                    "filled"
                  ],
                  "additionalProperties": false
                }
              },
              "last_updated_at": {
                "type": "string",
                "format": "date-time"
              },
              "model": {
                "type": "string",
                "enum": [
                  "order_book"
                ]
              },
              "venue_id": {
                "type": "string",
                "minLength": 1
              },
              "market_id": {
                "type": "string",
                "pattern": "^mkt_[A-Za-z0-9_-]+$"
              },
              "spread_bps": {
                "anyOf": [
                  {
                    "type": "string",
                    "pattern": "^(?:0|[1-9]\\d*)(?:\\.\\d+)?$"
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "best_bid": {
                "anyOf": [
                  {
                    "type": "string",
                    "pattern": "^(?:0|[1-9]\\d*)(?:\\.\\d+)?$"
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "best_ask": {
                "anyOf": [
                  {
                    "type": "string",
                    "pattern": "^(?:0|[1-9]\\d*)(?:\\.\\d+)?$"
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "bid_depth": {
                "type": "object",
                "additionalProperties": {
                  "type": "string",
                  "pattern": "^(?:0|[1-9]\\d*)(?:\\.\\d+)?$"
                }
              },
              "ask_depth": {
                "type": "object",
                "additionalProperties": {
                  "type": "string",
                  "pattern": "^(?:0|[1-9]\\d*)(?:\\.\\d+)?$"
                }
              },
              "probes": {
                "type": "array",
                "items": {
                  "type": "object",
                  "properties": {
                    "side": {
                      "type": "string",
                      "enum": [
                        "buy",
                        "sell"
                      ]
                    },
                    "notional_usd": {
                      "type": "string",
                      "pattern": "^(?:0|[1-9]\\d*)(?:\\.\\d+)?$"
                    },
                    "base_amount": {
                      "anyOf": [
                        {
                          "type": "string",
                          "pattern": "^(?:0|[1-9]\\d*)(?:\\.\\d+)?$"
                        },
                        {
                          "type": "null"
                        }
                      ]
                    },
                    "quote_amount": {
                      "anyOf": [
                        {
                          "type": "string",
                          "pattern": "^(?:0|[1-9]\\d*)(?:\\.\\d+)?$"
                        },
                        {
                          "type": "null"
                        }
                      ]
                    },
                    "executable_price": {
                      "anyOf": [
                        {
                          "type": "string",
                          "pattern": "^(?:0|[1-9]\\d*)(?:\\.\\d+)?$"
                        },
                        {
                          "type": "null"
                        }
                      ]
                    },
                    "price_impact_bps": {
                      "anyOf": [
                        {
                          "type": "string",
                          "pattern": "^(?:0|[1-9]\\d*)(?:\\.\\d+)?$"
                        },
                        {
                          "type": "null"
                        }
                      ]
                    }
                  },
                  "required": [
                    "side",
                    "notional_usd",
                    "base_amount",
                    "quote_amount",
                    "executable_price",
                    "price_impact_bps"
                  ],
                  "additionalProperties": false
                }
              },
              "available_quantity_excludes_own_orders": {
                "type": "boolean"
              }
            },
            "required": [
              "last_updated_at",
              "model",
              "venue_id",
              "market_id",
              "spread_bps",
              "best_bid",
              "best_ask",
              "bid_depth",
              "ask_depth",
              "probes",
              "available_quantity_excludes_own_orders"
            ],
            "additionalProperties": false
          }
        ]
      },
      "VenueStatisticMetadata": {
        "type": "object",
        "description": "When one venue statistic was measured. retained is true when the newest statistics refresh omitted it and the latest usable earlier value is shown at its own time; judge the statistic's age by as_of, not by the statistics object's last_updated_at. as_of is null when the statistic is unknown.",
        "properties": {
          "as_of": {
            "anyOf": [
              {
                "type": "string",
                "format": "date-time"
              },
              {
                "type": "null"
              }
            ]
          },
          "retained": {
            "type": "boolean"
          }
        },
        "required": [
          "as_of",
          "retained"
        ],
        "additionalProperties": false
      },
      "VenueVolumeMetadata": {
        "type": "object",
        "properties": {
          "as_of": {
            "anyOf": [
              {
                "type": "string",
                "format": "date-time"
              },
              {
                "type": "null"
              }
            ]
          },
          "selection_method": {
            "description": "Actual selected method. The legacy method field keeps its reported/trades enum.",
            "anyOf": [
              {
                "type": "string",
                "enum": [
                  "venue_reported_aggregate",
                  "canonical_trades",
                  "activity"
                ]
              },
              {
                "type": "null"
              }
            ]
          },
          "methodology_version": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ]
          },
          "interpretation": {
            "description": "Completeness applies to the measurement's own window, not the current wall clock. A zero is a value, not unavailable activity.",
            "type": "string",
            "enum": [
              "complete_total",
              "partial_subtotal",
              "unavailable",
              "coverage_unknown"
            ]
          },
          "coverage_detail": {
            "description": "Counts come from the selected evidence, never ticker nulls. Null means the detail was not recorded. Missing activity has no native or USD volume; unvalued activity has native volume but no selected USD. Partial and incomplete-time counts concern included markets and may overlap. Retained is null when retention status was not established. No restricted market identities are exposed.",
            "type": "object",
            "properties": {
              "unit": {
                "type": "string",
                "enum": [
                  "USD",
                  "display_currency"
                ]
              },
              "window": {
                "type": "string",
                "enum": [
                  "24h"
                ]
              },
              "starts_at": {
                "anyOf": [
                  {
                    "type": "string",
                    "format": "date-time",
                    "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "ends_at": {
                "anyOf": [
                  {
                    "type": "string",
                    "format": "date-time",
                    "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "covered_seconds": {
                "anyOf": [
                  {
                    "type": "number",
                    "minimum": 0,
                    "maximum": 86400
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "retained": {
                "type": [
                  "boolean",
                  "null"
                ]
              },
              "eligible_market_count": {
                "anyOf": [
                  {
                    "type": "integer",
                    "minimum": 0,
                    "maximum": 9007199254740991
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "included_market_count": {
                "anyOf": [
                  {
                    "type": "integer",
                    "minimum": 0,
                    "maximum": 9007199254740991
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "missing_activity_market_count": {
                "anyOf": [
                  {
                    "type": "integer",
                    "minimum": 0,
                    "maximum": 9007199254740991
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "unvalued_market_count": {
                "anyOf": [
                  {
                    "type": "integer",
                    "minimum": 0,
                    "maximum": 9007199254740991
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "partial_market_count": {
                "anyOf": [
                  {
                    "type": "integer",
                    "minimum": 0,
                    "maximum": 9007199254740991
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "incomplete_time_market_count": {
                "anyOf": [
                  {
                    "type": "integer",
                    "minimum": 0,
                    "maximum": 9007199254740991
                  },
                  {
                    "type": "null"
                  }
                ]
              }
            },
            "required": [
              "unit",
              "window",
              "starts_at",
              "ends_at",
              "covered_seconds",
              "retained",
              "eligible_market_count",
              "included_market_count",
              "missing_activity_market_count",
              "unvalued_market_count",
              "partial_market_count",
              "incomplete_time_market_count"
            ],
            "additionalProperties": false
          }
        },
        "required": [
          "as_of",
          "methodology_version"
        ],
        "additionalProperties": false
      },
      "VenueStats": {
        "type": "object",
        "properties": {
          "network": {
            "type": "string",
            "enum": [
              "mainnet",
              "testnet",
              "devnet"
            ]
          },
          "volume_24h_usd": {
            "anyOf": [
              {
                "description": "24-hour volume in USD; null when unavailable.",
                "type": "string",
                "pattern": "^-?[0-9]+(?:\\.[0-9]+)?$"
              },
              {
                "type": "null"
              }
            ]
          },
          "liquidity_usd": {
            "anyOf": [
              {
                "type": "string",
                "pattern": "^-?[0-9]+(?:\\.[0-9]+)?$"
              },
              {
                "type": "null"
              }
            ]
          },
          "trade_count_24h": {
            "anyOf": [
              {
                "type": "integer",
                "minimum": 0,
                "maximum": 9007199254740991
              },
              {
                "type": "null"
              }
            ]
          },
          "trade_count_24h_metadata": {
            "$ref": "#/components/schemas/VenueStatisticMetadata"
          },
          "active_markets": {
            "anyOf": [
              {
                "type": "integer",
                "minimum": 0,
                "maximum": 9007199254740991
              },
              {
                "type": "null"
              }
            ]
          },
          "last_updated_at": {
            "description": "The venue's latest statistics refresh. A statistic kept from an earlier refresh does not move it back; it reports its own time in volume_24h_usd_metadata.as_of or trade_count_24h_metadata.as_of.",
            "type": "string",
            "format": "date-time"
          },
          "volume_24h_usd_metadata": {
            "$ref": "#/components/schemas/VenueVolumeMetadata"
          }
        },
        "required": [
          "network",
          "volume_24h_usd",
          "liquidity_usd",
          "trade_count_24h",
          "active_markets",
          "last_updated_at"
        ],
        "additionalProperties": false
      },
      "Venue": {
        "type": "object",
        "properties": {
          "venue_id": {
            "type": "string",
            "minLength": 1
          },
          "name": {
            "type": "string"
          },
          "market_model": {
            "type": "string",
            "enum": [
              "amm",
              "order_book",
              "order_book_rfq",
              "hybrid"
            ]
          },
          "last_updated_at": {
            "type": "string",
            "format": "date-time"
          },
          "stats": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/VenueStats"
              },
              {
                "type": "null"
              }
            ]
          }
        },
        "required": [
          "venue_id",
          "name",
          "market_model",
          "last_updated_at",
          "stats"
        ],
        "additionalProperties": false
      },
      "HistoryCapability": {
        "type": "object",
        "properties": {
          "available_from": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ]
          },
          "intervals": {
            "type": "array",
            "items": {
              "type": "string",
              "enum": [
                "1m",
                "5m",
                "10m",
                "15m",
                "30m",
                "1h",
                "4h",
                "1d",
                "7d",
                "1w"
              ]
            }
          }
        },
        "required": [
          "available_from",
          "intervals"
        ],
        "additionalProperties": false
      },
      "VenueCapabilities": {
        "type": "object",
        "properties": {
          "venue_id": {
            "type": "string",
            "minLength": 1
          },
          "features": {
            "type": "object",
            "properties": {
              "prices": {
                "type": "boolean"
              },
              "trades": {
                "type": "boolean"
              },
              "candles": {
                "type": "boolean"
              },
              "order_book": {
                "type": "boolean"
              },
              "quotes": {
                "type": "boolean"
              },
              "liquidity": {
                "type": "boolean"
              }
            },
            "required": [
              "prices",
              "trades",
              "candles",
              "order_book",
              "quotes",
              "liquidity"
            ],
            "additionalProperties": false
          },
          "history": {
            "$ref": "#/components/schemas/HistoryCapability"
          }
        },
        "required": [
          "venue_id",
          "features",
          "history"
        ],
        "additionalProperties": false
      },
      "IssuerApprovedEvidence": {
        "type": "object",
        "properties": {
          "field": {
            "type": "string"
          },
          "source_url": {
            "type": "string",
            "format": "uri"
          },
          "retrieved_at": {
            "type": "string",
            "format": "date-time"
          }
        },
        "required": [
          "field",
          "source_url",
          "retrieved_at"
        ],
        "additionalProperties": false
      },
      "Issuer": {
        "type": "object",
        "properties": {
          "issuer_id": {
            "type": "string",
            "pattern": "^iss_[A-Za-z0-9_-]+$"
          },
          "legal_name": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ]
          },
          "brand_name": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ]
          },
          "description": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ]
          },
          "website_url": {
            "anyOf": [
              {
                "type": "string",
                "format": "uri"
              },
              {
                "type": "null"
              }
            ]
          },
          "logo_url": {
            "anyOf": [
              {
                "type": "string",
                "format": "uri"
              },
              {
                "type": "null"
              }
            ]
          },
          "jurisdictions": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "verification_status": {
            "type": "string",
            "enum": [
              "unverified",
              "domain_verified",
              "issuer_attested",
              "manually_verified"
            ]
          },
          "asset_ids": {
            "type": "array",
            "items": {
              "type": "string",
              "pattern": "^ast_[A-Za-z0-9_-]+$"
            }
          },
          "official_links": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "label": {
                  "type": "string",
                  "minLength": 1,
                  "maxLength": 128
                },
                "url": {
                  "type": "string",
                  "maxLength": 2048,
                  "format": "uri"
                }
              },
              "required": [
                "label",
                "url"
              ],
              "additionalProperties": false
            }
          },
          "last_updated_at": {
            "anyOf": [
              {
                "type": "string",
                "format": "date-time",
                "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
              },
              {
                "type": "null"
              }
            ]
          }
        },
        "required": [
          "issuer_id",
          "legal_name",
          "brand_name",
          "description",
          "website_url",
          "logo_url",
          "jurisdictions",
          "verification_status",
          "asset_ids",
          "official_links",
          "last_updated_at"
        ],
        "additionalProperties": false,
        "example": {
          "issuer_id": "iss_example",
          "legal_name": "Example Issuer Ltd",
          "brand_name": "Example",
          "description": "An example issuer profile.",
          "website_url": "https://issuer.example",
          "logo_url": null,
          "official_links": [],
          "last_updated_at": "2026-09-09T12:00:00.000Z",
          "jurisdictions": [
            "GB"
          ],
          "verification_status": "domain_verified",
          "asset_ids": [
            "ast_example"
          ]
        }
      },
      "GlobalMetrics": {
        "type": "object",
        "properties": {
          "network": {
            "type": "string",
            "enum": [
              "all"
            ]
          },
          "convert": {
            "type": "string"
          },
          "tracked_assets": {
            "type": "integer",
            "minimum": 0,
            "maximum": 9007199254740991
          },
          "active_markets": {
            "type": "integer",
            "minimum": 0,
            "maximum": 9007199254740991
          },
          "active_venues": {
            "type": "integer",
            "minimum": 0,
            "maximum": 9007199254740991
          },
          "fdv": {
            "anyOf": [
              {
                "type": "string",
                "pattern": "^(?:0|[1-9]\\d*)(?:\\.\\d+)?$"
              },
              {
                "type": "null"
              }
            ]
          },
          "market_cap": {
            "anyOf": [
              {
                "type": "string",
                "pattern": "^(?:0|[1-9]\\d*)(?:\\.\\d+)?$"
              },
              {
                "type": "null"
              }
            ]
          },
          "liquidity_usd": {
            "anyOf": [
              {
                "type": "string",
                "pattern": "^(?:0|[1-9]\\d*)(?:\\.\\d+)?$"
              },
              {
                "type": "null"
              }
            ]
          },
          "volume_24h": {
            "anyOf": [
              {
                "type": "string",
                "pattern": "^(?:0|[1-9]\\d*)(?:\\.\\d+)?$"
              },
              {
                "type": "null"
              }
            ]
          },
          "volume": {
            "anyOf": [
              {
                "type": "object",
                "properties": {
                  "selection_method": {
                    "description": "Actual selected method. The legacy method field keeps its reported/trades enum.",
                    "anyOf": [
                      {
                        "type": "string",
                        "enum": [
                          "venue_reported_aggregate",
                          "canonical_trades",
                          "activity"
                        ]
                      },
                      {
                        "type": "null"
                      }
                    ]
                  },
                  "methodology_version": {
                    "type": "string"
                  },
                  "interpretation": {
                    "description": "Completeness applies to the measurement's own window, not the current wall clock. A zero is a value, not unavailable activity.",
                    "type": "string",
                    "enum": [
                      "complete_total",
                      "partial_subtotal",
                      "unavailable",
                      "coverage_unknown"
                    ]
                  },
                  "coverage_detail": {
                    "description": "Counts come from the selected evidence, never ticker nulls. Null means the detail was not recorded. Missing activity has no native or USD volume; unvalued activity has native volume but no selected USD. Partial and incomplete-time counts concern included markets and may overlap. Retained is null when retention status was not established. No restricted market identities are exposed.",
                    "type": "object",
                    "properties": {
                      "unit": {
                        "type": "string",
                        "enum": [
                          "USD",
                          "display_currency"
                        ]
                      },
                      "window": {
                        "type": "string",
                        "enum": [
                          "24h"
                        ]
                      },
                      "starts_at": {
                        "anyOf": [
                          {
                            "type": "string",
                            "format": "date-time",
                            "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                          },
                          {
                            "type": "null"
                          }
                        ]
                      },
                      "ends_at": {
                        "anyOf": [
                          {
                            "type": "string",
                            "format": "date-time",
                            "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                          },
                          {
                            "type": "null"
                          }
                        ]
                      },
                      "covered_seconds": {
                        "anyOf": [
                          {
                            "type": "number",
                            "minimum": 0,
                            "maximum": 86400
                          },
                          {
                            "type": "null"
                          }
                        ]
                      },
                      "retained": {
                        "type": [
                          "boolean",
                          "null"
                        ]
                      },
                      "eligible_market_count": {
                        "anyOf": [
                          {
                            "type": "integer",
                            "minimum": 0,
                            "maximum": 9007199254740991
                          },
                          {
                            "type": "null"
                          }
                        ]
                      },
                      "included_market_count": {
                        "anyOf": [
                          {
                            "type": "integer",
                            "minimum": 0,
                            "maximum": 9007199254740991
                          },
                          {
                            "type": "null"
                          }
                        ]
                      },
                      "missing_activity_market_count": {
                        "anyOf": [
                          {
                            "type": "integer",
                            "minimum": 0,
                            "maximum": 9007199254740991
                          },
                          {
                            "type": "null"
                          }
                        ]
                      },
                      "unvalued_market_count": {
                        "anyOf": [
                          {
                            "type": "integer",
                            "minimum": 0,
                            "maximum": 9007199254740991
                          },
                          {
                            "type": "null"
                          }
                        ]
                      },
                      "partial_market_count": {
                        "anyOf": [
                          {
                            "type": "integer",
                            "minimum": 0,
                            "maximum": 9007199254740991
                          },
                          {
                            "type": "null"
                          }
                        ]
                      },
                      "incomplete_time_market_count": {
                        "anyOf": [
                          {
                            "type": "integer",
                            "minimum": 0,
                            "maximum": 9007199254740991
                          },
                          {
                            "type": "null"
                          }
                        ]
                      }
                    },
                    "required": [
                      "unit",
                      "window",
                      "starts_at",
                      "ends_at",
                      "covered_seconds",
                      "retained",
                      "eligible_market_count",
                      "included_market_count",
                      "missing_activity_market_count",
                      "unvalued_market_count",
                      "partial_market_count",
                      "incomplete_time_market_count"
                    ],
                    "additionalProperties": false
                  },
                  "method": {
                    "anyOf": [
                      {
                        "type": "string",
                        "enum": [
                          "reported",
                          "trades"
                        ]
                      },
                      {
                        "type": "null"
                      }
                    ]
                  },
                  "coverage": {
                    "type": "string",
                    "enum": [
                      "complete",
                      "partial",
                      "unknown"
                    ]
                  },
                  "change_24h_pct": {
                    "anyOf": [
                      {
                        "type": "string",
                        "pattern": "^-?[0-9]+(?:\\.[0-9]+)?$"
                      },
                      {
                        "type": "null"
                      }
                    ]
                  },
                  "as_of": {
                    "type": "string",
                    "format": "date-time",
                    "description": "Measurement time of this volume, independent of the quote price update time."
                  }
                },
                "required": [
                  "method",
                  "coverage",
                  "change_24h_pct"
                ],
                "additionalProperties": false
              },
              {
                "type": "null"
              }
            ]
          },
          "last_updated_at": {
            "type": "string",
            "format": "date-time"
          }
        },
        "required": [
          "network",
          "convert",
          "tracked_assets",
          "active_markets",
          "active_venues",
          "fdv",
          "market_cap",
          "liquidity_usd",
          "volume_24h",
          "volume",
          "last_updated_at"
        ],
        "additionalProperties": false
      },
      "SourceStatus": {
        "type": "object",
        "properties": {
          "venue_id": {
            "type": "string",
            "minLength": 1
          },
          "available": {
            "type": "boolean"
          },
          "last_updated_at": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ]
          }
        },
        "required": [
          "venue_id",
          "available",
          "last_updated_at"
        ],
        "additionalProperties": false
      },
      "MarketChart": {
        "type": "object",
        "properties": {
          "asset_id": {
            "type": "string",
            "pattern": "^ast_[A-Za-z0-9_-]+$"
          },
          "convert": {
            "type": "string",
            "pattern": "^[A-Z]{3,12}$"
          },
          "points": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "timestamp": {
                  "type": "string",
                  "format": "date-time",
                  "description": "UTC instant the sampled quote was calculated; price and FDV are valued at it."
                },
                "price": {
                  "anyOf": [
                    {
                      "type": "string",
                      "pattern": "^(?:0|[1-9]\\d*)(?:\\.\\d+)?$"
                    },
                    {
                      "type": "null"
                    }
                  ]
                },
                "market_cap": {
                  "anyOf": [
                    {
                      "type": "string",
                      "pattern": "^(?:0|[1-9]\\d*)(?:\\.\\d+)?$"
                    },
                    {
                      "type": "null"
                    }
                  ]
                },
                "fdv": {
                  "anyOf": [
                    {
                      "type": "string",
                      "pattern": "^(?:0|[1-9]\\d*)(?:\\.\\d+)?$"
                    },
                    {
                      "type": "null"
                    }
                  ]
                },
                "volume": {
                  "anyOf": [
                    {
                      "type": "string",
                      "pattern": "^(?:0|[1-9]\\d*)(?:\\.\\d+)?$"
                    },
                    {
                      "type": "null"
                    }
                  ]
                }
              },
              "required": [
                "timestamp",
                "price",
                "market_cap",
                "fdv",
                "volume"
              ],
              "additionalProperties": false
            }
          },
          "last_updated_at": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "description": "The newest point's `timestamp` on this page."
          }
        },
        "required": [
          "asset_id",
          "convert",
          "points",
          "last_updated_at"
        ],
        "additionalProperties": false
      },
      "SimplePriceData": {
        "type": "object",
        "additionalProperties": {
          "type": "object",
          "additionalProperties": {
            "type": "object",
            "properties": {
              "price": {
                "type": "string",
                "pattern": "^(?:0|[1-9]\\d*)(?:\\.\\d+)?$"
              },
              "last_updated_at": {
                "type": "string",
                "format": "date-time"
              }
            },
            "required": [
              "price",
              "last_updated_at"
            ],
            "additionalProperties": false
          }
        }
      },
      "AssetListData": {
        "type": "array",
        "items": {
          "$ref": "#/components/schemas/Asset"
        }
      },
      "AssetQuoteListData": {
        "type": "array",
        "items": {
          "$ref": "#/components/schemas/AssetQuote"
        }
      },
      "AssetListingListData": {
        "type": "array",
        "items": {
          "$ref": "#/components/schemas/AssetListing"
        }
      },
      "CandleListData": {
        "type": "array",
        "items": {
          "$ref": "#/components/schemas/MarketCandle"
        }
      },
      "MarketListData": {
        "type": "array",
        "items": {
          "$ref": "#/components/schemas/Market"
        }
      },
      "TradeListData": {
        "type": "array",
        "items": {
          "$ref": "#/components/schemas/Trade"
        }
      },
      "PoolListData": {
        "type": "array",
        "items": {
          "$ref": "#/components/schemas/Pool"
        }
      },
      "VenueListData": {
        "type": "array",
        "items": {
          "$ref": "#/components/schemas/Venue"
        }
      },
      "IssuerListData": {
        "type": "array",
        "items": {
          "$ref": "#/components/schemas/Issuer"
        }
      },
      "SourceStatusListData": {
        "type": "array",
        "items": {
          "$ref": "#/components/schemas/SourceStatus"
        }
      },
      "SimplePriceEnvelope": {
        "type": "object",
        "properties": {
          "status": {
            "$ref": "#/components/schemas/ResponseStatus"
          },
          "data": {
            "$ref": "#/components/schemas/SimplePriceData"
          }
        },
        "required": [
          "status",
          "data"
        ],
        "additionalProperties": false
      },
      "AssetListEnvelope": {
        "type": "object",
        "properties": {
          "status": {
            "$ref": "#/components/schemas/ResponseStatus"
          },
          "data": {
            "$ref": "#/components/schemas/AssetListData"
          }
        },
        "required": [
          "status",
          "data"
        ],
        "additionalProperties": false
      },
      "AssetEnvelope": {
        "type": "object",
        "properties": {
          "status": {
            "$ref": "#/components/schemas/ResponseStatus"
          },
          "data": {
            "$ref": "#/components/schemas/Asset"
          }
        },
        "required": [
          "status",
          "data"
        ],
        "additionalProperties": false
      },
      "AssetQuoteListEnvelope": {
        "type": "object",
        "properties": {
          "status": {
            "$ref": "#/components/schemas/ResponseStatus"
          },
          "data": {
            "$ref": "#/components/schemas/AssetQuoteListData"
          }
        },
        "required": [
          "status",
          "data"
        ],
        "additionalProperties": false
      },
      "AssetListingListEnvelope": {
        "type": "object",
        "properties": {
          "status": {
            "$ref": "#/components/schemas/ResponseStatus"
          },
          "data": {
            "$ref": "#/components/schemas/AssetListingListData"
          },
          "pagination": {
            "$ref": "#/components/schemas/Pagination"
          },
          "sort": {
            "type": "object",
            "properties": {
              "field": {
                "type": "string",
                "enum": [
                  "market_cap",
                  "fdv",
                  "volume_24h",
                  "liquidity",
                  "price_change_24h",
                  "symbol"
                ]
              },
              "direction": {
                "type": "string",
                "enum": [
                  "asc",
                  "desc"
                ]
              },
              "convert": {
                "type": "string"
              }
            },
            "required": [
              "field",
              "direction",
              "convert"
            ],
            "additionalProperties": false
          }
        },
        "required": [
          "status",
          "data",
          "pagination",
          "sort"
        ],
        "additionalProperties": false
      },
      "CandleListEnvelope": {
        "type": "object",
        "properties": {
          "status": {
            "$ref": "#/components/schemas/ResponseStatus"
          },
          "data": {
            "$ref": "#/components/schemas/CandleListData"
          },
          "pagination": {
            "$ref": "#/components/schemas/Pagination"
          }
        },
        "required": [
          "status",
          "data",
          "pagination"
        ],
        "additionalProperties": false
      },
      "MarketChartEnvelope": {
        "type": "object",
        "properties": {
          "status": {
            "$ref": "#/components/schemas/ResponseStatus"
          },
          "data": {
            "$ref": "#/components/schemas/MarketChart"
          },
          "pagination": {
            "$ref": "#/components/schemas/Pagination"
          }
        },
        "required": [
          "status",
          "data",
          "pagination"
        ],
        "additionalProperties": false
      },
      "HistoricalSupplyPoint": {
        "type": "object",
        "description": "One sampled total-supply observation. It carries no other timing or evidence fields.",
        "properties": {
          "supply": {
            "type": "string",
            "pattern": "^(?:0|[1-9]\\d*)(?:\\.\\d+)?$",
            "description": "Exact reported total supply as retained; never rounded, rescaled or interpolated."
          },
          "timestamp": {
            "type": "string",
            "format": "date-time",
            "description": "UTC instant at which the source reports that this supply applies (the retained supply as-of time)."
          }
        },
        "required": [
          "supply",
          "timestamp"
        ],
        "additionalProperties": false,
        "examples": [
          {
            "supply": "1000250.5000000000",
            "timestamp": "2026-09-18T04:35:00.000000Z"
          }
        ]
      },
      "HistoricalSupply": {
        "type": "object",
        "properties": {
          "asset_id": {
            "type": "string",
            "pattern": "^ast_[A-Za-z0-9_-]+$"
          },
          "interval": {
            "type": "string",
            "enum": [
              "1m",
              "5m",
              "10m",
              "15m",
              "30m",
              "1h",
              "4h",
              "1d",
              "7d",
              "1w"
            ]
          },
          "points": {
            "type": "array",
            "description": "Newest first, one point per populated interval; empty intervals are omitted.",
            "items": {
              "$ref": "#/components/schemas/HistoricalSupplyPoint"
            }
          }
        },
        "required": [
          "asset_id",
          "interval",
          "points"
        ],
        "additionalProperties": false
      },
      "HistoricalSupplyEnvelope": {
        "type": "object",
        "properties": {
          "status": {
            "$ref": "#/components/schemas/ResponseStatus"
          },
          "data": {
            "$ref": "#/components/schemas/HistoricalSupply"
          },
          "pagination": {
            "$ref": "#/components/schemas/Pagination"
          }
        },
        "required": [
          "status",
          "data",
          "pagination"
        ],
        "additionalProperties": false
      },
      "MarketListEnvelope": {
        "type": "object",
        "properties": {
          "status": {
            "$ref": "#/components/schemas/ResponseStatus"
          },
          "data": {
            "$ref": "#/components/schemas/MarketListData"
          },
          "pagination": {
            "$ref": "#/components/schemas/Pagination"
          }
        },
        "required": [
          "status",
          "data",
          "pagination"
        ],
        "additionalProperties": false
      },
      "MarketEnvelope": {
        "type": "object",
        "properties": {
          "status": {
            "$ref": "#/components/schemas/ResponseStatus"
          },
          "data": {
            "$ref": "#/components/schemas/Market"
          },
          "ticker": {
            "anyOf": [
              {
                "type": "object",
                "properties": {
                  "market_category": {
                    "anyOf": [
                      {
                        "type": "string",
                        "enum": [
                          "amm",
                          "clmm",
                          "orderbook",
                          "hybrid"
                        ]
                      },
                      {
                        "type": "null"
                      }
                    ]
                  },
                  "liquidity_score": {
                    "anyOf": [
                      {
                        "description": "Displayed liquidity score, 0–100. Simulated buys and sells at $100, $500, $1,000, $5,000 and $10,000; fees excluded. Null means insufficient inputs, never a hidden market.",
                        "type": "number",
                        "minimum": 0,
                        "maximum": 100
                      },
                      {
                        "type": "null"
                      }
                    ]
                  },
                  "liquidity_score_methodology": {
                    "type": "string",
                    "enum": [
                      "execution-impact-v1"
                    ]
                  },
                  "liquidity_score_updated_at": {
                    "anyOf": [
                      {
                        "type": "string",
                        "format": "date-time"
                      },
                      {
                        "type": "null"
                      }
                    ]
                  },
                  "last_updated_at": {
                    "type": "string",
                    "format": "date-time"
                  },
                  "venue_id": {
                    "type": "string",
                    "minLength": 1
                  },
                  "market_id": {
                    "type": "string",
                    "pattern": "^mkt_[A-Za-z0-9_-]+$"
                  },
                  "price_origin": {
                    "type": "string",
                    "enum": [
                      "venue_pool",
                      "venue_book",
                      "venue_trade",
                      "external_reference",
                      "derived"
                    ]
                  },
                  "last_price": {
                    "anyOf": [
                      {
                        "type": "string",
                        "pattern": "^(?:0|[1-9]\\d*)(?:\\.\\d+)?$"
                      },
                      {
                        "type": "null"
                      }
                    ]
                  },
                  "best_bid": {
                    "anyOf": [
                      {
                        "type": "string",
                        "pattern": "^(?:0|[1-9]\\d*)(?:\\.\\d+)?$"
                      },
                      {
                        "type": "null"
                      }
                    ]
                  },
                  "best_ask": {
                    "anyOf": [
                      {
                        "type": "string",
                        "pattern": "^(?:0|[1-9]\\d*)(?:\\.\\d+)?$"
                      },
                      {
                        "type": "null"
                      }
                    ]
                  },
                  "mid_price": {
                    "anyOf": [
                      {
                        "type": "string",
                        "pattern": "^(?:0|[1-9]\\d*)(?:\\.\\d+)?$"
                      },
                      {
                        "type": "null"
                      }
                    ]
                  },
                  "volume_base_24h": {
                    "anyOf": [
                      {
                        "type": "string",
                        "pattern": "^(?:0|[1-9]\\d*)(?:\\.\\d+)?$"
                      },
                      {
                        "type": "null"
                      }
                    ]
                  },
                  "volume_quote_24h": {
                    "anyOf": [
                      {
                        "type": "string",
                        "pattern": "^(?:0|[1-9]\\d*)(?:\\.\\d+)?$"
                      },
                      {
                        "type": "null"
                      }
                    ]
                  },
                  "trade_count_24h": {
                    "anyOf": [
                      {
                        "type": "integer",
                        "minimum": 0,
                        "maximum": 9007199254740991
                      },
                      {
                        "type": "null"
                      }
                    ]
                  },
                  "open_24h": {
                    "anyOf": [
                      {
                        "type": "string",
                        "pattern": "^(?:0|[1-9]\\d*)(?:\\.\\d+)?$"
                      },
                      {
                        "type": "null"
                      }
                    ]
                  },
                  "high_24h": {
                    "anyOf": [
                      {
                        "type": "string",
                        "pattern": "^(?:0|[1-9]\\d*)(?:\\.\\d+)?$"
                      },
                      {
                        "type": "null"
                      }
                    ]
                  },
                  "low_24h": {
                    "anyOf": [
                      {
                        "type": "string",
                        "pattern": "^(?:0|[1-9]\\d*)(?:\\.\\d+)?$"
                      },
                      {
                        "type": "null"
                      }
                    ]
                  },
                  "close_24h": {
                    "anyOf": [
                      {
                        "type": "string",
                        "pattern": "^(?:0|[1-9]\\d*)(?:\\.\\d+)?$"
                      },
                      {
                        "type": "null"
                      }
                    ]
                  },
                  "vwap_24h": {
                    "anyOf": [
                      {
                        "type": "string",
                        "pattern": "^(?:0|[1-9]\\d*)(?:\\.\\d+)?$"
                      },
                      {
                        "type": "null"
                      }
                    ]
                  },
                  "price_change_abs_24h": {
                    "anyOf": [
                      {
                        "type": "string",
                        "pattern": "^-?(?:0|[1-9]\\d*)(?:\\.\\d+)?$"
                      },
                      {
                        "type": "null"
                      }
                    ]
                  },
                  "reference_price_usd": {
                    "anyOf": [
                      {
                        "type": "string",
                        "pattern": "^(?:0|[1-9]\\d*)(?:\\.\\d+)?$"
                      },
                      {
                        "type": "null"
                      }
                    ]
                  },
                  "price_change_24h_pct": {
                    "anyOf": [
                      {
                        "type": "string",
                        "pattern": "^-?(?:0|[1-9]\\d*)(?:\\.\\d+)?$"
                      },
                      {
                        "type": "null"
                      }
                    ]
                  },
                  "volume_usd_24h": {
                    "anyOf": [
                      {
                        "type": "string",
                        "pattern": "^(?:0|[1-9]\\d*)(?:\\.\\d+)?$"
                      },
                      {
                        "type": "null"
                      }
                    ]
                  }
                },
                "required": [
                  "last_updated_at",
                  "venue_id",
                  "market_id",
                  "price_origin",
                  "last_price",
                  "best_bid",
                  "best_ask",
                  "mid_price",
                  "volume_base_24h",
                  "volume_quote_24h",
                  "trade_count_24h",
                  "open_24h",
                  "high_24h",
                  "low_24h",
                  "close_24h",
                  "vwap_24h",
                  "price_change_abs_24h",
                  "reference_price_usd",
                  "price_change_24h_pct",
                  "volume_usd_24h"
                ],
                "additionalProperties": false
              },
              {
                "type": "null"
              }
            ]
          },
          "liquidity": {
            "anyOf": [
              {
                "oneOf": [
                  {
                    "type": "object",
                    "properties": {
                      "liquidity_score": {
                        "anyOf": [
                          {
                            "description": "Displayed liquidity score, 0–100. Simulated buys and sells at $100, $500, $1,000, $5,000 and $10,000; fees excluded. Null means insufficient inputs, never a hidden market.",
                            "type": "number",
                            "minimum": 0,
                            "maximum": 100
                          },
                          {
                            "type": "null"
                          }
                        ]
                      },
                      "liquidity_score_methodology": {
                        "type": "string",
                        "enum": [
                          "execution-impact-v1"
                        ]
                      },
                      "liquidity_score_updated_at": {
                        "anyOf": [
                          {
                            "type": "string",
                            "format": "date-time"
                          },
                          {
                            "type": "null"
                          }
                        ]
                      },
                      "score_probes": {
                        "type": "array",
                        "items": {
                          "type": "object",
                          "properties": {
                            "side": {
                              "type": "string",
                              "enum": [
                                "buy",
                                "sell"
                              ]
                            },
                            "notional_usd": {
                              "type": "string"
                            },
                            "impact_bps": {
                              "anyOf": [
                                {
                                  "type": "string"
                                },
                                {
                                  "type": "null"
                                }
                              ]
                            },
                            "filled": {
                              "anyOf": [
                                {
                                  "type": "boolean"
                                },
                                {
                                  "type": "null"
                                }
                              ]
                            }
                          },
                          "required": [
                            "side",
                            "notional_usd",
                            "impact_bps",
                            "filled"
                          ],
                          "additionalProperties": false
                        }
                      },
                      "last_updated_at": {
                        "type": "string",
                        "format": "date-time"
                      },
                      "model": {
                        "type": "string",
                        "enum": [
                          "amm"
                        ]
                      },
                      "venue_id": {
                        "type": "string",
                        "minLength": 1
                      },
                      "market_id": {
                        "type": "string",
                        "pattern": "^mkt_[A-Za-z0-9_-]+$"
                      },
                      "pool_id": {
                        "type": "string",
                        "pattern": "^pool_[A-Za-z0-9_-]+$"
                      },
                      "reserve_x": {
                        "type": "string",
                        "pattern": "^(?:0|[1-9]\\d*)(?:\\.\\d+)?$"
                      },
                      "reserve_y": {
                        "type": "string",
                        "pattern": "^(?:0|[1-9]\\d*)(?:\\.\\d+)?$"
                      },
                      "mid_price": {
                        "anyOf": [
                          {
                            "type": "string",
                            "pattern": "^(?:0|[1-9]\\d*)(?:\\.\\d+)?$"
                          },
                          {
                            "type": "null"
                          }
                        ]
                      },
                      "reserve_x_value_usd": {
                        "anyOf": [
                          {
                            "type": "string",
                            "pattern": "^(?:0|[1-9]\\d*)(?:\\.\\d+)?$"
                          },
                          {
                            "type": "null"
                          }
                        ]
                      },
                      "reserve_y_value_usd": {
                        "anyOf": [
                          {
                            "type": "string",
                            "pattern": "^(?:0|[1-9]\\d*)(?:\\.\\d+)?$"
                          },
                          {
                            "type": "null"
                          }
                        ]
                      },
                      "tvl_cc": {
                        "anyOf": [
                          {
                            "type": "string",
                            "pattern": "^(?:0|[1-9]\\d*)(?:\\.\\d+)?$"
                          },
                          {
                            "type": "null"
                          }
                        ]
                      },
                      "liquidity_usd": {
                        "anyOf": [
                          {
                            "type": "string",
                            "pattern": "^(?:0|[1-9]\\d*)(?:\\.\\d+)?$"
                          },
                          {
                            "type": "null"
                          }
                        ]
                      },
                      "curve_type": {
                        "type": "string"
                      },
                      "curve_parameters": {
                        "type": "object",
                        "additionalProperties": {
                          "type": "string",
                          "pattern": "^(?:0|[1-9]\\d*)(?:\\.\\d+)?$"
                        }
                      },
                      "fee_bps": {
                        "type": "integer",
                        "minimum": 0,
                        "maximum": 9007199254740991
                      },
                      "fee_rate": {
                        "anyOf": [
                          {
                            "type": "string",
                            "pattern": "^(?:0|[1-9]\\d*)(?:\\.\\d+)?$"
                          },
                          {
                            "type": "null"
                          }
                        ]
                      },
                      "probes": {
                        "type": "array",
                        "items": {
                          "type": "object",
                          "properties": {
                            "notional_usd": {
                              "type": "string",
                              "pattern": "^(?:0|[1-9]\\d*)(?:\\.\\d+)?$"
                            },
                            "executable_price": {
                              "anyOf": [
                                {
                                  "type": "string",
                                  "pattern": "^(?:0|[1-9]\\d*)(?:\\.\\d+)?$"
                                },
                                {
                                  "type": "null"
                                }
                              ]
                            },
                            "price_impact_bps": {
                              "anyOf": [
                                {
                                  "type": "string",
                                  "pattern": "^(?:0|[1-9]\\d*)(?:\\.\\d+)?$"
                                },
                                {
                                  "type": "null"
                                }
                              ]
                            }
                          },
                          "required": [
                            "notional_usd",
                            "executable_price",
                            "price_impact_bps"
                          ],
                          "additionalProperties": false
                        }
                      },
                      "asset_probes": {
                        "type": "array",
                        "items": {
                          "type": "object",
                          "properties": {
                            "input_asset_id": {
                              "type": "string",
                              "pattern": "^ast_[A-Za-z0-9_-]+$"
                            },
                            "output_asset_id": {
                              "type": "string",
                              "pattern": "^ast_[A-Za-z0-9_-]+$"
                            },
                            "notional_usd": {
                              "anyOf": [
                                {
                                  "type": "string",
                                  "pattern": "^(?:0|[1-9]\\d*)(?:\\.\\d+)?$"
                                },
                                {
                                  "type": "null"
                                }
                              ]
                            },
                            "amount_in": {
                              "type": "string",
                              "pattern": "^(?:0|[1-9]\\d*)(?:\\.\\d+)?$"
                            },
                            "amount_out": {
                              "type": "string",
                              "pattern": "^(?:0|[1-9]\\d*)(?:\\.\\d+)?$"
                            },
                            "effective_price": {
                              "type": "string",
                              "pattern": "^(?:0|[1-9]\\d*)(?:\\.\\d+)?$"
                            },
                            "price_impact_pct": {
                              "anyOf": [
                                {
                                  "type": "string"
                                },
                                {
                                  "type": "null"
                                }
                              ]
                            }
                          },
                          "required": [
                            "input_asset_id",
                            "output_asset_id",
                            "notional_usd",
                            "amount_in",
                            "amount_out",
                            "effective_price",
                            "price_impact_pct"
                          ],
                          "additionalProperties": false
                        }
                      },
                      "synthetic_depth": {
                        "$ref": "#/components/schemas/PoolSyntheticDepth"
                      }
                    },
                    "required": [
                      "last_updated_at",
                      "model",
                      "venue_id",
                      "market_id",
                      "pool_id",
                      "reserve_x",
                      "reserve_y",
                      "mid_price",
                      "reserve_x_value_usd",
                      "reserve_y_value_usd",
                      "tvl_cc",
                      "liquidity_usd",
                      "curve_type",
                      "curve_parameters",
                      "fee_bps",
                      "fee_rate",
                      "probes",
                      "asset_probes"
                    ],
                    "additionalProperties": false
                  },
                  {
                    "type": "object",
                    "properties": {
                      "liquidity_score": {
                        "anyOf": [
                          {
                            "description": "Displayed liquidity score, 0–100. Simulated buys and sells at $100, $500, $1,000, $5,000 and $10,000; fees excluded. Null means insufficient inputs, never a hidden market.",
                            "type": "number",
                            "minimum": 0,
                            "maximum": 100
                          },
                          {
                            "type": "null"
                          }
                        ]
                      },
                      "liquidity_score_methodology": {
                        "type": "string",
                        "enum": [
                          "execution-impact-v1"
                        ]
                      },
                      "liquidity_score_updated_at": {
                        "anyOf": [
                          {
                            "type": "string",
                            "format": "date-time"
                          },
                          {
                            "type": "null"
                          }
                        ]
                      },
                      "score_probes": {
                        "type": "array",
                        "items": {
                          "type": "object",
                          "properties": {
                            "side": {
                              "type": "string",
                              "enum": [
                                "buy",
                                "sell"
                              ]
                            },
                            "notional_usd": {
                              "type": "string"
                            },
                            "impact_bps": {
                              "anyOf": [
                                {
                                  "type": "string"
                                },
                                {
                                  "type": "null"
                                }
                              ]
                            },
                            "filled": {
                              "anyOf": [
                                {
                                  "type": "boolean"
                                },
                                {
                                  "type": "null"
                                }
                              ]
                            }
                          },
                          "required": [
                            "side",
                            "notional_usd",
                            "impact_bps",
                            "filled"
                          ],
                          "additionalProperties": false
                        }
                      },
                      "last_updated_at": {
                        "type": "string",
                        "format": "date-time"
                      },
                      "model": {
                        "type": "string",
                        "enum": [
                          "order_book"
                        ]
                      },
                      "venue_id": {
                        "type": "string",
                        "minLength": 1
                      },
                      "market_id": {
                        "type": "string",
                        "pattern": "^mkt_[A-Za-z0-9_-]+$"
                      },
                      "spread_bps": {
                        "anyOf": [
                          {
                            "type": "string",
                            "pattern": "^(?:0|[1-9]\\d*)(?:\\.\\d+)?$"
                          },
                          {
                            "type": "null"
                          }
                        ]
                      },
                      "best_bid": {
                        "anyOf": [
                          {
                            "type": "string",
                            "pattern": "^(?:0|[1-9]\\d*)(?:\\.\\d+)?$"
                          },
                          {
                            "type": "null"
                          }
                        ]
                      },
                      "best_ask": {
                        "anyOf": [
                          {
                            "type": "string",
                            "pattern": "^(?:0|[1-9]\\d*)(?:\\.\\d+)?$"
                          },
                          {
                            "type": "null"
                          }
                        ]
                      },
                      "bid_depth": {
                        "type": "object",
                        "additionalProperties": {
                          "type": "string",
                          "pattern": "^(?:0|[1-9]\\d*)(?:\\.\\d+)?$"
                        }
                      },
                      "ask_depth": {
                        "type": "object",
                        "additionalProperties": {
                          "type": "string",
                          "pattern": "^(?:0|[1-9]\\d*)(?:\\.\\d+)?$"
                        }
                      },
                      "probes": {
                        "type": "array",
                        "items": {
                          "type": "object",
                          "properties": {
                            "side": {
                              "type": "string",
                              "enum": [
                                "buy",
                                "sell"
                              ]
                            },
                            "notional_usd": {
                              "type": "string",
                              "pattern": "^(?:0|[1-9]\\d*)(?:\\.\\d+)?$"
                            },
                            "base_amount": {
                              "anyOf": [
                                {
                                  "type": "string",
                                  "pattern": "^(?:0|[1-9]\\d*)(?:\\.\\d+)?$"
                                },
                                {
                                  "type": "null"
                                }
                              ]
                            },
                            "quote_amount": {
                              "anyOf": [
                                {
                                  "type": "string",
                                  "pattern": "^(?:0|[1-9]\\d*)(?:\\.\\d+)?$"
                                },
                                {
                                  "type": "null"
                                }
                              ]
                            },
                            "executable_price": {
                              "anyOf": [
                                {
                                  "type": "string",
                                  "pattern": "^(?:0|[1-9]\\d*)(?:\\.\\d+)?$"
                                },
                                {
                                  "type": "null"
                                }
                              ]
                            },
                            "price_impact_bps": {
                              "anyOf": [
                                {
                                  "type": "string",
                                  "pattern": "^(?:0|[1-9]\\d*)(?:\\.\\d+)?$"
                                },
                                {
                                  "type": "null"
                                }
                              ]
                            }
                          },
                          "required": [
                            "side",
                            "notional_usd",
                            "base_amount",
                            "quote_amount",
                            "executable_price",
                            "price_impact_bps"
                          ],
                          "additionalProperties": false
                        }
                      },
                      "available_quantity_excludes_own_orders": {
                        "type": "boolean"
                      }
                    },
                    "required": [
                      "last_updated_at",
                      "model",
                      "venue_id",
                      "market_id",
                      "spread_bps",
                      "best_bid",
                      "best_ask",
                      "bid_depth",
                      "ask_depth",
                      "probes",
                      "available_quantity_excludes_own_orders"
                    ],
                    "additionalProperties": false
                  }
                ]
              },
              {
                "type": "null"
              }
            ]
          }
        },
        "required": [
          "status",
          "data",
          "ticker",
          "liquidity"
        ],
        "additionalProperties": false
      },
      "TickerEnvelope": {
        "type": "object",
        "properties": {
          "status": {
            "$ref": "#/components/schemas/ResponseStatus"
          },
          "data": {
            "$ref": "#/components/schemas/Ticker"
          }
        },
        "required": [
          "status",
          "data"
        ],
        "additionalProperties": false
      },
      "OrderBookEnvelope": {
        "type": "object",
        "properties": {
          "status": {
            "$ref": "#/components/schemas/ResponseStatus"
          },
          "data": {
            "$ref": "#/components/schemas/OrderBook"
          }
        },
        "required": [
          "status",
          "data"
        ],
        "additionalProperties": false
      },
      "TradeListEnvelope": {
        "type": "object",
        "properties": {
          "status": {
            "$ref": "#/components/schemas/ResponseStatus"
          },
          "data": {
            "$ref": "#/components/schemas/TradeListData"
          },
          "pagination": {
            "$ref": "#/components/schemas/Pagination"
          }
        },
        "required": [
          "status",
          "data",
          "pagination"
        ],
        "additionalProperties": false
      },
      "LiquidityEnvelope": {
        "type": "object",
        "properties": {
          "status": {
            "$ref": "#/components/schemas/ResponseStatus"
          },
          "data": {
            "$ref": "#/components/schemas/LiquiditySnapshot"
          }
        },
        "required": [
          "status",
          "data"
        ],
        "additionalProperties": false
      },
      "PoolListEnvelope": {
        "type": "object",
        "properties": {
          "status": {
            "$ref": "#/components/schemas/ResponseStatus"
          },
          "data": {
            "$ref": "#/components/schemas/PoolListData"
          },
          "pagination": {
            "$ref": "#/components/schemas/Pagination"
          }
        },
        "required": [
          "status",
          "data",
          "pagination"
        ],
        "additionalProperties": false
      },
      "PoolEnvelope": {
        "type": "object",
        "properties": {
          "status": {
            "$ref": "#/components/schemas/ResponseStatus"
          },
          "data": {
            "$ref": "#/components/schemas/Pool"
          }
        },
        "required": [
          "status",
          "data"
        ],
        "additionalProperties": false
      },
      "VenueListEnvelope": {
        "type": "object",
        "properties": {
          "status": {
            "$ref": "#/components/schemas/ResponseStatus"
          },
          "data": {
            "$ref": "#/components/schemas/VenueListData"
          }
        },
        "required": [
          "status",
          "data"
        ],
        "additionalProperties": false
      },
      "VenueEnvelope": {
        "type": "object",
        "properties": {
          "status": {
            "$ref": "#/components/schemas/ResponseStatus"
          },
          "data": {
            "$ref": "#/components/schemas/VenueInfo"
          }
        },
        "required": [
          "status",
          "data"
        ],
        "additionalProperties": false
      },
      "CapabilitiesEnvelope": {
        "type": "object",
        "properties": {
          "status": {
            "$ref": "#/components/schemas/ResponseStatus"
          },
          "data": {
            "$ref": "#/components/schemas/VenueCapabilities"
          }
        },
        "required": [
          "status",
          "data"
        ],
        "additionalProperties": false
      },
      "IssuerListEnvelope": {
        "type": "object",
        "properties": {
          "status": {
            "$ref": "#/components/schemas/ResponseStatus"
          },
          "data": {
            "$ref": "#/components/schemas/IssuerListData"
          },
          "pagination": {
            "$ref": "#/components/schemas/Pagination"
          }
        },
        "required": [
          "status",
          "data",
          "pagination"
        ],
        "additionalProperties": false
      },
      "IssuerEnvelope": {
        "type": "object",
        "properties": {
          "status": {
            "$ref": "#/components/schemas/ResponseStatus"
          },
          "data": {
            "$ref": "#/components/schemas/Issuer"
          }
        },
        "required": [
          "status",
          "data"
        ],
        "additionalProperties": false
      },
      "FearAndGreedObservation": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "value",
          "value_classification",
          "update_time"
        ],
        "properties": {
          "value": {
            "type": "integer",
            "minimum": 0,
            "maximum": 100,
            "description": "Published ecosystem-wide score. Bands: 0–19 Extreme Fear; 20–39 Fear; 40–59 Neutral; 60–79 Greed; 80–100 Extreme Greed."
          },
          "value_classification": {
            "type": "string",
            "enum": [
              "Extreme Fear",
              "Fear",
              "Neutral",
              "Greed",
              "Extreme Greed"
            ]
          },
          "update_time": {
            "type": "string",
            "format": "date-time",
            "pattern": "^\\d{4}-\\d{2}-\\d{2}T00:00:00(?:\\.000)?Z$",
            "description": "UTC daily reference time, unchanged by requests."
          }
        }
      },
      "FearAndGreedHistoryPoint": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "value",
          "value_classification",
          "timestamp"
        ],
        "properties": {
          "value": {
            "type": "integer",
            "minimum": 0,
            "maximum": 100,
            "description": "Published ecosystem-wide score. Bands: 0–19 Extreme Fear; 20–39 Fear; 40–59 Neutral; 60–79 Greed; 80–100 Extreme Greed."
          },
          "value_classification": {
            "type": "string",
            "enum": [
              "Extreme Fear",
              "Fear",
              "Neutral",
              "Greed",
              "Extreme Greed"
            ]
          },
          "timestamp": {
            "type": "string",
            "format": "date-time",
            "pattern": "^\\d{4}-\\d{2}-\\d{2}T00:00:00(?:\\.000)?Z$",
            "description": "UTC daily reference time, unchanged by requests."
          }
        }
      },
      "FearAndGreedHistoryEnvelope": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "status",
          "data"
        ],
        "properties": {
          "status": {
            "$ref": "#/components/schemas/ResponseStatus"
          },
          "data": {
            "type": "array",
            "maxItems": 500,
            "items": {
              "$ref": "#/components/schemas/FearAndGreedHistoryPoint"
            }
          }
        }
      },
      "FearAndGreedEnvelope": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "status",
          "data"
        ],
        "properties": {
          "status": {
            "$ref": "#/components/schemas/ResponseStatus"
          },
          "data": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/FearAndGreedObservation"
              },
              {
                "type": "null"
              }
            ]
          }
        }
      },
      "GlobalMetricsEnvelope": {
        "type": "object",
        "properties": {
          "status": {
            "$ref": "#/components/schemas/ResponseStatus"
          },
          "data": {
            "$ref": "#/components/schemas/GlobalMetrics"
          }
        },
        "required": [
          "status",
          "data"
        ],
        "additionalProperties": false
      },
      "SourceStatusListEnvelope": {
        "type": "object",
        "properties": {
          "status": {
            "$ref": "#/components/schemas/ResponseStatus"
          },
          "data": {
            "$ref": "#/components/schemas/SourceStatusListData"
          }
        },
        "required": [
          "status",
          "data"
        ],
        "additionalProperties": false
      },
      "AssetMap": {
        "type": "object",
        "properties": {
          "asset_id": {
            "type": "string"
          },
          "network": {
            "type": "string",
            "enum": [
              "mainnet",
              "testnet",
              "devnet"
            ]
          },
          "instrument_admin": {
            "type": "string"
          },
          "instrument_id": {
            "type": "string"
          },
          "name": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ]
          },
          "symbol": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ]
          },
          "status": {
            "type": "string",
            "enum": [
              "active",
              "inactive",
              "untracked",
              "suspended"
            ]
          }
        },
        "required": [
          "asset_id",
          "network",
          "instrument_admin",
          "instrument_id",
          "name",
          "symbol",
          "status"
        ],
        "additionalProperties": false
      },
      "RegistryMetadata": {
        "type": "object",
        "properties": {
          "source_url": {
            "type": "string",
            "format": "uri"
          },
          "last_checked_at": {
            "type": "string"
          },
          "configuration_count": {
            "type": "integer",
            "minimum": -9007199254740991,
            "maximum": 9007199254740991
          },
          "complete": {
            "type": "boolean"
          },
          "configurations": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "configuration_id": {
                  "type": "string"
                },
                "operator": {
                  "type": "string"
                },
                "provider": {
                  "type": "string"
                },
                "registrar": {
                  "type": "string"
                },
                "default_identifier": {
                  "type": "object",
                  "properties": {
                    "source": {
                      "type": "string"
                    },
                    "scheme": {
                      "type": "string"
                    },
                    "id": {
                      "type": "string"
                    }
                  },
                  "required": [
                    "source",
                    "scheme",
                    "id"
                  ],
                  "additionalProperties": false
                },
                "additional_identifiers": {
                  "type": "array",
                  "items": {
                    "type": "object",
                    "properties": {
                      "source": {
                        "type": "string"
                      },
                      "scheme": {
                        "type": "string"
                      },
                      "id": {
                        "type": "string"
                      }
                    },
                    "required": [
                      "source",
                      "scheme",
                      "id"
                    ],
                    "additionalProperties": false
                  }
                },
                "issuer_requirements": {
                  "type": "array",
                  "items": {
                    "type": "object",
                    "properties": {
                      "issuer": {
                        "type": "string"
                      },
                      "required_claims": {
                        "type": "array",
                        "items": {
                          "type": "object",
                          "properties": {
                            "property": {
                              "type": "string"
                            },
                            "value": {
                              "type": "string"
                            }
                          },
                          "required": [
                            "property",
                            "value"
                          ],
                          "additionalProperties": false
                        }
                      }
                    },
                    "required": [
                      "issuer",
                      "required_claims"
                    ],
                    "additionalProperties": false
                  }
                },
                "holder_requirements": {
                  "type": "array",
                  "items": {
                    "type": "object",
                    "properties": {
                      "issuer": {
                        "type": "string"
                      },
                      "required_claims": {
                        "type": "array",
                        "items": {
                          "type": "object",
                          "properties": {
                            "property": {
                              "type": "string"
                            },
                            "value": {
                              "type": "string"
                            }
                          },
                          "required": [
                            "property",
                            "value"
                          ],
                          "additionalProperties": false
                        }
                      }
                    },
                    "required": [
                      "issuer",
                      "required_claims"
                    ],
                    "additionalProperties": false
                  }
                }
              },
              "required": [
                "configuration_id",
                "operator",
                "provider",
                "registrar",
                "default_identifier",
                "additional_identifiers",
                "issuer_requirements",
                "holder_requirements"
              ],
              "additionalProperties": false
            }
          }
        },
        "required": [
          "source_url",
          "last_checked_at",
          "configuration_count",
          "complete",
          "configurations"
        ],
        "additionalProperties": false
      },
      "AssetMapListData": {
        "type": "array",
        "items": {
          "$ref": "#/components/schemas/AssetMap"
        }
      },
      "AssetMapListEnvelope": {
        "type": "object",
        "properties": {
          "status": {
            "$ref": "#/components/schemas/ResponseStatus"
          },
          "data": {
            "$ref": "#/components/schemas/AssetMapListData"
          },
          "pagination": {
            "$ref": "#/components/schemas/Pagination"
          }
        },
        "required": [
          "status",
          "data",
          "pagination"
        ],
        "additionalProperties": false
      },
      "IssuerRelationships": {
        "type": "object",
        "properties": {
          "validators": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "validator_id": {
                  "type": "string"
                },
                "name": {
                  "anyOf": [
                    {
                      "type": "string"
                    },
                    {
                      "type": "null"
                    }
                  ]
                },
                "website_url": {
                  "anyOf": [
                    {
                      "type": "string",
                      "format": "uri"
                    },
                    {
                      "type": "null"
                    }
                  ]
                },
                "relationship": {
                  "type": "string"
                }
              },
              "required": [
                "validator_id",
                "name",
                "website_url",
                "relationship"
              ],
              "additionalProperties": false
            }
          },
          "party_ids": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "instrument_administrators": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "network": {
                  "type": "string",
                  "enum": [
                    "mainnet",
                    "testnet",
                    "devnet"
                  ]
                },
                "instrument_admin": {
                  "type": "string"
                },
                "relationship": {
                  "type": "string"
                }
              },
              "required": [
                "network",
                "instrument_admin",
                "relationship"
              ],
              "additionalProperties": false
            }
          }
        },
        "required": [
          "validators",
          "party_ids",
          "instrument_administrators"
        ],
        "additionalProperties": false
      },
      "IssuerEvidenceEnvelope": {
        "type": "object",
        "properties": {
          "status": {
            "$ref": "#/components/schemas/ResponseStatus"
          },
          "data": {
            "$ref": "#/components/schemas/IssuerEvidenceData"
          }
        },
        "required": [
          "status",
          "data"
        ],
        "additionalProperties": false
      },
      "IssuerRelationshipsEnvelope": {
        "type": "object",
        "properties": {
          "status": {
            "$ref": "#/components/schemas/ResponseStatus"
          },
          "data": {
            "$ref": "#/components/schemas/IssuerRelationships"
          }
        },
        "required": [
          "status",
          "data"
        ],
        "additionalProperties": false
      },
      "HistoricalQuoteSeries": {
        "type": "object",
        "properties": {
          "asset_id": {
            "type": "string",
            "pattern": "^ast_[A-Za-z0-9_-]+$"
          },
          "convert": {
            "type": "string",
            "pattern": "^[A-Z]{3,12}$"
          },
          "interval": {
            "type": "string",
            "enum": [
              "1m",
              "5m",
              "10m",
              "15m",
              "30m",
              "1h",
              "4h",
              "1d",
              "7d",
              "1w"
            ]
          },
          "points": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/HistoricalQuotePoint"
            }
          }
        },
        "required": [
          "asset_id",
          "convert",
          "interval",
          "points"
        ],
        "additionalProperties": false
      },
      "AssetCandle": {
        "type": "object",
        "properties": {
          "last_updated_at": {
            "type": "string",
            "format": "date-time"
          },
          "asset_id": {
            "type": "string",
            "pattern": "^ast_[A-Za-z0-9_-]+$"
          },
          "convert": {
            "type": "string",
            "pattern": "^[A-Z]{3,12}$"
          },
          "interval": {
            "type": "string",
            "enum": [
              "1m",
              "5m",
              "10m",
              "15m",
              "30m",
              "1h",
              "4h",
              "1d",
              "7d",
              "1w"
            ]
          },
          "open_time": {
            "type": "string",
            "format": "date-time"
          },
          "close_time": {
            "type": "string",
            "format": "date-time"
          },
          "open": {
            "type": "string",
            "pattern": "^(?:0|[1-9]\\d*)(?:\\.\\d+)?$"
          },
          "high": {
            "type": "string",
            "pattern": "^(?:0|[1-9]\\d*)(?:\\.\\d+)?$"
          },
          "low": {
            "type": "string",
            "pattern": "^(?:0|[1-9]\\d*)(?:\\.\\d+)?$"
          },
          "close": {
            "type": "string",
            "pattern": "^(?:0|[1-9]\\d*)(?:\\.\\d+)?$"
          },
          "volume": {
            "anyOf": [
              {
                "type": "string",
                "pattern": "^(?:0|[1-9]\\d*)(?:\\.\\d+)?$"
              },
              {
                "type": "null"
              }
            ],
            "description": "USD notional of the asset's observed public trades in the window, whatever `convert` is; the same value as volume_usd. Null when no eligible USD measurement exists."
          },
          "volume_usd": {
            "anyOf": [
              {
                "type": "string",
                "pattern": "^(?:0|[1-9]\\d*)(?:\\.\\d+)?$"
              },
              {
                "type": "null"
              }
            ],
            "description": "Exact USD notional of the asset's observed public trades across its markets in the window. Each distinct trade is valued once, at its own execution time, with a CCXT-anchored USD reference observed by then and at most 180 seconds older; a trade without an eligible conversion is excluded and reported through volume_coverage. Venue-reported totals are never added. Null when no eligible USD measurement exists."
          },
          "volume_coverage": {
            "type": "string",
            "enum": [
              "complete",
              "partial",
              "unavailable"
            ],
            "description": "complete: eligible collection windows cover the whole interval for every eligible market and every observed trade was valued, so a zero is verified trading absence. partial: a covered subtotal, because a market lacks full interval coverage or a trade had no eligible USD conversion. unavailable: volume_usd is null."
          },
          "trade_count": {
            "anyOf": [
              {
                "type": "integer",
                "minimum": 0,
                "maximum": 9007199254740991
              },
              {
                "type": "null"
              }
            ],
            "description": "Distinct eligible trades across the asset's covered markets in the window, including trades excluded from volume_usd for lack of a conversion."
          },
          "volume_method": {
            "type": "string",
            "enum": [
              "none",
              "observed_trades"
            ],
            "description": "observed_trades when the asset has at least one market with public trade evidence; none otherwise."
          },
          "complete": {
            "type": "boolean"
          }
        },
        "required": [
          "last_updated_at",
          "asset_id",
          "convert",
          "interval",
          "open_time",
          "close_time",
          "open",
          "high",
          "low",
          "close",
          "volume",
          "trade_count",
          "volume_method",
          "complete"
        ],
        "additionalProperties": false
      },
      "MarketCandle": {
        "type": "object",
        "properties": {
          "last_updated_at": {
            "type": "string",
            "format": "date-time"
          },
          "market_id": {
            "type": "string",
            "pattern": "^mkt_[A-Za-z0-9_-]+$"
          },
          "interval": {
            "type": "string",
            "enum": [
              "1m",
              "5m",
              "10m",
              "15m",
              "30m",
              "1h",
              "4h",
              "1d",
              "7d",
              "1w"
            ]
          },
          "open_time": {
            "type": "string",
            "format": "date-time"
          },
          "close_time": {
            "type": "string",
            "format": "date-time"
          },
          "open": {
            "type": "string",
            "pattern": "^(?:0|[1-9]\\d*)(?:\\.\\d+)?$"
          },
          "high": {
            "type": "string",
            "pattern": "^(?:0|[1-9]\\d*)(?:\\.\\d+)?$"
          },
          "low": {
            "type": "string",
            "pattern": "^(?:0|[1-9]\\d*)(?:\\.\\d+)?$"
          },
          "close": {
            "type": "string",
            "pattern": "^(?:0|[1-9]\\d*)(?:\\.\\d+)?$"
          },
          "volume_base": {
            "type": "string",
            "pattern": "^(?:0|[1-9]\\d*)(?:\\.\\d+)?$"
          },
          "volume_quote": {
            "anyOf": [
              {
                "type": "string",
                "pattern": "^(?:0|[1-9]\\d*)(?:\\.\\d+)?$"
              },
              {
                "type": "null"
              }
            ]
          },
          "trade_count": {
            "anyOf": [
              {
                "type": "integer",
                "minimum": 0,
                "maximum": 9007199254740991
              },
              {
                "type": "null"
              }
            ]
          },
          "volume_method": {
            "type": "string",
            "enum": [
              "venue_reported",
              "observed_trades",
              "none"
            ]
          },
          "complete": {
            "type": "boolean"
          }
        },
        "required": [
          "last_updated_at",
          "market_id",
          "interval",
          "open_time",
          "close_time",
          "open",
          "high",
          "low",
          "close",
          "volume_base",
          "volume_quote",
          "trade_count",
          "volume_method",
          "complete"
        ],
        "additionalProperties": false
      },
      "MarketPairSummary": {
        "type": "object",
        "properties": {
          "activity_24h": {
            "description": "Selected public 24-hour activity, using the same current selection as /v1/activity/market/{market_id}?window=24h&limit=1. Each measurement keeps its own as_of, methods and coverage, including retained older values. volume_usd is in USD; base and quote quantities keep their asset units. Ticker measurements remain separate source fields. Null means no eligible activity snapshot; a snapshot may itself have unknown or partial measurements. Older servers omit this field.",
            "anyOf": [
              {
                "$ref": "#/components/schemas/ActivitySnapshot"
              },
              {
                "type": "null"
              }
            ]
          },
          "market_category": {
            "type": "string",
            "enum": [
              "amm",
              "clmm",
              "orderbook",
              "hybrid"
            ]
          },
          "market_id": {
            "type": "string",
            "pattern": "^mkt_[A-Za-z0-9_-]+$"
          },
          "venue": {
            "type": "object",
            "properties": {
              "venue_id": {
                "type": "string",
                "minLength": 1
              },
              "name": {
                "type": "string"
              }
            },
            "required": [
              "venue_id",
              "name"
            ],
            "additionalProperties": false
          },
          "network": {
            "type": "string",
            "enum": [
              "mainnet",
              "testnet",
              "devnet"
            ]
          },
          "base_asset": {
            "type": "object",
            "properties": {
              "asset_id": {
                "type": "string",
                "pattern": "^ast_[A-Za-z0-9_-]+$"
              },
              "name": {
                "anyOf": [
                  {
                    "type": "string"
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "symbol": {
                "anyOf": [
                  {
                    "type": "string"
                  },
                  {
                    "type": "null"
                  }
                ]
              }
            },
            "required": [
              "asset_id",
              "name",
              "symbol"
            ],
            "additionalProperties": false
          },
          "quote_asset": {
            "type": "object",
            "properties": {
              "asset_id": {
                "type": "string",
                "pattern": "^ast_[A-Za-z0-9_-]+$"
              },
              "name": {
                "anyOf": [
                  {
                    "type": "string"
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "symbol": {
                "anyOf": [
                  {
                    "type": "string"
                  },
                  {
                    "type": "null"
                  }
                ]
              }
            },
            "required": [
              "asset_id",
              "name",
              "symbol"
            ],
            "additionalProperties": false
          },
          "market_model": {
            "type": "string",
            "enum": [
              "amm",
              "order_book",
              "order_book_rfq",
              "hybrid"
            ]
          },
          "status": {
            "type": "string",
            "enum": [
              "active",
              "inactive",
              "suspended"
            ]
          },
          "pool_ids": {
            "type": "array",
            "items": {
              "type": "string",
              "pattern": "^pool_[A-Za-z0-9_-]+$"
            }
          },
          "ticker": {
            "anyOf": [
              {
                "type": "object",
                "properties": {
                  "price": {
                    "anyOf": [
                      {
                        "description": "Price in quote-asset units per base asset.",
                        "type": "string",
                        "pattern": "^-?[0-9]+(?:\\.[0-9]+)?$"
                      },
                      {
                        "type": "null"
                      }
                    ]
                  },
                  "price_origin": {
                    "type": "string",
                    "enum": [
                      "venue_pool",
                      "venue_book",
                      "venue_trade",
                      "external_reference",
                      "derived"
                    ]
                  },
                  "volume_base_24h": {
                    "anyOf": [
                      {
                        "type": "string",
                        "pattern": "^-?[0-9]+(?:\\.[0-9]+)?$"
                      },
                      {
                        "type": "null"
                      }
                    ]
                  },
                  "volume_quote_24h": {
                    "anyOf": [
                      {
                        "type": "string",
                        "pattern": "^-?[0-9]+(?:\\.[0-9]+)?$"
                      },
                      {
                        "type": "null"
                      }
                    ]
                  },
                  "volume_usd_24h": {
                    "anyOf": [
                      {
                        "type": "string",
                        "pattern": "^-?[0-9]+(?:\\.[0-9]+)?$"
                      },
                      {
                        "type": "null"
                      }
                    ]
                  },
                  "last_updated_at": {
                    "type": "string",
                    "format": "date-time"
                  }
                },
                "required": [
                  "price",
                  "price_origin",
                  "volume_base_24h",
                  "volume_quote_24h",
                  "volume_usd_24h",
                  "last_updated_at"
                ],
                "additionalProperties": false
              },
              {
                "type": "null"
              }
            ]
          },
          "liquidity": {
            "anyOf": [
              {
                "oneOf": [
                  {
                    "type": "object",
                    "properties": {
                      "model": {
                        "type": "string",
                        "enum": [
                          "amm"
                        ]
                      },
                      "liquidity_score": {
                        "anyOf": [
                          {
                            "description": "Displayed liquidity score, 0–100. Simulated buys and sells at $100, $500, $1,000, $5,000 and $10,000; fees excluded. Null means insufficient inputs, never a hidden market.",
                            "type": "number",
                            "minimum": 0,
                            "maximum": 100
                          },
                          {
                            "type": "null"
                          }
                        ]
                      },
                      "liquidity_score_methodology": {
                        "type": "string",
                        "enum": [
                          "execution-impact-v1"
                        ]
                      },
                      "liquidity_score_updated_at": {
                        "anyOf": [
                          {
                            "type": "string",
                            "format": "date-time"
                          },
                          {
                            "type": "null"
                          }
                        ]
                      },
                      "liquidity_usd": {
                        "anyOf": [
                          {
                            "type": "string",
                            "pattern": "^-?[0-9]+(?:\\.[0-9]+)?$"
                          },
                          {
                            "type": "null"
                          }
                        ]
                      },
                      "bid_depth_2pct_usd": {
                        "anyOf": [
                          {
                            "description": "USD value of the quote received selling base into the market's pools until their marginal price falls 2% below the pooled reference price. Synthetic, from stored pool state; null with depth_unavailable_reason when it cannot be measured.",
                            "type": "string",
                            "pattern": "^-?[0-9]+(?:\\.[0-9]+)?$"
                          },
                          {
                            "type": "null"
                          }
                        ]
                      },
                      "ask_depth_2pct_usd": {
                        "anyOf": [
                          {
                            "description": "USD value of the quote paid, pool fee included, buying base until the pools' marginal price rises 2% above the pooled reference price.",
                            "type": "string",
                            "pattern": "^-?[0-9]+(?:\\.[0-9]+)?$"
                          },
                          {
                            "type": "null"
                          }
                        ]
                      },
                      "depth_origin": {
                        "description": "Pool depth is calculated from the pool curve, not read from an order book.",
                        "type": "string",
                        "enum": [
                          "synthetic_pool"
                        ]
                      },
                      "depth_unavailable_reason": {
                        "anyOf": [
                          {
                            "$ref": "#/components/schemas/PoolDepthUnavailableReason"
                          },
                          {
                            "type": "null"
                          }
                        ]
                      },
                      "depth_updated_at": {
                        "anyOf": [
                          {
                            "description": "When the stored depth was calculated.",
                            "type": "string",
                            "format": "date-time"
                          },
                          {
                            "type": "null"
                          }
                        ]
                      },
                      "last_updated_at": {
                        "type": "string",
                        "format": "date-time"
                      }
                    },
                    "required": [
                      "model",
                      "liquidity_usd",
                      "last_updated_at"
                    ],
                    "additionalProperties": false
                  },
                  {
                    "type": "object",
                    "properties": {
                      "model": {
                        "type": "string",
                        "enum": [
                          "order_book"
                        ]
                      },
                      "liquidity_score": {
                        "anyOf": [
                          {
                            "description": "Displayed liquidity score, 0–100. Simulated buys and sells at $100, $500, $1,000, $5,000 and $10,000; fees excluded. Null means insufficient inputs, never a hidden market.",
                            "type": "number",
                            "minimum": 0,
                            "maximum": 100
                          },
                          {
                            "type": "null"
                          }
                        ]
                      },
                      "liquidity_score_methodology": {
                        "type": "string",
                        "enum": [
                          "execution-impact-v1"
                        ]
                      },
                      "liquidity_score_updated_at": {
                        "anyOf": [
                          {
                            "type": "string",
                            "format": "date-time"
                          },
                          {
                            "type": "null"
                          }
                        ]
                      },
                      "bid_depth_2pct_usd": {
                        "anyOf": [
                          {
                            "description": "USD notional of total bids within 2% below the best bid. Null when the book window or USD conversion is unavailable.",
                            "type": "string",
                            "pattern": "^-?[0-9]+(?:\\.[0-9]+)?$"
                          },
                          {
                            "type": "null"
                          }
                        ]
                      },
                      "ask_depth_2pct_usd": {
                        "anyOf": [
                          {
                            "description": "USD notional of total asks within 2% above the best ask. Null when the book window or USD conversion is unavailable.",
                            "type": "string",
                            "pattern": "^-?[0-9]+(?:\\.[0-9]+)?$"
                          },
                          {
                            "type": "null"
                          }
                        ]
                      },
                      "spread_bps": {
                        "anyOf": [
                          {
                            "description": "(Best ask - best bid) / midpoint × 10,000.",
                            "type": "string",
                            "pattern": "^-?[0-9]+(?:\\.[0-9]+)?$"
                          },
                          {
                            "type": "null"
                          }
                        ]
                      },
                      "depth_origin": {
                        "description": "Depth is measured from displayed order-book levels.",
                        "type": "string",
                        "enum": [
                          "native_order_book"
                        ]
                      },
                      "last_updated_at": {
                        "type": "string",
                        "format": "date-time"
                      }
                    },
                    "required": [
                      "model",
                      "bid_depth_2pct_usd",
                      "ask_depth_2pct_usd",
                      "spread_bps",
                      "last_updated_at"
                    ],
                    "additionalProperties": false
                  }
                ]
              },
              {
                "type": "null"
              }
            ]
          },
          "last_updated_at": {
            "type": "string",
            "format": "date-time"
          }
        },
        "required": [
          "market_id",
          "venue",
          "network",
          "base_asset",
          "quote_asset",
          "market_model",
          "status",
          "pool_ids",
          "ticker",
          "liquidity",
          "last_updated_at"
        ],
        "additionalProperties": false
      },
      "VenueInfo": {
        "type": "object",
        "properties": {
          "venue_id": {
            "type": "string",
            "minLength": 1
          },
          "name": {
            "type": "string"
          },
          "market_model": {
            "type": "string",
            "enum": [
              "amm",
              "order_book",
              "order_book_rfq",
              "hybrid"
            ]
          },
          "last_updated_at": {
            "type": "string",
            "format": "date-time"
          },
          "stats": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/VenueStats"
              },
              {
                "type": "null"
              }
            ]
          },
          "description": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ]
          },
          "website_url": {
            "anyOf": [
              {
                "type": "string",
                "format": "uri"
              },
              {
                "type": "null"
              }
            ]
          },
          "logo_url": {
            "anyOf": [
              {
                "type": "string",
                "format": "uri"
              },
              {
                "type": "null"
              }
            ]
          },
          "documentation_url": {
            "anyOf": [
              {
                "type": "string",
                "format": "uri"
              },
              {
                "type": "null"
              }
            ]
          },
          "social_links": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "label": {
                  "type": "string",
                  "minLength": 1,
                  "maxLength": 128
                },
                "url": {
                  "type": "string",
                  "maxLength": 2048,
                  "format": "uri"
                }
              },
              "required": [
                "label",
                "url"
              ],
              "additionalProperties": false
            }
          },
          "fee_documentation_url": {
            "anyOf": [
              {
                "type": "string",
                "format": "uri"
              },
              {
                "type": "null"
              }
            ]
          }
        },
        "required": [
          "venue_id",
          "name",
          "market_model",
          "last_updated_at",
          "stats",
          "description",
          "website_url",
          "logo_url",
          "documentation_url",
          "social_links",
          "fee_documentation_url"
        ],
        "additionalProperties": false
      },
      "PriceQuote": {
        "type": "object",
        "properties": {
          "price": {
            "type": "string",
            "pattern": "^(?:0|[1-9]\\d*)(?:\\.\\d+)?$"
          },
          "market_cap": {
            "anyOf": [
              {
                "type": "string",
                "pattern": "^(?:0|[1-9]\\d*)(?:\\.\\d+)?$"
              },
              {
                "type": "null"
              }
            ]
          },
          "fdv": {
            "anyOf": [
              {
                "type": "string",
                "pattern": "^(?:0|[1-9]\\d*)(?:\\.\\d+)?$"
              },
              {
                "type": "null"
              }
            ]
          },
          "volume_24h": {
            "anyOf": [
              {
                "type": "string",
                "pattern": "^(?:0|[1-9]\\d*)(?:\\.\\d+)?$"
              },
              {
                "type": "null"
              }
            ]
          },
          "volume": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/VolumeMetrics"
              },
              {
                "type": "null"
              }
            ]
          },
          "price_changes_pct": {
            "type": "object",
            "additionalProperties": {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^-?(?:0|[1-9]\\d*)(?:\\.\\d+)?$"
                },
                {
                  "type": "null"
                }
              ]
            }
          },
          "last_updated_at": {
            "type": "string",
            "format": "date-time"
          }
        },
        "required": [
          "price",
          "market_cap",
          "fdv",
          "volume_24h",
          "volume",
          "price_changes_pct",
          "last_updated_at"
        ],
        "additionalProperties": false,
        "examples": [
          {
            "price": "1.025",
            "market_cap": null,
            "fdv": "1025000",
            "volume_24h": "12500.50",
            "volume": {
              "method": "reported",
              "coverage": "complete",
              "change_24h_pct": "3.2"
            },
            "price_changes_pct": {
              "1h": "-0.5",
              "24h": "1.25",
              "7d": null,
              "30d": null
            },
            "last_updated_at": "2026-09-07T20:00:00.000Z"
          }
        ]
      },
      "HistoricalQuotePoint": {
        "type": "object",
        "description": "The latest eligible quote calculated in one sampling interval. `fdv` is the exact product of `price` and the registry total supply known at `timestamp`; it is null when that supply was missing or stale, the quote predates FDV calculation, or the supply is no longer published to the caller, and never zero for unavailable. A valid zero supply gives zero. `market_cap` is null until a reviewed circulating-supply methodology exists. `volume_24h` is the rolling 24-hour volume known at `timestamp`, not the interval's volume.",
        "properties": {
          "timestamp": {
            "type": "string",
            "format": "date-time",
            "description": "UTC instant the sampled quote was calculated. Its price and FDV are valued at this instant, and the sampling interval and time range apply to it."
          },
          "price": {
            "type": "string",
            "pattern": "^(?:0|[1-9]\\d*)(?:\\.\\d+)?$",
            "description": "Exact reference price in the requested currency at `timestamp`."
          },
          "market_cap": {
            "anyOf": [
              {
                "type": "string",
                "pattern": "^(?:0|[1-9]\\d*)(?:\\.\\d+)?$"
              },
              {
                "type": "null"
              }
            ]
          },
          "fdv": {
            "anyOf": [
              {
                "type": "string",
                "pattern": "^(?:0|[1-9]\\d*)(?:\\.\\d+)?$"
              },
              {
                "type": "null"
              }
            ]
          },
          "volume_24h": {
            "anyOf": [
              {
                "type": "string",
                "pattern": "^(?:0|[1-9]\\d*)(?:\\.\\d+)?$"
              },
              {
                "type": "null"
              }
            ]
          },
          "last_updated_at": {
            "type": "string",
            "format": "date-time",
            "description": "When the sampled quote was recorded."
          }
        },
        "required": [
          "timestamp",
          "price",
          "market_cap",
          "fdv",
          "volume_24h",
          "last_updated_at"
        ],
        "additionalProperties": false
      },
      "HistoricalQuoteListData": {
        "type": "array",
        "items": {
          "$ref": "#/components/schemas/HistoricalQuoteSeries"
        }
      },
      "HistoricalQuoteListEnvelope": {
        "type": "object",
        "properties": {
          "status": {
            "$ref": "#/components/schemas/ResponseStatus"
          },
          "data": {
            "$ref": "#/components/schemas/HistoricalQuoteListData"
          },
          "pagination": {
            "$ref": "#/components/schemas/Pagination"
          }
        },
        "required": [
          "status",
          "data",
          "pagination"
        ],
        "additionalProperties": false
      },
      "AssetCandleListData": {
        "type": "array",
        "items": {
          "$ref": "#/components/schemas/AssetCandle"
        }
      },
      "AssetCandleListEnvelope": {
        "type": "object",
        "properties": {
          "status": {
            "$ref": "#/components/schemas/ResponseStatus"
          },
          "data": {
            "$ref": "#/components/schemas/AssetCandleListData"
          },
          "pagination": {
            "$ref": "#/components/schemas/Pagination"
          }
        },
        "required": [
          "status",
          "data",
          "pagination"
        ],
        "additionalProperties": false
      },
      "MarketPairListData": {
        "type": "array",
        "items": {
          "$ref": "#/components/schemas/MarketPairSummary"
        }
      },
      "MarketPairListEnvelope": {
        "type": "object",
        "properties": {
          "status": {
            "$ref": "#/components/schemas/ResponseStatus"
          },
          "data": {
            "$ref": "#/components/schemas/MarketPairListData"
          },
          "pagination": {
            "$ref": "#/components/schemas/Pagination"
          }
        },
        "required": [
          "status",
          "data",
          "pagination"
        ],
        "additionalProperties": false
      },
      "AssetRegistryConfigurationsEnvelope": {
        "type": "object",
        "properties": {
          "status": {
            "$ref": "#/components/schemas/ResponseStatus"
          },
          "data": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/RegistryMetadata"
              },
              {
                "type": "null"
              }
            ]
          },
          "pagination": {
            "$ref": "#/components/schemas/Pagination"
          }
        },
        "required": [
          "status",
          "data",
          "pagination"
        ],
        "additionalProperties": false
      },
      "IssuerEvidenceData": {
        "type": "array",
        "items": {
          "$ref": "#/components/schemas/IssuerApprovedEvidence"
        }
      }
    }
  }
}
