{
  "openapi": "3.0.0",
  "paths": {
    "/v1/order": {
      "get": {
        "operationId": "OrderController_listBySubaccountId",
        "parameters": [
          {
            "name": "order",
            "required": false,
            "in": "query",
            "description": "Direction to paginate through objects",
            "schema": {
              "type": "string",
              "enum": [
                "asc",
                "desc"
              ]
            }
          },
          {
            "name": "limit",
            "required": false,
            "in": "query",
            "description": "Limit the number of objects to return",
            "schema": {
              "type": "integer"
            }
          },
          {
            "name": "cursor",
            "required": false,
            "in": "query",
            "description": "Pointer to the current object in pagination dataset",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "subaccountId",
            "required": true,
            "in": "query",
            "description": "Id of the subaccount to query for",
            "schema": {
              "format": "uuid",
              "type": "string"
            }
          },
          {
            "name": "clientOrderId",
            "required": false,
            "in": "query",
            "description": "Client-generated order id to query for (either a valid UUID or alphanumeric string up to 32 characters)",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "productIds",
            "required": false,
            "in": "query",
            "description": "Array of product ids to filter for",
            "schema": {
              "minItems": 1,
              "uniqueItems": true,
              "type": "array",
              "items": {
                "type": "string",
                "format": "uuid"
              }
            }
          },
          {
            "name": "createdAfter",
            "required": false,
            "in": "query",
            "description": "Filter by orders created after timestamp exclusive (ms since Unix epoch)",
            "schema": {
              "type": "integer"
            }
          },
          {
            "name": "createdBefore",
            "required": false,
            "in": "query",
            "description": "Filter by orders created before timestamp inclusive (ms since Unix epoch)",
            "schema": {
              "type": "integer"
            }
          },
          {
            "name": "side",
            "required": false,
            "in": "query",
            "description": "Side of the order to filter for",
            "x-enum-varnames": [
              "BUY",
              "SELL"
            ],
            "schema": {
              "example": 0,
              "type": "number",
              "enum": [
                0,
                1
              ]
            }
          },
          {
            "name": "close",
            "required": false,
            "in": "query",
            "description": "Whether the order is a position close order",
            "schema": {
              "type": "boolean"
            }
          },
          {
            "name": "stopTypes",
            "required": false,
            "in": "query",
            "description": "Array of StopTypes to filter by",
            "deprecated": true,
            "x-enum-varnames": [
              "GAIN",
              "LOSS"
            ],
            "schema": {
              "uniqueItems": true,
              "example": 0,
              "type": "array",
              "items": {
                "type": "number",
                "enum": [
                  0,
                  1
                ]
              }
            }
          },
          {
            "name": "isWorking",
            "required": false,
            "in": "query",
            "description": "Filter by orders that are working: NEW, FILLED_PARTIAL",
            "schema": {
              "example": true,
              "type": "boolean",
              "enum": [
                true
              ]
            }
          },
          {
            "name": "isPending",
            "required": false,
            "in": "query",
            "description": "Filter by orders that are pending",
            "schema": {
              "example": true,
              "type": "boolean",
              "enum": [
                true
              ]
            }
          },
          {
            "name": "orderBy",
            "required": false,
            "in": "query",
            "description": "Order by field",
            "schema": {
              "example": "createdAt",
              "type": "string",
              "enum": [
                "createdAt"
              ]
            }
          }
        ],
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PageOfOrderDtos"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BadRequestDto"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UnauthorizedDto"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ForbiddenDto"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/NotFoundDto"
                }
              }
            }
          },
          "422": {
            "description": "Too Many Requests",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UnprocessableEntityDto"
                }
              }
            }
          },
          "429": {
            "description": "Too Many Requests",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TooManyRequestsDto"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error"
          }
        },
        "summary": "Returns a filtered array of orders by the subaccount",
        "tags": [
          "Order"
        ]
      },
      "post": {
        "operationId": "OrderController_submit",
        "parameters": [],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/SubmitOrderDto"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SubmitOrderCreatedDto"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BadRequestDto"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UnauthorizedDto"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ForbiddenDto"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/NotFoundDto"
                }
              }
            }
          },
          "422": {
            "description": "Too Many Requests",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SubmitOrderFailedDto"
                }
              }
            }
          },
          "429": {
            "description": "Too Many Requests",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TooManyRequestsDto"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error"
          }
        },
        "summary": "Place an order for trading",
        "tags": [
          "Order"
        ]
      }
    },
    "/v1/order/dry-run": {
      "post": {
        "operationId": "OrderController_dryRun",
        "parameters": [],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/SubmitDryOrderDto"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DryRunOrderCreatedDto"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BadRequestDto"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UnauthorizedDto"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ForbiddenDto"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/NotFoundDto"
                }
              }
            }
          },
          "422": {
            "description": "Too Many Requests",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DryRunOrderFailedUnprocessableEntityDto"
                }
              }
            }
          },
          "429": {
            "description": "Too Many Requests",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TooManyRequestsDto"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error"
          }
        },
        "summary": "Submits a dry-mode to simulate an order submission",
        "tags": [
          "Order"
        ]
      }
    },
    "/v1/order/cancel": {
      "post": {
        "operationId": "OrderController_cancel",
        "parameters": [],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CancelOrderDto"
              }
            }
          }
        },
        "responses": {
          "202": {
            "description": "Orders cancelation accepted",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ListOfCancelOrderResultDtos"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BadRequestDto"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UnauthorizedDto"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ForbiddenDto"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/NotFoundDto"
                }
              }
            }
          },
          "422": {
            "description": "Too Many Requests",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UnprocessableEntityDto"
                }
              }
            }
          },
          "429": {
            "description": "Too Many Requests",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TooManyRequestsDto"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error"
          }
        },
        "summary": "Cancels one or more orders given an array of order ids",
        "tags": [
          "Order"
        ]
      }
    },
    "/v1/order/fill": {
      "get": {
        "operationId": "OrderController_listFillsBySubaccountId",
        "parameters": [
          {
            "name": "order",
            "required": false,
            "in": "query",
            "description": "Direction to paginate through objects",
            "schema": {
              "type": "string",
              "enum": [
                "asc",
                "desc"
              ]
            }
          },
          {
            "name": "limit",
            "required": false,
            "in": "query",
            "description": "Limit the number of objects to return",
            "schema": {
              "type": "integer"
            }
          },
          {
            "name": "cursor",
            "required": false,
            "in": "query",
            "description": "Pointer to the current object in pagination dataset",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "subaccountId",
            "required": true,
            "in": "query",
            "description": "Id of the subaccount to filter fills by",
            "schema": {
              "format": "uuid",
              "type": "string"
            }
          },
          {
            "name": "productIds",
            "required": false,
            "in": "query",
            "description": "Array of product ids to filter for",
            "schema": {
              "minItems": 1,
              "uniqueItems": true,
              "type": "array",
              "items": {
                "type": "string",
                "format": "uuid"
              }
            }
          },
          {
            "name": "createdAfter",
            "required": false,
            "in": "query",
            "description": "Filter by order fills created before timestamp exclusive (ms since Unix epoch)",
            "schema": {
              "type": "integer"
            }
          },
          {
            "name": "createdBefore",
            "required": false,
            "in": "query",
            "description": "Filter by order fills created before timestamp inclusive (ms since Unix epoch)",
            "schema": {
              "type": "integer"
            }
          },
          {
            "name": "side",
            "required": false,
            "in": "query",
            "description": "Side of the maker as either BUY (0) or SELL (1)",
            "x-enum-varnames": [
              "BUY",
              "SELL"
            ],
            "schema": {
              "example": 0,
              "type": "number",
              "enum": [
                0,
                1
              ]
            }
          },
          {
            "name": "orderBy",
            "required": false,
            "in": "query",
            "description": "Order by field",
            "schema": {
              "example": "productId",
              "type": "string",
              "enum": [
                "productId",
                "filled",
                "price",
                "createdAt"
              ]
            }
          },
          {
            "name": "includeSelfTrades",
            "required": false,
            "in": "query",
            "description": "Explicitly include self trades (excluded by default)",
            "schema": {
              "default": false,
              "type": "boolean"
            }
          },
          {
            "name": "expandSelfTrades",
            "required": false,
            "in": "query",
            "description": "When true and includeSelfTrades is also true, returns both maker and taker perspectives for self-trades as separate rows.",
            "schema": {
              "default": false,
              "type": "boolean"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PageOfOrderFillDtos"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BadRequestDto"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UnauthorizedDto"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ForbiddenDto"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/NotFoundDto"
                }
              }
            }
          },
          "422": {
            "description": "Too Many Requests",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UnprocessableEntityDto"
                }
              }
            }
          },
          "429": {
            "description": "Too Many Requests",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TooManyRequestsDto"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error"
          }
        },
        "summary": "Returns a filtered array of order fills",
        "tags": [
          "Order"
        ]
      }
    },
    "/v1/order/trade": {
      "get": {
        "operationId": "OrderController_listTrades",
        "parameters": [
          {
            "name": "order",
            "required": false,
            "in": "query",
            "description": "Direction to paginate through objects",
            "schema": {
              "type": "string",
              "enum": [
                "asc",
                "desc"
              ]
            }
          },
          {
            "name": "limit",
            "required": false,
            "in": "query",
            "description": "Limit the number of objects to return",
            "schema": {
              "type": "integer"
            }
          },
          {
            "name": "cursor",
            "required": false,
            "in": "query",
            "description": "Pointer to the current object in pagination dataset",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "productId",
            "required": true,
            "in": "query",
            "description": "Id of the product to filter trades by",
            "schema": {
              "format": "uuid",
              "example": "1b67d5b3-9dc7-4410-bc9c-7fd23ebd32ee",
              "type": "string"
            }
          },
          {
            "name": "orderBy",
            "required": false,
            "in": "query",
            "description": "Order by fields",
            "schema": {
              "example": "createdAt",
              "type": "string",
              "enum": [
                "createdAt"
              ]
            }
          }
        ],
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PageOfTradeDtos"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BadRequestDto"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UnauthorizedDto"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ForbiddenDto"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/NotFoundDto"
                }
              }
            }
          },
          "422": {
            "description": "Too Many Requests",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UnprocessableEntityDto"
                }
              }
            }
          },
          "429": {
            "description": "Too Many Requests",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TooManyRequestsDto"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error"
          }
        },
        "summary": "Returns a filtered array of trades",
        "tags": [
          "Order"
        ]
      }
    },
    "/v1/order/{id}/group": {
      "get": {
        "operationId": "OrderController_listGroupByOrderId",
        "parameters": [
          {
            "name": "id",
            "required": true,
            "in": "path",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "order",
            "required": false,
            "in": "query",
            "description": "Direction to paginate through objects",
            "schema": {
              "type": "string",
              "enum": [
                "asc",
                "desc"
              ]
            }
          },
          {
            "name": "limit",
            "required": false,
            "in": "query",
            "description": "Limit the number of objects to return",
            "schema": {
              "type": "integer"
            }
          },
          {
            "name": "cursor",
            "required": false,
            "in": "query",
            "description": "Pointer to the current object in pagination dataset",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "orderBy",
            "required": false,
            "in": "query",
            "description": "Order by field",
            "schema": {
              "example": "createdAt",
              "type": "string",
              "enum": [
                "createdAt"
              ]
            }
          }
        ],
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PageOfOrderDtos"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BadRequestDto"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UnauthorizedDto"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ForbiddenDto"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/NotFoundDto"
                }
              }
            }
          },
          "422": {
            "description": "Too Many Requests",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UnprocessableEntityDto"
                }
              }
            }
          },
          "429": {
            "description": "Too Many Requests",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TooManyRequestsDto"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error"
          }
        },
        "summary": "Returns all orders in the same contingency group as the specified order",
        "tags": [
          "Order"
        ]
      }
    },
    "/v1/order/{id}": {
      "get": {
        "operationId": "OrderController_getById",
        "parameters": [
          {
            "name": "id",
            "required": true,
            "in": "path",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/OrderDto"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BadRequestDto"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UnauthorizedDto"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ForbiddenDto"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/NotFoundDto"
                }
              }
            }
          },
          "422": {
            "description": "Too Many Requests",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UnprocessableEntityDto"
                }
              }
            }
          },
          "429": {
            "description": "Too Many Requests",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TooManyRequestsDto"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error"
          }
        },
        "summary": "Returns an order by their id",
        "tags": [
          "Order"
        ]
      }
    },
    "/v1/position": {
      "get": {
        "operationId": "PositionController_listBySubaccountId",
        "parameters": [
          {
            "name": "order",
            "required": false,
            "in": "query",
            "description": "Direction to paginate through objects",
            "schema": {
              "type": "string",
              "enum": [
                "asc",
                "desc"
              ]
            }
          },
          {
            "name": "limit",
            "required": false,
            "in": "query",
            "description": "Limit the number of objects to return",
            "schema": {
              "type": "integer"
            }
          },
          {
            "name": "cursor",
            "required": false,
            "in": "query",
            "description": "Pointer to the current object in pagination dataset",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "subaccountId",
            "required": true,
            "in": "query",
            "description": "Id representing the registered subaccount",
            "schema": {
              "format": "uuid",
              "type": "string"
            }
          },
          {
            "name": "productIds",
            "required": false,
            "in": "query",
            "description": "Array of product ids to filter for",
            "schema": {
              "minItems": 1,
              "uniqueItems": true,
              "type": "array",
              "items": {
                "type": "string",
                "format": "uuid"
              }
            }
          },
          {
            "name": "open",
            "required": false,
            "in": "query",
            "description": "Include or exclude open positions (i.e. non-zero size)",
            "schema": {
              "example": true,
              "type": "boolean"
            }
          },
          {
            "name": "orderBy",
            "required": false,
            "in": "query",
            "description": "Order by field",
            "schema": {
              "example": "size",
              "type": "string",
              "enum": [
                "size",
                "createdAt",
                "updatedAt",
                "realizedPnl"
              ]
            }
          },
          {
            "name": "createdAfter",
            "required": false,
            "in": "query",
            "description": "Filter by order fills created before timestamp exclusive (ms since Unix epoch)",
            "schema": {
              "type": "integer"
            }
          },
          {
            "name": "createdBefore",
            "required": false,
            "in": "query",
            "description": "Filter by order fills created before timestamp inclusive (ms since Unix epoch)",
            "schema": {
              "type": "integer"
            }
          },
          {
            "name": "side",
            "required": false,
            "in": "query",
            "description": "Side as either BUY (0) or SELL (1)",
            "x-enum-varnames": [
              "BUY",
              "SELL"
            ],
            "schema": {
              "example": 0,
              "type": "number",
              "enum": [
                0,
                1
              ]
            }
          },
          {
            "name": "isLiquidated",
            "required": false,
            "in": "query",
            "description": "Filter by liquidated positions",
            "schema": {
              "example": false,
              "type": "boolean"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PageOfPositionDtos"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BadRequestDto"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UnauthorizedDto"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ForbiddenDto"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/NotFoundDto"
                }
              }
            }
          },
          "422": {
            "description": "Too Many Requests",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UnprocessableEntityDto"
                }
              }
            }
          },
          "429": {
            "description": "Too Many Requests",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TooManyRequestsDto"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error"
          }
        },
        "summary": "Returns a filtered list of positions for a given subaccount",
        "tags": [
          "Position"
        ]
      }
    },
    "/v1/position/active": {
      "get": {
        "operationId": "PositionController_getActive",
        "parameters": [
          {
            "name": "subaccountId",
            "required": true,
            "in": "query",
            "description": "Id representing the registered subaccount",
            "schema": {
              "format": "uuid",
              "type": "string"
            }
          },
          {
            "name": "productId",
            "required": true,
            "in": "query",
            "description": "Id of product to filter position by",
            "schema": {
              "format": "uuid",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PositionDto"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BadRequestDto"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UnauthorizedDto"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ForbiddenDto"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/NotFoundDto"
                }
              }
            }
          },
          "422": {
            "description": "Too Many Requests",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UnprocessableEntityDto"
                }
              }
            }
          },
          "429": {
            "description": "Too Many Requests",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TooManyRequestsDto"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error"
          }
        },
        "summary": "Returns the active position for a subaccount and product",
        "tags": [
          "Position"
        ]
      }
    },
    "/v1/position/{id}": {
      "get": {
        "operationId": "PositionController_getById",
        "parameters": [
          {
            "name": "id",
            "required": true,
            "in": "path",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PositionDto"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BadRequestDto"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UnauthorizedDto"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ForbiddenDto"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/NotFoundDto"
                }
              }
            }
          },
          "422": {
            "description": "Too Many Requests",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UnprocessableEntityDto"
                }
              }
            }
          },
          "429": {
            "description": "Too Many Requests",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TooManyRequestsDto"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error"
          }
        },
        "summary": "Returns position by id",
        "tags": [
          "Position"
        ]
      }
    },
    "/v1/position/fill": {
      "get": {
        "operationId": "PositionController_listFillsByPositionId",
        "parameters": [
          {
            "name": "order",
            "required": false,
            "in": "query",
            "description": "Direction to paginate through objects",
            "schema": {
              "type": "string",
              "enum": [
                "asc",
                "desc"
              ]
            }
          },
          {
            "name": "limit",
            "required": false,
            "in": "query",
            "description": "Limit the number of objects to return",
            "schema": {
              "type": "integer"
            }
          },
          {
            "name": "cursor",
            "required": false,
            "in": "query",
            "description": "Pointer to the current object in pagination dataset",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "positionId",
            "required": true,
            "in": "query",
            "description": "Id of the position to filter fills by",
            "schema": {
              "format": "uuid",
              "example": "81215694-2d9f-4a87-af57-a710118938c0",
              "type": "string"
            }
          },
          {
            "name": "orderBy",
            "required": false,
            "in": "query",
            "description": "Order by field",
            "schema": {
              "example": "price",
              "type": "string",
              "enum": [
                "price",
                "filled",
                "createdAt"
              ]
            }
          }
        ],
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PageOfPositionFillDtos"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BadRequestDto"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UnauthorizedDto"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ForbiddenDto"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/NotFoundDto"
                }
              }
            }
          },
          "422": {
            "description": "Too Many Requests",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UnprocessableEntityDto"
                }
              }
            }
          },
          "429": {
            "description": "Too Many Requests",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TooManyRequestsDto"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error"
          }
        },
        "summary": "Returns a filtered list of fills for a given position",
        "tags": [
          "Position"
        ]
      }
    },
    "/v1/position/liquidation": {
      "get": {
        "operationId": "PositionController_listLiquidationsBySubaccountId",
        "parameters": [
          {
            "name": "order",
            "required": false,
            "in": "query",
            "description": "Direction to paginate through objects",
            "schema": {
              "type": "string",
              "enum": [
                "desc"
              ]
            }
          },
          {
            "name": "limit",
            "required": false,
            "in": "query",
            "description": "Limit the number of objects to return",
            "schema": {
              "type": "integer"
            }
          },
          {
            "name": "cursor",
            "required": false,
            "in": "query",
            "description": "Pointer to the current object in pagination dataset",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "orderBy",
            "required": false,
            "in": "query",
            "description": "Order by field",
            "schema": {
              "example": "createdAt",
              "type": "string",
              "enum": [
                "createdAt"
              ]
            }
          }
        ],
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PageOfPositionLiquidationsDto"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BadRequestDto"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UnauthorizedDto"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ForbiddenDto"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/NotFoundDto"
                }
              }
            }
          },
          "422": {
            "description": "Too Many Requests",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UnprocessableEntityDto"
                }
              }
            }
          },
          "429": {
            "description": "Too Many Requests",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TooManyRequestsDto"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error"
          }
        },
        "summary": "Returns a list of liquidations",
        "tags": [
          "Position"
        ]
      }
    },
    "/v1/product": {
      "get": {
        "operationId": "ProductController_list",
        "parameters": [
          {
            "name": "order",
            "required": false,
            "in": "query",
            "description": "Direction to paginate through objects",
            "schema": {
              "type": "string",
              "enum": [
                "asc",
                "desc"
              ]
            }
          },
          {
            "name": "limit",
            "required": false,
            "in": "query",
            "description": "Limit the number of objects to return",
            "schema": {
              "type": "integer"
            }
          },
          {
            "name": "cursor",
            "required": false,
            "in": "query",
            "description": "Pointer to the current object in pagination dataset",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "orderBy",
            "required": false,
            "in": "query",
            "description": "Order by field",
            "schema": {
              "example": "createdAt",
              "type": "string",
              "enum": [
                "createdAt",
                "openInterest",
                "baseTokenName",
                "quoteTokenName"
              ]
            }
          },
          {
            "name": "ticker",
            "required": false,
            "in": "query",
            "description": "Filter products by ticker (alphanumeric and case insensitive)",
            "schema": {
              "pattern": "^[a-zA-Z0-9]{1,16}$",
              "example": "ETHUSD",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PageOfProductDtos"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BadRequestDto"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UnauthorizedDto"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ForbiddenDto"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/NotFoundDto"
                }
              }
            }
          },
          "422": {
            "description": "Too Many Requests",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UnprocessableEntityDto"
                }
              }
            }
          },
          "429": {
            "description": "Too Many Requests",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TooManyRequestsDto"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error"
          }
        },
        "summary": "Returns a list of all products and its configuration",
        "tags": [
          "Product"
        ]
      }
    },
    "/v1/product/market-liquidity": {
      "get": {
        "operationId": "ProductController_getMarketLiquidity",
        "parameters": [
          {
            "name": "productId",
            "required": true,
            "in": "query",
            "description": "Id representing the registered product",
            "schema": {
              "format": "uuid",
              "example": "9036443a-441a-4a66-87f2-bd5c44cdca7a",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MarketLiquidityDto"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BadRequestDto"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UnauthorizedDto"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ForbiddenDto"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/NotFoundDto"
                }
              }
            }
          },
          "422": {
            "description": "Too Many Requests",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UnprocessableEntityDto"
                }
              }
            }
          },
          "429": {
            "description": "Too Many Requests",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TooManyRequestsDto"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error"
          }
        },
        "summary": "Returns the product market liquidity by id",
        "tags": [
          "Product"
        ]
      }
    },
    "/v1/product/market-price": {
      "get": {
        "operationId": "ProductController_getMarketPrice",
        "parameters": [
          {
            "name": "productIds",
            "required": true,
            "in": "query",
            "description": "Array of product ids",
            "schema": {
              "minItems": 1,
              "maxItems": 50,
              "uniqueItems": true,
              "type": "array",
              "items": {
                "type": "string",
                "format": "uuid"
              }
            }
          }
        ],
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ListOfMarketPriceDtos"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BadRequestDto"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UnauthorizedDto"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ForbiddenDto"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/NotFoundDto"
                }
              }
            }
          },
          "422": {
            "description": "Too Many Requests",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UnprocessableEntityDto"
                }
              }
            }
          },
          "429": {
            "description": "Too Many Requests",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TooManyRequestsDto"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error"
          }
        },
        "summary": "Returns the product prices for an array of product ids",
        "tags": [
          "Product"
        ]
      }
    },
    "/v1/product/{id}": {
      "get": {
        "operationId": "ProductController_getById",
        "parameters": [
          {
            "name": "id",
            "required": true,
            "in": "path",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProductDto"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BadRequestDto"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UnauthorizedDto"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ForbiddenDto"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/NotFoundDto"
                }
              }
            }
          },
          "422": {
            "description": "Too Many Requests",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UnprocessableEntityDto"
                }
              }
            }
          },
          "429": {
            "description": "Too Many Requests",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TooManyRequestsDto"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error"
          }
        },
        "summary": "Returns product by id",
        "tags": [
          "Product"
        ]
      }
    },
    "/v1/funding": {
      "get": {
        "operationId": "FundingController_listByProductId",
        "parameters": [
          {
            "name": "order",
            "required": false,
            "in": "query",
            "description": "Direction to paginate through objects",
            "schema": {
              "type": "string",
              "enum": [
                "asc",
                "desc"
              ]
            }
          },
          {
            "name": "limit",
            "required": false,
            "in": "query",
            "description": "Limit the number of objects to return",
            "schema": {
              "type": "integer"
            }
          },
          {
            "name": "cursor",
            "required": false,
            "in": "query",
            "description": "Pointer to the current object in pagination dataset",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "productId",
            "required": true,
            "in": "query",
            "description": "Id representing the registered product",
            "schema": {
              "format": "uuid",
              "type": "string"
            }
          },
          {
            "name": "range",
            "required": true,
            "in": "query",
            "description": "The range of time of funding rates to retrieve",
            "schema": {
              "example": "DAY",
              "type": "string",
              "enum": [
                "DAY",
                "WEEK",
                "MONTH"
              ]
            }
          },
          {
            "name": "orderBy",
            "required": false,
            "in": "query",
            "description": "Order by field",
            "schema": {
              "example": "createdAt",
              "type": "string",
              "enum": [
                "createdAt"
              ]
            }
          }
        ],
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PageOfFundingDtos"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BadRequestDto"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UnauthorizedDto"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ForbiddenDto"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/NotFoundDto"
                }
              }
            }
          },
          "422": {
            "description": "Too Many Requests",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UnprocessableEntityDto"
                }
              }
            }
          },
          "429": {
            "description": "Too Many Requests",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TooManyRequestsDto"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error"
          }
        },
        "summary": "Returns a list funding rates for a product over a time period",
        "tags": [
          "Funding"
        ]
      }
    },
    "/v1/funding/projected": {
      "get": {
        "deprecated": true,
        "description": "Deprecated: Use GET /funding/projected-rate instead",
        "operationId": "FundingController_getProjectedFundingRate",
        "parameters": [
          {
            "name": "productId",
            "required": true,
            "in": "query",
            "description": "Id representing the registered product",
            "schema": {
              "format": "uuid",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProjectedFundingDto"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BadRequestDto"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UnauthorizedDto"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ForbiddenDto"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/NotFoundDto"
                }
              }
            }
          },
          "422": {
            "description": "Too Many Requests",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UnprocessableEntityDto"
                }
              }
            }
          },
          "429": {
            "description": "Too Many Requests",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TooManyRequestsDto"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error"
          }
        },
        "summary": "Returns the projected funding rate for a product",
        "tags": [
          "Funding"
        ]
      }
    },
    "/v1/funding/projected-rate": {
      "get": {
        "operationId": "FundingController_listProjectedRates",
        "parameters": [
          {
            "name": "productIds",
            "required": true,
            "in": "query",
            "description": "Array of product ids",
            "schema": {
              "minItems": 1,
              "maxItems": 50,
              "uniqueItems": true,
              "type": "array",
              "items": {
                "type": "string",
                "format": "uuid"
              }
            }
          }
        ],
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PageOfProjectedFundingDtos"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BadRequestDto"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UnauthorizedDto"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ForbiddenDto"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/NotFoundDto"
                }
              }
            }
          },
          "422": {
            "description": "Too Many Requests",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UnprocessableEntityDto"
                }
              }
            }
          },
          "429": {
            "description": "Too Many Requests",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TooManyRequestsDto"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error"
          }
        },
        "summary": "Returns a list of projected funding rates for the given products",
        "tags": [
          "Funding"
        ]
      }
    },
    "/v1/rate-limit/config": {
      "get": {
        "operationId": "RateLimitController_getConfig",
        "parameters": [],
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RateLimitConfigResponseDto"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BadRequestDto"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UnauthorizedDto"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ForbiddenDto"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/NotFoundDto"
                }
              }
            }
          },
          "422": {
            "description": "Too Many Requests",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UnprocessableEntityDto"
                }
              }
            }
          },
          "429": {
            "description": "Too Many Requests",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TooManyRequestsDto"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error"
          }
        },
        "summary": "Returns rate limit configurations for all endpoints",
        "tags": [
          "RateLimit"
        ]
      }
    },
    "/v1/rpc/config": {
      "get": {
        "operationId": "RpcController_getConfig",
        "parameters": [],
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RpcConfigDto"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BadRequestDto"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UnauthorizedDto"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ForbiddenDto"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/NotFoundDto"
                }
              }
            }
          },
          "422": {
            "description": "Too Many Requests",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UnprocessableEntityDto"
                }
              }
            }
          },
          "429": {
            "description": "Too Many Requests",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TooManyRequestsDto"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error"
          }
        },
        "summary": "Returns the EIP712 domain data necessary for message signing",
        "tags": [
          "Rpc"
        ]
      }
    },
    "/v1/subaccount/all": {
      "get": {
        "operationId": "SubaccountController_list",
        "parameters": [
          {
            "name": "order",
            "required": false,
            "in": "query",
            "description": "Direction to paginate through objects",
            "schema": {
              "type": "string",
              "enum": [
                "desc"
              ]
            }
          },
          {
            "name": "limit",
            "required": false,
            "in": "query",
            "description": "Limit the number of objects to return",
            "schema": {
              "type": "integer"
            }
          },
          {
            "name": "cursor",
            "required": false,
            "in": "query",
            "description": "Pointer to the current object in pagination dataset",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "orderBy",
            "required": false,
            "in": "query",
            "description": "Order by field",
            "schema": {
              "example": "createdAt",
              "type": "string",
              "enum": [
                "createdAt"
              ]
            }
          }
        ],
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PageOfSubaccountDtos"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BadRequestDto"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UnauthorizedDto"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ForbiddenDto"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/NotFoundDto"
                }
              }
            }
          },
          "422": {
            "description": "Too Many Requests",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UnprocessableEntityDto"
                }
              }
            }
          },
          "429": {
            "description": "Too Many Requests",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TooManyRequestsDto"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error"
          }
        },
        "summary": "Returns all subaccounts",
        "tags": [
          "Subaccount"
        ]
      }
    },
    "/v1/subaccount": {
      "get": {
        "operationId": "SubaccountController_listByAccount",
        "parameters": [
          {
            "name": "order",
            "required": false,
            "in": "query",
            "description": "Direction to paginate through objects",
            "schema": {
              "type": "string",
              "enum": [
                "asc",
                "desc"
              ]
            }
          },
          {
            "name": "limit",
            "required": false,
            "in": "query",
            "description": "Limit the number of objects to return",
            "schema": {
              "type": "integer"
            }
          },
          {
            "name": "cursor",
            "required": false,
            "in": "query",
            "description": "Pointer to the current object in pagination dataset",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "name",
            "required": false,
            "in": "query",
            "description": "Bytes32 encoded subaccount name (0x prefix, zero padded)",
            "schema": {
              "format": "hex",
              "type": "string"
            }
          },
          {
            "name": "sender",
            "required": true,
            "in": "query",
            "description": "Address of the sender",
            "schema": {
              "format": "hex",
              "type": "string"
            }
          },
          {
            "name": "orderBy",
            "required": false,
            "in": "query",
            "description": "Order by field",
            "schema": {
              "example": "createdAt",
              "type": "string",
              "enum": [
                "createdAt",
                "name"
              ]
            }
          }
        ],
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PageOfSubaccountDtos"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BadRequestDto"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UnauthorizedDto"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ForbiddenDto"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/NotFoundDto"
                }
              }
            }
          },
          "422": {
            "description": "Too Many Requests",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UnprocessableEntityDto"
                }
              }
            }
          },
          "429": {
            "description": "Too Many Requests",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TooManyRequestsDto"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error"
          }
        },
        "summary": "Returns subaccounts for the given account",
        "tags": [
          "Subaccount"
        ]
      }
    },
    "/v1/subaccount/balance": {
      "get": {
        "operationId": "SubaccountController_listSubaccountBalances",
        "parameters": [
          {
            "name": "order",
            "required": false,
            "in": "query",
            "description": "Direction to paginate through objects",
            "schema": {
              "type": "string",
              "enum": [
                "asc",
                "desc"
              ]
            }
          },
          {
            "name": "limit",
            "required": false,
            "in": "query",
            "description": "Limit the number of objects to return",
            "schema": {
              "type": "integer"
            }
          },
          {
            "name": "cursor",
            "required": false,
            "in": "query",
            "description": "Pointer to the current object in pagination dataset",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "subaccountId",
            "required": true,
            "in": "query",
            "description": "Id representing the registered subaccount",
            "schema": {
              "format": "uuid",
              "type": "string"
            }
          },
          {
            "name": "orderBy",
            "required": false,
            "in": "query",
            "description": "Order by field",
            "schema": {
              "example": "tokenName",
              "type": "string",
              "enum": [
                "tokenName",
                "updatedAt",
                "amount"
              ]
            }
          }
        ],
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PageOfSubaccountBalanceDtos"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BadRequestDto"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UnauthorizedDto"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ForbiddenDto"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/NotFoundDto"
                }
              }
            }
          },
          "422": {
            "description": "Too Many Requests",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UnprocessableEntityDto"
                }
              }
            }
          },
          "429": {
            "description": "Too Many Requests",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TooManyRequestsDto"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error"
          }
        },
        "summary": "Returns subaccount balances for given subaccount",
        "tags": [
          "Subaccount"
        ]
      }
    },
    "/v1/subaccount/{id}": {
      "get": {
        "operationId": "SubaccountController_getBySubaccountId",
        "parameters": [
          {
            "name": "id",
            "required": true,
            "in": "path",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SubaccountDto"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BadRequestDto"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UnauthorizedDto"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ForbiddenDto"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/NotFoundDto"
                }
              }
            }
          },
          "422": {
            "description": "Too Many Requests",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UnprocessableEntityDto"
                }
              }
            }
          },
          "429": {
            "description": "Too Many Requests",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TooManyRequestsDto"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error"
          }
        },
        "summary": "Returns subaccount by id",
        "tags": [
          "Subaccount"
        ]
      }
    },
    "/v1/linked-signer/link": {
      "post": {
        "operationId": "LinkedSignerController_linkSigner",
        "parameters": [],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/LinkSignerDto"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SignerDto"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BadRequestDto"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UnauthorizedDto"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ForbiddenDto"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/NotFoundDto"
                }
              }
            }
          },
          "422": {
            "description": "Too Many Requests",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UnprocessableEntityDto"
                }
              }
            }
          },
          "429": {
            "description": "Too Many Requests",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TooManyRequestsDto"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error"
          }
        },
        "summary": "Links a signer address with the sender address for order delegation",
        "tags": [
          "LinkedSigner"
        ]
      }
    },
    "/v1/linked-signer/revoke": {
      "delete": {
        "operationId": "LinkedSignerController_revokeSigner",
        "parameters": [],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/RevokeLinkedSignerDto"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SignerDto"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BadRequestDto"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UnauthorizedDto"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ForbiddenDto"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/NotFoundDto"
                }
              }
            }
          },
          "422": {
            "description": "Too Many Requests",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UnprocessableEntityDto"
                }
              }
            }
          },
          "429": {
            "description": "Too Many Requests",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TooManyRequestsDto"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error"
          }
        },
        "summary": "Revokes a signer address from a subaccount",
        "tags": [
          "LinkedSigner"
        ]
      }
    },
    "/v1/linked-signer/refresh": {
      "post": {
        "operationId": "LinkedSignerController_refreshSigner",
        "parameters": [],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/RefreshLinkedSignerDto"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SignerDto"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BadRequestDto"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UnauthorizedDto"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ForbiddenDto"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/NotFoundDto"
                }
              }
            }
          },
          "422": {
            "description": "Too Many Requests",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UnprocessableEntityDto"
                }
              }
            }
          },
          "429": {
            "description": "Too Many Requests",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TooManyRequestsDto"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error"
          }
        },
        "summary": "Refreshes the expiry of a linked signer (signed by EOA, supports expired signers)",
        "tags": [
          "LinkedSigner"
        ]
      }
    },
    "/v1/linked-signer/extend": {
      "post": {
        "operationId": "LinkedSignerController_extendSigner",
        "parameters": [],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ExtendLinkedSignerDto"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SignerDto"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BadRequestDto"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UnauthorizedDto"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ForbiddenDto"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/NotFoundDto"
                }
              }
            }
          },
          "422": {
            "description": "Too Many Requests",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UnprocessableEntityDto"
                }
              }
            }
          },
          "429": {
            "description": "Too Many Requests",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TooManyRequestsDto"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error"
          }
        },
        "summary": "Extends the expiry of a linked signer (signed by the signer itself)",
        "tags": [
          "LinkedSigner"
        ]
      }
    },
    "/v1/linked-signer/quota": {
      "get": {
        "operationId": "LinkedSignerController_getAccountQuota",
        "parameters": [
          {
            "name": "subaccountId",
            "required": true,
            "in": "query",
            "description": "Id representing the registered subaccount",
            "schema": {
              "format": "uuid",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AccountSignerQuotaDto"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BadRequestDto"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UnauthorizedDto"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ForbiddenDto"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/NotFoundDto"
                }
              }
            }
          },
          "422": {
            "description": "Too Many Requests",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UnprocessableEntityDto"
                }
              }
            }
          },
          "429": {
            "description": "Too Many Requests",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TooManyRequestsDto"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error"
          }
        },
        "summary": "Returns the current signer config for a subaccount",
        "tags": [
          "LinkedSigner"
        ]
      }
    },
    "/v1/linked-signer/address/{address}": {
      "get": {
        "operationId": "LinkedSignerController_getSignerByAddress",
        "parameters": [
          {
            "name": "address",
            "required": true,
            "in": "path",
            "description": "Address of linked signer",
            "schema": {
              "format": "hex",
              "example": "0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SignerDto"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BadRequestDto"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UnauthorizedDto"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ForbiddenDto"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/NotFoundDto"
                }
              }
            }
          },
          "422": {
            "description": "Too Many Requests",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UnprocessableEntityDto"
                }
              }
            }
          },
          "429": {
            "description": "Too Many Requests",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TooManyRequestsDto"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error"
          }
        },
        "summary": "Returns a signer by its address",
        "tags": [
          "LinkedSigner"
        ]
      }
    },
    "/v1/linked-signer/{id}": {
      "get": {
        "operationId": "LinkedSignerController_getSigner",
        "parameters": [
          {
            "name": "id",
            "required": true,
            "in": "path",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SignerDto"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BadRequestDto"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UnauthorizedDto"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ForbiddenDto"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/NotFoundDto"
                }
              }
            }
          },
          "422": {
            "description": "Too Many Requests",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UnprocessableEntityDto"
                }
              }
            }
          },
          "429": {
            "description": "Too Many Requests",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TooManyRequestsDto"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error"
          }
        },
        "summary": "Returns a signer by its id",
        "tags": [
          "LinkedSigner"
        ]
      }
    },
    "/v1/linked-signer": {
      "get": {
        "operationId": "LinkedSignerController_listBySubaccountId",
        "parameters": [
          {
            "name": "order",
            "required": false,
            "in": "query",
            "description": "Direction to paginate through objects",
            "schema": {
              "type": "string",
              "enum": [
                "asc",
                "desc"
              ]
            }
          },
          {
            "name": "limit",
            "required": false,
            "in": "query",
            "description": "Limit the number of objects to return",
            "schema": {
              "type": "integer"
            }
          },
          {
            "name": "cursor",
            "required": false,
            "in": "query",
            "description": "Pointer to the current object in pagination dataset",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "subaccountId",
            "required": true,
            "in": "query",
            "description": "Id representing the registered subaccount",
            "schema": {
              "format": "uuid",
              "type": "string"
            }
          },
          {
            "name": "statuses",
            "required": false,
            "in": "query",
            "description": "Filters signers by statuses",
            "schema": {
              "uniqueItems": true,
              "example": [
                "ACTIVE"
              ],
              "type": "array",
              "items": {
                "type": "string",
                "enum": [
                  "PENDING",
                  "ACTIVE",
                  "PENDING_REVOKE",
                  "REVOKED",
                  "REJECTED"
                ]
              }
            }
          },
          {
            "name": "orderBy",
            "required": false,
            "in": "query",
            "description": "Order by field",
            "schema": {
              "example": "createdAt",
              "type": "string",
              "enum": [
                "createdAt",
                "expiresAt"
              ]
            }
          }
        ],
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PageOfSignersDto"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BadRequestDto"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UnauthorizedDto"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ForbiddenDto"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/NotFoundDto"
                }
              }
            }
          },
          "422": {
            "description": "Too Many Requests",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UnprocessableEntityDto"
                }
              }
            }
          },
          "429": {
            "description": "Too Many Requests",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TooManyRequestsDto"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error"
          }
        },
        "summary": "List signers for a subaccount",
        "tags": [
          "LinkedSigner"
        ]
      }
    },
    "/v1/token/withdraw": {
      "get": {
        "operationId": "TokenController_listWithdraws",
        "parameters": [
          {
            "name": "order",
            "required": false,
            "in": "query",
            "description": "Direction to paginate through objects",
            "schema": {
              "type": "string",
              "enum": [
                "asc",
                "desc"
              ]
            }
          },
          {
            "name": "limit",
            "required": false,
            "in": "query",
            "description": "Limit the number of objects to return",
            "schema": {
              "type": "integer"
            }
          },
          {
            "name": "cursor",
            "required": false,
            "in": "query",
            "description": "Pointer to the current object in pagination dataset",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "subaccountId",
            "required": true,
            "in": "query",
            "description": "Id representing the registered subaccount",
            "schema": {
              "format": "uuid",
              "type": "string"
            }
          },
          {
            "name": "isActive",
            "required": false,
            "in": "query",
            "description": "Filters active withdraws",
            "schema": {
              "example": true,
              "type": "boolean"
            }
          },
          {
            "name": "orderBy",
            "required": false,
            "in": "query",
            "description": "Order by field",
            "schema": {
              "example": "createdAt",
              "type": "string",
              "enum": [
                "createdAt"
              ]
            }
          }
        ],
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PageOfWithdrawDtos"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BadRequestDto"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UnauthorizedDto"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ForbiddenDto"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/NotFoundDto"
                }
              }
            }
          },
          "422": {
            "description": "Too Many Requests",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UnprocessableEntityDto"
                }
              }
            }
          },
          "429": {
            "description": "Too Many Requests",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TooManyRequestsDto"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error"
          }
        },
        "summary": "Returns initiated or pending finalize withdraws for the given subaccount",
        "tags": [
          "Token"
        ]
      }
    },
    "/v1/token/transfer": {
      "get": {
        "operationId": "TokenController_listTransfers",
        "parameters": [
          {
            "name": "order",
            "required": false,
            "in": "query",
            "description": "Direction to paginate through objects",
            "schema": {
              "type": "string",
              "enum": [
                "asc",
                "desc"
              ]
            }
          },
          {
            "name": "limit",
            "required": false,
            "in": "query",
            "description": "Limit the number of objects to return",
            "schema": {
              "type": "integer"
            }
          },
          {
            "name": "cursor",
            "required": false,
            "in": "query",
            "description": "Pointer to the current object in pagination dataset",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "subaccountId",
            "required": true,
            "in": "query",
            "description": "Id representing the registered subaccount",
            "schema": {
              "format": "uuid",
              "type": "string"
            }
          },
          {
            "name": "statuses",
            "required": false,
            "in": "query",
            "description": "Array of transfer statuses to filter by",
            "schema": {
              "uniqueItems": true,
              "example": "COMPLETED",
              "type": "array",
              "items": {
                "type": "string",
                "enum": [
                  "SUBMITTED",
                  "PENDING",
                  "COMPLETED",
                  "REJECTED"
                ]
              }
            }
          },
          {
            "name": "types",
            "required": false,
            "in": "query",
            "description": "Array of transfer types to filter by",
            "schema": {
              "uniqueItems": true,
              "example": "WITHDRAW",
              "type": "array",
              "items": {
                "type": "string",
                "enum": [
                  "DEPOSIT",
                  "WITHDRAW"
                ]
              }
            }
          },
          {
            "name": "orderBy",
            "required": false,
            "in": "query",
            "description": "Order by field",
            "schema": {
              "example": "createdAt",
              "type": "string",
              "enum": [
                "createdAt"
              ]
            }
          },
          {
            "name": "createdAfter",
            "required": false,
            "in": "query",
            "description": "Filter by transfers created after timestamp exclusive (ms since Unix epoch)",
            "schema": {
              "type": "integer"
            }
          },
          {
            "name": "createdBefore",
            "required": false,
            "in": "query",
            "description": "Filter by transfers created before timestamp inclusive (ms since Unix epoch)",
            "schema": {
              "type": "integer"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PageOfTransfersDtos"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BadRequestDto"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UnauthorizedDto"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ForbiddenDto"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/NotFoundDto"
                }
              }
            }
          },
          "422": {
            "description": "Too Many Requests",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UnprocessableEntityDto"
                }
              }
            }
          },
          "429": {
            "description": "Too Many Requests",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TooManyRequestsDto"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error"
          }
        },
        "summary": "Returns a list of transfers for the given subaccount",
        "tags": [
          "Token"
        ]
      }
    },
    "/v1/token/{id}/withdraw": {
      "post": {
        "operationId": "TokenController_initiateWithdraw",
        "parameters": [
          {
            "name": "id",
            "required": true,
            "in": "path",
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/InitiateWithdrawDto"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/WithdrawDto"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BadRequestDto"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UnauthorizedDto"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ForbiddenDto"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/NotFoundDto"
                }
              }
            }
          },
          "422": {
            "description": "Too Many Requests",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/WithdrawFailedDto"
                }
              }
            }
          },
          "429": {
            "description": "Too Many Requests",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TooManyRequestsDto"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error"
          }
        },
        "summary": "Initiates a withdraw for a specific token in subaccount",
        "tags": [
          "Token"
        ]
      }
    },
    "/v1/token/{id}": {
      "get": {
        "operationId": "TokenController_getById",
        "parameters": [
          {
            "name": "id",
            "required": true,
            "in": "path",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TokenDto"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BadRequestDto"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UnauthorizedDto"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ForbiddenDto"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/NotFoundDto"
                }
              }
            }
          },
          "422": {
            "description": "Too Many Requests",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UnprocessableEntityDto"
                }
              }
            }
          },
          "429": {
            "description": "Too Many Requests",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TooManyRequestsDto"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error"
          }
        },
        "summary": "Returns a token by its id",
        "tags": [
          "Token"
        ]
      }
    },
    "/v1/token": {
      "get": {
        "operationId": "TokenController_list",
        "parameters": [
          {
            "name": "order",
            "required": false,
            "in": "query",
            "description": "Direction to paginate through objects",
            "schema": {
              "type": "string",
              "enum": [
                "asc",
                "desc"
              ]
            }
          },
          {
            "name": "limit",
            "required": false,
            "in": "query",
            "description": "Limit the number of objects to return",
            "schema": {
              "type": "integer"
            }
          },
          {
            "name": "cursor",
            "required": false,
            "in": "query",
            "description": "Pointer to the current object in pagination dataset",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "depositEnabled",
            "required": false,
            "in": "query",
            "description": "Filters tokens by if its enabled for deposit",
            "schema": {
              "example": true,
              "type": "boolean"
            }
          },
          {
            "name": "withdrawEnabled",
            "required": false,
            "in": "query",
            "description": "Filters tokens by if its enabled for withdraw",
            "schema": {
              "example": true,
              "type": "boolean"
            }
          },
          {
            "name": "orderBy",
            "required": false,
            "in": "query",
            "description": "Order by field",
            "schema": {
              "example": "createdAt",
              "type": "string",
              "enum": [
                "createdAt"
              ]
            }
          }
        ],
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PageOfTokensDtos"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BadRequestDto"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UnauthorizedDto"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ForbiddenDto"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/NotFoundDto"
                }
              }
            }
          },
          "422": {
            "description": "Too Many Requests",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UnprocessableEntityDto"
                }
              }
            }
          },
          "429": {
            "description": "Too Many Requests",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TooManyRequestsDto"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error"
          }
        },
        "summary": "Returns a list of all tokens",
        "tags": [
          "Token"
        ]
      }
    },
    "/v1/time": {
      "get": {
        "operationId": "TimeController_getSystemTime",
        "parameters": [],
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SystemTimeDto"
                }
              }
            }
          }
        },
        "summary": "Returns current system time in milliseconds via GET",
        "tags": [
          "Time"
        ]
      },
      "post": {
        "operationId": "TimeController_postSystemTime",
        "parameters": [],
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SystemTimeDto"
                }
              }
            }
          }
        },
        "summary": "Returns current system time in milliseconds via POST",
        "tags": [
          "Time"
        ]
      }
    },
    "/v1/whitelist": {
      "get": {
        "operationId": "WhitelistController_isWhitelisted",
        "parameters": [
          {
            "name": "address",
            "required": true,
            "in": "query",
            "description": "Address of account",
            "schema": {
              "format": "hex",
              "example": "0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/WhitelistDto"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BadRequestDto"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UnauthorizedDto"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ForbiddenDto"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/NotFoundDto"
                }
              }
            }
          },
          "422": {
            "description": "Too Many Requests",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UnprocessableEntityDto"
                }
              }
            }
          },
          "429": {
            "description": "Too Many Requests",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TooManyRequestsDto"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error"
          }
        },
        "summary": "Checks if an address is whitelisted",
        "tags": [
          "Whitelist"
        ]
      }
    },
    "/v1/points": {
      "get": {
        "operationId": "PointsController_listPointsPeriods",
        "parameters": [
          {
            "name": "address",
            "required": true,
            "in": "query",
            "description": "Address of account",
            "schema": {
              "format": "hex",
              "example": "0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045",
              "type": "string"
            }
          },
          {
            "name": "season",
            "required": true,
            "in": "query",
            "description": "Season number",
            "schema": {
              "minimum": 0,
              "maximum": 10,
              "example": 1,
              "type": "integer"
            }
          },
          {
            "name": "epoch",
            "required": true,
            "in": "query",
            "description": "Epoch number within the season",
            "schema": {
              "minimum": 1,
              "maximum": 256,
              "example": 1,
              "type": "integer"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ListOfPointsPeriodDtos"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BadRequestDto"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UnauthorizedDto"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ForbiddenDto"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/NotFoundDto"
                }
              }
            }
          },
          "422": {
            "description": "Too Many Requests",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UnprocessableEntityDto"
                }
              }
            }
          },
          "429": {
            "description": "Too Many Requests",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TooManyRequestsDto"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error"
          }
        },
        "summary": "Returns a list of points periods for a given address and season",
        "tags": [
          "Points"
        ]
      }
    },
    "/v1/points/summary": {
      "get": {
        "operationId": "PointsController_listPointsSeasonSummaries",
        "parameters": [
          {
            "name": "address",
            "required": true,
            "in": "query",
            "description": "Address of account",
            "schema": {
              "format": "hex",
              "example": "0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ListOfPointsSeasonSummariesDtos"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BadRequestDto"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UnauthorizedDto"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ForbiddenDto"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/NotFoundDto"
                }
              }
            }
          },
          "422": {
            "description": "Too Many Requests",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UnprocessableEntityDto"
                }
              }
            }
          },
          "429": {
            "description": "Too Many Requests",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TooManyRequestsDto"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error"
          }
        },
        "summary": "Returns a list of points season summaries for a given address",
        "tags": [
          "Points"
        ]
      }
    },
    "/v1/points/total": {
      "get": {
        "operationId": "PointsController_getTotalPoints",
        "parameters": [
          {
            "name": "season",
            "required": false,
            "in": "query",
            "description": "Season number",
            "schema": {
              "minimum": 0,
              "maximum": 10,
              "example": 1,
              "type": "integer"
            }
          },
          {
            "name": "epoch",
            "required": false,
            "in": "query",
            "description": "Epoch number within season",
            "schema": {
              "minimum": 1,
              "maximum": 256,
              "example": 1,
              "type": "integer"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TotalPointsDto"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BadRequestDto"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UnauthorizedDto"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ForbiddenDto"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/NotFoundDto"
                }
              }
            }
          },
          "422": {
            "description": "Too Many Requests",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UnprocessableEntityDto"
                }
              }
            }
          },
          "429": {
            "description": "Too Many Requests",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TooManyRequestsDto"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error"
          }
        },
        "summary": "Returns total exchange-wide points distributed",
        "tags": [
          "Points"
        ]
      }
    },
    "/v1/referral/code/{code}": {
      "get": {
        "operationId": "ReferralController_getCodeUsage",
        "parameters": [
          {
            "name": "code",
            "required": true,
            "in": "path",
            "description": "Referral code (3-12 alphanumeric uppercase characters)",
            "schema": {
              "minLength": 12,
              "maxLength": 12,
              "pattern": "/^[A-Z0-9]+$/",
              "example": "XYZ123456789",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ReferralCodeUsageDto"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BadRequestDto"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UnauthorizedDto"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ForbiddenDto"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/NotFoundDto"
                }
              }
            }
          },
          "422": {
            "description": "Too Many Requests",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UnprocessableEntityDto"
                }
              }
            }
          },
          "429": {
            "description": "Too Many Requests",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TooManyRequestsDto"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error"
          }
        },
        "summary": "Returns referral code usage details",
        "tags": [
          "Referral"
        ]
      }
    },
    "/v1/referral/summary": {
      "get": {
        "operationId": "ReferralController_getSummary",
        "parameters": [
          {
            "name": "subaccount",
            "required": false,
            "in": "query",
            "description": "Bytes32 encoded subaccount name (0x prefix, zero padded, set when using linked signer)",
            "schema": {
              "format": "hex",
              "example": "0x7072696d61727900000000000000000000000000000000000000000000000000",
              "type": "string"
            }
          },
          {
            "name": "X-Ethereal-Auth",
            "in": "header",
            "description": "Must be: EIP712Auth",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "X-Ethereal-Sender",
            "in": "header",
            "description": "Address that signed this message (hex)",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "X-Ethereal-Signature",
            "in": "header",
            "description": "The signature from signTypedData(...) signed by the sender",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "X-Ethereal-Intent",
            "in": "header",
            "description": "Intent of the message (action to be taken)",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "X-Ethereal-SignedAt",
            "in": "header",
            "description": "Message signedAt current timestamp (seconds since Unix Epoch)",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ReferralDto"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BadRequestDto"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UnauthorizedDto"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ForbiddenDto"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/NotFoundDto"
                }
              }
            }
          },
          "422": {
            "description": "Too Many Requests",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UnprocessableEntityDto"
                }
              }
            }
          },
          "429": {
            "description": "Too Many Requests",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TooManyRequestsDto"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error"
          }
        },
        "summary": "Returns summary of your referral activity",
        "tags": [
          "Referral"
        ]
      }
    },
    "/v1/referral": {
      "get": {
        "operationId": "ReferralController_listReferrals",
        "parameters": [
          {
            "name": "order",
            "required": false,
            "in": "query",
            "description": "Direction to paginate through objects",
            "schema": {
              "type": "string",
              "enum": [
                "desc"
              ]
            }
          },
          {
            "name": "limit",
            "required": false,
            "in": "query",
            "description": "Limit the number of objects to return",
            "schema": {
              "type": "integer"
            }
          },
          {
            "name": "cursor",
            "required": false,
            "in": "query",
            "description": "Pointer to the current object in pagination dataset",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "subaccount",
            "required": false,
            "in": "query",
            "description": "Bytes32 encoded subaccount name (0x prefix, zero padded, set when using linked signer)",
            "schema": {
              "format": "hex",
              "example": "0x7072696d61727900000000000000000000000000000000000000000000000000",
              "type": "string"
            }
          },
          {
            "name": "orderBy",
            "required": false,
            "in": "query",
            "description": "Order by field",
            "schema": {
              "example": "createdAt",
              "type": "string",
              "enum": [
                "createdAt"
              ]
            }
          },
          {
            "name": "X-Ethereal-Auth",
            "in": "header",
            "description": "Must be: EIP712Auth",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "X-Ethereal-Sender",
            "in": "header",
            "description": "Address that signed this message (hex)",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "X-Ethereal-Signature",
            "in": "header",
            "description": "The signature from signTypedData(...) signed by the sender",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "X-Ethereal-Intent",
            "in": "header",
            "description": "Intent of the message (action to be taken)",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "X-Ethereal-SignedAt",
            "in": "header",
            "description": "Message signedAt current timestamp (seconds since Unix Epoch)",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PageOfReferralDtos"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BadRequestDto"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UnauthorizedDto"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ForbiddenDto"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/NotFoundDto"
                }
              }
            }
          },
          "422": {
            "description": "Too Many Requests",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UnprocessableEntityDto"
                }
              }
            }
          },
          "429": {
            "description": "Too Many Requests",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TooManyRequestsDto"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error"
          }
        },
        "summary": "Returns paginated list of referrals for the sender",
        "tags": [
          "Referral"
        ]
      }
    },
    "/v1/referral/claim": {
      "post": {
        "operationId": "ReferralController_claimCode",
        "parameters": [],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ClaimReferralCodeDto"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ReferralDto"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BadRequestDto"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UnauthorizedDto"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ForbiddenDto"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/NotFoundDto"
                }
              }
            }
          },
          "422": {
            "description": "Too Many Requests",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UnprocessableEntityDto"
                }
              }
            }
          },
          "429": {
            "description": "Too Many Requests",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TooManyRequestsDto"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error"
          }
        },
        "summary": "Claim a referral code",
        "tags": [
          "Referral"
        ]
      }
    },
    "/v1/referral/activate": {
      "post": {
        "operationId": "ReferralController_activate",
        "parameters": [],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ActivateReferralDto"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ReferralDto"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BadRequestDto"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UnauthorizedDto"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ForbiddenDto"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/NotFoundDto"
                }
              }
            }
          },
          "422": {
            "description": "Too Many Requests",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UnprocessableEntityDto"
                }
              }
            }
          },
          "429": {
            "description": "Too Many Requests",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TooManyRequestsDto"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error"
          }
        },
        "summary": "Activates the sender to acquire a referral code",
        "tags": [
          "Referral"
        ]
      }
    },
    "/v1/maintenance": {
      "get": {
        "operationId": "MaintenanceController_isMaintenance",
        "parameters": [],
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MaintenanceDto"
                }
              }
            }
          }
        },
        "tags": [
          "Maintenance"
        ]
      }
    }
  },
  "info": {
    "title": "Ethereal Exchange API",
    "description": "Ethereal HTTP API for real-time trading, order management, and market data access.",
    "version": "0.1.0",
    "contact": {}
  },
  "tags": [],
  "servers": [
    {
      "url": "https://api.ethereal.trade/",
      "description": "Mainnet"
    }
  ],
  "components": {
    "schemas": {
      "OrderDto": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "example": "9036443a-441a-4a66-87f2-bd5c44cdca7a",
            "description": "Id representing the order",
            "format": "uuid"
          },
          "clientOrderId": {
            "type": "string",
            "example": "28850555-0968-44ca-bdee-b51e286656d9",
            "description": "A subaccount scoped unique client-generated order id (either a UUID or alphanumeric string up to 32 characters)"
          },
          "type": {
            "$ref": "#/components/schemas/OrderType"
          },
          "availableQuantity": {
            "type": "string",
            "example": "10.5",
            "description": "Remaining quantity (if modified or reduced) in native units expressed as a decimal (precision: 9)"
          },
          "quantity": {
            "type": "string",
            "example": "10.5",
            "description": "Original quantity (as per order submission) in native units expressed as a decimal (precision: 9)"
          },
          "side": {
            "$ref": "#/components/schemas/OrderSide"
          },
          "productId": {
            "type": "string",
            "example": "9c6bf870-a8ce-4de3-820b-542fd5c049ba",
            "description": "Id of product this order was placed against",
            "format": "uuid"
          },
          "subaccountId": {
            "type": "string",
            "example": "c25c39d9-ce2b-4753-960c-c5ad558aace8",
            "description": "Id of the subaccount associated to order",
            "format": "uuid"
          },
          "status": {
            "$ref": "#/components/schemas/OrderStatus"
          },
          "reduceOnly": {
            "type": "boolean",
            "example": true,
            "description": "Indicates if the order is reduce only"
          },
          "close": {
            "type": "boolean",
            "description": "Order closes the entire current position"
          },
          "updatedAt": {
            "type": "integer",
            "example": 1712019600000,
            "description": "Order last updated timestamp (ms since Unix Epoch)",
            "format": "int64"
          },
          "createdAt": {
            "type": "integer",
            "example": 1712019600000,
            "description": "Order creation timestamp (ms since Unix Epoch)",
            "format": "int64"
          },
          "sender": {
            "type": "string",
            "example": "0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045",
            "description": "Account or linked signer address that placed this order",
            "format": "hex"
          },
          "price": {
            "type": "string",
            "example": "4200.5",
            "description": "Limit price in native units expressed as a decimal, zero if market order (precision: 9)"
          },
          "filled": {
            "type": "string",
            "example": "0.5",
            "description": "Filled amount in native units expressed as a decimal (precision: 9)"
          },
          "stopPrice": {
            "type": "string",
            "example": "4200.5",
            "description": "Stop price expressed as a decimal (zero if not a stop order, precision: 9)"
          },
          "stopType": {
            "$ref": "#/components/schemas/StopTypeEnum"
          },
          "stopPriceType": {
            "$ref": "#/components/schemas/StopPriceTypeEnum"
          },
          "timeInForce": {
            "$ref": "#/components/schemas/TimeInForce"
          },
          "expiresAt": {
            "type": "integer",
            "example": 1712019600,
            "description": "Order expiry timestamp (seconds since Unix Epoch)",
            "format": "int64"
          },
          "postOnly": {
            "type": "boolean",
            "example": true,
            "description": "Only add order if it does not immediately fill (limit only)"
          },
          "groupContingencyType": {
            "$ref": "#/components/schemas/GroupContingencyTypeEnum"
          },
          "groupId": {
            "type": "string",
            "description": "Id of the group this order belongs to",
            "example": "9036443a-441a-4a66-87f2-bd5c44cdca7a",
            "format": "uuid"
          },
          "triggered": {
            "$ref": "#/components/schemas/TriggeredEnum"
          }
        },
        "required": [
          "id",
          "type",
          "availableQuantity",
          "quantity",
          "side",
          "productId",
          "subaccountId",
          "status",
          "reduceOnly",
          "close",
          "updatedAt",
          "createdAt",
          "sender",
          "price",
          "filled",
          "stopPrice",
          "expiresAt",
          "triggered"
        ]
      },
      "PageOfOrderDtos": {
        "type": "object",
        "properties": {
          "hasNext": {
            "type": "boolean",
            "example": true,
            "description": "Whether there are more objects to paginate through"
          },
          "nextCursor": {
            "type": "string",
            "description": "Pointer to the next page in pagination dataset"
          },
          "data": {
            "description": "Array of order objects",
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/OrderDto"
            }
          }
        },
        "required": [
          "hasNext",
          "data"
        ]
      },
      "BadRequestDto": {
        "type": "object",
        "properties": {
          "statusCode": {
            "type": "number",
            "default": 400,
            "enum": [
              400
            ]
          },
          "message": {
            "description": "Validation error message(s). Can be a single string or an array of strings.",
            "oneOf": [
              {
                "type": "string",
                "example": "property must be a string"
              },
              {
                "type": "array",
                "items": {
                  "type": "string"
                },
                "example": [
                  "property must be a string",
                  "nestedProperty.field must be an integer"
                ]
              }
            ]
          },
          "error": {
            "$ref": "#/components/schemas/ErrorEnum"
          }
        },
        "required": [
          "statusCode",
          "message",
          "error"
        ]
      },
      "UnauthorizedDto": {
        "type": "object",
        "properties": {
          "statusCode": {
            "type": "number",
            "default": 401,
            "enum": [
              401
            ]
          },
          "message": {
            "type": "string"
          },
          "error": {
            "$ref": "#/components/schemas/UnauthorizedDtoErrorEnum"
          }
        },
        "required": [
          "statusCode",
          "message",
          "error"
        ]
      },
      "ForbiddenDto": {
        "type": "object",
        "properties": {
          "statusCode": {
            "type": "number",
            "default": 403,
            "enum": [
              403
            ]
          },
          "message": {
            "type": "string"
          },
          "error": {
            "$ref": "#/components/schemas/ForbiddenDtoErrorEnum"
          }
        },
        "required": [
          "statusCode",
          "message",
          "error"
        ]
      },
      "NotFoundDto": {
        "type": "object",
        "properties": {
          "statusCode": {
            "type": "number",
            "default": 404,
            "enum": [
              404
            ]
          },
          "message": {
            "type": "string"
          },
          "error": {
            "$ref": "#/components/schemas/NotFoundDtoErrorEnum"
          }
        },
        "required": [
          "statusCode",
          "message",
          "error"
        ]
      },
      "UnprocessableEntityDto": {
        "type": "object",
        "properties": {
          "statusCode": {
            "type": "number",
            "default": 422,
            "enum": [
              422
            ]
          },
          "message": {
            "type": "string"
          },
          "error": {
            "$ref": "#/components/schemas/UnprocessableEntityDtoErrorEnum"
          }
        },
        "required": [
          "statusCode",
          "message",
          "error"
        ]
      },
      "TooManyRequestsDto": {
        "type": "object",
        "properties": {
          "statusCode": {
            "type": "number",
            "default": 429,
            "enum": [
              429
            ]
          },
          "message": {
            "type": "string"
          },
          "error": {
            "$ref": "#/components/schemas/TooManyRequestsDtoErrorEnum"
          },
          "type": {
            "$ref": "#/components/schemas/TooManyRequestsDtoOrderType"
          }
        },
        "required": [
          "statusCode",
          "message",
          "error",
          "type"
        ]
      },
      "SubmitOrderMarketDtoData": {
        "type": "object",
        "properties": {
          "subaccount": {
            "type": "string",
            "example": "0x7072696d61727900000000000000000000000000000000000000000000000000",
            "description": "Bytes32 encoded subaccount name (0x prefix, zero padded)",
            "format": "hex"
          },
          "sender": {
            "type": "string",
            "example": "0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045",
            "description": "Address of account",
            "format": "hex"
          },
          "nonce": {
            "type": "string",
            "example": "2687929537462333",
            "description": "Message nonce timestamp (nanoseconds since Unix Epoch)"
          },
          "type": {
            "$ref": "#/components/schemas/OrderType"
          },
          "quantity": {
            "type": "string",
            "example": "5.5",
            "description": "Non-directional quantity of product in native units expressed as a decimal (precision: 9)",
            "format": "decimal"
          },
          "side": {
            "$ref": "#/components/schemas/OrderSide"
          },
          "onchainId": {
            "type": "integer",
            "minimum": 1,
            "example": 1,
            "description": "Onchain generated productId from prior product registration",
            "format": "int64"
          },
          "engineType": {
            "$ref": "#/components/schemas/EngineTypeEnum"
          },
          "clientOrderId": {
            "type": "string",
            "example": "16e2da4d-58ab-4453-bdb4-8e4a865c12c1",
            "description": "A subaccount scoped unique client-generated order id (either a UUID or alphanumeric string up to 32 characters)"
          },
          "reduceOnly": {
            "type": "boolean",
            "default": false,
            "description": "Whether this should be a reduce-only order, required for close"
          },
          "close": {
            "type": "boolean",
            "default": false,
            "description": "Order closes the entire current position, requires zero quantity and reduceOnly"
          },
          "stopPrice": {
            "type": "string",
            "default": "0",
            "description": "Stop price expressed as a decimal (precision: 9), requires stopType",
            "example": "4200.5",
            "format": "decimal"
          },
          "stopType": {
            "$ref": "#/components/schemas/StopTypeEnum"
          },
          "signedAt": {
            "type": "integer",
            "example": 1712019600,
            "description": "Message signedAt current timestamp (seconds since Unix Epoch)",
            "format": "int64"
          },
          "expiresAt": {
            "type": "integer",
            "description": "Order expiry timestamp (seconds since Unix Epoch), defaults to the maximum allowed value: signedAt + 6652800",
            "format": "int64"
          },
          "groupId": {
            "type": "string",
            "format": "uuid",
            "description": "Group Id (UUID) for linking orders together in OCO/OTO relationships"
          },
          "groupContingencyType": {
            "$ref": "#/components/schemas/GroupContingencyTypeEnum"
          }
        },
        "required": [
          "subaccount",
          "sender",
          "nonce",
          "type",
          "quantity",
          "side",
          "onchainId",
          "engineType",
          "signedAt"
        ]
      },
      "SubmitOrderLimitDtoData": {
        "type": "object",
        "properties": {
          "subaccount": {
            "type": "string",
            "example": "0x7072696d61727900000000000000000000000000000000000000000000000000",
            "description": "Bytes32 encoded subaccount name (0x prefix, zero padded)",
            "format": "hex"
          },
          "sender": {
            "type": "string",
            "example": "0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045",
            "description": "Address of account",
            "format": "hex"
          },
          "nonce": {
            "type": "string",
            "example": "2687929537462333",
            "description": "Message nonce timestamp (nanoseconds since Unix Epoch)"
          },
          "type": {
            "$ref": "#/components/schemas/OrderType"
          },
          "quantity": {
            "type": "string",
            "example": "5.5",
            "description": "Non-directional quantity of product in native units expressed as a decimal (precision: 9)",
            "format": "decimal"
          },
          "side": {
            "$ref": "#/components/schemas/OrderSide"
          },
          "onchainId": {
            "type": "integer",
            "minimum": 1,
            "example": 1,
            "description": "Onchain generated productId from prior product registration",
            "format": "int64"
          },
          "engineType": {
            "$ref": "#/components/schemas/EngineTypeEnum"
          },
          "clientOrderId": {
            "type": "string",
            "example": "16e2da4d-58ab-4453-bdb4-8e4a865c12c1",
            "description": "A subaccount scoped unique client-generated order id (either a UUID or alphanumeric string up to 32 characters)"
          },
          "reduceOnly": {
            "type": "boolean",
            "default": false,
            "description": "Whether this should be a reduce-only order, required for close"
          },
          "close": {
            "type": "boolean",
            "default": false,
            "description": "Order closes the entire current position, requires zero quantity and reduceOnly"
          },
          "stopPrice": {
            "type": "string",
            "default": "0",
            "description": "Stop price expressed as a decimal (precision: 9), requires stopType",
            "example": "4200.5",
            "format": "decimal"
          },
          "stopType": {
            "$ref": "#/components/schemas/StopTypeEnum"
          },
          "signedAt": {
            "type": "integer",
            "example": 1712019600,
            "description": "Message signedAt current timestamp (seconds since Unix Epoch)",
            "format": "int64"
          },
          "expiresAt": {
            "type": "integer",
            "description": "Order expiry timestamp (seconds since Unix Epoch), defaults to the maximum allowed value: signedAt + 6652800",
            "format": "int64"
          },
          "groupId": {
            "type": "string",
            "format": "uuid",
            "description": "Group Id (UUID) for linking orders together in OCO/OTO relationships"
          },
          "groupContingencyType": {
            "$ref": "#/components/schemas/GroupContingencyTypeEnum"
          },
          "price": {
            "type": "string",
            "example": "4200.5",
            "description": "Limit price expressed as a decimal (precision: 9)",
            "format": "decimal"
          },
          "timeInForce": {
            "$ref": "#/components/schemas/TimeInForce"
          },
          "postOnly": {
            "type": "boolean",
            "default": false,
            "example": true,
            "description": "Only add order if it does not immediately fill"
          }
        },
        "required": [
          "subaccount",
          "sender",
          "nonce",
          "type",
          "quantity",
          "side",
          "onchainId",
          "engineType",
          "signedAt",
          "price",
          "timeInForce",
          "postOnly"
        ]
      },
      "SubmitOrderDto": {
        "type": "object",
        "properties": {
          "data": {
            "oneOf": [
              {
                "$ref": "#/components/schemas/SubmitOrderMarketDtoData"
              },
              {
                "$ref": "#/components/schemas/SubmitOrderLimitDtoData"
              }
            ]
          },
          "signature": {
            "type": "string",
            "description": "The signature from signTypedData(...) signed by the sender",
            "format": "hex"
          }
        },
        "required": [
          "data",
          "signature"
        ]
      },
      "SubmitOrderCreatedDto": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "example": "9036443a-441a-4a66-87f2-bd5c44cdca7a",
            "description": "Id representing the created order",
            "format": "uuid"
          },
          "clientOrderId": {
            "type": "string",
            "description": "A subaccount scoped unique client-generated order id (either a UUID or alphanumeric string up to 32 characters)"
          },
          "filled": {
            "type": "string",
            "example": "0.5",
            "description": "Filled amount in native units expressed as a decimal (precision: 9)"
          },
          "result": {
            "$ref": "#/components/schemas/ResultEnum"
          }
        },
        "required": [
          "id",
          "filled",
          "result"
        ]
      },
      "SubmitOrderFailedDto": {
        "type": "object",
        "properties": {
          "statusCode": {
            "type": "number",
            "default": 422,
            "enum": [
              422
            ]
          },
          "message": {
            "$ref": "#/components/schemas/MessageEnum"
          },
          "error": {
            "$ref": "#/components/schemas/SubmitOrderFailedDtoErrorEnum"
          }
        },
        "required": [
          "statusCode",
          "message",
          "error"
        ]
      },
      "SubmitDryOrderDto": {
        "type": "object",
        "properties": {
          "data": {
            "oneOf": [
              {
                "$ref": "#/components/schemas/SubmitOrderMarketDtoData"
              },
              {
                "$ref": "#/components/schemas/SubmitOrderLimitDtoData"
              }
            ]
          }
        },
        "required": [
          "data"
        ]
      },
      "DryRunOrderCreatedDto": {
        "type": "object",
        "properties": {
          "marginRequired": {
            "type": "string",
            "example": "1000.5",
            "description": "Margin required for order in USD expressed as a decimal (precision: 9)"
          },
          "marginAvailable": {
            "type": "string",
            "example": "5000.75",
            "description": "Margin available excluding this order in USD expressed as a decimal (precision: 9)"
          },
          "totalUsedMargin": {
            "type": "string",
            "example": "3000.25",
            "description": "Total used margin including this order in USD expressed as a decimal (precision: 9)"
          },
          "riskUsed": {
            "type": "string",
            "example": "3000.25",
            "description": "Risk used including position and open orders in USD expressed as a decimal (precision: 9)"
          },
          "riskAvailable": {
            "type": "string",
            "example": "100000000",
            "description": "Risk available for the product in USD expressed as a decimal (precision: 9)"
          },
          "code": {
            "$ref": "#/components/schemas/CodeEnum"
          }
        },
        "required": [
          "marginRequired",
          "marginAvailable",
          "totalUsedMargin",
          "riskUsed",
          "riskAvailable",
          "code"
        ]
      },
      "DryRunOrderFailedDto": {
        "type": "object",
        "properties": {
          "marginRequired": {
            "type": "string",
            "example": "1000.5",
            "description": "Margin required for order in USD expressed as a decimal (precision: 9)"
          },
          "marginAvailable": {
            "type": "string",
            "example": "5000.75",
            "description": "Margin available excluding this order in USD expressed as a decimal (precision: 9)"
          },
          "totalUsedMargin": {
            "type": "string",
            "example": "3000.25",
            "description": "Total used margin including this order in USD expressed as a decimal (precision: 9)"
          },
          "riskUsed": {
            "type": "string",
            "example": "3000.25",
            "description": "Risk used including position and open orders in USD expressed as a decimal (precision: 9)"
          },
          "riskAvailable": {
            "type": "string",
            "example": "100000000",
            "description": "Risk available for the product in USD expressed as a decimal (precision: 9)"
          },
          "code": {
            "$ref": "#/components/schemas/DryRunOrderFailedDtoCodeEnum"
          }
        },
        "required": [
          "marginRequired",
          "marginAvailable",
          "totalUsedMargin",
          "riskUsed",
          "riskAvailable",
          "code"
        ]
      },
      "DryRunOrderFailedUnprocessableEntityDto": {
        "type": "object",
        "properties": {
          "statusCode": {
            "type": "number",
            "default": 422,
            "enum": [
              422
            ]
          },
          "message": {
            "$ref": "#/components/schemas/MessageEnum"
          },
          "error": {
            "$ref": "#/components/schemas/DryRunOrderFailedUnprocessableEntityDtoErrorEnum"
          },
          "data": {
            "description": "Details of the failed dry run",
            "allOf": [
              {
                "$ref": "#/components/schemas/DryRunOrderFailedDto"
              }
            ]
          }
        },
        "required": [
          "statusCode",
          "message",
          "error",
          "data"
        ]
      },
      "CancelOrderDtoData": {
        "type": "object",
        "properties": {
          "subaccount": {
            "type": "string",
            "example": "0x7072696d61727900000000000000000000000000000000000000000000000000",
            "description": "Bytes32 encoded subaccount name (0x prefix, zero padded)",
            "format": "hex"
          },
          "sender": {
            "type": "string",
            "example": "0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045",
            "description": "Account or linked signer address that canceled this order",
            "format": "hex"
          },
          "nonce": {
            "type": "string",
            "example": "2687929537462333",
            "description": "Message nonce timestamp (nanoseconds since Unix Epoch)"
          },
          "orderIds": {
            "uniqueItems": true,
            "description": "Ids of the orders to be canceled (clientOrderIds combined length cannot exceed maximum)",
            "example": [
              "80569be0-afba-43f8-ac20-767d0974c6a3"
            ],
            "maxItems": 200,
            "type": "array",
            "items": {
              "type": "string",
              "format": "uuid"
            }
          },
          "clientOrderIds": {
            "uniqueItems": true,
            "description": "Client-generated order ids to be canceled (orderIds combined length cannot exceed maximum)",
            "example": [
              "80569be0-afba-43f8-ac20-767d0974c6a3"
            ],
            "maxItems": 200,
            "type": "array",
            "items": {
              "type": "string"
            }
          }
        },
        "required": [
          "subaccount",
          "sender",
          "nonce"
        ]
      },
      "CancelOrderDto": {
        "type": "object",
        "properties": {
          "signature": {
            "type": "string",
            "description": "The signature from signTypedData(...) signed by the sender",
            "format": "hex"
          },
          "data": {
            "$ref": "#/components/schemas/CancelOrderDtoData"
          }
        },
        "required": [
          "signature",
          "data"
        ]
      },
      "CancelOrderResultDto": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "example": "9036443a-441a-4a66-87f2-bd5c44cdca7a",
            "description": "Id representing the order"
          },
          "clientOrderId": {
            "type": "string",
            "example": "80569be0-afba-43f8-ac20-767d0974c6a3",
            "description": "A subaccount scoped unique client-generated order id (either a UUID or alphanumeric string up to 32 characters)"
          },
          "result": {
            "$ref": "#/components/schemas/CancelOrderResultDtoResultEnum"
          }
        },
        "required": [
          "id",
          "result"
        ]
      },
      "ListOfCancelOrderResultDtos": {
        "type": "object",
        "properties": {
          "data": {
            "description": "Array of order cancelation results",
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/CancelOrderResultDto"
            }
          }
        },
        "required": [
          "data"
        ]
      },
      "OrderFillDto": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "example": "b1234567-89ab-cdef-0123-456789abcdef",
            "description": "Id of the fill",
            "format": "uuid"
          },
          "orderId": {
            "type": "string",
            "example": "b1234567-89ab-cdef-0123-456789abcdef",
            "description": "Id of the order (from the context of the specified subaccount)",
            "format": "uuid"
          },
          "clientOrderId": {
            "type": "string",
            "example": "b1234567-89ab-cdef-0123-456789abcdef",
            "description": "A subaccount scoped unique client-generated order id (either a UUID or alphanumeric string up to 32 characters)"
          },
          "price": {
            "type": "string",
            "example": "4200.5",
            "description": "Fill price in expressed as a decimal (precision: 9)"
          },
          "filled": {
            "type": "string",
            "example": "2.420",
            "description": "Quantity filled in native units expressed as a decimal (precision: 9)"
          },
          "type": {
            "$ref": "#/components/schemas/OrderFillDtoOrderType"
          },
          "side": {
            "$ref": "#/components/schemas/OrderSide"
          },
          "reduceOnly": {
            "type": "boolean",
            "example": true,
            "description": "Indicates if the fill is reduce only"
          },
          "feeUsd": {
            "type": "string",
            "example": "3.049563",
            "description": "The provided subaccount's charged fee in USD expressed as a decimal (precision: 9)"
          },
          "isMaker": {
            "type": "boolean",
            "example": true,
            "description": "Indicates if the fill was a maker or taker"
          },
          "productId": {
            "type": "string",
            "example": "9c6bf870-a8ce-4de3-820b-542fd5c049ba",
            "description": "Id of product the order fill was made against",
            "format": "uuid"
          },
          "subaccountId": {
            "type": "string",
            "example": "aa301f94-f5b7-4e54-8b16-01052fccb2f9",
            "description": "Id of the subaccount associated to order fill",
            "format": "uuid"
          },
          "createdAt": {
            "type": "integer",
            "example": 1712019600000,
            "description": "Fill creation timestamp (ms since Unix Epoch)",
            "format": "int64"
          }
        },
        "required": [
          "id",
          "orderId",
          "price",
          "filled",
          "type",
          "side",
          "reduceOnly",
          "feeUsd",
          "isMaker",
          "productId",
          "subaccountId",
          "createdAt"
        ]
      },
      "PageOfOrderFillDtos": {
        "type": "object",
        "properties": {
          "hasNext": {
            "type": "boolean",
            "example": true,
            "description": "Whether there are more objects to paginate through"
          },
          "nextCursor": {
            "type": "string",
            "description": "Pointer to the next page in pagination dataset"
          },
          "data": {
            "description": "Array of order fill objects",
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/OrderFillDto"
            }
          }
        },
        "required": [
          "data"
        ]
      },
      "TradeDto": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "example": "9036443a-441a-4a66-87f2-bd5c44cdca7a",
            "description": "Id representing the trade",
            "format": "uuid"
          },
          "takerOrderId": {
            "type": "string",
            "example": "b1234567-89ab-cdef-0123-456789abcdef",
            "description": "Id of the taker order",
            "format": "uuid"
          },
          "makerOrderId": {
            "type": "string",
            "example": "e3f0a8b7-6daa-498a-bf53-c16dc5e779de",
            "description": "Id of the maker order",
            "format": "uuid"
          },
          "takerClientOrderId": {
            "type": "string",
            "example": "b1234567-89ab-cdef-0123-456789abcdef",
            "description": "Client-generated order id of the taker order"
          },
          "makerClientOrderId": {
            "type": "string",
            "example": "e3f0a8b7-6daa-498a-bf53-c16dc5e779de",
            "description": "Client-generated order id of the maker order"
          },
          "makerFeeUsd": {
            "type": "string",
            "example": "3.049563",
            "description": "Maker fee in USD expressed as a decimal (precision: 9)"
          },
          "takerFeeUsd": {
            "type": "string",
            "example": "4.5743445",
            "description": "Taker fee in USD expressed as a decimal (precision: 9)"
          },
          "price": {
            "type": "string",
            "example": "4200.5",
            "description": "Price expressed as a decimal (precision: 9)"
          },
          "filled": {
            "type": "string",
            "example": "2.420",
            "description": "Quantity filled in native units expressed as a decimal (precision: 9)"
          },
          "makerSide": {
            "$ref": "#/components/schemas/MakerSideEnum"
          },
          "takerSide": {
            "$ref": "#/components/schemas/TakerSideEnum"
          },
          "productId": {
            "type": "string",
            "example": "9c6bf870-a8ce-4de3-820b-542fd5c049ba",
            "description": "Id of product the trade was made against",
            "format": "uuid"
          },
          "createdAt": {
            "type": "integer",
            "example": 1712019600000,
            "description": "Trade creation timestamp (ms since Unix Epoch)",
            "format": "int64"
          }
        },
        "required": [
          "id",
          "takerOrderId",
          "makerOrderId",
          "makerFeeUsd",
          "takerFeeUsd",
          "price",
          "filled",
          "makerSide",
          "takerSide",
          "productId",
          "createdAt"
        ]
      },
      "PageOfTradeDtos": {
        "type": "object",
        "properties": {
          "hasNext": {
            "type": "boolean",
            "example": true,
            "description": "Whether there are more objects to paginate through"
          },
          "nextCursor": {
            "type": "string",
            "description": "Pointer to the next page in pagination dataset"
          },
          "data": {
            "description": "Array of trade objects",
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/TradeDto"
            }
          }
        },
        "required": [
          "hasNext",
          "data"
        ]
      },
      "PositionDto": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "example": "9036443a-441a-4a66-87f2-bd5c44cdca7a",
            "description": "Id representing the position",
            "format": "uuid"
          },
          "cost": {
            "type": "string",
            "example": "9.3",
            "description": "Current cost of the position in USD expressed as a decimal (precision: 9)"
          },
          "size": {
            "type": "string",
            "example": "1.5",
            "description": "Position size in native units expressed as a decimal (precision: 9)"
          },
          "fundingUsd": {
            "type": "string",
            "example": "1.35",
            "description": "Charged but unapplied funding on position, negative if paid, expressed as a decimal (precision: 9)"
          },
          "fundingAccruedUsd": {
            "type": "string",
            "example": "10.5",
            "description": "Charged and applied funding on position, negative if paid, expressed as a decimal (precision: 9)"
          },
          "feesAccruedUsd": {
            "type": "string",
            "example": "0.5",
            "description": "Fees accrued in USD expressed as a decimal (precision: 9)"
          },
          "realizedPnl": {
            "type": "string",
            "example": "-12.5",
            "description": "Realized PnL in USD expressed as a decimal (precision: 9)"
          },
          "unrealizedPnl": {
            "type": "string",
            "example": "4.2",
            "description": "Unrealized PnL in USD (negative if loss, positive if profit) approximated against the latest mark price, expressed as a decimal (precision: 9)"
          },
          "totalIncreaseNotional": {
            "type": "string",
            "example": "1000.0",
            "description": "Cumulative USD value of all position increases expressed as a decimal (precision: 9)"
          },
          "totalIncreaseQuantity": {
            "type": "string",
            "example": "2.5",
            "description": "Cumulative quantity of all position increases expressed as a decimal (precision: 9)"
          },
          "totalDecreaseNotional": {
            "type": "string",
            "example": "1050.0",
            "description": "Cumulative USD value of all position decreases expressed as a decimal (precision: 9)"
          },
          "totalDecreaseQuantity": {
            "type": "string",
            "example": "2.5",
            "description": "Cumulative quantity of all position decreases expressed as a decimal (precision: 9)"
          },
          "side": {
            "$ref": "#/components/schemas/OrderSide"
          },
          "productId": {
            "type": "string",
            "example": "9c6bf870-a8ce-4de3-820b-542fd5c049ba",
            "description": "Id of product to this position belongs to",
            "format": "uuid"
          },
          "updatedAt": {
            "type": "integer",
            "example": 1712019600000,
            "description": "Position last updated timestamp (ms since Unix Epoch)",
            "format": "int64"
          },
          "createdAt": {
            "type": "integer",
            "example": 1712019600000,
            "description": "Position creation timestamp (ms since Unix Epoch)",
            "format": "int64"
          },
          "isLiquidated": {
            "type": "boolean",
            "example": true,
            "description": "Whether the position was liquidated"
          },
          "liquidationPrice": {
            "type": "string",
            "example": "1200.5",
            "description": "Product price at the time of liquidation (undefined if not liquidated, precision: 9)"
          }
        },
        "required": [
          "id",
          "cost",
          "size",
          "fundingUsd",
          "fundingAccruedUsd",
          "feesAccruedUsd",
          "realizedPnl",
          "totalIncreaseNotional",
          "totalIncreaseQuantity",
          "totalDecreaseNotional",
          "totalDecreaseQuantity",
          "side",
          "productId",
          "updatedAt",
          "createdAt",
          "isLiquidated"
        ]
      },
      "PageOfPositionDtos": {
        "type": "object",
        "properties": {
          "hasNext": {
            "type": "boolean",
            "example": true,
            "description": "Whether there are more objects to paginate through"
          },
          "nextCursor": {
            "type": "string",
            "description": "Pointer to the next page in pagination dataset"
          },
          "data": {
            "description": "Array of position objects",
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/PositionDto"
            }
          }
        },
        "required": [
          "data"
        ]
      },
      "PositionFillDto": {
        "type": "object",
        "properties": {
          "price": {
            "type": "string",
            "example": "4200.5",
            "description": "Fill price expressed as a decimal (precision: 9)"
          },
          "filled": {
            "type": "string",
            "example": "2.420",
            "description": "Quantity filled in native units expressed as a decimal (precision: 9)"
          },
          "realizedPnl": {
            "type": "string",
            "example": "3.049563",
            "description": "Realized PnL from the fill in USD expressed as a decimal (precision: 9)"
          },
          "type": {
            "$ref": "#/components/schemas/PositionFillDtoOrderType"
          },
          "side": {
            "$ref": "#/components/schemas/OrderSide"
          },
          "reduceOnly": {
            "type": "boolean",
            "example": false,
            "description": "Indicates if the fill is reduce only"
          },
          "feeUsd": {
            "type": "string",
            "example": "3.049563",
            "description": "The charged fee in USD expressed as a decimal (precision: 9)"
          },
          "createdAt": {
            "type": "integer",
            "example": 1712019600000,
            "description": "Fill creation timestamp (ms since Unix Epoch)",
            "format": "int64"
          }
        },
        "required": [
          "price",
          "filled",
          "realizedPnl",
          "type",
          "side",
          "reduceOnly",
          "feeUsd",
          "createdAt"
        ]
      },
      "PageOfPositionFillDtos": {
        "type": "object",
        "properties": {
          "hasNext": {
            "type": "boolean",
            "example": true,
            "description": "Whether there are more objects to paginate through"
          },
          "nextCursor": {
            "type": "string",
            "description": "Pointer to the next page in pagination dataset"
          },
          "data": {
            "description": "Array of position fill objects",
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/PositionFillDto"
            }
          }
        },
        "required": [
          "hasNext",
          "data"
        ]
      },
      "PositionLiquidationDto": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "example": "9036443a-441a-4a66-87f2-bd5c44cdca7a",
            "description": "Id representing the position liquidation",
            "format": "uuid"
          },
          "subaccountId": {
            "type": "string",
            "example": "9036443a-441a-4a66-87f2-bd5c44cdca7a",
            "description": "Id representing the subaccount that was liquidated",
            "format": "uuid"
          },
          "productId": {
            "type": "string",
            "example": "9036443a-441a-4a66-87f2-bd5c44cdca7a",
            "description": "Id representing the product that was liquidated",
            "format": "uuid"
          },
          "positionId": {
            "type": "string",
            "example": "9036443a-441a-4a66-87f2-bd5c44cdca7a",
            "description": "Id representing the position that was liquidated",
            "format": "uuid"
          },
          "liquidationPrice": {
            "type": "string",
            "example": "1200.5",
            "description": "Liquidation mark price in USD expressed as a decimal (precision: 9)"
          },
          "cause": {
            "$ref": "#/components/schemas/CauseEnum"
          },
          "cost": {
            "type": "string",
            "example": "1000.5",
            "description": "Position cost at the time of liquidation in USD expressed as a decimal (precision: 9)"
          },
          "fundingChargeUsd": {
            "type": "string",
            "example": "1200.5",
            "description": "Funding charged in USD expressed as a decimal (precision: 9), undefined if not liquidated due to funding"
          },
          "positionSide": {
            "$ref": "#/components/schemas/PositionSideEnum"
          },
          "createdAt": {
            "type": "integer",
            "example": 1712019600000,
            "description": "Position liquidation timestamp (ms since Unix Epoch)",
            "format": "int64"
          }
        },
        "required": [
          "id",
          "subaccountId",
          "productId",
          "positionId",
          "liquidationPrice",
          "cause",
          "cost",
          "positionSide",
          "createdAt"
        ]
      },
      "PageOfPositionLiquidationsDto": {
        "type": "object",
        "properties": {
          "hasNext": {
            "type": "boolean",
            "example": true,
            "description": "Whether there are more objects to paginate through"
          },
          "nextCursor": {
            "type": "string",
            "description": "Pointer to the next page in pagination dataset"
          },
          "data": {
            "description": "Array of position liquidation objects",
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/PositionLiquidationDto"
            }
          }
        },
        "required": [
          "hasNext",
          "data"
        ]
      },
      "ProductDto": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "example": "9036443a-441a-4a66-87f2-bd5c44cdca7a",
            "description": "Id representing the registered product",
            "format": "uuid"
          },
          "ticker": {
            "type": "string",
            "example": "ETHUSD",
            "description": "Product ticker based on the base quote token"
          },
          "displayTicker": {
            "type": "string",
            "example": "ETH-USD",
            "description": "Product display ticker based on the base quote token"
          },
          "baseTokenAddress": {
            "type": "string",
            "example": "0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2",
            "description": "Address of the base token (non-checksummed; zero address if virtual)",
            "format": "hex"
          },
          "quoteTokenAddress": {
            "type": "string",
            "example": "0x4c9EDD5852cd905f086C759E8383e09bff1E68B3",
            "description": "Address of quote token (non-checksummed)",
            "format": "hex"
          },
          "baseTokenName": {
            "type": "string",
            "example": "ETH",
            "description": "Name of the base token (e.g. BTC in BTCUSD)"
          },
          "quoteTokenName": {
            "type": "string",
            "example": "USDe",
            "description": "Name of the quote token (e.g. USD in BTCUSD)"
          },
          "engineType": {
            "$ref": "#/components/schemas/EngineTypeEnum"
          },
          "onchainId": {
            "type": "integer",
            "example": 1,
            "description": "The productId generated onchain after registering for the first time",
            "format": "int64"
          },
          "status": {
            "$ref": "#/components/schemas/ProductDtoOrderStatus"
          },
          "blockNumber": {
            "type": "string",
            "example": "123062737",
            "description": "Block number this product was registered on"
          },
          "cumulativeFundingUsd": {
            "type": "string",
            "example": "1.001",
            "description": "Cumulative funding in USD of the product (precision: 9)"
          },
          "createdAt": {
            "type": "integer",
            "example": 1712019600000,
            "description": "Product creation timestamp (ms since Unix Epoch)",
            "format": "int64"
          },
          "fundingUpdatedAt": {
            "type": "integer",
            "example": 1721724269,
            "description": "Unix timestamp when funding was last updated",
            "format": "int64"
          },
          "minQuantity": {
            "type": "string",
            "example": "0.05",
            "description": "The minimum order quantity in native units expressed as a decimal (precision: 9)"
          },
          "lotSize": {
            "type": "string",
            "example": "0.01",
            "description": "Quantity must be divisible by the lotSize in expressed as a decimal (precision: 9)"
          },
          "tickSize": {
            "type": "string",
            "example": "0.0001",
            "description": "Minimum price increment (tickSize) expressed as a decimal (precision: 9)"
          },
          "makerFee": {
            "type": "string",
            "example": "0.001",
            "description": "Fee charged to the maker on order trades expressed as a decimal (precision: 9)"
          },
          "takerFee": {
            "type": "string",
            "example": "0.004",
            "description": "Fee charged to the taker on order trades expressed as a decimal (precision: 9)"
          },
          "maxQuantity": {
            "type": "string",
            "example": "100000",
            "description": "Max quantity per order in native units expressed as a decimal (precision: 9)"
          },
          "minPrice": {
            "type": "string",
            "example": "0",
            "description": "Min price in USD expressed as a decimal (precision: 9)"
          },
          "maxPrice": {
            "type": "string",
            "example": "100000",
            "description": "Max price in USD expressed as a decimal (precision: 9)"
          },
          "volume24h": {
            "type": "string",
            "example": "500000000.42",
            "description": "24h volume in base token native units expressed as a decimal (precision: 9)"
          },
          "maxLeverage": {
            "type": "number",
            "example": 20,
            "description": "Maximum leverage allowed for the product"
          },
          "pythFeedId": {
            "type": "integer",
            "example": 2,
            "description": "Pyth price feed id",
            "format": "int64"
          },
          "fundingRate1h": {
            "type": "string",
            "example": "0.01",
            "description": "Last computed hourly funding rate expressed as a decimal (precision: 9)"
          },
          "openInterest": {
            "type": "string",
            "example": "3300.17",
            "description": "OI of both sides in native units expressed as a decimal (precision: 9)"
          },
          "maxOpenInterestUsd": {
            "type": "string",
            "example": "200000000.0",
            "description": "Max OI of one side in USD expressed as a decimal (precision: 9)"
          },
          "maxPositionNotionalUsd": {
            "type": "string",
            "example": "50000000.0",
            "description": "Max position notional value, in USD expressed as a decimal (precision: 9)"
          },
          "fundingClampApr": {
            "type": "string",
            "example": "0.01",
            "description": "Funding clamp APR expressed as a decimal (precision: 9)"
          },
          "fundingBaselineApr": {
            "type": "string",
            "example": "0.15",
            "description": "Funding baseline APR expressed as a decimal (precision: 9)"
          },
          "fundingMaxApr": {
            "type": "string",
            "example": "2.0",
            "description": "Maximum funding APR expressed as a decimal, e.g. 2.0 = 200% (precision: 9)"
          }
        },
        "required": [
          "id",
          "ticker",
          "displayTicker",
          "baseTokenAddress",
          "quoteTokenAddress",
          "baseTokenName",
          "quoteTokenName",
          "engineType",
          "onchainId",
          "status",
          "blockNumber",
          "cumulativeFundingUsd",
          "createdAt",
          "minQuantity",
          "lotSize",
          "tickSize",
          "makerFee",
          "takerFee",
          "maxQuantity",
          "minPrice",
          "maxPrice",
          "volume24h",
          "maxLeverage",
          "pythFeedId",
          "fundingRate1h",
          "openInterest",
          "maxOpenInterestUsd",
          "maxPositionNotionalUsd",
          "fundingClampApr",
          "fundingBaselineApr",
          "fundingMaxApr"
        ]
      },
      "PageOfProductDtos": {
        "type": "object",
        "properties": {
          "hasNext": {
            "type": "boolean",
            "example": true,
            "description": "Whether there are more objects to paginate through"
          },
          "nextCursor": {
            "type": "string",
            "description": "Pointer to the next page in pagination dataset"
          },
          "data": {
            "description": "Array of product objects",
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ProductDto"
            }
          }
        },
        "required": [
          "hasNext",
          "data"
        ]
      },
      "MarketLiquidityDto": {
        "type": "object",
        "properties": {
          "timestamp": {
            "type": "integer",
            "example": 1731664105881,
            "description": "Most recent book update, created timestamp if never updated (ms since Unix Epoch)",
            "format": "int64"
          },
          "previousTimestamp": {
            "type": "integer",
            "example": 1731664105881,
            "description": "Previous book update, undefined if never updated (ms since Unix Epoch)",
            "format": "int64"
          },
          "productId": {
            "type": "string",
            "example": "9036443a-441a-4a66-87f2-bd5c44cdca7a",
            "description": "Id representing the product",
            "format": "uuid"
          },
          "asks": {
            "type": "array",
            "items": {
              "type": "array",
              "minItems": 2,
              "maxItems": 2,
              "items": {
                "type": "string",
                "additionalProperties": false
              }
            },
            "example": [
              [
                "4200.69",
                "1337.420"
              ]
            ],
            "description": "An array of ask tuple pairs (price, quantity) ordered in asc"
          },
          "bids": {
            "type": "array",
            "items": {
              "type": "array",
              "minItems": 2,
              "maxItems": 2,
              "items": {
                "type": "string",
                "additionalProperties": false
              }
            },
            "example": [
              [
                "4199.42",
                "420.55"
              ]
            ],
            "description": "An array of bid tuple pairs (price, quantity) ordered in desc"
          }
        },
        "required": [
          "timestamp",
          "productId",
          "asks",
          "bids"
        ]
      },
      "MarketPriceDto": {
        "type": "object",
        "properties": {
          "productId": {
            "type": "string",
            "example": "9036443a-441a-4a66-87f2-bd5c44cdca7a",
            "description": "Id representing the registered product",
            "format": "uuid"
          },
          "bestBidPrice": {
            "type": "string",
            "example": "104399.65",
            "description": "Best bid price in USD expressed as a decimal (precision: 9)"
          },
          "bestAskPrice": {
            "type": "string",
            "example": "104400.1",
            "description": "Best ask price in USD expressed as a decimal (precision: 9)"
          },
          "oraclePrice": {
            "type": "string",
            "example": "104399.7",
            "description": "Oracle price in USD expressed as a decimal (precision: 9)"
          },
          "price24hAgo": {
            "type": "string",
            "example": "101228.38",
            "description": "Price of product 24hrs ago in USD expressed as a decimal (precision: 9)"
          }
        },
        "required": [
          "productId"
        ]
      },
      "ListOfMarketPriceDtos": {
        "type": "object",
        "properties": {
          "data": {
            "description": "Array of market price objects",
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/MarketPriceDto"
            }
          }
        },
        "required": [
          "data"
        ]
      },
      "FundingDto": {
        "type": "object",
        "properties": {
          "createdAt": {
            "type": "integer",
            "example": 1712019600000,
            "description": "Funding charge timestamp (ms since Unix Epoch)",
            "format": "int64"
          },
          "fundingRate1h": {
            "type": "string",
            "description": "Hourly funding rate",
            "example": "0.013876480"
          }
        },
        "required": [
          "createdAt",
          "fundingRate1h"
        ]
      },
      "PageOfFundingDtos": {
        "type": "object",
        "properties": {
          "hasNext": {
            "type": "boolean",
            "example": true,
            "description": "Whether there are more objects to paginate through"
          },
          "nextCursor": {
            "type": "string",
            "description": "Pointer to the next page in pagination dataset"
          },
          "data": {
            "description": "Array of funding rate history objects",
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/FundingDto"
            }
          }
        },
        "required": [
          "hasNext",
          "data"
        ]
      },
      "ProjectedFundingDto": {
        "type": "object",
        "properties": {
          "productId": {
            "type": "string",
            "description": "Id representing the registered product",
            "format": "uuid"
          },
          "fundingRateProjected1h": {
            "type": "string",
            "description": "Projected funding rate expressed as a decimal (precision: 9)",
            "example": "0.000078771"
          },
          "fundingRate1h": {
            "type": "string",
            "description": "Funding rate expressed as a decimal (precision: 9)",
            "example": "0.013876480"
          }
        },
        "required": [
          "productId",
          "fundingRateProjected1h",
          "fundingRate1h"
        ]
      },
      "PageOfProjectedFundingDtos": {
        "type": "object",
        "properties": {
          "hasNext": {
            "type": "boolean",
            "example": true,
            "description": "Whether there are more objects to paginate through"
          },
          "nextCursor": {
            "type": "string",
            "description": "Pointer to the next page in pagination dataset"
          },
          "data": {
            "description": "Array of projected funding rate objects",
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ProjectedFundingDto"
            }
          }
        },
        "required": [
          "hasNext",
          "data"
        ]
      },
      "HttpPaginatedRateLimitEndpointDto": {
        "type": "object",
        "properties": {
          "method": {
            "$ref": "#/components/schemas/MethodEnum"
          },
          "path": {
            "type": "string",
            "example": "/v1/order/",
            "description": "API endpoint path"
          },
          "protocol": {
            "$ref": "#/components/schemas/ProtocolEnum"
          },
          "type": {
            "$ref": "#/components/schemas/HttpPaginatedRateLimitEndpointDtoOrderType"
          },
          "basePoints": {
            "type": "number",
            "description": "Base points consumed per request",
            "example": 1
          },
          "pointsPerRow": {
            "type": "number",
            "description": "Points consumed per row in paginated response",
            "example": 1
          }
        },
        "required": [
          "method",
          "path",
          "protocol",
          "type",
          "basePoints",
          "pointsPerRow"
        ]
      },
      "HttpFixedRateLimitEndpointDto": {
        "type": "object",
        "properties": {
          "method": {
            "$ref": "#/components/schemas/MethodEnum"
          },
          "path": {
            "type": "string",
            "example": "/v1/order/",
            "description": "API endpoint path"
          },
          "protocol": {
            "$ref": "#/components/schemas/ProtocolEnum"
          },
          "type": {
            "$ref": "#/components/schemas/HttpFixedRateLimitEndpointDtoOrderType"
          },
          "fixedPoints": {
            "type": "number",
            "description": "Fixed points consumed per request",
            "example": 5
          }
        },
        "required": [
          "method",
          "path",
          "protocol",
          "type",
          "fixedPoints"
        ]
      },
      "WsFixedRateLimitEndpointDto": {
        "type": "object",
        "properties": {
          "namespace": {
            "type": "string",
            "example": "orders",
            "description": "WebSocket namespace"
          },
          "protocol": {
            "$ref": "#/components/schemas/WsFixedRateLimitEndpointDtoProtocolEnum"
          },
          "type": {
            "$ref": "#/components/schemas/WsFixedRateLimitEndpointDtoOrderType"
          },
          "fixedPoints": {
            "type": "number",
            "description": "Fixed points consumed per request",
            "example": 5
          }
        },
        "required": [
          "namespace",
          "protocol",
          "type",
          "fixedPoints"
        ]
      },
      "RateLimitConfigResponseDto": {
        "type": "object",
        "properties": {
          "data": {
            "type": "array",
            "description": "List of rate limit endpoint configurations",
            "items": {
              "oneOf": [
                {
                  "$ref": "#/components/schemas/HttpPaginatedRateLimitEndpointDto"
                },
                {
                  "$ref": "#/components/schemas/HttpFixedRateLimitEndpointDto"
                },
                {
                  "$ref": "#/components/schemas/WsFixedRateLimitEndpointDto"
                }
              ]
            }
          }
        },
        "required": [
          "data"
        ]
      },
      "DomainTypeDto": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "description": "Name of signing domain"
          },
          "version": {
            "type": "string",
            "description": "Current major version of the signing domain"
          },
          "chainId": {
            "type": "integer",
            "description": "The EIP-155 chain id",
            "format": "int64"
          },
          "verifyingContract": {
            "type": "string",
            "description": "Address of the contract that will verify the signature",
            "format": "hex"
          }
        },
        "required": [
          "name",
          "version",
          "chainId",
          "verifyingContract"
        ]
      },
      "SignatureTypesDto": {
        "type": "object",
        "properties": {
          "LinkSigner": {
            "type": "string",
            "description": "LinkSigner signature type"
          },
          "TradeOrder": {
            "type": "string",
            "description": "TradeOrder signature type"
          },
          "InitiateWithdraw": {
            "type": "string",
            "description": "InitiateWithdraw signature type"
          },
          "RevokeLinkedSigner": {
            "type": "string",
            "description": "RevokeLinkedSigner signature type"
          },
          "CancelOrder": {
            "type": "string",
            "description": "CancelOrder signature type"
          },
          "RefreshLinkedSigner": {
            "type": "string",
            "description": "RefreshLinkedSigner signature type"
          },
          "ExtendLinkedSigner": {
            "type": "string",
            "description": "ExtendLinkedSigner signature type"
          },
          "EIP712Auth": {
            "type": "string",
            "description": "EIP712Auth signature type"
          }
        },
        "required": [
          "LinkSigner",
          "TradeOrder",
          "InitiateWithdraw",
          "RevokeLinkedSigner",
          "CancelOrder",
          "RefreshLinkedSigner",
          "ExtendLinkedSigner",
          "EIP712Auth"
        ]
      },
      "RpcConfigDto": {
        "type": "object",
        "properties": {
          "domain": {
            "description": "Domain type",
            "allOf": [
              {
                "$ref": "#/components/schemas/DomainTypeDto"
              }
            ]
          },
          "signatureTypes": {
            "description": "Signature types",
            "allOf": [
              {
                "$ref": "#/components/schemas/SignatureTypesDto"
              }
            ]
          }
        },
        "required": [
          "domain",
          "signatureTypes"
        ]
      },
      "SubaccountDto": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "example": "9036443a-441a-4a66-87f2-bd5c44cdca7a",
            "description": "Id representing the registered subaccount",
            "format": "uuid"
          },
          "name": {
            "type": "string",
            "example": "0x7072696d61727900000000000000000000000000000000000000000000000000",
            "description": "Bytes32 encoded subaccount name (0x prefix, zero padded)",
            "format": "hex"
          },
          "account": {
            "type": "string",
            "example": "0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045",
            "description": "Address of the account which registered the subaccount (non-checksummed)",
            "format": "hex"
          },
          "createdBlockNumber": {
            "type": "string",
            "example": "123062737",
            "description": "Block number this subaccount was created on"
          },
          "registeredBlockNumber": {
            "type": "string",
            "example": "123062737",
            "description": "Block number this subaccount was registered on"
          },
          "createdAt": {
            "type": "integer",
            "example": 1712019600000,
            "description": "Subaccount creation timestamp (ms since Unix Epoch)",
            "format": "int64"
          }
        },
        "required": [
          "id",
          "name",
          "account",
          "createdBlockNumber",
          "createdAt"
        ]
      },
      "PageOfSubaccountDtos": {
        "type": "object",
        "properties": {
          "hasNext": {
            "type": "boolean",
            "example": true,
            "description": "Whether there are more objects to paginate through"
          },
          "nextCursor": {
            "type": "string",
            "description": "Pointer to the next page in pagination dataset"
          },
          "data": {
            "description": "Array of subaccount objects",
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/SubaccountDto"
            }
          }
        },
        "required": [
          "hasNext",
          "data"
        ]
      },
      "SubaccountBalanceDto": {
        "type": "object",
        "properties": {
          "subaccountId": {
            "type": "string",
            "example": "9036443a-441a-4a66-87f2-bd5c44cdca7a",
            "description": "Id representing the subaccount",
            "format": "uuid"
          },
          "tokenId": {
            "type": "string",
            "example": "9036443a-441a-4a66-87f2-bd5c44cdca7a",
            "description": "Id representing the token",
            "format": "uuid"
          },
          "tokenAddress": {
            "type": "string",
            "example": "0x4c9EDD5852cd905f086C759E8383e09bff1E68B3",
            "description": "ERC20 deposited token address (non-checksummed, zero address if virtual)",
            "format": "hex"
          },
          "tokenName": {
            "type": "string",
            "example": "ETH",
            "description": "The unique exchange defined token name driven by addToken onchain"
          },
          "amount": {
            "type": "string",
            "example": "1.5",
            "description": "Token balance in native units expressed as a decimal (precision: 9)",
            "format": "decimal"
          },
          "available": {
            "type": "string",
            "example": "0.1337",
            "description": "Portion of balance transferrable in native units expressed as a decimal (precision: 9)",
            "format": "decimal"
          },
          "totalUsed": {
            "type": "string",
            "example": "1.3663",
            "description": "Portion of balance non-transferrable in native units expressed as a decimal (precision: 9)",
            "format": "decimal"
          },
          "updatedAt": {
            "type": "integer",
            "example": 1712019600000,
            "description": "Token balance last updated timestamp (ms since Unix Epoch)",
            "format": "int64"
          }
        },
        "required": [
          "subaccountId",
          "tokenId",
          "tokenAddress",
          "tokenName",
          "amount",
          "available",
          "totalUsed",
          "updatedAt"
        ]
      },
      "PageOfSubaccountBalanceDtos": {
        "type": "object",
        "properties": {
          "hasNext": {
            "type": "boolean",
            "example": true,
            "description": "Whether there are more objects to paginate through"
          },
          "nextCursor": {
            "type": "string",
            "description": "Pointer to the next page in pagination dataset"
          },
          "data": {
            "description": "Array of order subaccount balances",
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/SubaccountBalanceDto"
            }
          }
        },
        "required": [
          "hasNext",
          "data"
        ]
      },
      "LinkSignerDtoData": {
        "type": "object",
        "properties": {
          "subaccountId": {
            "type": "string",
            "format": "uuid",
            "example": "9036443a-441a-4a66-87f2-bd5c44cdca7a",
            "description": "Id representing the registered subaccount"
          },
          "sender": {
            "type": "string",
            "example": "0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045",
            "description": "Account address that created the signature in this message",
            "format": "hex"
          },
          "subaccount": {
            "type": "string",
            "example": "0x7072696d61727900000000000000000000000000000000000000000000000000",
            "description": "Bytes32 encoded subaccount name (0x prefix, zero padded)",
            "format": "hex"
          },
          "signer": {
            "type": "string",
            "example": "0x1Db3439a222C519ab44bb1144fC28167b4Fa6EE6",
            "description": "Address of signer to allowed for delegated signing",
            "format": "hex"
          },
          "nonce": {
            "type": "string",
            "example": "2687929537462333",
            "description": "Message nonce timestamp (nanoseconds since Unix Epoch)"
          },
          "signedAt": {
            "type": "integer",
            "example": 1712019600,
            "description": "Message signedAt current timestamp (seconds since Unix Epoch)",
            "format": "int64"
          },
          "name": {
            "type": "string",
            "minLength": 1,
            "maxLength": 32,
            "example": "Delegated signer",
            "description": "Optional name for the linked signer"
          },
          "category": {
            "$ref": "#/components/schemas/CategoryEnum"
          }
        },
        "required": [
          "subaccountId",
          "sender",
          "subaccount",
          "signer",
          "nonce",
          "signedAt"
        ]
      },
      "LinkSignerDto": {
        "type": "object",
        "properties": {
          "signature": {
            "type": "string",
            "description": "The signature from signTypedData(...) signed by the sender",
            "format": "hex"
          },
          "signerSignature": {
            "type": "string",
            "description": "The signature from signTypedData(...) signed by the signer",
            "format": "hex"
          },
          "data": {
            "$ref": "#/components/schemas/LinkSignerDtoData"
          }
        },
        "required": [
          "signature",
          "signerSignature",
          "data"
        ]
      },
      "SignerDto": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "example": "9036443a-441a-4a66-87f2-bd5c44cdca7a",
            "description": "Id representing the linked signer"
          },
          "signer": {
            "type": "string",
            "example": "0x1Db3439a222C519ab44bb1144fC28167b4Fa6EE6",
            "description": "Address of the signer linked with the subaccount (non-checksummed)",
            "format": "hex"
          },
          "status": {
            "$ref": "#/components/schemas/SignerDtoOrderStatus"
          },
          "blockNumber": {
            "type": "string",
            "example": "123062737",
            "description": "Block number the signer has been linked on. Undefined means it has not be processed"
          },
          "linkedAt": {
            "type": "integer",
            "example": 1712019615000,
            "description": "Onchain linkage timestamp (ms since Unix Epoch)",
            "format": "int64"
          },
          "revokedBlockNumber": {
            "type": "string",
            "example": "123062737",
            "description": "Block number the signer has been revoked on. Undefined means it has not be processed"
          },
          "revokedAt": {
            "type": "integer",
            "example": 1712019600000,
            "description": "Onchain revocation timestamp (ms since Unix Epoch)",
            "format": "int64"
          },
          "expiresAt": {
            "type": "integer",
            "example": 1713229200000,
            "description": "Signer expiry timestamp (ms since Unix Epoch)",
            "format": "int64"
          },
          "createdAt": {
            "type": "integer",
            "example": 1712019600000,
            "description": "Link signer submission timestamp (ms since Unix Epoch)",
            "format": "int64"
          },
          "name": {
            "type": "string",
            "example": "Delegated signer",
            "description": "Optional name for the linked signer"
          },
          "category": {
            "$ref": "#/components/schemas/CategoryEnum"
          }
        },
        "required": [
          "id",
          "signer",
          "status",
          "expiresAt",
          "createdAt"
        ]
      },
      "RevokeLinkedSignerDtoData": {
        "type": "object",
        "properties": {
          "subaccountId": {
            "type": "string",
            "format": "uuid",
            "example": "9036443a-441a-4a66-87f2-bd5c44cdca7a",
            "description": "Id representing the registered subaccount"
          },
          "sender": {
            "type": "string",
            "example": "0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045",
            "description": "Address of account that created the signature in this message",
            "format": "hex"
          },
          "subaccount": {
            "type": "string",
            "example": "0x7072696d61727900000000000000000000000000000000000000000000000000",
            "description": "Bytes32 encoded subaccount name (0x prefix, zero padded)",
            "format": "hex"
          },
          "signer": {
            "type": "string",
            "example": "0x1Db3439a222C519ab44bb1144fC28167b4Fa6EE6",
            "description": "Address of signer to revoke",
            "format": "hex"
          },
          "nonce": {
            "type": "string",
            "example": "2687929537462333",
            "description": "Message nonce timestamp (nanoseconds since Unix Epoch)"
          },
          "signedAt": {
            "type": "integer",
            "example": 1712019600,
            "description": "Message signedAt current timestamp (seconds since Unix Epoch)",
            "format": "int64"
          }
        },
        "required": [
          "subaccountId",
          "sender",
          "subaccount",
          "signer",
          "nonce",
          "signedAt"
        ]
      },
      "RevokeLinkedSignerDto": {
        "type": "object",
        "properties": {
          "signature": {
            "type": "string",
            "description": "The signature from signTypedData(...) signed by the sender",
            "format": "hex"
          },
          "data": {
            "$ref": "#/components/schemas/RevokeLinkedSignerDtoData"
          }
        },
        "required": [
          "signature",
          "data"
        ]
      },
      "RefreshLinkedSignerDtoData": {
        "type": "object",
        "properties": {
          "subaccountId": {
            "type": "string",
            "format": "uuid",
            "example": "9036443a-441a-4a66-87f2-bd5c44cdca7a",
            "description": "Id representing the registered subaccount"
          },
          "sender": {
            "type": "string",
            "example": "0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045",
            "description": "Address of account that created the signature in this message",
            "format": "hex"
          },
          "subaccount": {
            "type": "string",
            "example": "0x7072696d61727900000000000000000000000000000000000000000000000000",
            "description": "Bytes32 encoded subaccount name (0x prefix, zero padded)",
            "format": "hex"
          },
          "signer": {
            "type": "string",
            "example": "0x1Db3439a222C519ab44bb1144fC28167b4Fa6EE6",
            "description": "Address of signer to refresh",
            "format": "hex"
          },
          "nonce": {
            "type": "string",
            "example": "2687929537462333",
            "description": "Message nonce timestamp (nanoseconds since Unix Epoch)"
          },
          "signedAt": {
            "type": "integer",
            "example": 1712019600,
            "description": "Message signedAt current timestamp (seconds since Unix Epoch)",
            "format": "int64"
          }
        },
        "required": [
          "subaccountId",
          "sender",
          "subaccount",
          "signer",
          "nonce",
          "signedAt"
        ]
      },
      "RefreshLinkedSignerDto": {
        "type": "object",
        "properties": {
          "signature": {
            "type": "string",
            "description": "The signature from signTypedData(...) signed by the sender",
            "format": "hex"
          },
          "data": {
            "$ref": "#/components/schemas/RefreshLinkedSignerDtoData"
          }
        },
        "required": [
          "signature",
          "data"
        ]
      },
      "ExtendLinkedSignerDtoData": {
        "type": "object",
        "properties": {
          "sender": {
            "type": "string",
            "example": "0x1Db3439a222C519ab44bb1144fC28167b4Fa6EE6",
            "description": "Address of the linked signer extending itself",
            "format": "hex"
          },
          "nonce": {
            "type": "string",
            "example": "2687929537462333",
            "description": "Message nonce timestamp (nanoseconds since Unix Epoch)"
          },
          "signedAt": {
            "type": "integer",
            "example": 1712019600,
            "description": "Message signedAt current timestamp (seconds since Unix Epoch)",
            "format": "int64"
          }
        },
        "required": [
          "sender",
          "nonce",
          "signedAt"
        ]
      },
      "ExtendLinkedSignerDto": {
        "type": "object",
        "properties": {
          "signature": {
            "type": "string",
            "description": "The signature from signTypedData(...) signed by the signer",
            "format": "hex"
          },
          "data": {
            "$ref": "#/components/schemas/ExtendLinkedSignerDtoData"
          }
        },
        "required": [
          "signature",
          "data"
        ]
      },
      "AccountSignerQuotaDto": {
        "type": "object",
        "properties": {
          "maxLinkedSignersPeriodDays": {
            "type": "integer",
            "example": 7,
            "description": "Ratelimit period in days for linking signers per account",
            "format": "int64"
          },
          "maxLinkedSignersInPeriod": {
            "type": "integer",
            "example": 10,
            "description": "Max number of signer that can be linked within ratelimit period",
            "format": "int64"
          },
          "linkedSignersUsedInPeriod": {
            "type": "integer",
            "example": 2,
            "description": "Number of signers linked within current ratelimit period",
            "format": "int64"
          },
          "linkedSignerRefreshHoursBeforeExpiry": {
            "type": "integer",
            "example": 48,
            "description": "Hours before expiry when a signer can be refreshed",
            "format": "int64"
          }
        },
        "required": [
          "maxLinkedSignersPeriodDays",
          "maxLinkedSignersInPeriod",
          "linkedSignersUsedInPeriod",
          "linkedSignerRefreshHoursBeforeExpiry"
        ]
      },
      "PageOfSignersDto": {
        "type": "object",
        "properties": {
          "hasNext": {
            "type": "boolean",
            "example": true,
            "description": "Whether there are more objects to paginate through"
          },
          "nextCursor": {
            "type": "string",
            "description": "Pointer to the next page in pagination dataset"
          },
          "data": {
            "description": "Array of signer objects",
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/SignerDto"
            }
          }
        },
        "required": [
          "hasNext",
          "data"
        ]
      },
      "WithdrawDto": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "example": "9036443a-441a-4a66-87f2-bd5c44cdca7a",
            "description": "Id representing the withdraw",
            "format": "uuid"
          },
          "initiatedBlockNumber": {
            "type": "string",
            "example": "123062000",
            "description": "Block number the withdraw was initiated on"
          },
          "finalizedBlockNumber": {
            "type": "string",
            "example": "123062992",
            "description": "Block number the withdraw was completed on"
          },
          "status": {
            "$ref": "#/components/schemas/WithdrawDtoOrderStatus"
          },
          "subaccount": {
            "type": "string",
            "example": "0x7072696d61727900000000000000000000000000000000000000000000000000",
            "description": "Bytes32 encoded subaccount name (0x prefix, zero padded)",
            "format": "hex"
          },
          "token": {
            "type": "string",
            "example": "0x4c9EDD5852cd905f086C759E8383e09bff1E68B3",
            "description": "Address of asset to withdraw (non-checksummed)",
            "format": "hex"
          },
          "lzDestinationAddress": {
            "type": "string",
            "description": "LayerZero destination address (leading 0x bytes32 encoded) for the transfer (if withdraw)",
            "format": "hex"
          },
          "lzDestinationEid": {
            "type": "integer",
            "example": 30391,
            "description": "LayerZero destination endpoint ID for the transfer (if withdraw)",
            "format": "int64"
          },
          "amount": {
            "type": "string",
            "example": "1.5",
            "description": "Amount of asset transferred expressed as a decimal"
          },
          "createdAt": {
            "type": "integer",
            "example": 1712019600000,
            "description": "Withdraw creation timestamp (ms since Unix Epoch)",
            "format": "int64"
          },
          "withdrawDigest": {
            "type": "string",
            "description": "Bytes32 hash of the withdraw data (with 0x prefix)",
            "format": "hex"
          }
        },
        "required": [
          "id",
          "status",
          "subaccount",
          "token",
          "amount",
          "createdAt",
          "withdrawDigest"
        ]
      },
      "PageOfWithdrawDtos": {
        "type": "object",
        "properties": {
          "hasNext": {
            "type": "boolean",
            "example": true,
            "description": "Whether there are more objects to paginate through"
          },
          "nextCursor": {
            "type": "string",
            "description": "Pointer to the next page in pagination dataset"
          },
          "data": {
            "description": "Array of subaccount withdraw objects",
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/WithdrawDto"
            }
          }
        },
        "required": [
          "hasNext",
          "data"
        ]
      },
      "TransferDto": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "example": "9036443a-441a-4a66-87f2-bd5c44cdca7a",
            "description": "Id representing the transfer",
            "format": "uuid"
          },
          "initiatedBlockNumber": {
            "type": "string",
            "example": "123062000",
            "description": "Block number the transfer was initiated on"
          },
          "finalizedBlockNumber": {
            "type": "string",
            "example": "123062992",
            "description": "Block number the transfer was completed on"
          },
          "status": {
            "$ref": "#/components/schemas/TransferDtoOrderStatus"
          },
          "subaccountId": {
            "type": "string",
            "example": "9036443a-441a-4a66-87f2-bd5c44cdca7a",
            "description": "Id representing the registered subaccount",
            "format": "uuid"
          },
          "tokenName": {
            "type": "string",
            "example": "ETH",
            "description": "The unique exchange defined token name driven by addToken onchain"
          },
          "tokenAddress": {
            "type": "string",
            "example": "0x4c9EDD5852cd905f086C759E8383e09bff1E68B3",
            "description": "Address of token transferred (non-checksummed)",
            "format": "hex"
          },
          "type": {
            "$ref": "#/components/schemas/TransferDtoOrderType"
          },
          "amount": {
            "type": "string",
            "example": "0.42",
            "description": "Amount of tokens transferred in native units expressed as a decimal (precision: 9)"
          },
          "lzDestinationAddress": {
            "type": "string",
            "description": "LayerZero destination address (leading 0x bytes32 encoded) for the transfer (if withdraw)",
            "format": "hex"
          },
          "lzDestinationEid": {
            "type": "integer",
            "example": 40422,
            "description": "LayerZero destination endpoint ID for the transfer (if withdraw)",
            "format": "int64"
          },
          "fee": {
            "type": "string",
            "example": "0.42",
            "description": "Fee paid for the transfer in native units expressed as a decimal (precision: 9)"
          },
          "createdAt": {
            "type": "integer",
            "example": 1712019600000,
            "description": "Transfer creation timestamp (ms since Unix Epoch)",
            "format": "int64"
          },
          "initiatedTransactionHash": {
            "type": "string",
            "example": "0x8ffa427c4079a78a64811e80fe4dbefa8bd8e2f4cc572cda9717297d220d4f8e",
            "description": "Transaction hash for the initiation of the transfer",
            "format": "hex"
          },
          "finalizedTransactionHash": {
            "type": "string",
            "example": "0x42aa378d58b92c639dda64d528a6123f14e59e071c4b56e058d3a54b819e2b79",
            "description": "Transaction hash for the finalization of the transfer",
            "format": "hex"
          }
        },
        "required": [
          "id",
          "status",
          "subaccountId",
          "tokenName",
          "tokenAddress",
          "type",
          "amount",
          "fee",
          "createdAt"
        ]
      },
      "PageOfTransfersDtos": {
        "type": "object",
        "properties": {
          "hasNext": {
            "type": "boolean",
            "example": true,
            "description": "Whether there are more objects to paginate through"
          },
          "nextCursor": {
            "type": "string",
            "description": "Pointer to the next page in pagination dataset"
          },
          "data": {
            "description": "Array of transfer objects",
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/TransferDto"
            }
          }
        },
        "required": [
          "hasNext",
          "data"
        ]
      },
      "InitiateWithdrawDtoData": {
        "type": "object",
        "properties": {
          "account": {
            "type": "string",
            "example": "0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045",
            "description": "Account address to withdraw from",
            "format": "hex"
          },
          "subaccount": {
            "type": "string",
            "example": "0x7072696d61727900000000000000000000000000000000000000000000000000",
            "description": "Bytes32 encoded subaccount name (0x prefix, zero padded)",
            "format": "hex"
          },
          "token": {
            "type": "string",
            "example": "0x4c9EDD5852cd905f086C759E8383e09bff1E68B3",
            "description": "Address of token to be withdrawn",
            "format": "hex"
          },
          "amount": {
            "type": "string",
            "example": "1337.42",
            "description": "Amount to withdraw in native units expressed as a decimal (precision: 9)",
            "format": "decimal"
          },
          "lzDestinationAddress": {
            "type": "string",
            "example": "0x000000000000000000000000d8dA6BF26964aF9D7eEd9e03E53415D37aA96045",
            "description": "Bytes32 encoded LayerZero destination address (with 0x prefix, left zero padded)",
            "format": "hex"
          },
          "lzDestinationEid": {
            "$ref": "#/components/schemas/LzDestinationEidEnum"
          },
          "nonce": {
            "type": "string",
            "example": "2687929537462333",
            "description": "Message nonce timestamp (nanoseconds since Unix Epoch)"
          },
          "signedAt": {
            "type": "integer",
            "example": 1712019600,
            "description": "Message signedAt current timestamp (seconds since Unix Epoch)",
            "format": "int64"
          }
        },
        "required": [
          "account",
          "subaccount",
          "token",
          "amount",
          "lzDestinationAddress",
          "lzDestinationEid",
          "nonce",
          "signedAt"
        ]
      },
      "InitiateWithdrawDto": {
        "type": "object",
        "properties": {
          "signature": {
            "type": "string",
            "description": "The signature from signTypedData(...) signed by the sender",
            "format": "hex"
          },
          "data": {
            "$ref": "#/components/schemas/InitiateWithdrawDtoData"
          }
        },
        "required": [
          "signature",
          "data"
        ]
      },
      "WithdrawFailedDto": {
        "type": "object",
        "properties": {
          "statusCode": {
            "type": "number",
            "default": 422,
            "enum": [
              422
            ]
          },
          "message": {
            "$ref": "#/components/schemas/WithdrawFailedDtoMessageEnum"
          },
          "error": {
            "$ref": "#/components/schemas/WithdrawFailedDtoErrorEnum"
          }
        },
        "required": [
          "statusCode",
          "message",
          "error"
        ]
      },
      "TokenDto": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "example": "9036443a-441a-4a66-87f2-bd5c44cdca7a",
            "description": "Id representing the token",
            "format": "uuid"
          },
          "address": {
            "type": "string",
            "example": "0x4c9EDD5852cd905f086C759E8383e09bff1E68B3",
            "description": "Address of the token (non-checksummed; zero address if virtual)",
            "format": "hex"
          },
          "lzOftAddress": {
            "type": "string",
            "example": "0x41e038d9c9aF27369EcBCe72A69a96695A1fD0D3",
            "description": "LayerZero OFT address of the token (non-checksummed; if has LZ OFT or adapter, zero address if not)",
            "format": "hex"
          },
          "name": {
            "type": "string",
            "example": "USD",
            "description": "The unique exchange defined token name driven by addToken onchain"
          },
          "erc20Name": {
            "type": "string",
            "example": "Wrapped USDe",
            "description": "ERC20 token name (available if not virtual)"
          },
          "erc20Symbol": {
            "type": "string",
            "example": "WUSDe",
            "description": "ERC20 token symbol (available if not virtual)"
          },
          "erc20Decimals": {
            "type": "number",
            "example": 18,
            "description": "ERC20 token decimals (available if not virtual)"
          },
          "depositEnabled": {
            "type": "boolean",
            "example": true,
            "description": "Whether the token is enabled for deposit"
          },
          "withdrawEnabled": {
            "type": "boolean",
            "example": true,
            "description": "Whether the token is enabled for withdraw"
          },
          "depositFee": {
            "type": "string",
            "example": "0",
            "description": "Amount of native units charged on deposit expressed as a decimal (precision: 9)"
          },
          "withdrawFee": {
            "type": "string",
            "example": "1",
            "description": "Amount of native units charged on withdraw expressed as a decimal (precision: 9)"
          },
          "minDeposit": {
            "type": "string",
            "example": "10.123456",
            "description": "Min deposit amount as native units expressed as a decimal (precision: 9)"
          },
          "addedBlockNumber": {
            "type": "string",
            "example": "838808",
            "description": "Block number when the token was added"
          },
          "removedBlockNumber": {
            "type": "string",
            "description": "Block number when the token was removed (undefined if not removed)"
          },
          "createdAt": {
            "type": "integer",
            "example": 1712019600000,
            "description": "Token creation timestamp (ms since Unix Epoch)",
            "format": "int64"
          }
        },
        "required": [
          "id",
          "address",
          "lzOftAddress",
          "name",
          "depositEnabled",
          "withdrawEnabled",
          "depositFee",
          "withdrawFee",
          "minDeposit",
          "addedBlockNumber",
          "createdAt"
        ]
      },
      "PageOfTokensDtos": {
        "type": "object",
        "properties": {
          "hasNext": {
            "type": "boolean",
            "example": true,
            "description": "Whether there are more objects to paginate through"
          },
          "nextCursor": {
            "type": "string",
            "description": "Pointer to the next page in pagination dataset"
          },
          "data": {
            "description": "Array of token objects",
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/TokenDto"
            }
          }
        },
        "required": [
          "hasNext",
          "data"
        ]
      },
      "SystemTimeDto": {
        "type": "object",
        "properties": {
          "time": {
            "type": "number",
            "example": 1712019600000,
            "description": "Current system timestamp (ms since Unix Epoch)"
          }
        },
        "required": [
          "time"
        ]
      },
      "WhitelistDto": {
        "type": "object",
        "properties": {
          "isWhitelisted": {
            "type": "boolean",
            "example": true,
            "description": "Whether the address is whitelisted"
          }
        },
        "required": [
          "isWhitelisted"
        ]
      },
      "PointsPeriodDto": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "example": "9036443a-441a-4a66-87f2-bd5c44cdca7a",
            "description": "Id representing the points period entry",
            "format": "uuid"
          },
          "address": {
            "type": "string",
            "example": "0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045",
            "description": "Address of the account (non-checksummed)",
            "format": "hex"
          },
          "season": {
            "type": "integer",
            "example": 1,
            "description": "Season number",
            "format": "int64"
          },
          "epoch": {
            "type": "integer",
            "example": 1,
            "description": "Epoch number within the season",
            "format": "int64"
          },
          "points": {
            "type": "string",
            "example": "13.256",
            "description": "Points earned in this period (excluding referral points) expressed as a decimal (precision: 9)"
          },
          "referralPoints": {
            "type": "string",
            "example": "1.95",
            "description": "Referral points earned in this period expressed as a decimal (precision: 9)"
          },
          "startedAt": {
            "type": "integer",
            "example": 1712019600000,
            "description": "Beginning of points period (ms since Unix Epoch)",
            "format": "int64"
          },
          "endedAt": {
            "type": "integer",
            "example": 1712019600000,
            "description": "End of points period (ms since Unix Epoch)",
            "format": "int64"
          },
          "name": {
            "type": "string",
            "description": "Optional name for the points period"
          },
          "createdAt": {
            "type": "integer",
            "example": 1712019600000,
            "description": "Points period creation timestamp (ms since Unix Epoch)",
            "format": "int64"
          },
          "updatedAt": {
            "type": "integer",
            "example": 1712019600000,
            "description": "Points period last update timestamp (ms since Unix Epoch)",
            "format": "int64"
          }
        },
        "required": [
          "id",
          "address",
          "season",
          "epoch",
          "points",
          "referralPoints",
          "startedAt",
          "endedAt",
          "createdAt",
          "updatedAt"
        ]
      },
      "ListOfPointsPeriodDtos": {
        "type": "object",
        "properties": {
          "data": {
            "description": "Array of points period objects",
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/PointsPeriodDto"
            }
          }
        },
        "required": [
          "data"
        ]
      },
      "PointsSeasonSummaryDto": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "example": "9036443a-441a-4a66-87f2-bd5c44cdca7a",
            "description": "Id representing the summary of points in this season",
            "format": "uuid"
          },
          "address": {
            "type": "string",
            "example": "0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045",
            "description": "Address of the account (non-checksummed)",
            "format": "hex"
          },
          "season": {
            "type": "integer",
            "example": 1,
            "description": "Season number",
            "format": "int64"
          },
          "totalPoints": {
            "type": "string",
            "example": "13.256",
            "description": "Total points earned (excluding referral points) in this season expressed as a decimal (precision: 9)"
          },
          "previousTotalPoints": {
            "type": "string",
            "example": "13.256",
            "description": "Total points earned (excluding referral points) before most recent distribution expressed as a decimal (precision: 9)"
          },
          "referralPoints": {
            "type": "string",
            "example": "1.95",
            "description": "Referral points earned in this season expressed as a decimal (precision: 9)"
          },
          "previousReferralPoints": {
            "type": "string",
            "example": "1.95",
            "description": "Referral points earned in this season before most recent distribution expressed as a decimal (precision: 9)"
          },
          "rank": {
            "type": "integer",
            "example": 1,
            "description": "Current rank in this season",
            "format": "int64"
          },
          "previousRank": {
            "type": "integer",
            "example": 2,
            "description": "Rank before most recent distribution",
            "format": "int64"
          },
          "tier": {
            "$ref": "#/components/schemas/TierEnum"
          },
          "createdAt": {
            "type": "integer",
            "example": 1712019600000,
            "description": "Points season summary creation timestamp (ms since Unix Epoch)",
            "format": "int64"
          },
          "updatedAt": {
            "type": "integer",
            "example": 1712019600000,
            "description": "Points season summary last update timestamp (ms since Unix Epoch)",
            "format": "int64"
          }
        },
        "required": [
          "id",
          "address",
          "season",
          "totalPoints",
          "previousTotalPoints",
          "referralPoints",
          "previousReferralPoints",
          "rank",
          "previousRank",
          "tier",
          "createdAt",
          "updatedAt"
        ]
      },
      "ListOfPointsSeasonSummariesDtos": {
        "type": "object",
        "properties": {
          "data": {
            "description": "Array of points season summary objects",
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/PointsSeasonSummaryDto"
            }
          }
        },
        "required": [
          "data"
        ]
      },
      "TotalPointsDto": {
        "type": "object",
        "properties": {
          "totalPoints": {
            "type": "string",
            "example": "1234567.89",
            "description": "Total points distributed (precision: 9)"
          },
          "referralPoints": {
            "type": "string",
            "example": "123456.78",
            "description": "Total referral points distributed (precision: 9)"
          },
          "updatedAt": {
            "type": "integer",
            "example": 1712019600000,
            "description": "Last update timestamp of the aggregated points periods (ms since Unix Epoch)",
            "format": "int64"
          }
        },
        "required": [
          "totalPoints",
          "referralPoints"
        ]
      },
      "ReferralCodeUsageDto": {
        "type": "object",
        "properties": {
          "code": {
            "type": "string",
            "example": "XYZ123456789",
            "description": "The referral code"
          },
          "remainingUsage": {
            "type": "number",
            "example": 5,
            "description": "Number of remaining times the code can be claimed"
          }
        },
        "required": [
          "code",
          "remainingUsage"
        ]
      },
      "ReferralDto": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "example": "9036443a-441a-4a66-87f2-bd5c44cdca7a",
            "description": "Id representing the referral",
            "format": "uuid"
          },
          "referee": {
            "type": "string",
            "example": "0x4c9EDD5852cd905f086C759E8383e09bff1E68B3",
            "description": "Address of the referee (non-checksummed)",
            "format": "hex"
          },
          "referrer": {
            "type": "string",
            "example": "0x41e038d9c9aF27369EcBCe72A69a96695A1fD0D3",
            "description": "Address of the referrer (non-checksummed; undefined if not set)",
            "format": "hex"
          },
          "code": {
            "type": "string",
            "example": "XYZ123456789",
            "description": "The referee's referral code to be shared and claimed by others (undefined if not activated)"
          },
          "codeUsageRemaining": {
            "type": "number",
            "example": 5,
            "description": "Number of remaining times the referral code can be claimed"
          },
          "refereeTotalPoints": {
            "type": "string",
            "example": "1234567.890000000",
            "description": "Total points (excl. referral points) earned by the referee since referee claimed the code"
          },
          "createdAt": {
            "type": "number",
            "example": 1712019600000,
            "description": "Timestamp of when this referral was activated (ms since Unix Epoch)"
          }
        },
        "required": [
          "id",
          "referee",
          "codeUsageRemaining",
          "refereeTotalPoints",
          "createdAt"
        ]
      },
      "PageOfReferralDtos": {
        "type": "object",
        "properties": {
          "hasNext": {
            "type": "boolean",
            "example": true,
            "description": "Whether there are more objects to paginate through"
          },
          "nextCursor": {
            "type": "string",
            "description": "Pointer to the next page in pagination dataset"
          },
          "data": {
            "description": "Array of referral objects",
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ReferralDto"
            }
          }
        },
        "required": [
          "hasNext",
          "data"
        ]
      },
      "ClaimReferralCodeDtoData": {
        "type": "object",
        "properties": {
          "sender": {
            "type": "string",
            "example": "0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045",
            "description": "Address that signed this message",
            "format": "hex"
          },
          "intent": {
            "$ref": "#/components/schemas/IntentEnum"
          },
          "signedAt": {
            "type": "integer",
            "example": 1712019600,
            "description": "Message signedAt current timestamp (seconds since Unix Epoch)",
            "format": "int64"
          },
          "code": {
            "type": "string",
            "minLength": 12,
            "maxLength": 12,
            "pattern": "/^[A-Z0-9]+$/",
            "example": "XYZ123456789",
            "description": "The referral code to claim"
          }
        },
        "required": [
          "sender",
          "intent",
          "signedAt",
          "code"
        ]
      },
      "ClaimReferralCodeDto": {
        "type": "object",
        "properties": {
          "signature": {
            "type": "string",
            "description": "The signature from signTypedData(...) signed by the sender",
            "format": "hex"
          },
          "data": {
            "$ref": "#/components/schemas/ClaimReferralCodeDtoData"
          }
        },
        "required": [
          "signature",
          "data"
        ]
      },
      "ActivateReferralDtoData": {
        "type": "object",
        "properties": {
          "sender": {
            "type": "string",
            "example": "0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045",
            "description": "Address that signed this message",
            "format": "hex"
          },
          "intent": {
            "$ref": "#/components/schemas/IntentEnum"
          },
          "signedAt": {
            "type": "integer",
            "example": 1712019600,
            "description": "Message signedAt current timestamp (seconds since Unix Epoch)",
            "format": "int64"
          },
          "subaccount": {
            "type": "string",
            "example": "0x7072696d61727900000000000000000000000000000000000000000000000000",
            "description": "Bytes32 encoded subaccount name (0x prefix, zero padded)",
            "format": "hex"
          }
        },
        "required": [
          "sender",
          "intent",
          "signedAt",
          "subaccount"
        ]
      },
      "ActivateReferralDto": {
        "type": "object",
        "properties": {
          "signature": {
            "type": "string",
            "description": "The signature from signTypedData(...) signed by the sender",
            "format": "hex"
          },
          "data": {
            "$ref": "#/components/schemas/ActivateReferralDtoData"
          }
        },
        "required": [
          "signature",
          "data"
        ]
      },
      "MaintenanceDto": {
        "type": "object",
        "properties": {
          "isEnabled": {
            "type": "boolean",
            "example": true,
            "description": "Whether the maintenance mode is enabled"
          }
        },
        "required": [
          "isEnabled"
        ]
      },
      "TickerWsDataDto": {
        "type": "object",
        "properties": {
          "s": {
            "type": "string",
            "example": "BTCUSD",
            "description": "Symbol for the market (e.g. BTCUSD, ETHUSD)"
          },
          "t": {
            "type": "number",
            "example": 1733200000000,
            "description": "BBO timestamp (ms since Unix Epoch)"
          },
          "bidPx": {
            "type": "string",
            "example": "104399.65",
            "description": "Best bid price in USD expressed as a decimal (precision: 9)"
          },
          "askPx": {
            "type": "string",
            "example": "104400.1",
            "description": "Best ask price in USD expressed as a decimal (precision: 9)"
          },
          "bidAmt": {
            "type": "string",
            "example": "10.5",
            "description": "Best bid quantity expressed as a decimal (precision: 9)"
          },
          "askAmt": {
            "type": "string",
            "example": "15.75",
            "description": "Best ask quantity expressed as a decimal (precision: 9)"
          },
          "markPx": {
            "type": "string",
            "example": "104399.7",
            "description": "Oracle price in USD expressed as a decimal (precision: 9)"
          },
          "markPx24h": {
            "type": "string",
            "example": "101228.38",
            "description": "Price of product 24hrs ago in USD expressed as a decimal (precision: 9)"
          },
          "vol24h": {
            "type": "string",
            "example": "1234.567",
            "description": "24-hour trading volume in base token native units (precision: 9)"
          },
          "oi": {
            "type": "string",
            "example": "5678.123",
            "description": "Open interest of both sides in native units (precision: 9)"
          },
          "fr1h": {
            "type": "string",
            "example": "0.00125",
            "description": "Projected funding rate for end of current hour (precision: 9)"
          }
        },
        "required": [
          "s"
        ]
      },
      "TickerWsDto": {
        "type": "object",
        "properties": {
          "e": {
            "$ref": "#/components/schemas/EEnum"
          },
          "t": {
            "type": "number",
            "example": 1733200000123,
            "description": "Server timestamp (ms since Unix Epoch)"
          },
          "data": {
            "$ref": "#/components/schemas/TickerWsDataDto"
          }
        },
        "required": [
          "e",
          "t",
          "data"
        ]
      },
      "OrderType": {
        "type": "string",
        "enum": [
          "LIMIT",
          "MARKET"
        ],
        "description": "Extracted enum for OrderType"
      },
      "OrderSide": {
        "type": "integer",
        "enum": [
          0,
          1
        ],
        "description": "Extracted enum for OrderSide",
        "x-enum-varnames": [
          "BUY",
          "SELL"
        ]
      },
      "OrderStatus": {
        "type": "string",
        "enum": [
          "NEW",
          "PENDING",
          "FILLED_PARTIAL",
          "FILLED",
          "REJECTED",
          "CANCELED",
          "EXPIRED"
        ],
        "description": "Extracted enum for OrderStatus"
      },
      "StopTypeEnum": {
        "type": "integer",
        "enum": [
          0,
          1
        ],
        "description": "Extracted enum for StopTypeEnum",
        "x-enum-varnames": [
          "GAIN",
          "LOSS"
        ]
      },
      "StopPriceTypeEnum": {
        "type": "integer",
        "enum": [
          0,
          1
        ],
        "description": "Extracted enum for StopPriceTypeEnum",
        "x-enum-varnames": [
          "LAST_PRICE",
          "MARK_PRICE"
        ]
      },
      "TimeInForce": {
        "type": "string",
        "enum": [
          "GTD",
          "IOC",
          "FOK"
        ],
        "description": "Extracted enum for TimeInForce"
      },
      "GroupContingencyTypeEnum": {
        "type": "integer",
        "enum": [
          0,
          1
        ],
        "description": "Extracted enum for GroupContingencyTypeEnum",
        "x-enum-varnames": [
          "OTO",
          "OCO"
        ]
      },
      "TriggeredEnum": {
        "type": "string",
        "enum": [
          "NOT_TRIGGERED",
          "TRIGGERED",
          "STOP_ORDER_TRIGGERED",
          "OCO_ORDER_TRIGGERED",
          "OTO_ORDER_TRIGGERED"
        ],
        "description": "Extracted enum for TriggeredEnum"
      },
      "ErrorEnum": {
        "type": "string",
        "enum": [
          "Bad Request"
        ],
        "description": "Extracted enum for ErrorEnum"
      },
      "UnauthorizedDtoErrorEnum": {
        "type": "string",
        "enum": [
          "Unauthorized"
        ],
        "description": "Extracted enum for UnauthorizedDtoErrorEnum"
      },
      "ForbiddenDtoErrorEnum": {
        "type": "string",
        "enum": [
          "Forbidden"
        ],
        "description": "Extracted enum for ForbiddenDtoErrorEnum"
      },
      "NotFoundDtoErrorEnum": {
        "type": "string",
        "enum": [
          "Not Found"
        ],
        "description": "Extracted enum for NotFoundDtoErrorEnum"
      },
      "UnprocessableEntityDtoErrorEnum": {
        "type": "string",
        "enum": [
          "Unprocessable Entity"
        ],
        "description": "Extracted enum for UnprocessableEntityDtoErrorEnum"
      },
      "TooManyRequestsDtoErrorEnum": {
        "type": "string",
        "enum": [
          "Too Many Requests"
        ],
        "description": "Extracted enum for TooManyRequestsDtoErrorEnum"
      },
      "TooManyRequestsDtoOrderType": {
        "type": "string",
        "enum": [
          "RATE_LIMIT_IP",
          "RATE_LIMIT_ACCOUNT",
          "RATE_LIMIT_WITHDRAW",
          "RATE_LIMIT_LINKED_SIGNER"
        ],
        "description": "Extracted enum for TooManyRequestsDtoOrderType"
      },
      "EngineTypeEnum": {
        "type": "integer",
        "enum": [
          0,
          1
        ],
        "description": "Extracted enum for EngineTypeEnum",
        "x-enum-varnames": [
          "PERP",
          "SPOT"
        ]
      },
      "ResultEnum": {
        "type": "string",
        "enum": [
          "AccountSuspended",
          "CausesImmediateLiquidation",
          "DuplicateSameSideOco",
          "ImmediateMatchPostOnly",
          "InsufficientBalance",
          "LiquidationError",
          "MarketOrderReachedMaxSlippage",
          "OcoFilled",
          "Ok",
          "OpenValueCapExceeded",
          "OrderIncreasesPosition",
          "RiskLimitExceeded",
          "SignerRevoked",
          "TriggerCanceledError",
          "UnfilledFillOrKill",
          "UnfilledImmediateOrCancel",
          "UnfilledMarketOrder"
        ],
        "description": "Extracted enum for ResultEnum"
      },
      "MessageEnum": {
        "type": "string",
        "enum": [
          "AccountSuspended",
          "DuplicateClientOrderId",
          "ExchangeSuspended",
          "InsufficientBalance",
          "InvalidBinaryData",
          "InvalidExpireTime",
          "InvalidGroupContingencyType",
          "InvalidNonceForSigner",
          "InvalidSigner",
          "InvalidSignerAddress",
          "InvalidTimeInForce",
          "LiquidationError",
          "MarginAccountBalanceZero",
          "NonceAlreadyUsed",
          "PriceAboveMaximum",
          "PriceBelowMinimum",
          "RiskLimitExceeded",
          "TooManyOpenOrders",
          "TooManyPositions",
          "TooManyStopOrders",
          "InsuranceFundCannotOpenPositions",
          "InstrumentOpenValueCapExceeded",
          "QuantityAboveMaximum",
          "QuantityNotMultipleOfLotSize",
          "OrderWithZeroQuantity"
        ],
        "description": "Extracted enum for MessageEnum"
      },
      "SubmitOrderFailedDtoErrorEnum": {
        "type": "string",
        "enum": [
          "Unprocessable Entity"
        ],
        "description": "Extracted enum for SubmitOrderFailedDtoErrorEnum"
      },
      "CodeEnum": {
        "type": "string",
        "enum": [
          "AccountSuspended",
          "CausesImmediateLiquidation",
          "DuplicateSameSideOco",
          "ImmediateMatchPostOnly",
          "InsufficientBalance",
          "LiquidationError",
          "MarketOrderReachedMaxSlippage",
          "OcoFilled",
          "Ok",
          "OpenValueCapExceeded",
          "OrderIncreasesPosition",
          "RiskLimitExceeded",
          "SignerRevoked",
          "TriggerCanceledError",
          "UnfilledFillOrKill",
          "UnfilledImmediateOrCancel",
          "UnfilledMarketOrder"
        ],
        "description": "Extracted enum for CodeEnum"
      },
      "DryRunOrderFailedDtoCodeEnum": {
        "type": "string",
        "enum": [
          "AccountSuspended",
          "DuplicateClientOrderId",
          "ExchangeSuspended",
          "InsufficientBalance",
          "InvalidBinaryData",
          "InvalidExpireTime",
          "InvalidGroupContingencyType",
          "InvalidNonceForSigner",
          "InvalidSigner",
          "InvalidSignerAddress",
          "InvalidTimeInForce",
          "LiquidationError",
          "MarginAccountBalanceZero",
          "NonceAlreadyUsed",
          "PriceAboveMaximum",
          "PriceBelowMinimum",
          "RiskLimitExceeded",
          "TooManyOpenOrders",
          "TooManyPositions",
          "TooManyStopOrders",
          "InsuranceFundCannotOpenPositions",
          "InstrumentOpenValueCapExceeded",
          "QuantityAboveMaximum",
          "QuantityNotMultipleOfLotSize",
          "OrderWithZeroQuantity"
        ],
        "description": "Extracted enum for DryRunOrderFailedDtoCodeEnum"
      },
      "DryRunOrderFailedUnprocessableEntityDtoErrorEnum": {
        "type": "string",
        "enum": [
          "Unprocessable Entity"
        ],
        "description": "Extracted enum for DryRunOrderFailedUnprocessableEntityDtoErrorEnum"
      },
      "CancelOrderResultDtoResultEnum": {
        "type": "string",
        "enum": [
          "AlreadyCanceled",
          "AlreadyExpired",
          "AlreadyFilled",
          "NotFound",
          "Ok",
          "NonceAlreadyUsed",
          "Unknown"
        ],
        "description": "Extracted enum for CancelOrderResultDtoResultEnum"
      },
      "OrderFillDtoOrderType": {
        "type": "string",
        "enum": [
          "MARKET",
          "LIMIT"
        ],
        "description": "Extracted enum for OrderFillDtoOrderType"
      },
      "MakerSideEnum": {
        "type": "integer",
        "enum": [
          0,
          1
        ],
        "description": "Extracted enum for MakerSideEnum",
        "x-enum-varnames": [
          "BUY",
          "SELL"
        ]
      },
      "TakerSideEnum": {
        "type": "integer",
        "enum": [
          0,
          1
        ],
        "description": "Extracted enum for TakerSideEnum",
        "x-enum-varnames": [
          "BUY",
          "SELL"
        ]
      },
      "PositionFillDtoOrderType": {
        "type": "string",
        "enum": [
          "MARKET",
          "LIMIT",
          "REALIZED_PNL",
          "LIQUIDATION",
          "REALIZED_FUNDING"
        ],
        "description": "Extracted enum for PositionFillDtoOrderType"
      },
      "CauseEnum": {
        "type": "string",
        "enum": [
          "MarkChanged",
          "Funding"
        ],
        "description": "Extracted enum for CauseEnum"
      },
      "PositionSideEnum": {
        "type": "integer",
        "enum": [
          0,
          1
        ],
        "description": "Extracted enum for PositionSideEnum",
        "x-enum-varnames": [
          "BUY",
          "SELL"
        ]
      },
      "ProductDtoOrderStatus": {
        "type": "string",
        "enum": [
          "PENDING",
          "ACTIVE"
        ],
        "description": "Extracted enum for ProductDtoOrderStatus"
      },
      "MethodEnum": {
        "type": "string",
        "enum": [
          "GET",
          "POST",
          "PUT",
          "DELETE",
          "PATCH",
          "OPTIONS",
          "HEAD"
        ],
        "description": "Extracted enum for MethodEnum"
      },
      "ProtocolEnum": {
        "type": "string",
        "enum": [
          "HTTP"
        ],
        "description": "Extracted enum for ProtocolEnum"
      },
      "HttpPaginatedRateLimitEndpointDtoOrderType": {
        "type": "string",
        "enum": [
          "PAGINATED"
        ],
        "description": "Extracted enum for HttpPaginatedRateLimitEndpointDtoOrderType"
      },
      "HttpFixedRateLimitEndpointDtoOrderType": {
        "type": "string",
        "enum": [
          "FIXED"
        ],
        "description": "Extracted enum for HttpFixedRateLimitEndpointDtoOrderType"
      },
      "WsFixedRateLimitEndpointDtoProtocolEnum": {
        "type": "string",
        "enum": [
          "WS"
        ],
        "description": "Extracted enum for WsFixedRateLimitEndpointDtoProtocolEnum"
      },
      "WsFixedRateLimitEndpointDtoOrderType": {
        "type": "string",
        "enum": [
          "FIXED"
        ],
        "description": "Extracted enum for WsFixedRateLimitEndpointDtoOrderType"
      },
      "CategoryEnum": {
        "type": "string",
        "enum": [
          "TRADE_SESSION",
          "API"
        ],
        "description": "Extracted enum for CategoryEnum"
      },
      "SignerDtoOrderStatus": {
        "type": "string",
        "enum": [
          "PENDING",
          "ACTIVE",
          "PENDING_REVOKE",
          "REVOKED",
          "REJECTED"
        ],
        "description": "Extracted enum for SignerDtoOrderStatus"
      },
      "WithdrawDtoOrderStatus": {
        "type": "string",
        "enum": [
          "SUBMITTED",
          "PENDING",
          "COMPLETED",
          "REJECTED"
        ],
        "description": "Extracted enum for WithdrawDtoOrderStatus"
      },
      "TransferDtoOrderStatus": {
        "type": "string",
        "enum": [
          "SUBMITTED",
          "PENDING",
          "COMPLETED",
          "REJECTED"
        ],
        "description": "Extracted enum for TransferDtoOrderStatus"
      },
      "TransferDtoOrderType": {
        "type": "string",
        "enum": [
          "DEPOSIT",
          "WITHDRAW"
        ],
        "description": "Extracted enum for TransferDtoOrderType"
      },
      "LzDestinationEidEnum": {
        "type": "integer",
        "enum": [
          0,
          40422,
          40231,
          40161,
          30391,
          30110,
          30101
        ],
        "description": "Extracted enum for LzDestinationEidEnum",
        "x-enum-varnames": [
          "NONE",
          "ETHEREAL_TESTNET",
          "ARBITRUM_SEPOLIA",
          "ETHEREUM_SEPOLIA",
          "ETHEREAL_MAINNET",
          "ARBITRUM_MAINNET",
          "ETHEREUM_MAINNET"
        ]
      },
      "WithdrawFailedDtoMessageEnum": {
        "type": "string",
        "enum": [
          "AccountSuspended",
          "EngineSuspended",
          "InsufficientBalance",
          "InsuranceFundCannotWithdraw"
        ],
        "description": "Extracted enum for WithdrawFailedDtoMessageEnum"
      },
      "WithdrawFailedDtoErrorEnum": {
        "type": "string",
        "enum": [
          "Unprocessable Entity"
        ],
        "description": "Extracted enum for WithdrawFailedDtoErrorEnum"
      },
      "TierEnum": {
        "type": "integer",
        "enum": [
          0,
          1,
          2,
          3,
          4,
          5
        ],
        "description": "Extracted enum for TierEnum",
        "x-enum-varnames": [
          "TIER_0",
          "TIER_1",
          "TIER_2",
          "TIER_3",
          "TIER_4",
          "TIER_5"
        ]
      },
      "IntentEnum": {
        "type": "integer",
        "enum": [
          0,
          1,
          2,
          3
        ],
        "description": "Extracted enum for IntentEnum",
        "x-enum-varnames": [
          "REFERRAL_ACTIVATION",
          "REFERRAL_CLAIM",
          "REFERRAL_READ",
          "POINTS_READ"
        ]
      },
      "EEnum": {
        "type": "string",
        "enum": [
          "Ticker"
        ],
        "description": "Extracted enum for EEnum"
      }
    }
  }
}