{
  "openapi": "3.1.0",
  "info": {
    "title": "Blink REST API v1",
    "version": "1.0.0",
    "description": "Versioned public REST API."
  },
  "servers": [
    {
      "url": "https://api-v1-ab.blink.trade",
      "description": "Blink production API."
    }
  ],
  "tags": [
    {
      "name": "Candles",
      "description": "Historical OHLC data."
    },
    {
      "name": "Markets",
      "description": "Market metadata and public market data."
    },
    {
      "name": "Accounts",
      "description": "Account state and history."
    },
    {
      "name": "Funding",
      "description": "Perpetual funding rates and payments."
    },
    {
      "name": "Vaults",
      "description": "Vault and protocol-liquidity state."
    },
    {
      "name": "Explorer",
      "description": "Tokens, transactions, blocks, and search."
    },
    {
      "name": "System",
      "description": "Service and exchange information."
    }
  ],
  "paths": {
    "/v1/candles": {
      "get": {
        "tags": [
          "Candles"
        ],
        "summary": "candles",
        "operationId": "listCandles",
        "description": "Get trade candles.",
        "parameters": [
          {
            "$ref": "#/components/parameters/MarketType"
          },
          {
            "$ref": "#/components/parameters/MarketId"
          },
          {
            "$ref": "#/components/parameters/Resolution"
          },
          {
            "$ref": "#/components/parameters/StartTimestamp"
          },
          {
            "$ref": "#/components/parameters/EndTimestamp"
          },
          {
            "$ref": "#/components/parameters/CountBack"
          }
        ],
        "responses": {
          "200": {
            "description": "A successful response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/LastCandleResponse"
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          }
        }
      }
    },
    "/v1/markCandles": {
      "get": {
        "tags": [
          "Candles"
        ],
        "summary": "markCandles",
        "operationId": "listMarkCandles",
        "description": "Get mark price candles.",
        "parameters": [
          {
            "$ref": "#/components/parameters/MarketId"
          },
          {
            "$ref": "#/components/parameters/Resolution"
          },
          {
            "$ref": "#/components/parameters/StartTimestamp"
          },
          {
            "$ref": "#/components/parameters/EndTimestamp"
          },
          {
            "$ref": "#/components/parameters/CountBack"
          }
        ],
        "responses": {
          "200": {
            "description": "A successful response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MarkCandleResponse"
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          }
        }
      }
    },
    "/v1/markets": {
      "get": {
        "tags": [
          "Markets"
        ],
        "summary": "markets",
        "operationId": "listMarkets",
        "description": "Get market metadata.",
        "parameters": [
          {
            "$ref": "#/components/parameters/MarketTypeFilter"
          },
          {
            "$ref": "#/components/parameters/OptionalMarketId"
          }
        ],
        "responses": {
          "200": {
            "description": "A successful response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MarketsResponse"
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          }
        }
      }
    },
    "/v1/marketStats": {
      "get": {
        "tags": [
          "Markets"
        ],
        "summary": "marketStats",
        "operationId": "listMarketStats",
        "description": "Get current market statistics.",
        "parameters": [
          {
            "$ref": "#/components/parameters/MarketTypeFilter"
          },
          {
            "$ref": "#/components/parameters/OptionalMarketId"
          }
        ],
        "responses": {
          "200": {
            "description": "A successful response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MarketStatsResponse"
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          }
        }
      }
    },
    "/v1/bbo": {
      "get": {
        "tags": [
          "Markets"
        ],
        "summary": "bbo",
        "operationId": "getBbo",
        "description": "Get the best bid and offer.",
        "parameters": [
          {
            "$ref": "#/components/parameters/MarketType"
          },
          {
            "$ref": "#/components/parameters/MarketId"
          }
        ],
        "responses": {
          "200": {
            "description": "A successful response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BboResponse"
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          }
        }
      }
    },
    "/v1/orderBook": {
      "get": {
        "tags": [
          "Markets"
        ],
        "summary": "orderBook",
        "operationId": "getOrderBook",
        "description": "Get an aggregated order book.",
        "parameters": [
          {
            "$ref": "#/components/parameters/MarketType"
          },
          {
            "$ref": "#/components/parameters/MarketId"
          },
          {
            "name": "depth",
            "in": "query",
            "required": true,
            "description": "Maximum price levels returned on each side.",
            "example": 50,
            "schema": {
              "type": "integer",
              "minimum": 1,
              "maximum": 500
            }
          }
        ],
        "responses": {
          "200": {
            "description": "A successful response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/OrderBookResponse"
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          }
        }
      }
    },
    "/v1/orderBookOrders": {
      "get": {
        "tags": [
          "Markets"
        ],
        "summary": "orderBookOrders",
        "operationId": "listOrderBookOrders",
        "description": "Get individual resting orders.",
        "parameters": [
          {
            "$ref": "#/components/parameters/MarketType"
          },
          {
            "$ref": "#/components/parameters/MarketId"
          },
          {
            "name": "side",
            "in": "query",
            "required": false,
            "description": "Order side. Defaults to all.",
            "example": "all",
            "schema": {
              "$ref": "#/components/schemas/SideFilter"
            }
          },
          {
            "$ref": "#/components/parameters/Limit"
          },
          {
            "$ref": "#/components/parameters/Cursor"
          }
        ],
        "responses": {
          "200": {
            "description": "A successful response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BookOrdersResponse"
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          }
        }
      }
    },
    "/v1/trades": {
      "get": {
        "tags": [
          "Markets"
        ],
        "summary": "trades",
        "operationId": "listTrades",
        "description": "Get public market trades.",
        "parameters": [
          {
            "$ref": "#/components/parameters/MarketType"
          },
          {
            "$ref": "#/components/parameters/MarketId"
          },
          {
            "$ref": "#/components/parameters/Limit"
          },
          {
            "$ref": "#/components/parameters/Cursor"
          }
        ],
        "responses": {
          "200": {
            "description": "A successful response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TradesResponse"
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          }
        }
      }
    },
    "/v1/fundingRates": {
      "get": {
        "tags": [
          "Funding"
        ],
        "summary": "fundingRates",
        "operationId": "listFundingRates",
        "description": "Get perpetual funding rates.",
        "parameters": [
          {
            "$ref": "#/components/parameters/MarketId"
          },
          {
            "$ref": "#/components/parameters/StartTimestamp"
          },
          {
            "$ref": "#/components/parameters/EndTimestamp"
          },
          {
            "$ref": "#/components/parameters/Limit"
          },
          {
            "$ref": "#/components/parameters/Cursor"
          }
        ],
        "responses": {
          "200": {
            "description": "A successful response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/FundingRatesResponse"
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          }
        }
      }
    },
    "/v1/account": {
      "get": {
        "tags": [
          "Accounts"
        ],
        "summary": "account",
        "operationId": "getAccount",
        "description": "Get an account and its subaccounts.",
        "parameters": [
          {
            "$ref": "#/components/parameters/Address"
          },
          {
            "$ref": "#/components/parameters/OptionalSubaccountId"
          }
        ],
        "responses": {
          "200": {
            "description": "A successful response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AccountResponse"
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          }
        }
      }
    },
    "/v1/balances": {
      "get": {
        "tags": [
          "Accounts"
        ],
        "summary": "balances",
        "operationId": "listBalances",
        "description": "Get token balances for a subaccount.",
        "parameters": [
          {
            "$ref": "#/components/parameters/Address"
          },
          {
            "$ref": "#/components/parameters/SubaccountId"
          }
        ],
        "responses": {
          "200": {
            "description": "A successful response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BalancesResponse"
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          }
        }
      }
    },
    "/v1/positions": {
      "get": {
        "tags": [
          "Accounts"
        ],
        "summary": "positions",
        "operationId": "listPositions",
        "description": "Get perpetual positions for a subaccount.",
        "parameters": [
          {
            "$ref": "#/components/parameters/Address"
          },
          {
            "$ref": "#/components/parameters/SubaccountId"
          },
          {
            "$ref": "#/components/parameters/OptionalMarketId"
          }
        ],
        "responses": {
          "200": {
            "description": "A successful response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PositionsResponse"
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          }
        }
      }
    },
    "/v1/orders": {
      "get": {
        "tags": [
          "Accounts"
        ],
        "summary": "orders",
        "operationId": "listOrders",
        "description": "Get orders for a subaccount.",
        "parameters": [
          {
            "$ref": "#/components/parameters/Address"
          },
          {
            "$ref": "#/components/parameters/SubaccountId"
          },
          {
            "name": "status",
            "in": "query",
            "required": true,
            "example": "active",
            "schema": {
              "$ref": "#/components/schemas/OrderStatusFilter"
            }
          },
          {
            "$ref": "#/components/parameters/OptionalMarketType"
          },
          {
            "$ref": "#/components/parameters/OptionalMarketId"
          },
          {
            "name": "client_order_id",
            "in": "query",
            "required": false,
            "description": "Filter by client order ID.",
            "example": "123456",
            "schema": {
              "$ref": "#/components/schemas/Uint64"
            }
          },
          {
            "name": "limit",
            "in": "query",
            "required": false,
            "description": "Required unless client_order_id is provided.",
            "example": 100,
            "schema": {
              "type": "integer",
              "minimum": 1,
              "maximum": 100,
              "default": 100
            }
          },
          {
            "$ref": "#/components/parameters/Cursor"
          }
        ],
        "responses": {
          "200": {
            "description": "A successful response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/OrdersResponse"
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          }
        }
      }
    },
    "/v1/fills": {
      "get": {
        "tags": [
          "Accounts"
        ],
        "summary": "fills",
        "operationId": "listFills",
        "description": "Get participant fills for a subaccount.",
        "parameters": [
          {
            "$ref": "#/components/parameters/Address"
          },
          {
            "$ref": "#/components/parameters/SubaccountId"
          },
          {
            "name": "role",
            "in": "query",
            "required": true,
            "example": "all",
            "schema": {
              "$ref": "#/components/schemas/RoleFilter"
            }
          },
          {
            "$ref": "#/components/parameters/OptionalMarketType"
          },
          {
            "$ref": "#/components/parameters/OptionalMarketId"
          },
          {
            "$ref": "#/components/parameters/Limit"
          },
          {
            "$ref": "#/components/parameters/Cursor"
          }
        ],
        "responses": {
          "200": {
            "description": "A successful response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/FillsResponse"
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          }
        }
      }
    },
    "/v1/fundingPayments": {
      "get": {
        "tags": [
          "Funding"
        ],
        "summary": "fundingPayments",
        "operationId": "listFundingPayments",
        "description": "Get funding payments for a subaccount.",
        "parameters": [
          {
            "$ref": "#/components/parameters/Address"
          },
          {
            "$ref": "#/components/parameters/SubaccountId"
          },
          {
            "$ref": "#/components/parameters/OptionalMarketId"
          },
          {
            "$ref": "#/components/parameters/Limit"
          },
          {
            "$ref": "#/components/parameters/Cursor"
          }
        ],
        "responses": {
          "200": {
            "description": "A successful response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/FundingPaymentsResponse"
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          }
        }
      }
    },
    "/v1/pnl": {
      "get": {
        "tags": [
          "Accounts"
        ],
        "summary": "pnl",
        "operationId": "listPnl",
        "description": "Get subaccount PnL history.",
        "parameters": [
          {
            "$ref": "#/components/parameters/Address"
          },
          {
            "$ref": "#/components/parameters/SubaccountId"
          },
          {
            "$ref": "#/components/parameters/Resolution"
          },
          {
            "$ref": "#/components/parameters/StartTimestamp"
          },
          {
            "$ref": "#/components/parameters/EndTimestamp"
          },
          {
            "$ref": "#/components/parameters/CountBack"
          }
        ],
        "responses": {
          "200": {
            "description": "A successful response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PnlResponse"
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          }
        }
      }
    },
    "/v1/transfers": {
      "get": {
        "tags": [
          "Accounts"
        ],
        "summary": "transfers",
        "operationId": "listTransfers",
        "description": "Get deposits, withdrawals, and transfers for a subaccount.",
        "parameters": [
          {
            "$ref": "#/components/parameters/Address"
          },
          {
            "$ref": "#/components/parameters/SubaccountId"
          },
          {
            "name": "kind",
            "in": "query",
            "required": true,
            "example": "all",
            "schema": {
              "$ref": "#/components/schemas/TransferKindFilter"
            }
          },
          {
            "$ref": "#/components/parameters/Limit"
          },
          {
            "$ref": "#/components/parameters/Cursor"
          }
        ],
        "responses": {
          "200": {
            "description": "A successful response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TransfersResponse"
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          }
        }
      }
    },
    "/v1/liquidations": {
      "get": {
        "tags": [
          "Accounts"
        ],
        "summary": "liquidations",
        "operationId": "listLiquidations",
        "description": "Get liquidations by market or account. At least one filter is required.",
        "x-playground-values": {
          "market_id": 1
        },
        "parameters": [
          {
            "$ref": "#/components/parameters/OptionalMarketId"
          },
          {
            "name": "address",
            "in": "query",
            "required": false,
            "description": "Account address. Required when subaccount_id is provided.",
            "example": "11111111111111111111111111111111",
            "schema": {
              "$ref": "#/components/schemas/Address"
            }
          },
          {
            "$ref": "#/components/parameters/OptionalSubaccountId"
          },
          {
            "$ref": "#/components/parameters/Limit"
          },
          {
            "$ref": "#/components/parameters/Cursor"
          }
        ],
        "responses": {
          "200": {
            "description": "A successful response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/LiquidationsResponse"
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          }
        }
      }
    },
    "/v1/vaults": {
      "get": {
        "tags": [
          "Vaults"
        ],
        "summary": "vaults",
        "operationId": "listVaults",
        "description": "Get vaults.",
        "parameters": [
          {
            "name": "vault_id",
            "in": "query",
            "required": false,
            "description": "Filter by vault ID.",
            "example": "7",
            "schema": {
              "$ref": "#/components/schemas/Uint64"
            }
          },
          {
            "$ref": "#/components/parameters/ConditionalLimit"
          },
          {
            "$ref": "#/components/parameters/Cursor"
          }
        ],
        "responses": {
          "200": {
            "description": "A successful response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/VaultsResponse"
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          }
        }
      }
    },
    "/v1/vaultDepositors": {
      "get": {
        "tags": [
          "Vaults"
        ],
        "summary": "vaultDepositors",
        "operationId": "listVaultDepositors",
        "description": "Get depositors for a vault.",
        "parameters": [
          {
            "name": "vault_id",
            "in": "query",
            "required": true,
            "example": "7",
            "schema": {
              "$ref": "#/components/schemas/Uint64"
            }
          },
          {
            "name": "address",
            "in": "query",
            "required": false,
            "description": "Filter by depositor address.",
            "example": "11111111111111111111111111111111",
            "schema": {
              "$ref": "#/components/schemas/Address"
            }
          },
          {
            "$ref": "#/components/parameters/ConditionalLimit"
          },
          {
            "$ref": "#/components/parameters/Cursor"
          }
        ],
        "responses": {
          "200": {
            "description": "A successful response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/VaultDepositorsResponse"
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          }
        }
      }
    },
    "/v1/blp": {
      "get": {
        "tags": [
          "Vaults"
        ],
        "summary": "blp",
        "operationId": "getBlp",
        "description": "Get protocol-liquidity pool state.",
        "responses": {
          "200": {
            "description": "A successful response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BlpResponse"
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          }
        }
      }
    },
    "/v1/blpDepositors": {
      "get": {
        "tags": [
          "Vaults"
        ],
        "summary": "blpDepositors",
        "operationId": "listBlpDepositors",
        "description": "Get protocol-liquidity pool depositors.",
        "parameters": [
          {
            "name": "address",
            "in": "query",
            "required": false,
            "description": "Filter by depositor address.",
            "example": "11111111111111111111111111111111",
            "schema": {
              "$ref": "#/components/schemas/Address"
            }
          },
          {
            "$ref": "#/components/parameters/ConditionalLimit"
          },
          {
            "$ref": "#/components/parameters/Cursor"
          }
        ],
        "responses": {
          "200": {
            "description": "A successful response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BlpDepositorsResponse"
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          }
        }
      }
    },
    "/v1/tokens": {
      "get": {
        "tags": [
          "Explorer"
        ],
        "summary": "tokens",
        "operationId": "listTokens",
        "description": "Get token metadata.",
        "parameters": [
          {
            "name": "token_id",
            "in": "query",
            "required": false,
            "description": "Filter by token ID.",
            "example": "token1qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqxv8v5",
            "schema": {
              "$ref": "#/components/schemas/TokenId"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "A successful response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TokensResponse"
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          }
        }
      }
    },
    "/v1/transactions": {
      "get": {
        "tags": [
          "Explorer"
        ],
        "summary": "transactions",
        "operationId": "listTransactions",
        "description": "Get transactions or one transaction by hash.",
        "parameters": [
          {
            "name": "hash",
            "in": "query",
            "required": false,
            "description": "Transaction hash. Mutually exclusive with pagination.",
            "example": 10949363,
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/ConditionalLimit"
          },
          {
            "$ref": "#/components/parameters/Cursor"
          }
        ],
        "responses": {
          "200": {
            "description": "A successful response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TransactionsResponse"
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          }
        }
      }
    },
    "/v1/blocks": {
      "get": {
        "tags": [
          "Explorer"
        ],
        "summary": "blocks",
        "operationId": "listBlocks",
        "description": "Get blocks or one block by rollup height.",
        "parameters": [
          {
            "name": "rollup_height",
            "in": "query",
            "required": false,
            "description": "Rollup height. Mutually exclusive with pagination.",
            "example": "50001",
            "schema": {
              "$ref": "#/components/schemas/Uint64"
            }
          },
          {
            "$ref": "#/components/parameters/ConditionalLimit"
          },
          {
            "$ref": "#/components/parameters/Cursor"
          }
        ],
        "responses": {
          "200": {
            "description": "A successful response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BlocksResponse"
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          }
        }
      }
    },
    "/v1/search": {
      "get": {
        "tags": [
          "Explorer"
        ],
        "summary": "search",
        "operationId": "search",
        "description": "Search accounts and transactions.",
        "parameters": [
          {
            "name": "q",
            "in": "query",
            "required": true,
            "description": "Address or transaction hash.",
            "example": 10949363,
            "schema": {
              "type": "string",
              "minLength": 1
            }
          }
        ],
        "responses": {
          "200": {
            "description": "A successful response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SearchResponse"
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          }
        }
      }
    },
    "/v1/status": {
      "get": {
        "tags": [
          "System"
        ],
        "summary": "status",
        "operationId": "getStatus",
        "description": "Get API service status.",
        "responses": {
          "200": {
            "description": "A successful response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/StatusResponse"
                }
              }
            }
          }
        }
      }
    },
    "/v1/info": {
      "get": {
        "tags": [
          "System"
        ],
        "summary": "info",
        "operationId": "getInfo",
        "description": "Get chain, API, and public protocol configuration.",
        "responses": {
          "200": {
            "description": "A successful response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/InfoResponse"
                }
              }
            }
          }
        }
      }
    },
    "/v1/exchangeStats": {
      "get": {
        "tags": [
          "System"
        ],
        "summary": "exchangeStats",
        "operationId": "getExchangeStats",
        "description": "Get current exchange-wide statistics.",
        "responses": {
          "200": {
            "description": "A successful response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExchangeStatsResponse"
                }
              }
            }
          }
        }
      }
    }
  },
  "components": {
    "parameters": {
      "MarketType": {
        "name": "market_type",
        "in": "query",
        "required": true,
        "example": "perp",
        "schema": {
          "$ref": "#/components/schemas/MarketType"
        }
      },
      "OptionalMarketType": {
        "name": "market_type",
        "in": "query",
        "required": false,
        "example": "perp",
        "schema": {
          "$ref": "#/components/schemas/MarketType"
        }
      },
      "MarketTypeFilter": {
        "name": "market_type",
        "in": "query",
        "required": true,
        "example": "all",
        "schema": {
          "$ref": "#/components/schemas/MarketTypeFilter"
        }
      },
      "MarketId": {
        "name": "market_id",
        "in": "query",
        "required": true,
        "example": 1,
        "schema": {
          "type": "integer",
          "format": "int32",
          "minimum": 0
        }
      },
      "OptionalMarketId": {
        "name": "market_id",
        "in": "query",
        "required": false,
        "description": "Filter by market ID.",
        "example": 1,
        "schema": {
          "type": "integer",
          "format": "int32",
          "minimum": 0
        }
      },
      "Resolution": {
        "name": "resolution",
        "in": "query",
        "required": true,
        "example": "1m",
        "schema": {
          "$ref": "#/components/schemas/Resolution"
        }
      },
      "StartTimestamp": {
        "name": "start_timestamp",
        "in": "query",
        "required": true,
        "description": "Inclusive Unix timestamp in milliseconds.",
        "example": 1785441600000,
        "schema": {
          "type": "integer",
          "format": "int64",
          "minimum": 0
        }
      },
      "EndTimestamp": {
        "name": "end_timestamp",
        "in": "query",
        "required": true,
        "description": "Exclusive Unix timestamp in milliseconds.",
        "example": 1785445200000,
        "schema": {
          "type": "integer",
          "format": "int64",
          "minimum": 0
        }
      },
      "CountBack": {
        "name": "count_back",
        "in": "query",
        "required": true,
        "description": "Maximum rows returned.",
        "example": 60,
        "schema": {
          "type": "integer",
          "format": "int32",
          "minimum": 1,
          "maximum": 500
        }
      },
      "Address": {
        "name": "address",
        "in": "query",
        "required": true,
        "description": "Base58 account address that decodes to 32 bytes.",
        "example": "11111111111111111111111111111111",
        "schema": {
          "$ref": "#/components/schemas/Address"
        }
      },
      "SubaccountId": {
        "name": "subaccount_id",
        "in": "query",
        "required": true,
        "example": 0,
        "schema": {
          "type": "integer",
          "format": "int32",
          "minimum": 0
        }
      },
      "OptionalSubaccountId": {
        "name": "subaccount_id",
        "in": "query",
        "required": false,
        "description": "Filter by subaccount ID.",
        "example": 0,
        "schema": {
          "type": "integer",
          "format": "int32",
          "minimum": 0
        }
      },
      "Limit": {
        "name": "limit",
        "in": "query",
        "required": true,
        "description": "Maximum rows returned.",
        "example": 100,
        "schema": {
          "type": "integer",
          "format": "int32",
          "minimum": 1,
          "maximum": 100
        }
      },
      "ConditionalLimit": {
        "name": "limit",
        "in": "query",
        "required": false,
        "description": "Required for list requests; maximum 100.",
        "example": 100,
        "schema": {
          "type": "integer",
          "format": "int32",
          "minimum": 1,
          "maximum": 100,
          "default": 100
        }
      },
      "Cursor": {
        "name": "cursor",
        "in": "query",
        "required": false,
        "description": "Cursor returned by the previous page.",
        "schema": {
          "type": "string"
        }
      }
    },
    "schemas": {
      "MarketType": {
        "title": "market_type",
        "type": "string",
        "enum": [
          "spot",
          "perp"
        ]
      },
      "MarketTypeFilter": {
        "title": "market_type",
        "type": "string",
        "enum": [
          "all",
          "spot",
          "perp"
        ]
      },
      "Resolution": {
        "title": "resolution",
        "type": "string",
        "enum": [
          "1m",
          "5m",
          "15m",
          "1h",
          "4h",
          "1d"
        ]
      },
      "Side": {
        "type": "string",
        "enum": [
          "bid",
          "ask"
        ]
      },
      "SideFilter": {
        "type": "string",
        "enum": [
          "all",
          "bid",
          "ask"
        ],
        "default": "all"
      },
      "PositionSide": {
        "type": "string",
        "enum": [
          "long",
          "short"
        ]
      },
      "Role": {
        "type": "string",
        "enum": [
          "maker",
          "taker"
        ]
      },
      "RoleFilter": {
        "type": "string",
        "enum": [
          "all",
          "maker",
          "taker"
        ]
      },
      "MarginMode": {
        "type": "string",
        "enum": [
          "cross",
          "isolated"
        ]
      },
      "OrderStatusFilter": {
        "type": "string",
        "enum": [
          "active",
          "history",
          "all"
        ]
      },
      "TransferKind": {
        "type": "string",
        "enum": [
          "deposit",
          "withdrawal",
          "internal_transfer",
          "external_transfer"
        ]
      },
      "TransferKindFilter": {
        "type": "string",
        "enum": [
          "all",
          "deposit",
          "withdrawal",
          "internal_transfer",
          "external_transfer"
        ]
      },
      "Address": {
        "type": "string",
        "description": "Base58 value that decodes to 32 bytes."
      },
      "TokenId": {
        "type": "string",
        "description": "Canonical token identifier."
      },
      "Cursor": {
        "type": "string"
      },
      "Uint64": {
        "type": "string",
        "pattern": "^[0-9]+$",
        "description": "Unsigned 64-bit integer as a decimal string.",
        "examples": [
          "6500000"
        ]
      },
      "OrderId": {
        "type": "string",
        "pattern": "^[1-9A-HJ-NP-Za-km-z]+$",
        "description": "Canonical base58 encoding of the 28-byte protocol order ID."
      },
      "Int64": {
        "type": "string",
        "pattern": "^-?[0-9]+$",
        "description": "Signed 64-bit integer as a decimal string."
      },
      "TimestampNs": {
        "type": "string",
        "pattern": "^[0-9]+$",
        "description": "Unix timestamp in nanoseconds as a decimal string.",
        "examples": [
          "1785441660123456789"
        ]
      },
      "NullableUint64": {
        "oneOf": [
          {
            "$ref": "#/components/schemas/Uint64"
          },
          {
            "type": "null"
          }
        ]
      },
      "Error": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "code",
          "message"
        ],
        "properties": {
          "code": {
            "type": "integer",
            "examples": [
              400
            ]
          },
          "message": {
            "type": "string",
            "examples": [
              "invalid query parameters"
            ]
          }
        }
      },
      "LastCandle": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "open_time_ms",
          "open",
          "high",
          "low",
          "close",
          "volume_base",
          "volume_quote",
          "trades"
        ],
        "properties": {
          "open_time_ms": {
            "type": "integer",
            "format": "int64",
            "description": "Bucket start in Unix milliseconds",
            "examples": [
              1785441600000
            ]
          },
          "open": {
            "$ref": "#/components/schemas/Uint64"
          },
          "high": {
            "$ref": "#/components/schemas/Uint64"
          },
          "low": {
            "$ref": "#/components/schemas/Uint64"
          },
          "close": {
            "$ref": "#/components/schemas/Uint64"
          },
          "volume_base": {
            "$ref": "#/components/schemas/Uint64"
          },
          "volume_quote": {
            "$ref": "#/components/schemas/Uint64"
          },
          "trades": {
            "type": "integer",
            "minimum": 0,
            "examples": [
              3
            ]
          }
        }
      },
      "MarkCandle": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "open_time_ms",
          "open",
          "high",
          "low",
          "close",
          "samples"
        ],
        "properties": {
          "open_time_ms": {
            "type": "integer",
            "format": "int64",
            "description": "Bucket start in Unix milliseconds",
            "examples": [
              1785441600000
            ]
          },
          "open": {
            "$ref": "#/components/schemas/Uint64"
          },
          "high": {
            "$ref": "#/components/schemas/Uint64"
          },
          "low": {
            "$ref": "#/components/schemas/Uint64"
          },
          "close": {
            "$ref": "#/components/schemas/Uint64"
          },
          "samples": {
            "type": "integer",
            "minimum": 0,
            "examples": [
              4
            ]
          }
        }
      },
      "MarketStatus": {
        "type": "string",
        "enum": [
          "active",
          "paused",
          "final_settlement"
        ]
      },
      "MarginTier": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "tier",
          "notional_lower_bound_quote_lots",
          "max_leverage",
          "maintenance_margin_rate_bps",
          "maintenance_deduction_quote_lots"
        ],
        "properties": {
          "tier": {
            "type": "integer",
            "format": "int32",
            "minimum": 0
          },
          "notional_lower_bound_quote_lots": {
            "$ref": "#/components/schemas/Uint64"
          },
          "max_leverage": {
            "type": "integer",
            "format": "int32",
            "minimum": 1
          },
          "maintenance_margin_rate_bps": {
            "type": "integer",
            "format": "int32",
            "minimum": 0
          },
          "maintenance_deduction_quote_lots": {
            "$ref": "#/components/schemas/Uint64"
          }
        }
      },
      "Market": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "market_type",
          "market_id",
          "symbol",
          "base_token",
          "quote_token",
          "base_decimals",
          "quote_decimals",
          "base_atoms_per_base_lot",
          "quote_atoms_per_quote_lot",
          "base_lots_per_base_unit",
          "quote_lots_per_quote_unit",
          "quote_lots_per_base_unit_per_tick",
          "default_maker_fee_100th_bps",
          "default_taker_fee_100th_bps",
          "min_size_base_lots",
          "min_order_notional_quote_lots",
          "status"
        ],
        "properties": {
          "market_type": {
            "$ref": "#/components/schemas/MarketType"
          },
          "market_id": {
            "type": "integer",
            "format": "int32",
            "minimum": 0
          },
          "symbol": {
            "type": "string",
            "examples": [
              "BTC-USD"
            ]
          },
          "base_token": {
            "type": "string",
            "examples": [
              "BTC"
            ]
          },
          "quote_token": {
            "type": "string",
            "examples": [
              "USDC"
            ]
          },
          "quote_token_id": {
            "$ref": "#/components/schemas/TokenId"
          },
          "base_decimals": {
            "type": "integer",
            "format": "int32",
            "minimum": 0
          },
          "quote_decimals": {
            "type": "integer",
            "format": "int32",
            "minimum": 0
          },
          "base_atoms_per_base_lot": {
            "allOf": [
              {
                "$ref": "#/components/schemas/Uint64"
              }
            ],
            "description": "Base-token atoms in one base lot."
          },
          "quote_atoms_per_quote_lot": {
            "allOf": [
              {
                "$ref": "#/components/schemas/Uint64"
              }
            ],
            "description": "Quote-token atoms in one quote lot."
          },
          "base_lots_per_base_unit": {
            "allOf": [
              {
                "$ref": "#/components/schemas/Uint64"
              }
            ],
            "description": "Base lots in one display base unit."
          },
          "quote_lots_per_quote_unit": {
            "allOf": [
              {
                "$ref": "#/components/schemas/Uint64"
              }
            ],
            "description": "Quote lots in one display quote unit."
          },
          "quote_lots_per_base_unit_per_tick": {
            "allOf": [
              {
                "$ref": "#/components/schemas/Uint64"
              }
            ],
            "description": "Quote lots per base unit represented by one price tick."
          },
          "default_maker_fee_100th_bps": {
            "type": "integer",
            "format": "int32"
          },
          "default_taker_fee_100th_bps": {
            "type": "integer",
            "format": "int32"
          },
          "liquidation_fee_100th_bps": {
            "type": "integer",
            "format": "int32",
            "minimum": 0
          },
          "min_size_base_lots": {
            "$ref": "#/components/schemas/Uint64"
          },
          "min_order_notional_quote_lots": {
            "$ref": "#/components/schemas/Uint64"
          },
          "max_market_order_value_quote_lots": {
            "$ref": "#/components/schemas/Uint64"
          },
          "max_limit_order_value_quote_lots": {
            "$ref": "#/components/schemas/Uint64"
          },
          "max_leverage": {
            "type": "integer",
            "format": "int32",
            "minimum": 1
          },
          "oracle_id": {
            "type": "string"
          },
          "fee_recipient": {
            "$ref": "#/components/schemas/Address"
          },
          "margin_tiers": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/MarginTier"
            }
          },
          "status": {
            "$ref": "#/components/schemas/MarketStatus"
          }
        }
      },
      "MarketStats": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "market_type",
          "market_id",
          "timestamp_ns",
          "volume_24h_base_lots",
          "volume_24h_quote_lots",
          "trades_24h"
        ],
        "properties": {
          "market_type": {
            "$ref": "#/components/schemas/MarketType"
          },
          "market_id": {
            "type": "integer",
            "format": "int32",
            "minimum": 0
          },
          "timestamp_ns": {
            "$ref": "#/components/schemas/TimestampNs"
          },
          "last_price_ticks": {
            "$ref": "#/components/schemas/Uint64"
          },
          "mark_price_ticks": {
            "$ref": "#/components/schemas/Uint64"
          },
          "oracle_price_ticks": {
            "$ref": "#/components/schemas/Uint64"
          },
          "mid_price_ticks": {
            "$ref": "#/components/schemas/Uint64"
          },
          "best_bid_price_ticks": {
            "$ref": "#/components/schemas/Uint64"
          },
          "best_ask_price_ticks": {
            "$ref": "#/components/schemas/Uint64"
          },
          "open_interest_base_lots": {
            "$ref": "#/components/schemas/Uint64"
          },
          "funding_rate_100th_bps": {
            "type": "integer",
            "format": "int32"
          },
          "predicted_funding_rate_100th_bps": {
            "type": "integer",
            "format": "int32"
          },
          "volume_24h_base_lots": {
            "$ref": "#/components/schemas/Uint64"
          },
          "volume_24h_quote_lots": {
            "$ref": "#/components/schemas/Uint64"
          },
          "trades_24h": {
            "$ref": "#/components/schemas/Uint64"
          },
          "low_24h_price_ticks": {
            "$ref": "#/components/schemas/Uint64"
          },
          "high_24h_price_ticks": {
            "$ref": "#/components/schemas/Uint64"
          },
          "change_24h_bps": {
            "type": "integer",
            "format": "int64"
          }
        }
      },
      "PriceLevel": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "price_ticks",
          "size_base_lots"
        ],
        "properties": {
          "price_ticks": {
            "$ref": "#/components/schemas/Uint64"
          },
          "size_base_lots": {
            "$ref": "#/components/schemas/Uint64"
          }
        }
      },
      "NullablePriceLevel": {
        "oneOf": [
          {
            "$ref": "#/components/schemas/PriceLevel"
          },
          {
            "type": "null"
          }
        ]
      },
      "Bbo": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "bid",
          "ask"
        ],
        "properties": {
          "bid": {
            "$ref": "#/components/schemas/NullablePriceLevel"
          },
          "ask": {
            "$ref": "#/components/schemas/NullablePriceLevel"
          }
        }
      },
      "OrderBook": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "bids",
          "asks"
        ],
        "properties": {
          "bids": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/PriceLevel"
            }
          },
          "asks": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/PriceLevel"
            }
          }
        }
      },
      "BookOrder": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "order_id",
          "client_order_id",
          "address",
          "subaccount_id",
          "side",
          "price_ticks",
          "remaining_size_base_lots",
          "original_size_base_lots"
        ],
        "properties": {
          "order_id": {
            "$ref": "#/components/schemas/OrderId"
          },
          "client_order_id": {
            "$ref": "#/components/schemas/Uint64"
          },
          "address": {
            "$ref": "#/components/schemas/Address"
          },
          "subaccount_id": {
            "type": "integer",
            "format": "int32",
            "minimum": 0
          },
          "side": {
            "$ref": "#/components/schemas/Side"
          },
          "price_ticks": {
            "$ref": "#/components/schemas/Uint64"
          },
          "remaining_size_base_lots": {
            "$ref": "#/components/schemas/Uint64"
          },
          "original_size_base_lots": {
            "$ref": "#/components/schemas/Uint64"
          }
        }
      },
      "Trade": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "timestamp_ns",
          "sequence",
          "price_ticks",
          "size_base_lots",
          "quote_notional_lots",
          "taker_is_bid"
        ],
        "properties": {
          "timestamp_ns": {
            "$ref": "#/components/schemas/TimestampNs"
          },
          "sequence": {
            "$ref": "#/components/schemas/Uint64"
          },
          "price_ticks": {
            "$ref": "#/components/schemas/Uint64"
          },
          "size_base_lots": {
            "$ref": "#/components/schemas/Uint64"
          },
          "quote_notional_lots": {
            "$ref": "#/components/schemas/Uint64"
          },
          "taker_is_bid": {
            "type": "boolean"
          }
        }
      },
      "FundingRate": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "timestamp_ns",
          "sequence",
          "market_id",
          "funding_rate_100th_bps",
          "long_cumulative_funding_quote_lots",
          "short_cumulative_funding_quote_lots"
        ],
        "properties": {
          "timestamp_ns": {
            "$ref": "#/components/schemas/TimestampNs"
          },
          "sequence": {
            "$ref": "#/components/schemas/Uint64"
          },
          "market_id": {
            "type": "integer",
            "format": "int32",
            "minimum": 0
          },
          "funding_rate_100th_bps": {
            "type": "integer",
            "format": "int32"
          },
          "long_cumulative_funding_quote_lots": {
            "$ref": "#/components/schemas/Int64"
          },
          "short_cumulative_funding_quote_lots": {
            "$ref": "#/components/schemas/Int64"
          }
        }
      },
      "Delegation": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "delegate",
          "permissions"
        ],
        "properties": {
          "delegate": {
            "$ref": "#/components/schemas/Address"
          },
          "permissions": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "expires_at_ns": {
            "$ref": "#/components/schemas/TimestampNs"
          },
          "name": {
            "type": "string"
          }
        }
      },
      "Subaccount": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "subaccount_id",
          "status",
          "created_at_ns",
          "cross_margin_balance_quote_lots",
          "total_isolated_margin_quote_lots",
          "equity_quote_lots",
          "available_margin_quote_lots",
          "transferable_margin_quote_lots",
          "initial_margin_requirement_quote_lots",
          "maintenance_margin_requirement_quote_lots",
          "delegations"
        ],
        "properties": {
          "subaccount_id": {
            "type": "integer",
            "format": "int32",
            "minimum": 0
          },
          "status": {
            "type": "string",
            "enum": [
              "active",
              "restricted",
              "closed"
            ]
          },
          "created_at_ns": {
            "$ref": "#/components/schemas/TimestampNs"
          },
          "cross_margin_balance_quote_lots": {
            "$ref": "#/components/schemas/Int64"
          },
          "total_isolated_margin_quote_lots": {
            "$ref": "#/components/schemas/Uint64"
          },
          "equity_quote_lots": {
            "$ref": "#/components/schemas/Int64"
          },
          "available_margin_quote_lots": {
            "$ref": "#/components/schemas/Int64"
          },
          "transferable_margin_quote_lots": {
            "$ref": "#/components/schemas/Int64"
          },
          "initial_margin_requirement_quote_lots": {
            "$ref": "#/components/schemas/Uint64"
          },
          "maintenance_margin_requirement_quote_lots": {
            "$ref": "#/components/schemas/Uint64"
          },
          "delegations": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Delegation"
            }
          }
        }
      },
      "Balance": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "token_id",
          "total_token_atoms",
          "locked_token_atoms",
          "deposited_token_atoms",
          "withdrawn_token_atoms"
        ],
        "properties": {
          "token_id": {
            "$ref": "#/components/schemas/TokenId"
          },
          "total_token_atoms": {
            "$ref": "#/components/schemas/Uint64"
          },
          "locked_token_atoms": {
            "$ref": "#/components/schemas/Uint64"
          },
          "deposited_token_atoms": {
            "$ref": "#/components/schemas/Uint64"
          },
          "withdrawn_token_atoms": {
            "$ref": "#/components/schemas/Uint64"
          }
        }
      },
      "Position": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "market_id",
          "side",
          "size_base_lots",
          "entry_price_ticks",
          "margin_mode",
          "leverage",
          "position_value_quote_lots",
          "unrealized_pnl_quote_lots",
          "realized_pnl_quote_lots",
          "roe_bps",
          "margin_used_token_atoms",
          "isolated_margin_quote_lots",
          "fees_quote_lots",
          "funding_quote_lots"
        ],
        "properties": {
          "market_id": {
            "type": "integer",
            "format": "int32",
            "minimum": 0
          },
          "side": {
            "$ref": "#/components/schemas/PositionSide"
          },
          "size_base_lots": {
            "$ref": "#/components/schemas/Uint64"
          },
          "entry_price_ticks": {
            "$ref": "#/components/schemas/Uint64"
          },
          "liquidation_price_ticks": {
            "$ref": "#/components/schemas/Uint64"
          },
          "margin_mode": {
            "$ref": "#/components/schemas/MarginMode"
          },
          "leverage": {
            "type": "integer",
            "format": "int32",
            "minimum": 1
          },
          "position_value_quote_lots": {
            "$ref": "#/components/schemas/Uint64"
          },
          "unrealized_pnl_quote_lots": {
            "$ref": "#/components/schemas/Int64"
          },
          "realized_pnl_quote_lots": {
            "$ref": "#/components/schemas/Int64"
          },
          "roe_bps": {
            "type": "integer",
            "format": "int64"
          },
          "margin_used_token_atoms": {
            "$ref": "#/components/schemas/Uint64"
          },
          "isolated_margin_quote_lots": {
            "$ref": "#/components/schemas/Uint64"
          },
          "fees_quote_lots": {
            "$ref": "#/components/schemas/Int64"
          },
          "funding_quote_lots": {
            "$ref": "#/components/schemas/Int64"
          }
        }
      },
      "Order": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "timestamp_ns",
          "sequence",
          "market_type",
          "market_id",
          "order_id",
          "client_order_id",
          "side",
          "price_ticks",
          "original_size_base_lots",
          "remaining_size_base_lots",
          "order_type",
          "time_in_force",
          "status"
        ],
        "properties": {
          "timestamp_ns": {
            "$ref": "#/components/schemas/TimestampNs"
          },
          "sequence": {
            "$ref": "#/components/schemas/Uint64"
          },
          "market_type": {
            "$ref": "#/components/schemas/MarketType"
          },
          "market_id": {
            "type": "integer",
            "format": "int32",
            "minimum": 0
          },
          "order_id": {
            "$ref": "#/components/schemas/OrderId"
          },
          "client_order_id": {
            "$ref": "#/components/schemas/Uint64"
          },
          "side": {
            "$ref": "#/components/schemas/Side"
          },
          "price_ticks": {
            "$ref": "#/components/schemas/Uint64"
          },
          "original_size_base_lots": {
            "$ref": "#/components/schemas/Uint64"
          },
          "remaining_size_base_lots": {
            "$ref": "#/components/schemas/Uint64"
          },
          "order_type": {
            "type": "string"
          },
          "time_in_force": {
            "type": "string"
          },
          "reduce_only": {
            "type": "boolean",
            "description": "Omitted when unavailable for a historical perpetual order."
          },
          "tick_offset": {
            "$ref": "#/components/schemas/Int64"
          },
          "trigger_price_ticks": {
            "$ref": "#/components/schemas/Uint64"
          },
          "max_price_ticks": {
            "$ref": "#/components/schemas/Uint64"
          },
          "status": {
            "type": "string"
          }
        }
      },
      "Fill": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "timestamp_ns",
          "sequence",
          "market_type",
          "market_id",
          "order_id",
          "client_order_id",
          "role",
          "side",
          "price_ticks",
          "size_base_lots",
          "quote_notional_lots",
          "fee_quote_lots"
        ],
        "properties": {
          "timestamp_ns": {
            "$ref": "#/components/schemas/TimestampNs"
          },
          "sequence": {
            "$ref": "#/components/schemas/Uint64"
          },
          "market_type": {
            "$ref": "#/components/schemas/MarketType"
          },
          "market_id": {
            "type": "integer",
            "format": "int32",
            "minimum": 0
          },
          "order_id": {
            "$ref": "#/components/schemas/OrderId"
          },
          "client_order_id": {
            "$ref": "#/components/schemas/Uint64"
          },
          "role": {
            "$ref": "#/components/schemas/Role"
          },
          "side": {
            "$ref": "#/components/schemas/Side"
          },
          "price_ticks": {
            "$ref": "#/components/schemas/Uint64"
          },
          "size_base_lots": {
            "$ref": "#/components/schemas/Uint64"
          },
          "quote_notional_lots": {
            "$ref": "#/components/schemas/Uint64"
          },
          "fee_quote_lots": {
            "$ref": "#/components/schemas/Int64"
          },
          "position_size_before_base_lots": {
            "allOf": [
              {
                "$ref": "#/components/schemas/Int64"
              }
            ],
            "description": "Perpetual fills only."
          },
          "position_size_after_base_lots": {
            "allOf": [
              {
                "$ref": "#/components/schemas/Int64"
              }
            ],
            "description": "Perpetual fills only."
          },
          "closed_pnl_quote_lots": {
            "allOf": [
              {
                "$ref": "#/components/schemas/Int64"
              }
            ],
            "description": "Perpetual fills only."
          },
          "crossed": {
            "type": "boolean",
            "description": "Perpetual fills only."
          },
          "margin_bucket": {
            "allOf": [
              {
                "$ref": "#/components/schemas/MarginMode"
              }
            ],
            "description": "Perpetual fills only."
          },
          "liquidation_id": {
            "allOf": [
              {
                "$ref": "#/components/schemas/Uint64"
              }
            ],
            "description": "Present for liquidation fills."
          },
          "liquidation_method": {
            "type": "string"
          }
        }
      },
      "FundingPayment": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "timestamp_ns",
          "sequence",
          "bucket",
          "market_id",
          "side",
          "position_size_base_lots",
          "payment_quote_lots",
          "funding_index"
        ],
        "properties": {
          "timestamp_ns": {
            "$ref": "#/components/schemas/TimestampNs"
          },
          "sequence": {
            "$ref": "#/components/schemas/Uint64"
          },
          "bucket": {
            "$ref": "#/components/schemas/MarginMode"
          },
          "market_id": {
            "type": "integer",
            "format": "int32",
            "minimum": 0
          },
          "side": {
            "$ref": "#/components/schemas/PositionSide"
          },
          "position_size_base_lots": {
            "$ref": "#/components/schemas/Uint64"
          },
          "payment_quote_lots": {
            "$ref": "#/components/schemas/Int64"
          },
          "funding_index": {
            "$ref": "#/components/schemas/Int64"
          }
        }
      },
      "PnlPoint": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "open_time_ms",
          "equity_quote_lots",
          "realized_pnl_quote_lots"
        ],
        "properties": {
          "open_time_ms": {
            "type": "integer",
            "format": "int64",
            "description": "Bucket start in Unix milliseconds"
          },
          "equity_quote_lots": {
            "$ref": "#/components/schemas/Int64"
          },
          "unrealized_pnl_quote_lots": {
            "allOf": [
              {
                "$ref": "#/components/schemas/Int64"
              }
            ],
            "description": "Present when historical marked position state is available."
          },
          "realized_pnl_quote_lots": {
            "$ref": "#/components/schemas/Int64"
          }
        }
      },
      "Transfer": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "timestamp_ns",
          "sequence",
          "kind",
          "token_id",
          "amount_token_atoms"
        ],
        "properties": {
          "timestamp_ns": {
            "$ref": "#/components/schemas/TimestampNs"
          },
          "sequence": {
            "$ref": "#/components/schemas/Uint64"
          },
          "kind": {
            "$ref": "#/components/schemas/TransferKind"
          },
          "token_id": {
            "$ref": "#/components/schemas/TokenId"
          },
          "amount_token_atoms": {
            "$ref": "#/components/schemas/Int64"
          },
          "counterparty": {
            "$ref": "#/components/schemas/Address"
          },
          "counterparty_subaccount_id": {
            "type": "integer",
            "format": "int32",
            "minimum": 0
          },
          "transaction_hash": {
            "type": "string"
          }
        }
      },
      "LiquidatedPosition": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "market_id",
          "side",
          "size_base_lots",
          "position_margin_quote_lots",
          "margin_mode"
        ],
        "properties": {
          "market_id": {
            "type": "integer",
            "format": "int32",
            "minimum": 0
          },
          "side": {
            "$ref": "#/components/schemas/PositionSide"
          },
          "size_base_lots": {
            "$ref": "#/components/schemas/Uint64"
          },
          "position_margin_quote_lots": {
            "$ref": "#/components/schemas/Uint64"
          },
          "margin_mode": {
            "$ref": "#/components/schemas/MarginMode"
          }
        }
      },
      "Liquidation": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "liquidation_id",
          "timestamp_ns",
          "sequence",
          "liquidation_type",
          "liquidator",
          "liquidatee",
          "liquidatee_subaccount_id",
          "bucket",
          "scope",
          "positions"
        ],
        "properties": {
          "liquidation_id": {
            "$ref": "#/components/schemas/Uint64"
          },
          "timestamp_ns": {
            "$ref": "#/components/schemas/TimestampNs"
          },
          "sequence": {
            "$ref": "#/components/schemas/Uint64"
          },
          "liquidation_type": {
            "type": "string"
          },
          "liquidator": {
            "$ref": "#/components/schemas/Address"
          },
          "liquidatee": {
            "$ref": "#/components/schemas/Address"
          },
          "liquidatee_subaccount_id": {
            "type": "integer",
            "format": "int32",
            "minimum": 0
          },
          "bucket": {
            "$ref": "#/components/schemas/MarginMode"
          },
          "scope": {
            "type": "string"
          },
          "positions": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/LiquidatedPosition"
            }
          }
        }
      },
      "Vault": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "vault_id",
          "owner",
          "vault_address",
          "total_shares",
          "created_at_ns"
        ],
        "properties": {
          "vault_id": {
            "$ref": "#/components/schemas/Uint64"
          },
          "owner": {
            "$ref": "#/components/schemas/Address"
          },
          "vault_address": {
            "$ref": "#/components/schemas/Address"
          },
          "total_shares": {
            "$ref": "#/components/schemas/Uint64"
          },
          "created_at_ns": {
            "$ref": "#/components/schemas/TimestampNs"
          }
        }
      },
      "VaultDepositor": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "vault_id",
          "address",
          "shares",
          "total_deposited_token_atoms",
          "total_withdrawn_token_atoms"
        ],
        "properties": {
          "vault_id": {
            "$ref": "#/components/schemas/Uint64"
          },
          "address": {
            "$ref": "#/components/schemas/Address"
          },
          "shares": {
            "$ref": "#/components/schemas/Uint64"
          },
          "total_deposited_token_atoms": {
            "$ref": "#/components/schemas/Uint64"
          },
          "total_withdrawn_token_atoms": {
            "$ref": "#/components/schemas/Uint64"
          }
        }
      },
      "Blp": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "total_shares",
          "protocol_fee_100th_bps"
        ],
        "properties": {
          "total_shares": {
            "$ref": "#/components/schemas/Uint64"
          },
          "protocol_fee_100th_bps": {
            "type": "integer",
            "format": "int32",
            "minimum": 0
          }
        }
      },
      "BlpDepositor": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "address",
          "shares",
          "total_deposited_token_atoms",
          "total_withdrawn_token_atoms"
        ],
        "properties": {
          "address": {
            "$ref": "#/components/schemas/Address"
          },
          "shares": {
            "$ref": "#/components/schemas/Uint64"
          },
          "total_deposited_token_atoms": {
            "$ref": "#/components/schemas/Uint64"
          },
          "total_withdrawn_token_atoms": {
            "$ref": "#/components/schemas/Uint64"
          }
        }
      },
      "Token": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "token_id",
          "symbol",
          "decimals"
        ],
        "properties": {
          "token_id": {
            "$ref": "#/components/schemas/TokenId"
          },
          "symbol": {
            "type": "string"
          },
          "name": {
            "type": "string"
          },
          "decimals": {
            "type": "integer",
            "format": "int32",
            "minimum": 0
          }
        }
      },
      "Transaction": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "hash",
          "method",
          "status",
          "rollup_height",
          "sequence",
          "timestamp_ns"
        ],
        "properties": {
          "hash": {
            "type": "string"
          },
          "signer": {
            "$ref": "#/components/schemas/Address"
          },
          "method": {
            "type": "string"
          },
          "status": {
            "type": "string",
            "enum": [
              "success",
              "failed"
            ]
          },
          "rollup_height": {
            "$ref": "#/components/schemas/Uint64"
          },
          "sequence": {
            "$ref": "#/components/schemas/Uint64"
          },
          "timestamp_ns": {
            "$ref": "#/components/schemas/TimestampNs"
          },
          "error": {
            "type": "string"
          },
          "call": {
            "type": "object",
            "additionalProperties": true
          }
        }
      },
      "Block": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "rollup_height",
          "transaction_count",
          "event_count"
        ],
        "properties": {
          "rollup_height": {
            "$ref": "#/components/schemas/Uint64"
          },
          "transaction_count": {
            "type": "integer",
            "format": "int32",
            "minimum": 0
          },
          "event_count": {
            "type": "integer",
            "format": "int32",
            "minimum": 0
          }
        }
      },
      "SearchResult": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "type",
          "id"
        ],
        "properties": {
          "type": {
            "type": "string",
            "enum": [
              "account",
              "transaction"
            ]
          },
          "id": {
            "type": "string"
          }
        }
      },
      "Status": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "status",
          "timestamp_ns"
        ],
        "properties": {
          "status": {
            "type": "string",
            "enum": [
              "ok",
              "syncing",
              "degraded"
            ]
          },
          "timestamp_ns": {
            "$ref": "#/components/schemas/TimestampNs"
          }
        }
      },
      "Info": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "name",
          "chain_id",
          "genesis_timestamp_ns",
          "rollup_height",
          "transaction_sequence",
          "api_version",
          "quote_token",
          "quote_token_id",
          "quote_atoms_per_quote_lot",
          "quote_lots_per_quote_unit",
          "quote_atoms_per_unit",
          "quote_decimals",
          "default_maker_fee_100th_bps",
          "default_taker_fee_100th_bps",
          "max_subaccounts_per_owner"
        ],
        "properties": {
          "name": {
            "type": "string",
            "examples": [
              "Blink"
            ]
          },
          "chain_id": {
            "type": "integer",
            "format": "int64"
          },
          "genesis_timestamp_ns": {
            "$ref": "#/components/schemas/TimestampNs"
          },
          "rollup_height": {
            "$ref": "#/components/schemas/Uint64"
          },
          "transaction_sequence": {
            "$ref": "#/components/schemas/Uint64"
          },
          "api_version": {
            "type": "string",
            "examples": [
              "1"
            ]
          },
          "quote_token": {
            "type": "string",
            "examples": [
              "USDC"
            ]
          },
          "quote_token_id": {
            "$ref": "#/components/schemas/TokenId"
          },
          "quote_atoms_per_quote_lot": {
            "$ref": "#/components/schemas/Uint64"
          },
          "quote_lots_per_quote_unit": {
            "$ref": "#/components/schemas/Uint64"
          },
          "quote_atoms_per_unit": {
            "$ref": "#/components/schemas/Uint64"
          },
          "quote_decimals": {
            "type": "integer",
            "format": "int32",
            "minimum": 0
          },
          "default_maker_fee_100th_bps": {
            "type": "integer",
            "format": "int32"
          },
          "default_taker_fee_100th_bps": {
            "type": "integer",
            "format": "int32"
          },
          "max_subaccounts_per_owner": {
            "type": "integer",
            "format": "int32",
            "minimum": 1
          }
        }
      },
      "ExchangeStats": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "timestamp_ns",
          "markets",
          "open_interest_quote_lots",
          "volume_24h_quote_lots",
          "trades_24h"
        ],
        "properties": {
          "timestamp_ns": {
            "$ref": "#/components/schemas/TimestampNs"
          },
          "markets": {
            "type": "integer",
            "format": "int32",
            "minimum": 0
          },
          "open_interest_quote_lots": {
            "$ref": "#/components/schemas/Uint64"
          },
          "volume_24h_quote_lots": {
            "$ref": "#/components/schemas/Uint64"
          },
          "trades_24h": {
            "$ref": "#/components/schemas/Uint64"
          }
        }
      },
      "SuccessFields": {
        "type": "object",
        "required": [
          "code",
          "message"
        ],
        "properties": {
          "code": {
            "type": "integer",
            "examples": [
              200
            ]
          },
          "message": {
            "type": "string",
            "examples": [
              "success"
            ]
          }
        }
      },
      "PaginatedFields": {
        "type": "object",
        "properties": {
          "next_cursor": {
            "$ref": "#/components/schemas/Cursor"
          }
        }
      },
      "LastCandleResponse": {
        "allOf": [
          {
            "$ref": "#/components/schemas/SuccessFields"
          },
          {
            "type": "object",
            "required": [
              "resolution",
              "candles"
            ],
            "properties": {
              "resolution": {
                "$ref": "#/components/schemas/Resolution"
              },
              "candles": {
                "type": "array",
                "maxItems": 500,
                "items": {
                  "$ref": "#/components/schemas/LastCandle"
                }
              }
            }
          }
        ]
      },
      "MarkCandleResponse": {
        "allOf": [
          {
            "$ref": "#/components/schemas/SuccessFields"
          },
          {
            "type": "object",
            "required": [
              "resolution",
              "candles"
            ],
            "properties": {
              "resolution": {
                "$ref": "#/components/schemas/Resolution"
              },
              "candles": {
                "type": "array",
                "maxItems": 500,
                "items": {
                  "$ref": "#/components/schemas/MarkCandle"
                }
              }
            }
          }
        ]
      },
      "MarketsResponse": {
        "allOf": [
          {
            "$ref": "#/components/schemas/SuccessFields"
          },
          {
            "type": "object",
            "required": [
              "markets"
            ],
            "properties": {
              "markets": {
                "type": "array",
                "items": {
                  "$ref": "#/components/schemas/Market"
                }
              }
            }
          }
        ]
      },
      "MarketStatsResponse": {
        "allOf": [
          {
            "$ref": "#/components/schemas/SuccessFields"
          },
          {
            "type": "object",
            "required": [
              "market_stats"
            ],
            "properties": {
              "market_stats": {
                "type": "array",
                "items": {
                  "$ref": "#/components/schemas/MarketStats"
                }
              }
            }
          }
        ]
      },
      "BboResponse": {
        "allOf": [
          {
            "$ref": "#/components/schemas/SuccessFields"
          },
          {
            "type": "object",
            "required": [
              "timestamp_ns",
              "sequence",
              "bbo"
            ],
            "properties": {
              "timestamp_ns": {
                "$ref": "#/components/schemas/TimestampNs"
              },
              "sequence": {
                "$ref": "#/components/schemas/Uint64"
              },
              "bbo": {
                "$ref": "#/components/schemas/Bbo"
              }
            }
          }
        ]
      },
      "OrderBookResponse": {
        "allOf": [
          {
            "$ref": "#/components/schemas/SuccessFields"
          },
          {
            "type": "object",
            "required": [
              "timestamp_ns",
              "sequence",
              "orderbook"
            ],
            "properties": {
              "timestamp_ns": {
                "$ref": "#/components/schemas/TimestampNs"
              },
              "sequence": {
                "$ref": "#/components/schemas/Uint64"
              },
              "orderbook": {
                "$ref": "#/components/schemas/OrderBook"
              }
            }
          }
        ]
      },
      "BookOrdersResponse": {
        "allOf": [
          {
            "$ref": "#/components/schemas/SuccessFields"
          },
          {
            "$ref": "#/components/schemas/PaginatedFields"
          },
          {
            "type": "object",
            "required": [
              "orders"
            ],
            "properties": {
              "orders": {
                "type": "array",
                "items": {
                  "$ref": "#/components/schemas/BookOrder"
                }
              }
            }
          }
        ]
      },
      "TradesResponse": {
        "allOf": [
          {
            "$ref": "#/components/schemas/SuccessFields"
          },
          {
            "$ref": "#/components/schemas/PaginatedFields"
          },
          {
            "type": "object",
            "required": [
              "trades"
            ],
            "properties": {
              "trades": {
                "type": "array",
                "items": {
                  "$ref": "#/components/schemas/Trade"
                }
              }
            }
          }
        ]
      },
      "FundingRatesResponse": {
        "allOf": [
          {
            "$ref": "#/components/schemas/SuccessFields"
          },
          {
            "$ref": "#/components/schemas/PaginatedFields"
          },
          {
            "type": "object",
            "required": [
              "funding_rates"
            ],
            "properties": {
              "funding_rates": {
                "type": "array",
                "items": {
                  "$ref": "#/components/schemas/FundingRate"
                }
              }
            }
          }
        ]
      },
      "AccountResponse": {
        "allOf": [
          {
            "$ref": "#/components/schemas/SuccessFields"
          },
          {
            "type": "object",
            "required": [
              "address",
              "created_at_ns",
              "subaccounts"
            ],
            "properties": {
              "address": {
                "$ref": "#/components/schemas/Address"
              },
              "created_at_ns": {
                "$ref": "#/components/schemas/TimestampNs"
              },
              "subaccounts": {
                "type": "array",
                "items": {
                  "$ref": "#/components/schemas/Subaccount"
                }
              }
            }
          }
        ]
      },
      "BalancesResponse": {
        "allOf": [
          {
            "$ref": "#/components/schemas/SuccessFields"
          },
          {
            "type": "object",
            "required": [
              "balances"
            ],
            "properties": {
              "balances": {
                "type": "array",
                "items": {
                  "$ref": "#/components/schemas/Balance"
                }
              }
            }
          }
        ]
      },
      "PositionsResponse": {
        "allOf": [
          {
            "$ref": "#/components/schemas/SuccessFields"
          },
          {
            "type": "object",
            "required": [
              "positions"
            ],
            "properties": {
              "positions": {
                "type": "array",
                "items": {
                  "$ref": "#/components/schemas/Position"
                }
              }
            }
          }
        ]
      },
      "OrdersResponse": {
        "allOf": [
          {
            "$ref": "#/components/schemas/SuccessFields"
          },
          {
            "$ref": "#/components/schemas/PaginatedFields"
          },
          {
            "type": "object",
            "required": [
              "orders"
            ],
            "properties": {
              "orders": {
                "type": "array",
                "items": {
                  "$ref": "#/components/schemas/Order"
                }
              }
            }
          }
        ]
      },
      "FillsResponse": {
        "allOf": [
          {
            "$ref": "#/components/schemas/SuccessFields"
          },
          {
            "$ref": "#/components/schemas/PaginatedFields"
          },
          {
            "type": "object",
            "required": [
              "fills"
            ],
            "properties": {
              "fills": {
                "type": "array",
                "items": {
                  "$ref": "#/components/schemas/Fill"
                }
              }
            }
          }
        ]
      },
      "FundingPaymentsResponse": {
        "allOf": [
          {
            "$ref": "#/components/schemas/SuccessFields"
          },
          {
            "$ref": "#/components/schemas/PaginatedFields"
          },
          {
            "type": "object",
            "required": [
              "funding_payments"
            ],
            "properties": {
              "funding_payments": {
                "type": "array",
                "items": {
                  "$ref": "#/components/schemas/FundingPayment"
                }
              }
            }
          }
        ]
      },
      "PnlResponse": {
        "allOf": [
          {
            "$ref": "#/components/schemas/SuccessFields"
          },
          {
            "type": "object",
            "required": [
              "resolution",
              "pnl"
            ],
            "properties": {
              "resolution": {
                "$ref": "#/components/schemas/Resolution"
              },
              "pnl": {
                "type": "array",
                "maxItems": 500,
                "items": {
                  "$ref": "#/components/schemas/PnlPoint"
                }
              }
            }
          }
        ]
      },
      "TransfersResponse": {
        "allOf": [
          {
            "$ref": "#/components/schemas/SuccessFields"
          },
          {
            "$ref": "#/components/schemas/PaginatedFields"
          },
          {
            "type": "object",
            "required": [
              "transfers"
            ],
            "properties": {
              "transfers": {
                "type": "array",
                "items": {
                  "$ref": "#/components/schemas/Transfer"
                }
              }
            }
          }
        ]
      },
      "LiquidationsResponse": {
        "allOf": [
          {
            "$ref": "#/components/schemas/SuccessFields"
          },
          {
            "$ref": "#/components/schemas/PaginatedFields"
          },
          {
            "type": "object",
            "required": [
              "liquidations"
            ],
            "properties": {
              "liquidations": {
                "type": "array",
                "items": {
                  "$ref": "#/components/schemas/Liquidation"
                }
              }
            }
          }
        ]
      },
      "VaultsResponse": {
        "allOf": [
          {
            "$ref": "#/components/schemas/SuccessFields"
          },
          {
            "$ref": "#/components/schemas/PaginatedFields"
          },
          {
            "type": "object",
            "required": [
              "vaults"
            ],
            "properties": {
              "vaults": {
                "type": "array",
                "items": {
                  "$ref": "#/components/schemas/Vault"
                }
              }
            }
          }
        ]
      },
      "VaultDepositorsResponse": {
        "allOf": [
          {
            "$ref": "#/components/schemas/SuccessFields"
          },
          {
            "$ref": "#/components/schemas/PaginatedFields"
          },
          {
            "type": "object",
            "required": [
              "vault_depositors"
            ],
            "properties": {
              "vault_depositors": {
                "type": "array",
                "items": {
                  "$ref": "#/components/schemas/VaultDepositor"
                }
              }
            }
          }
        ]
      },
      "BlpResponse": {
        "allOf": [
          {
            "$ref": "#/components/schemas/SuccessFields"
          },
          {
            "type": "object",
            "required": [
              "blp"
            ],
            "properties": {
              "blp": {
                "$ref": "#/components/schemas/Blp"
              }
            }
          }
        ]
      },
      "BlpDepositorsResponse": {
        "allOf": [
          {
            "$ref": "#/components/schemas/SuccessFields"
          },
          {
            "$ref": "#/components/schemas/PaginatedFields"
          },
          {
            "type": "object",
            "required": [
              "blp_depositors"
            ],
            "properties": {
              "blp_depositors": {
                "type": "array",
                "items": {
                  "$ref": "#/components/schemas/BlpDepositor"
                }
              }
            }
          }
        ]
      },
      "TokensResponse": {
        "allOf": [
          {
            "$ref": "#/components/schemas/SuccessFields"
          },
          {
            "type": "object",
            "required": [
              "tokens"
            ],
            "properties": {
              "tokens": {
                "type": "array",
                "items": {
                  "$ref": "#/components/schemas/Token"
                }
              }
            }
          }
        ]
      },
      "TransactionsResponse": {
        "allOf": [
          {
            "$ref": "#/components/schemas/SuccessFields"
          },
          {
            "$ref": "#/components/schemas/PaginatedFields"
          },
          {
            "type": "object",
            "required": [
              "transactions"
            ],
            "properties": {
              "transactions": {
                "type": "array",
                "items": {
                  "$ref": "#/components/schemas/Transaction"
                }
              }
            }
          }
        ]
      },
      "BlocksResponse": {
        "allOf": [
          {
            "$ref": "#/components/schemas/SuccessFields"
          },
          {
            "$ref": "#/components/schemas/PaginatedFields"
          },
          {
            "type": "object",
            "required": [
              "blocks"
            ],
            "properties": {
              "blocks": {
                "type": "array",
                "items": {
                  "$ref": "#/components/schemas/Block"
                }
              }
            }
          }
        ]
      },
      "SearchResponse": {
        "allOf": [
          {
            "$ref": "#/components/schemas/SuccessFields"
          },
          {
            "type": "object",
            "required": [
              "results"
            ],
            "properties": {
              "results": {
                "type": "array",
                "items": {
                  "$ref": "#/components/schemas/SearchResult"
                }
              }
            }
          }
        ]
      },
      "StatusResponse": {
        "allOf": [
          {
            "$ref": "#/components/schemas/SuccessFields"
          },
          {
            "$ref": "#/components/schemas/Status"
          }
        ]
      },
      "InfoResponse": {
        "allOf": [
          {
            "$ref": "#/components/schemas/SuccessFields"
          },
          {
            "type": "object",
            "required": [
              "info"
            ],
            "properties": {
              "info": {
                "$ref": "#/components/schemas/Info"
              }
            }
          }
        ]
      },
      "ExchangeStatsResponse": {
        "allOf": [
          {
            "$ref": "#/components/schemas/SuccessFields"
          },
          {
            "type": "object",
            "required": [
              "exchange_stats"
            ],
            "properties": {
              "exchange_stats": {
                "$ref": "#/components/schemas/ExchangeStats"
              }
            }
          }
        ]
      }
    },
    "responses": {
      "BadRequest": {
        "description": "Bad request.",
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/Error"
            }
          }
        }
      },
      "NotFound": {
        "description": "Resource not found.",
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/Error"
            }
          }
        }
      }
    }
  }
}