{
  "openapi": "3.1.0",
  "info": {
    "title": "Instruments",
    "version": "9.87.0",
    "description": "tastytrade Instruments API.",
    "contact": {
      "name": "tastytrade API support",
      "email": "api.support@tastytrade.com",
      "url": "https://developer.tastytrade.com"
    }
  },
  "tags": [
    {
      "name": "instruments"
    },
    {
      "name": "futures-option-chains"
    },
    {
      "name": "option-chains"
    }
  ],
  "paths": {
    "/instruments/cryptocurrencies": {
      "get": {
        "description": "Returns active cryptocurrency instruments, optionally filtered by one or more symbols. Cryptocurrency symbols contain a forward slash (e.g. `BTC/USD`), so URL-encode them (e.g. `BTC%2FUSD`) before placing them in query parameters.",
        "parameters": [
          {
            "in": "query",
            "name": "symbol",
            "description": "Symbol(s) (example: symbol[]={value1}&symbol[]={value2})",
            "required": false,
            "style": "form",
            "explode": true,
            "schema": {
              "type": "array",
              "items": {
                "type": "string"
              }
            },
            "example": [
              "BTC/USD"
            ]
          }
        ],
        "responses": {
          "200": {
            "description": "Cryptocurrency instruments matching the requested symbols.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "data": {
                      "type": "object",
                      "properties": {
                        "items": {
                          "type": "array",
                          "items": {
                            "$ref": "#/components/schemas/Cryptocurrency"
                          }
                        }
                      },
                      "required": [
                        "items"
                      ]
                    },
                    "context": {
                      "type": "string",
                      "example": "/instruments/cryptocurrencies"
                    },
                    "pagination": {
                      "type": "object",
                      "description": "Paging metadata, present on paginated list responses.",
                      "properties": {
                        "per-page": {
                          "type": "integer"
                        },
                        "page-offset": {
                          "type": "integer"
                        },
                        "item-offset": {
                          "type": "integer"
                        },
                        "total-items": {
                          "type": "integer"
                        },
                        "total-pages": {
                          "type": "integer"
                        },
                        "current-item-count": {
                          "type": "integer"
                        }
                      }
                    }
                  },
                  "required": [
                    "data",
                    "context"
                  ]
                }
              }
            }
          },
          "401": {
            "description": "Missing or expired access token, or a missing/malformed `User-Agent` header.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "description": "Standard tastytrade error envelope. Branch on error.code, not the message text.",
                  "properties": {
                    "error": {
                      "type": "object",
                      "required": [
                        "code",
                        "message"
                      ],
                      "properties": {
                        "code": {
                          "type": "string",
                          "description": "Machine-readable error code (see the Error reference)."
                        },
                        "message": {
                          "type": "string",
                          "description": "Human-readable explanation."
                        },
                        "errors": {
                          "type": "array",
                          "description": "Present for multi-error / validation failures; one entry per problem.",
                          "items": {
                            "type": "object",
                            "properties": {
                              "code": {
                                "type": "string"
                              },
                              "message": {
                                "type": "string"
                              },
                              "domain": {
                                "type": "string"
                              }
                            }
                          }
                        }
                      }
                    }
                  },
                  "required": [
                    "error"
                  ],
                  "example": {
                    "error": {
                      "code": "unauthorized",
                      "message": "No valid access token was provided; access tokens expire after 15 minutes."
                    }
                  }
                }
              }
            }
          },
          "429": {
            "description": "Request rate exceeded. Back off exponentially and reduce request frequency.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "description": "Standard tastytrade error envelope. Branch on error.code, not the message text.",
                  "properties": {
                    "error": {
                      "type": "object",
                      "required": [
                        "code",
                        "message"
                      ],
                      "properties": {
                        "code": {
                          "type": "string",
                          "description": "Machine-readable error code (see the Error reference)."
                        },
                        "message": {
                          "type": "string",
                          "description": "Human-readable explanation."
                        },
                        "errors": {
                          "type": "array",
                          "description": "Present for multi-error / validation failures; one entry per problem.",
                          "items": {
                            "type": "object",
                            "properties": {
                              "code": {
                                "type": "string"
                              },
                              "message": {
                                "type": "string"
                              },
                              "domain": {
                                "type": "string"
                              }
                            }
                          }
                        }
                      }
                    }
                  },
                  "required": [
                    "error"
                  ]
                }
              }
            }
          }
        },
        "tags": [
          "instruments"
        ],
        "operationId": "getInstrumentsCryptocurrencies",
        "x-tt-class": "read",
        "x-money-moving": false,
        "x-idempotent": true,
        "x-rate-limit-bucket": "read",
        "summary": "List Cryptocurrencies"
      }
    },
    "/instruments/cryptocurrencies/{symbol}": {
      "get": {
        "description": "Returns a single cryptocurrency instrument for the given symbol. The symbol contains a forward slash (e.g. `BTC/USD`) and must be URL-encoded (e.g. `BTC%2FUSD`) in the path.",
        "parameters": [
          {
            "in": "path",
            "name": "symbol",
            "description": "Symbol",
            "required": true,
            "schema": {
              "type": "string"
            },
            "example": "BTC/USD"
          }
        ],
        "responses": {
          "200": {
            "description": "The cryptocurrency instrument for the requested symbol.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/Cryptocurrency"
                    },
                    "context": {
                      "type": "string",
                      "example": "/instruments/cryptocurrencies/{symbol}"
                    }
                  },
                  "required": [
                    "data",
                    "context"
                  ]
                }
              }
            }
          },
          "401": {
            "description": "Missing or expired access token, or a missing/malformed `User-Agent` header.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "description": "Standard tastytrade error envelope. Branch on error.code, not the message text.",
                  "properties": {
                    "error": {
                      "type": "object",
                      "required": [
                        "code",
                        "message"
                      ],
                      "properties": {
                        "code": {
                          "type": "string",
                          "description": "Machine-readable error code (see the Error reference)."
                        },
                        "message": {
                          "type": "string",
                          "description": "Human-readable explanation."
                        },
                        "errors": {
                          "type": "array",
                          "description": "Present for multi-error / validation failures; one entry per problem.",
                          "items": {
                            "type": "object",
                            "properties": {
                              "code": {
                                "type": "string"
                              },
                              "message": {
                                "type": "string"
                              },
                              "domain": {
                                "type": "string"
                              }
                            }
                          }
                        }
                      }
                    }
                  },
                  "required": [
                    "error"
                  ],
                  "example": {
                    "error": {
                      "code": "unauthorized",
                      "message": "No valid access token was provided; access tokens expire after 15 minutes."
                    }
                  }
                }
              }
            }
          },
          "404": {
            "description": "No cryptocurrency exists for the given symbol. Verify the symbol and that it is URL-encoded.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "description": "Standard tastytrade error envelope. Branch on error.code, not the message text.",
                  "properties": {
                    "error": {
                      "type": "object",
                      "required": [
                        "code",
                        "message"
                      ],
                      "properties": {
                        "code": {
                          "type": "string",
                          "description": "Machine-readable error code (see the Error reference)."
                        },
                        "message": {
                          "type": "string",
                          "description": "Human-readable explanation."
                        },
                        "errors": {
                          "type": "array",
                          "description": "Present for multi-error / validation failures; one entry per problem.",
                          "items": {
                            "type": "object",
                            "properties": {
                              "code": {
                                "type": "string"
                              },
                              "message": {
                                "type": "string"
                              },
                              "domain": {
                                "type": "string"
                              }
                            }
                          }
                        }
                      }
                    }
                  },
                  "required": [
                    "error"
                  ]
                }
              }
            }
          },
          "429": {
            "description": "Request rate exceeded. Back off exponentially and reduce request frequency.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "description": "Standard tastytrade error envelope. Branch on error.code, not the message text.",
                  "properties": {
                    "error": {
                      "type": "object",
                      "required": [
                        "code",
                        "message"
                      ],
                      "properties": {
                        "code": {
                          "type": "string",
                          "description": "Machine-readable error code (see the Error reference)."
                        },
                        "message": {
                          "type": "string",
                          "description": "Human-readable explanation."
                        },
                        "errors": {
                          "type": "array",
                          "description": "Present for multi-error / validation failures; one entry per problem.",
                          "items": {
                            "type": "object",
                            "properties": {
                              "code": {
                                "type": "string"
                              },
                              "message": {
                                "type": "string"
                              },
                              "domain": {
                                "type": "string"
                              }
                            }
                          }
                        }
                      }
                    }
                  },
                  "required": [
                    "error"
                  ]
                }
              }
            }
          }
        },
        "tags": [
          "instruments"
        ],
        "operationId": "getInstrumentsCryptocurrenciesSymbol",
        "x-tt-class": "read",
        "x-money-moving": false,
        "x-idempotent": true,
        "x-rate-limit-bucket": "read",
        "summary": "Get Cryptocurrency"
      }
    },
    "/instruments/equities": {
      "get": {
        "description": "Returns equity definitions for one or more symbols. Optionally filter by lendability, or restrict results to index (`is-index`) or ETF (`is-etf`) instruments.",
        "parameters": [
          {
            "in": "query",
            "name": "symbol",
            "description": "The symbol of the equity(s), i.e `AAPL` (example: symbol[]={value1}&symbol[]={value2})",
            "required": false,
            "style": "form",
            "explode": true,
            "schema": {
              "type": "array",
              "items": {
                "type": "string"
              }
            },
            "example": [
              "AAPL"
            ]
          },
          {
            "in": "query",
            "name": "is-etf",
            "description": "Flag indicating if equity is an etf instrument",
            "required": false,
            "schema": {
              "type": "boolean"
            },
            "example": true
          },
          {
            "in": "query",
            "name": "is-index",
            "description": "Flag indicating if equity is an index instrument",
            "required": false,
            "schema": {
              "type": "boolean"
            },
            "example": true
          },
          {
            "in": "query",
            "name": "lendability",
            "description": "Lendability",
            "required": false,
            "schema": {
              "type": "string",
              "enum": [
                "Easy To Borrow",
                "Locate Required",
                "Preborrow"
              ]
            },
            "example": "Easy To Borrow"
          }
        ],
        "responses": {
          "200": {
            "description": "Equity definitions matching the requested symbols and filters.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "data": {
                      "type": "object",
                      "properties": {
                        "items": {
                          "type": "array",
                          "items": {
                            "$ref": "#/components/schemas/Equity"
                          }
                        }
                      },
                      "required": [
                        "items"
                      ]
                    },
                    "context": {
                      "type": "string",
                      "example": "/instruments/equities"
                    },
                    "pagination": {
                      "type": "object",
                      "description": "Paging metadata, present on paginated list responses.",
                      "properties": {
                        "per-page": {
                          "type": "integer"
                        },
                        "page-offset": {
                          "type": "integer"
                        },
                        "item-offset": {
                          "type": "integer"
                        },
                        "total-items": {
                          "type": "integer"
                        },
                        "total-pages": {
                          "type": "integer"
                        },
                        "current-item-count": {
                          "type": "integer"
                        }
                      }
                    }
                  },
                  "required": [
                    "data",
                    "context"
                  ]
                }
              }
            }
          },
          "401": {
            "description": "Missing or expired access token, or a missing/malformed `User-Agent` header.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "description": "Standard tastytrade error envelope. Branch on error.code, not the message text.",
                  "properties": {
                    "error": {
                      "type": "object",
                      "required": [
                        "code",
                        "message"
                      ],
                      "properties": {
                        "code": {
                          "type": "string",
                          "description": "Machine-readable error code (see the Error reference)."
                        },
                        "message": {
                          "type": "string",
                          "description": "Human-readable explanation."
                        },
                        "errors": {
                          "type": "array",
                          "description": "Present for multi-error / validation failures; one entry per problem.",
                          "items": {
                            "type": "object",
                            "properties": {
                              "code": {
                                "type": "string"
                              },
                              "message": {
                                "type": "string"
                              },
                              "domain": {
                                "type": "string"
                              }
                            }
                          }
                        }
                      }
                    }
                  },
                  "required": [
                    "error"
                  ],
                  "example": {
                    "error": {
                      "code": "unauthorized",
                      "message": "No valid access token was provided; access tokens expire after 15 minutes."
                    }
                  }
                }
              }
            }
          },
          "429": {
            "description": "Request rate exceeded. Back off exponentially and reduce request frequency.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "description": "Standard tastytrade error envelope. Branch on error.code, not the message text.",
                  "properties": {
                    "error": {
                      "type": "object",
                      "required": [
                        "code",
                        "message"
                      ],
                      "properties": {
                        "code": {
                          "type": "string",
                          "description": "Machine-readable error code (see the Error reference)."
                        },
                        "message": {
                          "type": "string",
                          "description": "Human-readable explanation."
                        },
                        "errors": {
                          "type": "array",
                          "description": "Present for multi-error / validation failures; one entry per problem.",
                          "items": {
                            "type": "object",
                            "properties": {
                              "code": {
                                "type": "string"
                              },
                              "message": {
                                "type": "string"
                              },
                              "domain": {
                                "type": "string"
                              }
                            }
                          }
                        }
                      }
                    }
                  },
                  "required": [
                    "error"
                  ]
                }
              }
            }
          }
        },
        "tags": [
          "instruments"
        ],
        "operationId": "getInstrumentsEquities",
        "x-tt-class": "read",
        "x-money-moving": false,
        "x-idempotent": true,
        "x-rate-limit-bucket": "read",
        "summary": "List Equities"
      }
    },
    "/instruments/equities/active": {
      "get": {
        "description": "Returns all active equities in a paginated fashion. Use `per-page` and `page-offset` to page through results, and optionally filter by lendability.",
        "parameters": [
          {
            "in": "query",
            "name": "page-offset",
            "required": false,
            "schema": {
              "type": "integer",
              "format": "int32",
              "default": 0
            },
            "example": 10
          },
          {
            "in": "query",
            "name": "per-page",
            "required": false,
            "schema": {
              "type": "integer",
              "format": "int32",
              "minimum": 1,
              "maximum": 5000,
              "default": 1000
            },
            "example": 10
          },
          {
            "in": "query",
            "name": "lendability",
            "description": "Lendability. i.e. `Easy To Borrow`, `Locate Required` or `Preborrow`",
            "required": false,
            "schema": {
              "type": "string",
              "enum": [
                "Easy To Borrow",
                "Locate Required",
                "Preborrow"
              ]
            },
            "example": "Easy To Borrow"
          }
        ],
        "responses": {
          "200": {
            "description": "A paginated list of active equities.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "data": {
                      "type": "object",
                      "properties": {
                        "items": {
                          "type": "array",
                          "items": {
                            "$ref": "#/components/schemas/Equity"
                          }
                        }
                      },
                      "required": [
                        "items"
                      ]
                    },
                    "context": {
                      "type": "string",
                      "example": "/instruments/equities/active"
                    },
                    "pagination": {
                      "type": "object",
                      "description": "Paging metadata, present on paginated list responses.",
                      "properties": {
                        "per-page": {
                          "type": "integer"
                        },
                        "page-offset": {
                          "type": "integer"
                        },
                        "item-offset": {
                          "type": "integer"
                        },
                        "total-items": {
                          "type": "integer"
                        },
                        "total-pages": {
                          "type": "integer"
                        },
                        "current-item-count": {
                          "type": "integer"
                        }
                      }
                    }
                  },
                  "required": [
                    "data",
                    "context"
                  ]
                }
              }
            }
          },
          "401": {
            "description": "Missing or expired access token, or a missing/malformed `User-Agent` header.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "description": "Standard tastytrade error envelope. Branch on error.code, not the message text.",
                  "properties": {
                    "error": {
                      "type": "object",
                      "required": [
                        "code",
                        "message"
                      ],
                      "properties": {
                        "code": {
                          "type": "string",
                          "description": "Machine-readable error code (see the Error reference)."
                        },
                        "message": {
                          "type": "string",
                          "description": "Human-readable explanation."
                        },
                        "errors": {
                          "type": "array",
                          "description": "Present for multi-error / validation failures; one entry per problem.",
                          "items": {
                            "type": "object",
                            "properties": {
                              "code": {
                                "type": "string"
                              },
                              "message": {
                                "type": "string"
                              },
                              "domain": {
                                "type": "string"
                              }
                            }
                          }
                        }
                      }
                    }
                  },
                  "required": [
                    "error"
                  ],
                  "example": {
                    "error": {
                      "code": "unauthorized",
                      "message": "No valid access token was provided; access tokens expire after 15 minutes."
                    }
                  }
                }
              }
            }
          },
          "429": {
            "description": "Request rate exceeded. Back off exponentially and reduce request frequency.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "description": "Standard tastytrade error envelope. Branch on error.code, not the message text.",
                  "properties": {
                    "error": {
                      "type": "object",
                      "required": [
                        "code",
                        "message"
                      ],
                      "properties": {
                        "code": {
                          "type": "string",
                          "description": "Machine-readable error code (see the Error reference)."
                        },
                        "message": {
                          "type": "string",
                          "description": "Human-readable explanation."
                        },
                        "errors": {
                          "type": "array",
                          "description": "Present for multi-error / validation failures; one entry per problem.",
                          "items": {
                            "type": "object",
                            "properties": {
                              "code": {
                                "type": "string"
                              },
                              "message": {
                                "type": "string"
                              },
                              "domain": {
                                "type": "string"
                              }
                            }
                          }
                        }
                      }
                    }
                  },
                  "required": [
                    "error"
                  ]
                }
              }
            }
          }
        },
        "tags": [
          "instruments"
        ],
        "operationId": "getInstrumentsEquitiesActive",
        "x-tt-class": "read",
        "x-money-moving": false,
        "x-idempotent": true,
        "x-rate-limit-bucket": "read",
        "summary": "List Active Equities"
      }
    },
    "/instruments/equities/{symbol}": {
      "get": {
        "description": "Returns a single equity definition for the provided symbol (e.g. `AAPL`).",
        "parameters": [
          {
            "in": "path",
            "name": "symbol",
            "description": "The symbol of the equity, i.e. `AAPL`",
            "required": true,
            "schema": {
              "type": "string"
            },
            "example": "AAPL"
          }
        ],
        "responses": {
          "200": {
            "description": "The equity definition for the requested symbol.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/Equity"
                    },
                    "context": {
                      "type": "string",
                      "example": "/instruments/equities/{symbol}"
                    }
                  },
                  "required": [
                    "data",
                    "context"
                  ]
                }
              }
            }
          },
          "401": {
            "description": "Missing or expired access token, or a missing/malformed `User-Agent` header.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "description": "Standard tastytrade error envelope. Branch on error.code, not the message text.",
                  "properties": {
                    "error": {
                      "type": "object",
                      "required": [
                        "code",
                        "message"
                      ],
                      "properties": {
                        "code": {
                          "type": "string",
                          "description": "Machine-readable error code (see the Error reference)."
                        },
                        "message": {
                          "type": "string",
                          "description": "Human-readable explanation."
                        },
                        "errors": {
                          "type": "array",
                          "description": "Present for multi-error / validation failures; one entry per problem.",
                          "items": {
                            "type": "object",
                            "properties": {
                              "code": {
                                "type": "string"
                              },
                              "message": {
                                "type": "string"
                              },
                              "domain": {
                                "type": "string"
                              }
                            }
                          }
                        }
                      }
                    }
                  },
                  "required": [
                    "error"
                  ],
                  "example": {
                    "error": {
                      "code": "unauthorized",
                      "message": "No valid access token was provided; access tokens expire after 15 minutes."
                    }
                  }
                }
              }
            }
          },
          "404": {
            "description": "No equity exists for the given symbol. Verify the symbol is correct.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "description": "Standard tastytrade error envelope. Branch on error.code, not the message text.",
                  "properties": {
                    "error": {
                      "type": "object",
                      "required": [
                        "code",
                        "message"
                      ],
                      "properties": {
                        "code": {
                          "type": "string",
                          "description": "Machine-readable error code (see the Error reference)."
                        },
                        "message": {
                          "type": "string",
                          "description": "Human-readable explanation."
                        },
                        "errors": {
                          "type": "array",
                          "description": "Present for multi-error / validation failures; one entry per problem.",
                          "items": {
                            "type": "object",
                            "properties": {
                              "code": {
                                "type": "string"
                              },
                              "message": {
                                "type": "string"
                              },
                              "domain": {
                                "type": "string"
                              }
                            }
                          }
                        }
                      }
                    }
                  },
                  "required": [
                    "error"
                  ]
                }
              }
            }
          },
          "429": {
            "description": "Request rate exceeded. Back off exponentially and reduce request frequency.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "description": "Standard tastytrade error envelope. Branch on error.code, not the message text.",
                  "properties": {
                    "error": {
                      "type": "object",
                      "required": [
                        "code",
                        "message"
                      ],
                      "properties": {
                        "code": {
                          "type": "string",
                          "description": "Machine-readable error code (see the Error reference)."
                        },
                        "message": {
                          "type": "string",
                          "description": "Human-readable explanation."
                        },
                        "errors": {
                          "type": "array",
                          "description": "Present for multi-error / validation failures; one entry per problem.",
                          "items": {
                            "type": "object",
                            "properties": {
                              "code": {
                                "type": "string"
                              },
                              "message": {
                                "type": "string"
                              },
                              "domain": {
                                "type": "string"
                              }
                            }
                          }
                        }
                      }
                    }
                  },
                  "required": [
                    "error"
                  ]
                }
              }
            }
          }
        },
        "tags": [
          "instruments"
        ],
        "operationId": "getInstrumentsEquitiesSymbol",
        "x-tt-class": "read",
        "x-money-moving": false,
        "x-idempotent": true,
        "x-rate-limit-bucket": "read",
        "summary": "Get Equity"
      }
    },
    "/instruments/equity-options": {
      "get": {
        "description": "Returns equity option definitions for one or more symbols in OCC symbology (e.g. `SPY   230731C00393000`). Use `active` to filter out non-standard / flex options and `with-expired` to include expired contracts.",
        "parameters": [
          {
            "in": "query",
            "name": "active",
            "description": "Whether an option is available for trading with the broker.\n                 Terminology is somewhat misleading as this is generally used to filter non-standard / flex options out.",
            "required": false,
            "schema": {
              "type": "boolean"
            },
            "example": true
          },
          {
            "in": "query",
            "name": "symbol",
            "description": "The symbol of the equity option(s) using OCC Symbology, i.e. `[FB    180629C00200000]` (example: symbol[]={value1}&symbol[]={value2})",
            "required": false,
            "style": "form",
            "explode": true,
            "schema": {
              "type": "array",
              "items": {
                "type": "string"
              }
            },
            "example": [
              "SPY   230731C00393000"
            ]
          },
          {
            "in": "query",
            "name": "with-expired",
            "description": "Include expired options",
            "required": false,
            "schema": {
              "type": "boolean"
            },
            "example": true
          }
        ],
        "responses": {
          "200": {
            "description": "Equity option definitions matching the requested symbols and filters.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "data": {
                      "type": "object",
                      "properties": {
                        "items": {
                          "type": "array",
                          "items": {
                            "$ref": "#/components/schemas/EquityOption"
                          }
                        }
                      },
                      "required": [
                        "items"
                      ]
                    },
                    "context": {
                      "type": "string",
                      "example": "/instruments/equity-options"
                    },
                    "pagination": {
                      "type": "object",
                      "description": "Paging metadata, present on paginated list responses.",
                      "properties": {
                        "per-page": {
                          "type": "integer"
                        },
                        "page-offset": {
                          "type": "integer"
                        },
                        "item-offset": {
                          "type": "integer"
                        },
                        "total-items": {
                          "type": "integer"
                        },
                        "total-pages": {
                          "type": "integer"
                        },
                        "current-item-count": {
                          "type": "integer"
                        }
                      }
                    }
                  },
                  "required": [
                    "data",
                    "context"
                  ]
                }
              }
            }
          },
          "401": {
            "description": "Missing or expired access token, or a missing/malformed `User-Agent` header.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "description": "Standard tastytrade error envelope. Branch on error.code, not the message text.",
                  "properties": {
                    "error": {
                      "type": "object",
                      "required": [
                        "code",
                        "message"
                      ],
                      "properties": {
                        "code": {
                          "type": "string",
                          "description": "Machine-readable error code (see the Error reference)."
                        },
                        "message": {
                          "type": "string",
                          "description": "Human-readable explanation."
                        },
                        "errors": {
                          "type": "array",
                          "description": "Present for multi-error / validation failures; one entry per problem.",
                          "items": {
                            "type": "object",
                            "properties": {
                              "code": {
                                "type": "string"
                              },
                              "message": {
                                "type": "string"
                              },
                              "domain": {
                                "type": "string"
                              }
                            }
                          }
                        }
                      }
                    }
                  },
                  "required": [
                    "error"
                  ],
                  "example": {
                    "error": {
                      "code": "unauthorized",
                      "message": "No valid access token was provided; access tokens expire after 15 minutes."
                    }
                  }
                }
              }
            }
          },
          "429": {
            "description": "Request rate exceeded. Back off exponentially and reduce request frequency.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "description": "Standard tastytrade error envelope. Branch on error.code, not the message text.",
                  "properties": {
                    "error": {
                      "type": "object",
                      "required": [
                        "code",
                        "message"
                      ],
                      "properties": {
                        "code": {
                          "type": "string",
                          "description": "Machine-readable error code (see the Error reference)."
                        },
                        "message": {
                          "type": "string",
                          "description": "Human-readable explanation."
                        },
                        "errors": {
                          "type": "array",
                          "description": "Present for multi-error / validation failures; one entry per problem.",
                          "items": {
                            "type": "object",
                            "properties": {
                              "code": {
                                "type": "string"
                              },
                              "message": {
                                "type": "string"
                              },
                              "domain": {
                                "type": "string"
                              }
                            }
                          }
                        }
                      }
                    }
                  },
                  "required": [
                    "error"
                  ]
                }
              }
            }
          }
        },
        "tags": [
          "instruments"
        ],
        "operationId": "getInstrumentsEquityOptions",
        "x-tt-class": "read",
        "x-money-moving": false,
        "x-idempotent": true,
        "x-rate-limit-bucket": "read",
        "summary": "List Equity Options"
      }
    },
    "/instruments/equity-options/{symbol}": {
      "get": {
        "description": "Returns a single equity option instrument for the given symbol in OCC symbology (e.g. `SPY   230731C00393000`). Remember to URL-encode the embedded spaces.",
        "parameters": [
          {
            "in": "path",
            "name": "symbol",
            "description": "The symbol of the equity option using OCC Symbology, i.e. `FB    180629C00200000`",
            "required": true,
            "schema": {
              "type": "string"
            },
            "example": "FB    180629C00200000"
          },
          {
            "in": "query",
            "name": "active",
            "description": "Whether an option is available for trading with the broker.\n                   Terminology is somewhat misleading as this is generally used to filter non-standard / flex options out.",
            "required": false,
            "schema": {
              "type": "boolean"
            },
            "example": true
          }
        ],
        "responses": {
          "200": {
            "description": "The equity option instrument for the requested symbol.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/EquityOption"
                    },
                    "context": {
                      "type": "string",
                      "example": "/instruments/equity-options/{symbol}"
                    }
                  },
                  "required": [
                    "data",
                    "context"
                  ]
                }
              }
            }
          },
          "401": {
            "description": "Missing or expired access token, or a missing/malformed `User-Agent` header.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "description": "Standard tastytrade error envelope. Branch on error.code, not the message text.",
                  "properties": {
                    "error": {
                      "type": "object",
                      "required": [
                        "code",
                        "message"
                      ],
                      "properties": {
                        "code": {
                          "type": "string",
                          "description": "Machine-readable error code (see the Error reference)."
                        },
                        "message": {
                          "type": "string",
                          "description": "Human-readable explanation."
                        },
                        "errors": {
                          "type": "array",
                          "description": "Present for multi-error / validation failures; one entry per problem.",
                          "items": {
                            "type": "object",
                            "properties": {
                              "code": {
                                "type": "string"
                              },
                              "message": {
                                "type": "string"
                              },
                              "domain": {
                                "type": "string"
                              }
                            }
                          }
                        }
                      }
                    }
                  },
                  "required": [
                    "error"
                  ],
                  "example": {
                    "error": {
                      "code": "unauthorized",
                      "message": "No valid access token was provided; access tokens expire after 15 minutes."
                    }
                  }
                }
              }
            }
          },
          "404": {
            "description": "No equity option exists for the given symbol. Verify the OCC symbol and that spaces are URL-encoded.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "description": "Standard tastytrade error envelope. Branch on error.code, not the message text.",
                  "properties": {
                    "error": {
                      "type": "object",
                      "required": [
                        "code",
                        "message"
                      ],
                      "properties": {
                        "code": {
                          "type": "string",
                          "description": "Machine-readable error code (see the Error reference)."
                        },
                        "message": {
                          "type": "string",
                          "description": "Human-readable explanation."
                        },
                        "errors": {
                          "type": "array",
                          "description": "Present for multi-error / validation failures; one entry per problem.",
                          "items": {
                            "type": "object",
                            "properties": {
                              "code": {
                                "type": "string"
                              },
                              "message": {
                                "type": "string"
                              },
                              "domain": {
                                "type": "string"
                              }
                            }
                          }
                        }
                      }
                    }
                  },
                  "required": [
                    "error"
                  ]
                }
              }
            }
          },
          "429": {
            "description": "Request rate exceeded. Back off exponentially and reduce request frequency.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "description": "Standard tastytrade error envelope. Branch on error.code, not the message text.",
                  "properties": {
                    "error": {
                      "type": "object",
                      "required": [
                        "code",
                        "message"
                      ],
                      "properties": {
                        "code": {
                          "type": "string",
                          "description": "Machine-readable error code (see the Error reference)."
                        },
                        "message": {
                          "type": "string",
                          "description": "Human-readable explanation."
                        },
                        "errors": {
                          "type": "array",
                          "description": "Present for multi-error / validation failures; one entry per problem.",
                          "items": {
                            "type": "object",
                            "properties": {
                              "code": {
                                "type": "string"
                              },
                              "message": {
                                "type": "string"
                              },
                              "domain": {
                                "type": "string"
                              }
                            }
                          }
                        }
                      }
                    }
                  },
                  "required": [
                    "error"
                  ]
                }
              }
            }
          }
        },
        "tags": [
          "instruments"
        ],
        "operationId": "getInstrumentsEquityOptionsSymbol",
        "x-tt-class": "read",
        "x-money-moving": false,
        "x-idempotent": true,
        "x-rate-limit-bucket": "read",
        "summary": "Get Equity Option"
      }
    },
    "/instruments/futures": {
      "get": {
        "description": "Returns active outright futures contracts, optionally filtered by symbol or product code. Each future includes its associated product metadata nested under `future-product`. Futures symbols begin with a forward slash (e.g. `/ESU3`); URL-encode the slash (e.g. `%2FESU3`).",
        "parameters": [
          {
            "in": "query",
            "name": "exchange",
            "description": "Name of the exchange for the product. Only used to avoid security id collisions if that is also given.",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "only-active-futures",
            "description": "If true (defaults to true), only active futures are returned.",
            "required": false,
            "schema": {
              "type": "boolean"
            },
            "example": true
          },
          {
            "in": "query",
            "name": "product-code",
            "description": "The product code of the future(s), i.e. `product-code[]=ES&product-code[]=6A`. \\\n                 Ignored if `symbol` parameter is given. (example: product-code[]={value1}&product-code[]={value2})",
            "required": false,
            "style": "form",
            "explode": true,
            "schema": {
              "type": "array",
              "items": {
                "type": "string"
              }
            }
          },
          {
            "in": "query",
            "name": "security-id",
            "description": "Exchange-specific ID used for order routing (example: security-id[]={value1}&security-id[]={value2})",
            "required": false,
            "style": "form",
            "explode": true,
            "schema": {
              "type": "array",
              "items": {
                "type": "string"
              }
            }
          },
          {
            "in": "query",
            "name": "symbol",
            "description": "The symbol of the future(s), i.e. `symbol[]=ESZ9`. Leading forward slash is not required. (example: symbol[]={value1}&symbol[]={value2})",
            "required": false,
            "style": "form",
            "explode": true,
            "schema": {
              "type": "array",
              "items": {
                "type": "string"
              }
            },
            "example": [
              "/ESU3"
            ]
          }
        ],
        "responses": {
          "200": {
            "description": "Outright futures matching the requested symbols, product codes, or security ids.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "data": {
                      "type": "object",
                      "properties": {
                        "items": {
                          "type": "array",
                          "items": {
                            "$ref": "#/components/schemas/Future"
                          }
                        }
                      },
                      "required": [
                        "items"
                      ]
                    },
                    "context": {
                      "type": "string",
                      "example": "/instruments/futures"
                    },
                    "pagination": {
                      "type": "object",
                      "description": "Paging metadata, present on paginated list responses.",
                      "properties": {
                        "per-page": {
                          "type": "integer"
                        },
                        "page-offset": {
                          "type": "integer"
                        },
                        "item-offset": {
                          "type": "integer"
                        },
                        "total-items": {
                          "type": "integer"
                        },
                        "total-pages": {
                          "type": "integer"
                        },
                        "current-item-count": {
                          "type": "integer"
                        }
                      }
                    }
                  },
                  "required": [
                    "data",
                    "context"
                  ]
                }
              }
            }
          },
          "401": {
            "description": "Missing or expired access token, or a missing/malformed `User-Agent` header.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "description": "Standard tastytrade error envelope. Branch on error.code, not the message text.",
                  "properties": {
                    "error": {
                      "type": "object",
                      "required": [
                        "code",
                        "message"
                      ],
                      "properties": {
                        "code": {
                          "type": "string",
                          "description": "Machine-readable error code (see the Error reference)."
                        },
                        "message": {
                          "type": "string",
                          "description": "Human-readable explanation."
                        },
                        "errors": {
                          "type": "array",
                          "description": "Present for multi-error / validation failures; one entry per problem.",
                          "items": {
                            "type": "object",
                            "properties": {
                              "code": {
                                "type": "string"
                              },
                              "message": {
                                "type": "string"
                              },
                              "domain": {
                                "type": "string"
                              }
                            }
                          }
                        }
                      }
                    }
                  },
                  "required": [
                    "error"
                  ],
                  "example": {
                    "error": {
                      "code": "unauthorized",
                      "message": "No valid access token was provided; access tokens expire after 15 minutes."
                    }
                  }
                }
              }
            }
          },
          "429": {
            "description": "Request rate exceeded. Back off exponentially and reduce request frequency.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "description": "Standard tastytrade error envelope. Branch on error.code, not the message text.",
                  "properties": {
                    "error": {
                      "type": "object",
                      "required": [
                        "code",
                        "message"
                      ],
                      "properties": {
                        "code": {
                          "type": "string",
                          "description": "Machine-readable error code (see the Error reference)."
                        },
                        "message": {
                          "type": "string",
                          "description": "Human-readable explanation."
                        },
                        "errors": {
                          "type": "array",
                          "description": "Present for multi-error / validation failures; one entry per problem.",
                          "items": {
                            "type": "object",
                            "properties": {
                              "code": {
                                "type": "string"
                              },
                              "message": {
                                "type": "string"
                              },
                              "domain": {
                                "type": "string"
                              }
                            }
                          }
                        }
                      }
                    }
                  },
                  "required": [
                    "error"
                  ]
                }
              }
            }
          }
        },
        "tags": [
          "instruments"
        ],
        "operationId": "getInstrumentsFutures",
        "x-tt-class": "read",
        "x-money-moving": false,
        "x-idempotent": true,
        "x-rate-limit-bucket": "read",
        "summary": "List Futures"
      }
    },
    "/instruments/futures/{symbol}": {
      "get": {
        "description": "Returns a single outright future for the given symbol (e.g. `/ESU3`). The leading forward slash is optional; URL-encode it (`%2F`) when present in the path.",
        "parameters": [
          {
            "in": "path",
            "name": "symbol",
            "description": "The symbol of the future, i.e. `ESZ9`. Leading forward slash is not required.",
            "required": true,
            "schema": {
              "type": "string"
            },
            "example": "ESZ9"
          }
        ],
        "responses": {
          "200": {
            "description": "The outright future for the requested symbol.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/Future"
                    },
                    "context": {
                      "type": "string",
                      "example": "/instruments/futures/{symbol}"
                    }
                  },
                  "required": [
                    "data",
                    "context"
                  ]
                }
              }
            }
          },
          "401": {
            "description": "Missing or expired access token, or a missing/malformed `User-Agent` header.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "description": "Standard tastytrade error envelope. Branch on error.code, not the message text.",
                  "properties": {
                    "error": {
                      "type": "object",
                      "required": [
                        "code",
                        "message"
                      ],
                      "properties": {
                        "code": {
                          "type": "string",
                          "description": "Machine-readable error code (see the Error reference)."
                        },
                        "message": {
                          "type": "string",
                          "description": "Human-readable explanation."
                        },
                        "errors": {
                          "type": "array",
                          "description": "Present for multi-error / validation failures; one entry per problem.",
                          "items": {
                            "type": "object",
                            "properties": {
                              "code": {
                                "type": "string"
                              },
                              "message": {
                                "type": "string"
                              },
                              "domain": {
                                "type": "string"
                              }
                            }
                          }
                        }
                      }
                    }
                  },
                  "required": [
                    "error"
                  ],
                  "example": {
                    "error": {
                      "code": "unauthorized",
                      "message": "No valid access token was provided; access tokens expire after 15 minutes."
                    }
                  }
                }
              }
            }
          },
          "404": {
            "description": "No future exists for the given symbol. Verify the symbol and that the forward slash is URL-encoded.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "description": "Standard tastytrade error envelope. Branch on error.code, not the message text.",
                  "properties": {
                    "error": {
                      "type": "object",
                      "required": [
                        "code",
                        "message"
                      ],
                      "properties": {
                        "code": {
                          "type": "string",
                          "description": "Machine-readable error code (see the Error reference)."
                        },
                        "message": {
                          "type": "string",
                          "description": "Human-readable explanation."
                        },
                        "errors": {
                          "type": "array",
                          "description": "Present for multi-error / validation failures; one entry per problem.",
                          "items": {
                            "type": "object",
                            "properties": {
                              "code": {
                                "type": "string"
                              },
                              "message": {
                                "type": "string"
                              },
                              "domain": {
                                "type": "string"
                              }
                            }
                          }
                        }
                      }
                    }
                  },
                  "required": [
                    "error"
                  ]
                }
              }
            }
          },
          "429": {
            "description": "Request rate exceeded. Back off exponentially and reduce request frequency.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "description": "Standard tastytrade error envelope. Branch on error.code, not the message text.",
                  "properties": {
                    "error": {
                      "type": "object",
                      "required": [
                        "code",
                        "message"
                      ],
                      "properties": {
                        "code": {
                          "type": "string",
                          "description": "Machine-readable error code (see the Error reference)."
                        },
                        "message": {
                          "type": "string",
                          "description": "Human-readable explanation."
                        },
                        "errors": {
                          "type": "array",
                          "description": "Present for multi-error / validation failures; one entry per problem.",
                          "items": {
                            "type": "object",
                            "properties": {
                              "code": {
                                "type": "string"
                              },
                              "message": {
                                "type": "string"
                              },
                              "domain": {
                                "type": "string"
                              }
                            }
                          }
                        }
                      }
                    }
                  },
                  "required": [
                    "error"
                  ]
                }
              }
            }
          }
        },
        "tags": [
          "instruments"
        ],
        "operationId": "getInstrumentsFuturesSymbol",
        "x-tt-class": "read",
        "x-money-moving": false,
        "x-idempotent": true,
        "x-rate-limit-bucket": "read",
        "summary": "Get Future"
      }
    },
    "/instruments/future-option-products": {
      "get": {
        "description": "Returns metadata for all supported future option products. A future option product is not a tradeable instrument; it describes the option contract code (root symbol) and expiration type, and includes the parent `future-product` it belongs to.",
        "responses": {
          "200": {
            "description": "All supported future option products.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "data": {
                      "type": "object",
                      "properties": {
                        "items": {
                          "type": "array",
                          "items": {
                            "$ref": "#/components/schemas/FutureOptionProduct"
                          }
                        }
                      },
                      "required": [
                        "items"
                      ]
                    },
                    "context": {
                      "type": "string",
                      "example": "/instruments/future-option-products"
                    },
                    "pagination": {
                      "type": "object",
                      "description": "Paging metadata, present on paginated list responses.",
                      "properties": {
                        "per-page": {
                          "type": "integer"
                        },
                        "page-offset": {
                          "type": "integer"
                        },
                        "item-offset": {
                          "type": "integer"
                        },
                        "total-items": {
                          "type": "integer"
                        },
                        "total-pages": {
                          "type": "integer"
                        },
                        "current-item-count": {
                          "type": "integer"
                        }
                      }
                    }
                  },
                  "required": [
                    "data",
                    "context"
                  ]
                }
              }
            }
          },
          "401": {
            "description": "Missing or expired access token, or a missing/malformed `User-Agent` header.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "description": "Standard tastytrade error envelope. Branch on error.code, not the message text.",
                  "properties": {
                    "error": {
                      "type": "object",
                      "required": [
                        "code",
                        "message"
                      ],
                      "properties": {
                        "code": {
                          "type": "string",
                          "description": "Machine-readable error code (see the Error reference)."
                        },
                        "message": {
                          "type": "string",
                          "description": "Human-readable explanation."
                        },
                        "errors": {
                          "type": "array",
                          "description": "Present for multi-error / validation failures; one entry per problem.",
                          "items": {
                            "type": "object",
                            "properties": {
                              "code": {
                                "type": "string"
                              },
                              "message": {
                                "type": "string"
                              },
                              "domain": {
                                "type": "string"
                              }
                            }
                          }
                        }
                      }
                    }
                  },
                  "required": [
                    "error"
                  ],
                  "example": {
                    "error": {
                      "code": "unauthorized",
                      "message": "No valid access token was provided; access tokens expire after 15 minutes."
                    }
                  }
                }
              }
            }
          },
          "429": {
            "description": "Request rate exceeded. Back off exponentially and reduce request frequency.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "description": "Standard tastytrade error envelope. Branch on error.code, not the message text.",
                  "properties": {
                    "error": {
                      "type": "object",
                      "required": [
                        "code",
                        "message"
                      ],
                      "properties": {
                        "code": {
                          "type": "string",
                          "description": "Machine-readable error code (see the Error reference)."
                        },
                        "message": {
                          "type": "string",
                          "description": "Human-readable explanation."
                        },
                        "errors": {
                          "type": "array",
                          "description": "Present for multi-error / validation failures; one entry per problem.",
                          "items": {
                            "type": "object",
                            "properties": {
                              "code": {
                                "type": "string"
                              },
                              "message": {
                                "type": "string"
                              },
                              "domain": {
                                "type": "string"
                              }
                            }
                          }
                        }
                      }
                    }
                  },
                  "required": [
                    "error"
                  ]
                }
              }
            }
          }
        },
        "tags": [
          "instruments"
        ],
        "operationId": "getInstrumentsFutureOptionProducts",
        "x-tt-class": "read",
        "x-money-moving": false,
        "x-idempotent": true,
        "x-rate-limit-bucket": "read",
        "summary": "List Future Option Products"
      }
    },
    "/instruments/future-option-products/{exchange}/{root_symbol}": {
      "get": {
        "description": "Returns a single future option product identified by exchange and root symbol (e.g. exchange `CME`, root symbol `EW1`).",
        "parameters": [
          {
            "in": "path",
            "name": "exchange",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "root_symbol",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The future option product for the given exchange and root symbol.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/FutureOptionProduct"
                    },
                    "context": {
                      "type": "string",
                      "example": "/instruments/future-option-products/{exchange}/{root_symbol}"
                    }
                  },
                  "required": [
                    "data",
                    "context"
                  ]
                }
              }
            }
          },
          "401": {
            "description": "Missing or expired access token, or a missing/malformed `User-Agent` header.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "description": "Standard tastytrade error envelope. Branch on error.code, not the message text.",
                  "properties": {
                    "error": {
                      "type": "object",
                      "required": [
                        "code",
                        "message"
                      ],
                      "properties": {
                        "code": {
                          "type": "string",
                          "description": "Machine-readable error code (see the Error reference)."
                        },
                        "message": {
                          "type": "string",
                          "description": "Human-readable explanation."
                        },
                        "errors": {
                          "type": "array",
                          "description": "Present for multi-error / validation failures; one entry per problem.",
                          "items": {
                            "type": "object",
                            "properties": {
                              "code": {
                                "type": "string"
                              },
                              "message": {
                                "type": "string"
                              },
                              "domain": {
                                "type": "string"
                              }
                            }
                          }
                        }
                      }
                    }
                  },
                  "required": [
                    "error"
                  ],
                  "example": {
                    "error": {
                      "code": "unauthorized",
                      "message": "No valid access token was provided; access tokens expire after 15 minutes."
                    }
                  }
                }
              }
            }
          },
          "404": {
            "description": "No future option product exists for the given exchange and root symbol.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "description": "Standard tastytrade error envelope. Branch on error.code, not the message text.",
                  "properties": {
                    "error": {
                      "type": "object",
                      "required": [
                        "code",
                        "message"
                      ],
                      "properties": {
                        "code": {
                          "type": "string",
                          "description": "Machine-readable error code (see the Error reference)."
                        },
                        "message": {
                          "type": "string",
                          "description": "Human-readable explanation."
                        },
                        "errors": {
                          "type": "array",
                          "description": "Present for multi-error / validation failures; one entry per problem.",
                          "items": {
                            "type": "object",
                            "properties": {
                              "code": {
                                "type": "string"
                              },
                              "message": {
                                "type": "string"
                              },
                              "domain": {
                                "type": "string"
                              }
                            }
                          }
                        }
                      }
                    }
                  },
                  "required": [
                    "error"
                  ]
                }
              }
            }
          },
          "429": {
            "description": "Request rate exceeded. Back off exponentially and reduce request frequency.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "description": "Standard tastytrade error envelope. Branch on error.code, not the message text.",
                  "properties": {
                    "error": {
                      "type": "object",
                      "required": [
                        "code",
                        "message"
                      ],
                      "properties": {
                        "code": {
                          "type": "string",
                          "description": "Machine-readable error code (see the Error reference)."
                        },
                        "message": {
                          "type": "string",
                          "description": "Human-readable explanation."
                        },
                        "errors": {
                          "type": "array",
                          "description": "Present for multi-error / validation failures; one entry per problem.",
                          "items": {
                            "type": "object",
                            "properties": {
                              "code": {
                                "type": "string"
                              },
                              "message": {
                                "type": "string"
                              },
                              "domain": {
                                "type": "string"
                              }
                            }
                          }
                        }
                      }
                    }
                  },
                  "required": [
                    "error"
                  ]
                }
              }
            }
          }
        },
        "tags": [
          "instruments"
        ],
        "operationId": "getInstrumentsFutureOptionProductsExchangeRootSymbol",
        "x-tt-class": "read",
        "x-money-moving": false,
        "x-idempotent": true,
        "x-rate-limit-bucket": "read",
        "summary": "Get Future Option Product"
      }
    },
    "/instruments/future-option-products/{root_symbol}": {
      "get": {
        "description": "Returns a single future option product identified by root symbol alone. Deprecated: prefer `/instruments/future-option-products/{exchange}/{root_symbol}`.",
        "parameters": [
          {
            "in": "path",
            "name": "root_symbol",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The future option product for the given root symbol.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/FutureOptionProduct"
                    },
                    "context": {
                      "type": "string",
                      "example": "/instruments/future-option-products/{root_symbol}"
                    }
                  },
                  "required": [
                    "data",
                    "context"
                  ]
                }
              }
            }
          },
          "401": {
            "description": "Missing or expired access token, or a missing/malformed `User-Agent` header.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "description": "Standard tastytrade error envelope. Branch on error.code, not the message text.",
                  "properties": {
                    "error": {
                      "type": "object",
                      "required": [
                        "code",
                        "message"
                      ],
                      "properties": {
                        "code": {
                          "type": "string",
                          "description": "Machine-readable error code (see the Error reference)."
                        },
                        "message": {
                          "type": "string",
                          "description": "Human-readable explanation."
                        },
                        "errors": {
                          "type": "array",
                          "description": "Present for multi-error / validation failures; one entry per problem.",
                          "items": {
                            "type": "object",
                            "properties": {
                              "code": {
                                "type": "string"
                              },
                              "message": {
                                "type": "string"
                              },
                              "domain": {
                                "type": "string"
                              }
                            }
                          }
                        }
                      }
                    }
                  },
                  "required": [
                    "error"
                  ],
                  "example": {
                    "error": {
                      "code": "unauthorized",
                      "message": "No valid access token was provided; access tokens expire after 15 minutes."
                    }
                  }
                }
              }
            }
          },
          "404": {
            "description": "No future option product exists for the given root symbol.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "description": "Standard tastytrade error envelope. Branch on error.code, not the message text.",
                  "properties": {
                    "error": {
                      "type": "object",
                      "required": [
                        "code",
                        "message"
                      ],
                      "properties": {
                        "code": {
                          "type": "string",
                          "description": "Machine-readable error code (see the Error reference)."
                        },
                        "message": {
                          "type": "string",
                          "description": "Human-readable explanation."
                        },
                        "errors": {
                          "type": "array",
                          "description": "Present for multi-error / validation failures; one entry per problem.",
                          "items": {
                            "type": "object",
                            "properties": {
                              "code": {
                                "type": "string"
                              },
                              "message": {
                                "type": "string"
                              },
                              "domain": {
                                "type": "string"
                              }
                            }
                          }
                        }
                      }
                    }
                  },
                  "required": [
                    "error"
                  ]
                }
              }
            }
          },
          "429": {
            "description": "Request rate exceeded. Back off exponentially and reduce request frequency.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "description": "Standard tastytrade error envelope. Branch on error.code, not the message text.",
                  "properties": {
                    "error": {
                      "type": "object",
                      "required": [
                        "code",
                        "message"
                      ],
                      "properties": {
                        "code": {
                          "type": "string",
                          "description": "Machine-readable error code (see the Error reference)."
                        },
                        "message": {
                          "type": "string",
                          "description": "Human-readable explanation."
                        },
                        "errors": {
                          "type": "array",
                          "description": "Present for multi-error / validation failures; one entry per problem.",
                          "items": {
                            "type": "object",
                            "properties": {
                              "code": {
                                "type": "string"
                              },
                              "message": {
                                "type": "string"
                              },
                              "domain": {
                                "type": "string"
                              }
                            }
                          }
                        }
                      }
                    }
                  },
                  "required": [
                    "error"
                  ]
                }
              }
            }
          }
        },
        "tags": [
          "instruments"
        ],
        "operationId": "getInstrumentsFutureOptionProductsRootSymbol",
        "deprecated": true,
        "x-tt-class": "read",
        "x-money-moving": false,
        "x-idempotent": true,
        "x-rate-limit-bucket": "read",
        "summary": "Get Future Option Product By Root"
      }
    },
    "/instruments/future-options": {
      "get": {
        "description": "Returns future option definitions for one or more symbols using tastytrade symbology (e.g. `./ESZ9 EW4U9 190927P2975`). You may filter by `option-root-symbol`, `expiration-date`, `option-type`, and `strike-price`, but these must be supplied together; `symbol` and `option-root-symbol` are mutually exclusive.",
        "parameters": [
          {
            "in": "query",
            "name": "exchange",
            "description": "Name of the exchange for the product",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "expiration-date",
            "description": "Expiration date",
            "required": false,
            "schema": {
              "type": "string",
              "format": "date"
            },
            "example": "2024-01-15"
          },
          {
            "in": "query",
            "name": "maturity-date",
            "description": "Maturity date",
            "required": false,
            "schema": {
              "type": "string",
              "format": "date"
            },
            "example": "2024-01-15"
          },
          {
            "in": "query",
            "name": "option-root-symbol",
            "description": "Future option root, i.e. EW3 or SO",
            "required": false,
            "schema": {
              "type": "string"
            },
            "example": "EW1"
          },
          {
            "in": "query",
            "name": "option-type",
            "description": "P(ut) or C(all)",
            "required": false,
            "schema": {
              "type": "string",
              "enum": [
                "C",
                "P"
              ]
            },
            "example": "C"
          },
          {
            "in": "query",
            "name": "security-id",
            "description": "Exchange-specific ID used for order routing (example: security-id[]={value1}&security-id[]={value2})",
            "required": false,
            "style": "form",
            "explode": true,
            "schema": {
              "type": "array",
              "items": {
                "type": "string"
              }
            }
          },
          {
            "in": "query",
            "name": "strike-price",
            "description": "Strike price using display factor",
            "required": false,
            "schema": {
              "type": "string",
              "format": "decimal",
              "description": "Decimal value serialized as a JSON string (e.g. \"150.25\")."
            },
            "example": "97.50"
          },
          {
            "in": "query",
            "name": "symbol",
            "description": "The symbol of the future option(s) (example: symbol[]={value1}&symbol[]={value2})",
            "required": false,
            "style": "form",
            "explode": true,
            "schema": {
              "type": "array",
              "items": {
                "type": "string"
              }
            },
            "example": [
              "./ESZ9 EW4U9 190927P2975"
            ]
          }
        ],
        "responses": {
          "200": {
            "description": "Future options matching the requested symbols and filters.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "data": {
                      "type": "object",
                      "properties": {
                        "items": {
                          "type": "array",
                          "items": {
                            "$ref": "#/components/schemas/FutureOption"
                          }
                        }
                      },
                      "required": [
                        "items"
                      ]
                    },
                    "context": {
                      "type": "string",
                      "example": "/instruments/future-options"
                    },
                    "pagination": {
                      "type": "object",
                      "description": "Paging metadata, present on paginated list responses.",
                      "properties": {
                        "per-page": {
                          "type": "integer"
                        },
                        "page-offset": {
                          "type": "integer"
                        },
                        "item-offset": {
                          "type": "integer"
                        },
                        "total-items": {
                          "type": "integer"
                        },
                        "total-pages": {
                          "type": "integer"
                        },
                        "current-item-count": {
                          "type": "integer"
                        }
                      }
                    }
                  },
                  "required": [
                    "data",
                    "context"
                  ]
                }
              }
            }
          },
          "400": {
            "description": "Invalid filter combination. The `option-root-symbol`, `expiration-date`, `option-type`, and `strike-price` filters must be supplied together, and `symbol` and `option-root-symbol` are mutually exclusive.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "description": "Standard tastytrade error envelope. Branch on error.code, not the message text.",
                  "properties": {
                    "error": {
                      "type": "object",
                      "required": [
                        "code",
                        "message"
                      ],
                      "properties": {
                        "code": {
                          "type": "string",
                          "description": "Machine-readable error code (see the Error reference)."
                        },
                        "message": {
                          "type": "string",
                          "description": "Human-readable explanation."
                        },
                        "errors": {
                          "type": "array",
                          "description": "Present for multi-error / validation failures; one entry per problem.",
                          "items": {
                            "type": "object",
                            "properties": {
                              "code": {
                                "type": "string"
                              },
                              "message": {
                                "type": "string"
                              },
                              "domain": {
                                "type": "string"
                              }
                            }
                          }
                        }
                      }
                    }
                  },
                  "required": [
                    "error"
                  ]
                }
              }
            }
          },
          "401": {
            "description": "Missing or expired access token, or a missing/malformed `User-Agent` header.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "description": "Standard tastytrade error envelope. Branch on error.code, not the message text.",
                  "properties": {
                    "error": {
                      "type": "object",
                      "required": [
                        "code",
                        "message"
                      ],
                      "properties": {
                        "code": {
                          "type": "string",
                          "description": "Machine-readable error code (see the Error reference)."
                        },
                        "message": {
                          "type": "string",
                          "description": "Human-readable explanation."
                        },
                        "errors": {
                          "type": "array",
                          "description": "Present for multi-error / validation failures; one entry per problem.",
                          "items": {
                            "type": "object",
                            "properties": {
                              "code": {
                                "type": "string"
                              },
                              "message": {
                                "type": "string"
                              },
                              "domain": {
                                "type": "string"
                              }
                            }
                          }
                        }
                      }
                    }
                  },
                  "required": [
                    "error"
                  ],
                  "example": {
                    "error": {
                      "code": "unauthorized",
                      "message": "No valid access token was provided; access tokens expire after 15 minutes."
                    }
                  }
                }
              }
            }
          },
          "429": {
            "description": "Request rate exceeded. Back off exponentially and reduce request frequency.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "description": "Standard tastytrade error envelope. Branch on error.code, not the message text.",
                  "properties": {
                    "error": {
                      "type": "object",
                      "required": [
                        "code",
                        "message"
                      ],
                      "properties": {
                        "code": {
                          "type": "string",
                          "description": "Machine-readable error code (see the Error reference)."
                        },
                        "message": {
                          "type": "string",
                          "description": "Human-readable explanation."
                        },
                        "errors": {
                          "type": "array",
                          "description": "Present for multi-error / validation failures; one entry per problem.",
                          "items": {
                            "type": "object",
                            "properties": {
                              "code": {
                                "type": "string"
                              },
                              "message": {
                                "type": "string"
                              },
                              "domain": {
                                "type": "string"
                              }
                            }
                          }
                        }
                      }
                    }
                  },
                  "required": [
                    "error"
                  ]
                }
              }
            }
          }
        },
        "tags": [
          "instruments"
        ],
        "operationId": "getInstrumentsFutureOptions",
        "x-tt-class": "read",
        "x-money-moving": false,
        "x-idempotent": true,
        "x-rate-limit-bucket": "read",
        "summary": "List Future Options"
      }
    },
    "/instruments/future-options/{symbol}": {
      "get": {
        "description": "Returns a single future option for the given symbol using tastytrade symbology (e.g. `./ESZ9 EW4U9 190927P2975`). URL-encode the leading `./`, the forward slash, and the spaces before placing the symbol in the path.",
        "parameters": [
          {
            "in": "path",
            "name": "symbol",
            "description": "The symbol of the future option",
            "required": true,
            "schema": {
              "type": "string"
            },
            "example": "./ESZ9 EW4U9 190927P2975"
          }
        ],
        "responses": {
          "200": {
            "description": "The future option for the requested symbol.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/FutureOption"
                    },
                    "context": {
                      "type": "string",
                      "example": "/instruments/future-options/{symbol}"
                    }
                  },
                  "required": [
                    "data",
                    "context"
                  ]
                }
              }
            }
          },
          "401": {
            "description": "Missing or expired access token, or a missing/malformed `User-Agent` header.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "description": "Standard tastytrade error envelope. Branch on error.code, not the message text.",
                  "properties": {
                    "error": {
                      "type": "object",
                      "required": [
                        "code",
                        "message"
                      ],
                      "properties": {
                        "code": {
                          "type": "string",
                          "description": "Machine-readable error code (see the Error reference)."
                        },
                        "message": {
                          "type": "string",
                          "description": "Human-readable explanation."
                        },
                        "errors": {
                          "type": "array",
                          "description": "Present for multi-error / validation failures; one entry per problem.",
                          "items": {
                            "type": "object",
                            "properties": {
                              "code": {
                                "type": "string"
                              },
                              "message": {
                                "type": "string"
                              },
                              "domain": {
                                "type": "string"
                              }
                            }
                          }
                        }
                      }
                    }
                  },
                  "required": [
                    "error"
                  ],
                  "example": {
                    "error": {
                      "code": "unauthorized",
                      "message": "No valid access token was provided; access tokens expire after 15 minutes."
                    }
                  }
                }
              }
            }
          },
          "404": {
            "description": "No future option exists for the given symbol. Verify the symbol and that special characters are URL-encoded.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "description": "Standard tastytrade error envelope. Branch on error.code, not the message text.",
                  "properties": {
                    "error": {
                      "type": "object",
                      "required": [
                        "code",
                        "message"
                      ],
                      "properties": {
                        "code": {
                          "type": "string",
                          "description": "Machine-readable error code (see the Error reference)."
                        },
                        "message": {
                          "type": "string",
                          "description": "Human-readable explanation."
                        },
                        "errors": {
                          "type": "array",
                          "description": "Present for multi-error / validation failures; one entry per problem.",
                          "items": {
                            "type": "object",
                            "properties": {
                              "code": {
                                "type": "string"
                              },
                              "message": {
                                "type": "string"
                              },
                              "domain": {
                                "type": "string"
                              }
                            }
                          }
                        }
                      }
                    }
                  },
                  "required": [
                    "error"
                  ]
                }
              }
            }
          },
          "429": {
            "description": "Request rate exceeded. Back off exponentially and reduce request frequency.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "description": "Standard tastytrade error envelope. Branch on error.code, not the message text.",
                  "properties": {
                    "error": {
                      "type": "object",
                      "required": [
                        "code",
                        "message"
                      ],
                      "properties": {
                        "code": {
                          "type": "string",
                          "description": "Machine-readable error code (see the Error reference)."
                        },
                        "message": {
                          "type": "string",
                          "description": "Human-readable explanation."
                        },
                        "errors": {
                          "type": "array",
                          "description": "Present for multi-error / validation failures; one entry per problem.",
                          "items": {
                            "type": "object",
                            "properties": {
                              "code": {
                                "type": "string"
                              },
                              "message": {
                                "type": "string"
                              },
                              "domain": {
                                "type": "string"
                              }
                            }
                          }
                        }
                      }
                    }
                  },
                  "required": [
                    "error"
                  ]
                }
              }
            }
          }
        },
        "tags": [
          "instruments"
        ],
        "operationId": "getInstrumentsFutureOptionsSymbol",
        "x-tt-class": "read",
        "x-money-moving": false,
        "x-idempotent": true,
        "x-rate-limit-bucket": "read",
        "summary": "Get Future Option"
      }
    },
    "/instruments/future-products": {
      "get": {
        "description": "Returns metadata for all supported futures products. A future product is not a tradeable instrument; it describes attributes such as the contract code and the months of the year that contracts are listed. For example, the E-mini S&P 500 product code is `ES` and every contract begins with `/ES`.",
        "responses": {
          "200": {
            "description": "All supported futures products.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "data": {
                      "type": "object",
                      "properties": {
                        "items": {
                          "type": "array",
                          "items": {
                            "$ref": "#/components/schemas/FutureProduct"
                          }
                        }
                      },
                      "required": [
                        "items"
                      ]
                    },
                    "context": {
                      "type": "string",
                      "example": "/instruments/future-products"
                    },
                    "pagination": {
                      "type": "object",
                      "description": "Paging metadata, present on paginated list responses.",
                      "properties": {
                        "per-page": {
                          "type": "integer"
                        },
                        "page-offset": {
                          "type": "integer"
                        },
                        "item-offset": {
                          "type": "integer"
                        },
                        "total-items": {
                          "type": "integer"
                        },
                        "total-pages": {
                          "type": "integer"
                        },
                        "current-item-count": {
                          "type": "integer"
                        }
                      }
                    }
                  },
                  "required": [
                    "data",
                    "context"
                  ]
                }
              }
            }
          },
          "401": {
            "description": "Missing or expired access token, or a missing/malformed `User-Agent` header.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "description": "Standard tastytrade error envelope. Branch on error.code, not the message text.",
                  "properties": {
                    "error": {
                      "type": "object",
                      "required": [
                        "code",
                        "message"
                      ],
                      "properties": {
                        "code": {
                          "type": "string",
                          "description": "Machine-readable error code (see the Error reference)."
                        },
                        "message": {
                          "type": "string",
                          "description": "Human-readable explanation."
                        },
                        "errors": {
                          "type": "array",
                          "description": "Present for multi-error / validation failures; one entry per problem.",
                          "items": {
                            "type": "object",
                            "properties": {
                              "code": {
                                "type": "string"
                              },
                              "message": {
                                "type": "string"
                              },
                              "domain": {
                                "type": "string"
                              }
                            }
                          }
                        }
                      }
                    }
                  },
                  "required": [
                    "error"
                  ],
                  "example": {
                    "error": {
                      "code": "unauthorized",
                      "message": "No valid access token was provided; access tokens expire after 15 minutes."
                    }
                  }
                }
              }
            }
          },
          "429": {
            "description": "Request rate exceeded. Back off exponentially and reduce request frequency.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "description": "Standard tastytrade error envelope. Branch on error.code, not the message text.",
                  "properties": {
                    "error": {
                      "type": "object",
                      "required": [
                        "code",
                        "message"
                      ],
                      "properties": {
                        "code": {
                          "type": "string",
                          "description": "Machine-readable error code (see the Error reference)."
                        },
                        "message": {
                          "type": "string",
                          "description": "Human-readable explanation."
                        },
                        "errors": {
                          "type": "array",
                          "description": "Present for multi-error / validation failures; one entry per problem.",
                          "items": {
                            "type": "object",
                            "properties": {
                              "code": {
                                "type": "string"
                              },
                              "message": {
                                "type": "string"
                              },
                              "domain": {
                                "type": "string"
                              }
                            }
                          }
                        }
                      }
                    }
                  },
                  "required": [
                    "error"
                  ]
                }
              }
            }
          }
        },
        "tags": [
          "instruments"
        ],
        "operationId": "getInstrumentsFutureProducts",
        "x-tt-class": "read",
        "x-money-moving": false,
        "x-idempotent": true,
        "x-rate-limit-bucket": "read",
        "summary": "List Future Products"
      }
    },
    "/instruments/future-products/{exchange}/{code}": {
      "get": {
        "description": "Returns a single future product identified by exchange and product code (e.g. exchange `CME`, code `CL`).",
        "parameters": [
          {
            "in": "path",
            "name": "exchange",
            "description": "The exchange code",
            "required": true,
            "schema": {
              "type": "string",
              "enum": [
                "CBOED",
                "CFE",
                "CME",
                "SMALLS"
              ]
            },
            "example": "CBOED"
          },
          {
            "in": "path",
            "name": "code",
            "description": "The product code, i.e. `ES`",
            "required": true,
            "schema": {
              "type": "string"
            },
            "example": "ES"
          }
        ],
        "responses": {
          "200": {
            "description": "The future product for the given exchange and product code.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/FutureProduct"
                    },
                    "context": {
                      "type": "string",
                      "example": "/instruments/future-products/{exchange}/{code}"
                    }
                  },
                  "required": [
                    "data",
                    "context"
                  ]
                }
              }
            }
          },
          "401": {
            "description": "Missing or expired access token, or a missing/malformed `User-Agent` header.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "description": "Standard tastytrade error envelope. Branch on error.code, not the message text.",
                  "properties": {
                    "error": {
                      "type": "object",
                      "required": [
                        "code",
                        "message"
                      ],
                      "properties": {
                        "code": {
                          "type": "string",
                          "description": "Machine-readable error code (see the Error reference)."
                        },
                        "message": {
                          "type": "string",
                          "description": "Human-readable explanation."
                        },
                        "errors": {
                          "type": "array",
                          "description": "Present for multi-error / validation failures; one entry per problem.",
                          "items": {
                            "type": "object",
                            "properties": {
                              "code": {
                                "type": "string"
                              },
                              "message": {
                                "type": "string"
                              },
                              "domain": {
                                "type": "string"
                              }
                            }
                          }
                        }
                      }
                    }
                  },
                  "required": [
                    "error"
                  ],
                  "example": {
                    "error": {
                      "code": "unauthorized",
                      "message": "No valid access token was provided; access tokens expire after 15 minutes."
                    }
                  }
                }
              }
            }
          },
          "404": {
            "description": "No future product exists for the given exchange and product code.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "description": "Standard tastytrade error envelope. Branch on error.code, not the message text.",
                  "properties": {
                    "error": {
                      "type": "object",
                      "required": [
                        "code",
                        "message"
                      ],
                      "properties": {
                        "code": {
                          "type": "string",
                          "description": "Machine-readable error code (see the Error reference)."
                        },
                        "message": {
                          "type": "string",
                          "description": "Human-readable explanation."
                        },
                        "errors": {
                          "type": "array",
                          "description": "Present for multi-error / validation failures; one entry per problem.",
                          "items": {
                            "type": "object",
                            "properties": {
                              "code": {
                                "type": "string"
                              },
                              "message": {
                                "type": "string"
                              },
                              "domain": {
                                "type": "string"
                              }
                            }
                          }
                        }
                      }
                    }
                  },
                  "required": [
                    "error"
                  ]
                }
              }
            }
          },
          "429": {
            "description": "Request rate exceeded. Back off exponentially and reduce request frequency.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "description": "Standard tastytrade error envelope. Branch on error.code, not the message text.",
                  "properties": {
                    "error": {
                      "type": "object",
                      "required": [
                        "code",
                        "message"
                      ],
                      "properties": {
                        "code": {
                          "type": "string",
                          "description": "Machine-readable error code (see the Error reference)."
                        },
                        "message": {
                          "type": "string",
                          "description": "Human-readable explanation."
                        },
                        "errors": {
                          "type": "array",
                          "description": "Present for multi-error / validation failures; one entry per problem.",
                          "items": {
                            "type": "object",
                            "properties": {
                              "code": {
                                "type": "string"
                              },
                              "message": {
                                "type": "string"
                              },
                              "domain": {
                                "type": "string"
                              }
                            }
                          }
                        }
                      }
                    }
                  },
                  "required": [
                    "error"
                  ]
                }
              }
            }
          }
        },
        "tags": [
          "instruments"
        ],
        "operationId": "getInstrumentsFutureProductsExchangeCode",
        "x-tt-class": "read",
        "x-money-moving": false,
        "x-idempotent": true,
        "x-rate-limit-bucket": "read",
        "summary": "Get Future Product"
      }
    },
    "/instruments/quantity-decimal-precisions": {
      "get": {
        "description": "Returns the quantity decimal precision for each instrument type or symbol. The `value` defines how many decimal places a quantity may use; for example BTC/USD has a precision of 8, so `0.12345678` is valid but `0.123456789` is not. A value of 0 means the instrument must trade in whole numbers.",
        "responses": {
          "200": {
            "description": "Quantity decimal precision definitions.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "data": {
                      "type": "object",
                      "properties": {
                        "items": {
                          "type": "array",
                          "items": {
                            "$ref": "#/components/schemas/QuantityDecimalPrecision"
                          }
                        }
                      },
                      "required": [
                        "items"
                      ]
                    },
                    "context": {
                      "type": "string",
                      "example": "/instruments/quantity-decimal-precisions"
                    },
                    "pagination": {
                      "type": "object",
                      "description": "Paging metadata, present on paginated list responses.",
                      "properties": {
                        "per-page": {
                          "type": "integer"
                        },
                        "page-offset": {
                          "type": "integer"
                        },
                        "item-offset": {
                          "type": "integer"
                        },
                        "total-items": {
                          "type": "integer"
                        },
                        "total-pages": {
                          "type": "integer"
                        },
                        "current-item-count": {
                          "type": "integer"
                        }
                      }
                    }
                  },
                  "required": [
                    "data",
                    "context"
                  ]
                }
              }
            }
          },
          "401": {
            "description": "Missing or expired access token, or a missing/malformed `User-Agent` header.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "description": "Standard tastytrade error envelope. Branch on error.code, not the message text.",
                  "properties": {
                    "error": {
                      "type": "object",
                      "required": [
                        "code",
                        "message"
                      ],
                      "properties": {
                        "code": {
                          "type": "string",
                          "description": "Machine-readable error code (see the Error reference)."
                        },
                        "message": {
                          "type": "string",
                          "description": "Human-readable explanation."
                        },
                        "errors": {
                          "type": "array",
                          "description": "Present for multi-error / validation failures; one entry per problem.",
                          "items": {
                            "type": "object",
                            "properties": {
                              "code": {
                                "type": "string"
                              },
                              "message": {
                                "type": "string"
                              },
                              "domain": {
                                "type": "string"
                              }
                            }
                          }
                        }
                      }
                    }
                  },
                  "required": [
                    "error"
                  ],
                  "example": {
                    "error": {
                      "code": "unauthorized",
                      "message": "No valid access token was provided; access tokens expire after 15 minutes."
                    }
                  }
                }
              }
            }
          },
          "429": {
            "description": "Request rate exceeded. Back off exponentially and reduce request frequency.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "description": "Standard tastytrade error envelope. Branch on error.code, not the message text.",
                  "properties": {
                    "error": {
                      "type": "object",
                      "required": [
                        "code",
                        "message"
                      ],
                      "properties": {
                        "code": {
                          "type": "string",
                          "description": "Machine-readable error code (see the Error reference)."
                        },
                        "message": {
                          "type": "string",
                          "description": "Human-readable explanation."
                        },
                        "errors": {
                          "type": "array",
                          "description": "Present for multi-error / validation failures; one entry per problem.",
                          "items": {
                            "type": "object",
                            "properties": {
                              "code": {
                                "type": "string"
                              },
                              "message": {
                                "type": "string"
                              },
                              "domain": {
                                "type": "string"
                              }
                            }
                          }
                        }
                      }
                    }
                  },
                  "required": [
                    "error"
                  ]
                }
              }
            }
          }
        },
        "tags": [
          "instruments"
        ],
        "operationId": "getInstrumentsQuantityDecimalPrecisions",
        "x-tt-class": "read",
        "x-money-moving": false,
        "x-idempotent": true,
        "x-rate-limit-bucket": "read",
        "summary": "List Quantity Decimal Precisions"
      }
    },
    "/instruments/warrants": {
      "get": {
        "description": "Returns active warrant definitions, optionally filtered by one or more symbols (e.g. `NKLAW`).",
        "parameters": [
          {
            "in": "query",
            "name": "symbol",
            "description": "The symbol of the warrant(s), i.e `NKLAW` (example: symbol[]={value1}&symbol[]={value2})",
            "required": false,
            "style": "form",
            "explode": true,
            "schema": {
              "type": "array",
              "items": {
                "type": "string"
              }
            },
            "example": [
              "NKLAW"
            ]
          }
        ],
        "responses": {
          "200": {
            "description": "Warrant definitions matching the requested symbols.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "data": {
                      "type": "object",
                      "properties": {
                        "items": {
                          "type": "array",
                          "items": {
                            "$ref": "#/components/schemas/Warrant"
                          }
                        }
                      },
                      "required": [
                        "items"
                      ]
                    },
                    "context": {
                      "type": "string",
                      "example": "/instruments/warrants"
                    },
                    "pagination": {
                      "type": "object",
                      "description": "Paging metadata, present on paginated list responses.",
                      "properties": {
                        "per-page": {
                          "type": "integer"
                        },
                        "page-offset": {
                          "type": "integer"
                        },
                        "item-offset": {
                          "type": "integer"
                        },
                        "total-items": {
                          "type": "integer"
                        },
                        "total-pages": {
                          "type": "integer"
                        },
                        "current-item-count": {
                          "type": "integer"
                        }
                      }
                    }
                  },
                  "required": [
                    "data",
                    "context"
                  ]
                }
              }
            }
          },
          "401": {
            "description": "Missing or expired access token, or a missing/malformed `User-Agent` header.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "description": "Standard tastytrade error envelope. Branch on error.code, not the message text.",
                  "properties": {
                    "error": {
                      "type": "object",
                      "required": [
                        "code",
                        "message"
                      ],
                      "properties": {
                        "code": {
                          "type": "string",
                          "description": "Machine-readable error code (see the Error reference)."
                        },
                        "message": {
                          "type": "string",
                          "description": "Human-readable explanation."
                        },
                        "errors": {
                          "type": "array",
                          "description": "Present for multi-error / validation failures; one entry per problem.",
                          "items": {
                            "type": "object",
                            "properties": {
                              "code": {
                                "type": "string"
                              },
                              "message": {
                                "type": "string"
                              },
                              "domain": {
                                "type": "string"
                              }
                            }
                          }
                        }
                      }
                    }
                  },
                  "required": [
                    "error"
                  ],
                  "example": {
                    "error": {
                      "code": "unauthorized",
                      "message": "No valid access token was provided; access tokens expire after 15 minutes."
                    }
                  }
                }
              }
            }
          },
          "429": {
            "description": "Request rate exceeded. Back off exponentially and reduce request frequency.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "description": "Standard tastytrade error envelope. Branch on error.code, not the message text.",
                  "properties": {
                    "error": {
                      "type": "object",
                      "required": [
                        "code",
                        "message"
                      ],
                      "properties": {
                        "code": {
                          "type": "string",
                          "description": "Machine-readable error code (see the Error reference)."
                        },
                        "message": {
                          "type": "string",
                          "description": "Human-readable explanation."
                        },
                        "errors": {
                          "type": "array",
                          "description": "Present for multi-error / validation failures; one entry per problem.",
                          "items": {
                            "type": "object",
                            "properties": {
                              "code": {
                                "type": "string"
                              },
                              "message": {
                                "type": "string"
                              },
                              "domain": {
                                "type": "string"
                              }
                            }
                          }
                        }
                      }
                    }
                  },
                  "required": [
                    "error"
                  ]
                }
              }
            }
          }
        },
        "tags": [
          "instruments"
        ],
        "operationId": "getInstrumentsWarrants",
        "x-tt-class": "read",
        "x-money-moving": false,
        "x-idempotent": true,
        "x-rate-limit-bucket": "read",
        "summary": "List Warrants"
      }
    },
    "/instruments/warrants/{symbol}": {
      "get": {
        "description": "Returns a single warrant definition for the provided symbol (e.g. `SEPAW`).",
        "parameters": [
          {
            "in": "path",
            "name": "symbol",
            "required": true,
            "schema": {
              "type": "string"
            },
            "example": "AAPL"
          }
        ],
        "responses": {
          "200": {
            "description": "The warrant definition for the requested symbol.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/Warrant"
                    },
                    "context": {
                      "type": "string",
                      "example": "/instruments/warrants/{symbol}"
                    }
                  },
                  "required": [
                    "data",
                    "context"
                  ]
                }
              }
            }
          },
          "401": {
            "description": "Missing or expired access token, or a missing/malformed `User-Agent` header.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "description": "Standard tastytrade error envelope. Branch on error.code, not the message text.",
                  "properties": {
                    "error": {
                      "type": "object",
                      "required": [
                        "code",
                        "message"
                      ],
                      "properties": {
                        "code": {
                          "type": "string",
                          "description": "Machine-readable error code (see the Error reference)."
                        },
                        "message": {
                          "type": "string",
                          "description": "Human-readable explanation."
                        },
                        "errors": {
                          "type": "array",
                          "description": "Present for multi-error / validation failures; one entry per problem.",
                          "items": {
                            "type": "object",
                            "properties": {
                              "code": {
                                "type": "string"
                              },
                              "message": {
                                "type": "string"
                              },
                              "domain": {
                                "type": "string"
                              }
                            }
                          }
                        }
                      }
                    }
                  },
                  "required": [
                    "error"
                  ],
                  "example": {
                    "error": {
                      "code": "unauthorized",
                      "message": "No valid access token was provided; access tokens expire after 15 minutes."
                    }
                  }
                }
              }
            }
          },
          "404": {
            "description": "No warrant exists for the given symbol. Verify the symbol is correct.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "description": "Standard tastytrade error envelope. Branch on error.code, not the message text.",
                  "properties": {
                    "error": {
                      "type": "object",
                      "required": [
                        "code",
                        "message"
                      ],
                      "properties": {
                        "code": {
                          "type": "string",
                          "description": "Machine-readable error code (see the Error reference)."
                        },
                        "message": {
                          "type": "string",
                          "description": "Human-readable explanation."
                        },
                        "errors": {
                          "type": "array",
                          "description": "Present for multi-error / validation failures; one entry per problem.",
                          "items": {
                            "type": "object",
                            "properties": {
                              "code": {
                                "type": "string"
                              },
                              "message": {
                                "type": "string"
                              },
                              "domain": {
                                "type": "string"
                              }
                            }
                          }
                        }
                      }
                    }
                  },
                  "required": [
                    "error"
                  ]
                }
              }
            }
          },
          "429": {
            "description": "Request rate exceeded. Back off exponentially and reduce request frequency.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "description": "Standard tastytrade error envelope. Branch on error.code, not the message text.",
                  "properties": {
                    "error": {
                      "type": "object",
                      "required": [
                        "code",
                        "message"
                      ],
                      "properties": {
                        "code": {
                          "type": "string",
                          "description": "Machine-readable error code (see the Error reference)."
                        },
                        "message": {
                          "type": "string",
                          "description": "Human-readable explanation."
                        },
                        "errors": {
                          "type": "array",
                          "description": "Present for multi-error / validation failures; one entry per problem.",
                          "items": {
                            "type": "object",
                            "properties": {
                              "code": {
                                "type": "string"
                              },
                              "message": {
                                "type": "string"
                              },
                              "domain": {
                                "type": "string"
                              }
                            }
                          }
                        }
                      }
                    }
                  },
                  "required": [
                    "error"
                  ]
                }
              }
            }
          }
        },
        "tags": [
          "instruments"
        ],
        "operationId": "getInstrumentsWarrantsSymbol",
        "x-tt-class": "read",
        "x-money-moving": false,
        "x-idempotent": true,
        "x-rate-limit-bucket": "read",
        "summary": "Get Warrant"
      }
    },
    "/futures-option-chains/{symbol}": {
      "get": {
        "description": "Returns the full futures option chain for a given futures product code (e.g. `ES`) as a flat list of future option instruments. Each item is a complete future option representation.",
        "parameters": [
          {
            "in": "path",
            "name": "symbol",
            "required": true,
            "schema": {
              "type": "string"
            },
            "example": "ES"
          }
        ],
        "responses": {
          "200": {
            "description": "The futures option chain for the given product code as future option instruments.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "data": {
                      "type": "object",
                      "properties": {
                        "items": {
                          "type": "array",
                          "items": {
                            "$ref": "#/components/schemas/FutureOption"
                          }
                        }
                      },
                      "required": [
                        "items"
                      ]
                    },
                    "context": {
                      "type": "string",
                      "example": "/futures-option-chains/{symbol}"
                    },
                    "pagination": {
                      "type": "object",
                      "description": "Paging metadata, present on paginated list responses.",
                      "properties": {
                        "per-page": {
                          "type": "integer"
                        },
                        "page-offset": {
                          "type": "integer"
                        },
                        "item-offset": {
                          "type": "integer"
                        },
                        "total-items": {
                          "type": "integer"
                        },
                        "total-pages": {
                          "type": "integer"
                        },
                        "current-item-count": {
                          "type": "integer"
                        }
                      }
                    }
                  },
                  "required": [
                    "data",
                    "context"
                  ]
                }
              }
            }
          },
          "401": {
            "description": "Missing or expired access token, or a missing/malformed `User-Agent` header.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "description": "Standard tastytrade error envelope. Branch on error.code, not the message text.",
                  "properties": {
                    "error": {
                      "type": "object",
                      "required": [
                        "code",
                        "message"
                      ],
                      "properties": {
                        "code": {
                          "type": "string",
                          "description": "Machine-readable error code (see the Error reference)."
                        },
                        "message": {
                          "type": "string",
                          "description": "Human-readable explanation."
                        },
                        "errors": {
                          "type": "array",
                          "description": "Present for multi-error / validation failures; one entry per problem.",
                          "items": {
                            "type": "object",
                            "properties": {
                              "code": {
                                "type": "string"
                              },
                              "message": {
                                "type": "string"
                              },
                              "domain": {
                                "type": "string"
                              }
                            }
                          }
                        }
                      }
                    }
                  },
                  "required": [
                    "error"
                  ],
                  "example": {
                    "error": {
                      "code": "unauthorized",
                      "message": "No valid access token was provided; access tokens expire after 15 minutes."
                    }
                  }
                }
              }
            }
          },
          "404": {
            "description": "No futures option chain exists for the given product code.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "description": "Standard tastytrade error envelope. Branch on error.code, not the message text.",
                  "properties": {
                    "error": {
                      "type": "object",
                      "required": [
                        "code",
                        "message"
                      ],
                      "properties": {
                        "code": {
                          "type": "string",
                          "description": "Machine-readable error code (see the Error reference)."
                        },
                        "message": {
                          "type": "string",
                          "description": "Human-readable explanation."
                        },
                        "errors": {
                          "type": "array",
                          "description": "Present for multi-error / validation failures; one entry per problem.",
                          "items": {
                            "type": "object",
                            "properties": {
                              "code": {
                                "type": "string"
                              },
                              "message": {
                                "type": "string"
                              },
                              "domain": {
                                "type": "string"
                              }
                            }
                          }
                        }
                      }
                    }
                  },
                  "required": [
                    "error"
                  ]
                }
              }
            }
          },
          "429": {
            "description": "Request rate exceeded. Back off exponentially and reduce request frequency.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "description": "Standard tastytrade error envelope. Branch on error.code, not the message text.",
                  "properties": {
                    "error": {
                      "type": "object",
                      "required": [
                        "code",
                        "message"
                      ],
                      "properties": {
                        "code": {
                          "type": "string",
                          "description": "Machine-readable error code (see the Error reference)."
                        },
                        "message": {
                          "type": "string",
                          "description": "Human-readable explanation."
                        },
                        "errors": {
                          "type": "array",
                          "description": "Present for multi-error / validation failures; one entry per problem.",
                          "items": {
                            "type": "object",
                            "properties": {
                              "code": {
                                "type": "string"
                              },
                              "message": {
                                "type": "string"
                              },
                              "domain": {
                                "type": "string"
                              }
                            }
                          }
                        }
                      }
                    }
                  },
                  "required": [
                    "error"
                  ]
                }
              }
            }
          }
        },
        "tags": [
          "futures-option-chains"
        ],
        "operationId": "getFuturesOptionChainsSymbol",
        "x-tt-class": "read",
        "x-money-moving": false,
        "x-idempotent": true,
        "x-rate-limit-bucket": "read",
        "summary": "List Detailed Futures Option Chains"
      }
    },
    "/futures-option-chains/{symbol}/nested": {
      "get": {
        "description": "Returns the futures option chain for a given futures product code (e.g. `ES`) in a nested form that groups data by expiration and strike to minimize redundant processing. Each strike provides its call and put symbols.",
        "parameters": [
          {
            "in": "path",
            "name": "symbol",
            "required": true,
            "schema": {
              "type": "string"
            },
            "example": "ES"
          }
        ],
        "responses": {
          "200": {
            "description": "The nested futures option chain for the given product code.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/FuturesNestedOptionChainSerializer"
                    },
                    "context": {
                      "type": "string",
                      "example": "/futures-option-chains/{symbol}/nested"
                    }
                  },
                  "required": [
                    "data",
                    "context"
                  ]
                }
              }
            }
          },
          "401": {
            "description": "Missing or expired access token, or a missing/malformed `User-Agent` header.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "description": "Standard tastytrade error envelope. Branch on error.code, not the message text.",
                  "properties": {
                    "error": {
                      "type": "object",
                      "required": [
                        "code",
                        "message"
                      ],
                      "properties": {
                        "code": {
                          "type": "string",
                          "description": "Machine-readable error code (see the Error reference)."
                        },
                        "message": {
                          "type": "string",
                          "description": "Human-readable explanation."
                        },
                        "errors": {
                          "type": "array",
                          "description": "Present for multi-error / validation failures; one entry per problem.",
                          "items": {
                            "type": "object",
                            "properties": {
                              "code": {
                                "type": "string"
                              },
                              "message": {
                                "type": "string"
                              },
                              "domain": {
                                "type": "string"
                              }
                            }
                          }
                        }
                      }
                    }
                  },
                  "required": [
                    "error"
                  ],
                  "example": {
                    "error": {
                      "code": "unauthorized",
                      "message": "No valid access token was provided; access tokens expire after 15 minutes."
                    }
                  }
                }
              }
            }
          },
          "404": {
            "description": "No futures option chain exists for the given product code.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "description": "Standard tastytrade error envelope. Branch on error.code, not the message text.",
                  "properties": {
                    "error": {
                      "type": "object",
                      "required": [
                        "code",
                        "message"
                      ],
                      "properties": {
                        "code": {
                          "type": "string",
                          "description": "Machine-readable error code (see the Error reference)."
                        },
                        "message": {
                          "type": "string",
                          "description": "Human-readable explanation."
                        },
                        "errors": {
                          "type": "array",
                          "description": "Present for multi-error / validation failures; one entry per problem.",
                          "items": {
                            "type": "object",
                            "properties": {
                              "code": {
                                "type": "string"
                              },
                              "message": {
                                "type": "string"
                              },
                              "domain": {
                                "type": "string"
                              }
                            }
                          }
                        }
                      }
                    }
                  },
                  "required": [
                    "error"
                  ]
                }
              }
            }
          },
          "429": {
            "description": "Request rate exceeded. Back off exponentially and reduce request frequency.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "description": "Standard tastytrade error envelope. Branch on error.code, not the message text.",
                  "properties": {
                    "error": {
                      "type": "object",
                      "required": [
                        "code",
                        "message"
                      ],
                      "properties": {
                        "code": {
                          "type": "string",
                          "description": "Machine-readable error code (see the Error reference)."
                        },
                        "message": {
                          "type": "string",
                          "description": "Human-readable explanation."
                        },
                        "errors": {
                          "type": "array",
                          "description": "Present for multi-error / validation failures; one entry per problem.",
                          "items": {
                            "type": "object",
                            "properties": {
                              "code": {
                                "type": "string"
                              },
                              "message": {
                                "type": "string"
                              },
                              "domain": {
                                "type": "string"
                              }
                            }
                          }
                        }
                      }
                    }
                  },
                  "required": [
                    "error"
                  ]
                }
              }
            }
          }
        },
        "tags": [
          "futures-option-chains"
        ],
        "operationId": "getFuturesOptionChainsSymbolNested",
        "x-tt-class": "read",
        "x-money-moving": false,
        "x-idempotent": true,
        "x-rate-limit-bucket": "read",
        "summary": "List Nested Futures Option Chains"
      }
    },
    "/option-chains/{symbol}": {
      "get": {
        "description": "Returns the full equity option chain for an underlying symbol (e.g. `AAPL`) as a flat list of equity option instruments. Each item is a complete equity option representation.",
        "parameters": [
          {
            "in": "path",
            "name": "symbol",
            "required": true,
            "schema": {
              "type": "string"
            },
            "example": "AAPL"
          }
        ],
        "responses": {
          "200": {
            "description": "The equity option chain for the given underlying symbol as equity option instruments.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "data": {
                      "type": "object",
                      "properties": {
                        "items": {
                          "type": "array",
                          "items": {
                            "$ref": "#/components/schemas/EquityOption"
                          }
                        }
                      },
                      "required": [
                        "items"
                      ]
                    },
                    "context": {
                      "type": "string",
                      "example": "/option-chains/{symbol}"
                    },
                    "pagination": {
                      "type": "object",
                      "description": "Paging metadata, present on paginated list responses.",
                      "properties": {
                        "per-page": {
                          "type": "integer"
                        },
                        "page-offset": {
                          "type": "integer"
                        },
                        "item-offset": {
                          "type": "integer"
                        },
                        "total-items": {
                          "type": "integer"
                        },
                        "total-pages": {
                          "type": "integer"
                        },
                        "current-item-count": {
                          "type": "integer"
                        }
                      }
                    }
                  },
                  "required": [
                    "data",
                    "context"
                  ]
                }
              }
            }
          },
          "401": {
            "description": "Missing or expired access token, or a missing/malformed `User-Agent` header.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "description": "Standard tastytrade error envelope. Branch on error.code, not the message text.",
                  "properties": {
                    "error": {
                      "type": "object",
                      "required": [
                        "code",
                        "message"
                      ],
                      "properties": {
                        "code": {
                          "type": "string",
                          "description": "Machine-readable error code (see the Error reference)."
                        },
                        "message": {
                          "type": "string",
                          "description": "Human-readable explanation."
                        },
                        "errors": {
                          "type": "array",
                          "description": "Present for multi-error / validation failures; one entry per problem.",
                          "items": {
                            "type": "object",
                            "properties": {
                              "code": {
                                "type": "string"
                              },
                              "message": {
                                "type": "string"
                              },
                              "domain": {
                                "type": "string"
                              }
                            }
                          }
                        }
                      }
                    }
                  },
                  "required": [
                    "error"
                  ],
                  "example": {
                    "error": {
                      "code": "unauthorized",
                      "message": "No valid access token was provided; access tokens expire after 15 minutes."
                    }
                  }
                }
              }
            }
          },
          "404": {
            "description": "No option chain exists for the given underlying symbol.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "description": "Standard tastytrade error envelope. Branch on error.code, not the message text.",
                  "properties": {
                    "error": {
                      "type": "object",
                      "required": [
                        "code",
                        "message"
                      ],
                      "properties": {
                        "code": {
                          "type": "string",
                          "description": "Machine-readable error code (see the Error reference)."
                        },
                        "message": {
                          "type": "string",
                          "description": "Human-readable explanation."
                        },
                        "errors": {
                          "type": "array",
                          "description": "Present for multi-error / validation failures; one entry per problem.",
                          "items": {
                            "type": "object",
                            "properties": {
                              "code": {
                                "type": "string"
                              },
                              "message": {
                                "type": "string"
                              },
                              "domain": {
                                "type": "string"
                              }
                            }
                          }
                        }
                      }
                    }
                  },
                  "required": [
                    "error"
                  ]
                }
              }
            }
          },
          "429": {
            "description": "Request rate exceeded. Back off exponentially and reduce request frequency.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "description": "Standard tastytrade error envelope. Branch on error.code, not the message text.",
                  "properties": {
                    "error": {
                      "type": "object",
                      "required": [
                        "code",
                        "message"
                      ],
                      "properties": {
                        "code": {
                          "type": "string",
                          "description": "Machine-readable error code (see the Error reference)."
                        },
                        "message": {
                          "type": "string",
                          "description": "Human-readable explanation."
                        },
                        "errors": {
                          "type": "array",
                          "description": "Present for multi-error / validation failures; one entry per problem.",
                          "items": {
                            "type": "object",
                            "properties": {
                              "code": {
                                "type": "string"
                              },
                              "message": {
                                "type": "string"
                              },
                              "domain": {
                                "type": "string"
                              }
                            }
                          }
                        }
                      }
                    }
                  },
                  "required": [
                    "error"
                  ]
                }
              }
            }
          }
        },
        "tags": [
          "option-chains"
        ],
        "operationId": "getOptionChainsSymbol",
        "x-tt-class": "read",
        "x-money-moving": false,
        "x-idempotent": true,
        "x-rate-limit-bucket": "read",
        "summary": "List Detailed Option Chains"
      }
    },
    "/option-chains/{symbol}/compact": {
      "get": {
        "description": "Returns the equity option chain for an underlying symbol (e.g. `AAPL`) in a compact form that concatenates every strike symbol across all expirations into a single array, minimizing content size.",
        "parameters": [
          {
            "in": "path",
            "name": "symbol",
            "required": true,
            "schema": {
              "type": "string"
            },
            "example": "AAPL"
          }
        ],
        "responses": {
          "200": {
            "description": "The compact equity option chain for the given underlying symbol.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/CompactOptionChainList"
                    },
                    "context": {
                      "type": "string",
                      "example": "/option-chains/{symbol}/compact"
                    }
                  },
                  "required": [
                    "data",
                    "context"
                  ]
                }
              }
            }
          },
          "401": {
            "description": "Missing or expired access token, or a missing/malformed `User-Agent` header.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "description": "Standard tastytrade error envelope. Branch on error.code, not the message text.",
                  "properties": {
                    "error": {
                      "type": "object",
                      "required": [
                        "code",
                        "message"
                      ],
                      "properties": {
                        "code": {
                          "type": "string",
                          "description": "Machine-readable error code (see the Error reference)."
                        },
                        "message": {
                          "type": "string",
                          "description": "Human-readable explanation."
                        },
                        "errors": {
                          "type": "array",
                          "description": "Present for multi-error / validation failures; one entry per problem.",
                          "items": {
                            "type": "object",
                            "properties": {
                              "code": {
                                "type": "string"
                              },
                              "message": {
                                "type": "string"
                              },
                              "domain": {
                                "type": "string"
                              }
                            }
                          }
                        }
                      }
                    }
                  },
                  "required": [
                    "error"
                  ],
                  "example": {
                    "error": {
                      "code": "unauthorized",
                      "message": "No valid access token was provided; access tokens expire after 15 minutes."
                    }
                  }
                }
              }
            }
          },
          "404": {
            "description": "No option chain exists for the given underlying symbol.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "description": "Standard tastytrade error envelope. Branch on error.code, not the message text.",
                  "properties": {
                    "error": {
                      "type": "object",
                      "required": [
                        "code",
                        "message"
                      ],
                      "properties": {
                        "code": {
                          "type": "string",
                          "description": "Machine-readable error code (see the Error reference)."
                        },
                        "message": {
                          "type": "string",
                          "description": "Human-readable explanation."
                        },
                        "errors": {
                          "type": "array",
                          "description": "Present for multi-error / validation failures; one entry per problem.",
                          "items": {
                            "type": "object",
                            "properties": {
                              "code": {
                                "type": "string"
                              },
                              "message": {
                                "type": "string"
                              },
                              "domain": {
                                "type": "string"
                              }
                            }
                          }
                        }
                      }
                    }
                  },
                  "required": [
                    "error"
                  ]
                }
              }
            }
          },
          "429": {
            "description": "Request rate exceeded. Back off exponentially and reduce request frequency.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "description": "Standard tastytrade error envelope. Branch on error.code, not the message text.",
                  "properties": {
                    "error": {
                      "type": "object",
                      "required": [
                        "code",
                        "message"
                      ],
                      "properties": {
                        "code": {
                          "type": "string",
                          "description": "Machine-readable error code (see the Error reference)."
                        },
                        "message": {
                          "type": "string",
                          "description": "Human-readable explanation."
                        },
                        "errors": {
                          "type": "array",
                          "description": "Present for multi-error / validation failures; one entry per problem.",
                          "items": {
                            "type": "object",
                            "properties": {
                              "code": {
                                "type": "string"
                              },
                              "message": {
                                "type": "string"
                              },
                              "domain": {
                                "type": "string"
                              }
                            }
                          }
                        }
                      }
                    }
                  },
                  "required": [
                    "error"
                  ]
                }
              }
            }
          }
        },
        "tags": [
          "option-chains"
        ],
        "operationId": "getOptionChainsSymbolCompact",
        "x-tt-class": "read",
        "x-money-moving": false,
        "x-idempotent": true,
        "x-rate-limit-bucket": "read",
        "summary": "List Compact Option Chains"
      }
    },
    "/option-chains/{symbol}/nested": {
      "get": {
        "description": "Returns the equity option chain for an underlying symbol (e.g. `AAPL`) in a nested form that groups expirations and strikes together to minimize redundant processing. Each strike provides its call and put symbols.",
        "parameters": [
          {
            "in": "path",
            "name": "symbol",
            "required": true,
            "schema": {
              "type": "string"
            },
            "example": "AAPL"
          }
        ],
        "responses": {
          "200": {
            "description": "The nested equity option chain for the given underlying symbol.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/NestedOptionChainList"
                    },
                    "context": {
                      "type": "string",
                      "example": "/option-chains/{symbol}/nested"
                    }
                  },
                  "required": [
                    "data",
                    "context"
                  ]
                }
              }
            }
          },
          "401": {
            "description": "Missing or expired access token, or a missing/malformed `User-Agent` header.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "description": "Standard tastytrade error envelope. Branch on error.code, not the message text.",
                  "properties": {
                    "error": {
                      "type": "object",
                      "required": [
                        "code",
                        "message"
                      ],
                      "properties": {
                        "code": {
                          "type": "string",
                          "description": "Machine-readable error code (see the Error reference)."
                        },
                        "message": {
                          "type": "string",
                          "description": "Human-readable explanation."
                        },
                        "errors": {
                          "type": "array",
                          "description": "Present for multi-error / validation failures; one entry per problem.",
                          "items": {
                            "type": "object",
                            "properties": {
                              "code": {
                                "type": "string"
                              },
                              "message": {
                                "type": "string"
                              },
                              "domain": {
                                "type": "string"
                              }
                            }
                          }
                        }
                      }
                    }
                  },
                  "required": [
                    "error"
                  ],
                  "example": {
                    "error": {
                      "code": "unauthorized",
                      "message": "No valid access token was provided; access tokens expire after 15 minutes."
                    }
                  }
                }
              }
            }
          },
          "404": {
            "description": "No option chain exists for the given underlying symbol.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "description": "Standard tastytrade error envelope. Branch on error.code, not the message text.",
                  "properties": {
                    "error": {
                      "type": "object",
                      "required": [
                        "code",
                        "message"
                      ],
                      "properties": {
                        "code": {
                          "type": "string",
                          "description": "Machine-readable error code (see the Error reference)."
                        },
                        "message": {
                          "type": "string",
                          "description": "Human-readable explanation."
                        },
                        "errors": {
                          "type": "array",
                          "description": "Present for multi-error / validation failures; one entry per problem.",
                          "items": {
                            "type": "object",
                            "properties": {
                              "code": {
                                "type": "string"
                              },
                              "message": {
                                "type": "string"
                              },
                              "domain": {
                                "type": "string"
                              }
                            }
                          }
                        }
                      }
                    }
                  },
                  "required": [
                    "error"
                  ]
                }
              }
            }
          },
          "429": {
            "description": "Request rate exceeded. Back off exponentially and reduce request frequency.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "description": "Standard tastytrade error envelope. Branch on error.code, not the message text.",
                  "properties": {
                    "error": {
                      "type": "object",
                      "required": [
                        "code",
                        "message"
                      ],
                      "properties": {
                        "code": {
                          "type": "string",
                          "description": "Machine-readable error code (see the Error reference)."
                        },
                        "message": {
                          "type": "string",
                          "description": "Human-readable explanation."
                        },
                        "errors": {
                          "type": "array",
                          "description": "Present for multi-error / validation failures; one entry per problem.",
                          "items": {
                            "type": "object",
                            "properties": {
                              "code": {
                                "type": "string"
                              },
                              "message": {
                                "type": "string"
                              },
                              "domain": {
                                "type": "string"
                              }
                            }
                          }
                        }
                      }
                    }
                  },
                  "required": [
                    "error"
                  ]
                }
              }
            }
          }
        },
        "tags": [
          "option-chains"
        ],
        "operationId": "getOptionChainsSymbolNested",
        "x-tt-class": "read",
        "x-money-moving": false,
        "x-idempotent": true,
        "x-rate-limit-bucket": "read",
        "summary": "List Nested Option Chains"
      }
    }
  },
  "servers": [
    {
      "url": "https://api.cert.tastyworks.com",
      "description": "Sandbox"
    },
    {
      "url": "https://api.tastyworks.com",
      "description": "Production"
    }
  ],
  "components": {
    "schemas": {
      "Cryptocurrency": {
        "type": "object",
        "properties": {
          "id": {
            "description": "Unique numeric identifier for the cryptocurrency instrument.",
            "type": "integer",
            "format": "int32",
            "example": 1
          },
          "active": {
            "description": "Whether the instrument is currently active and available for trading.",
            "type": "boolean",
            "example": true
          },
          "description": {
            "description": "Full human-readable description of the cryptocurrency pair.",
            "type": "string",
            "example": "Bitcoin to USD"
          },
          "instrument-type": {
            "description": "Instrument type discriminator; always `Cryptocurrency` for this model.",
            "type": "string",
            "example": "Cryptocurrency"
          },
          "is-closing-only": {
            "description": "Whether the instrument is restricted to closing transactions only.",
            "type": "boolean",
            "example": false
          },
          "short-description": {
            "description": "Short human-readable name for the cryptocurrency.",
            "type": "string",
            "example": "Bitcoin"
          },
          "streamer-symbol": {
            "description": "Symbol used to subscribe to market data on the DXLink streamer.",
            "type": "string",
            "example": "BTC/USD:CXTALP"
          },
          "symbol": {
            "description": "The cryptocurrency symbol (e.g. `BTC/USD`). URL-encode the forward slash when used in a URL.",
            "type": "string",
            "example": "BTC/USD"
          },
          "tick-size": {
            "description": "Minimum price increment for the instrument. Decimal value serialized as a JSON string (e.g. \"150.25\").",
            "type": "string",
            "format": "decimal",
            "example": "0.01"
          },
          "destination-venue-symbols": {
            "description": "Symbol listings at each destination venue, including the venue's precision limits and whether the venue is routable.",
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "id": {
                  "type": "integer",
                  "example": 1
                },
                "symbol": {
                  "description": "Symbol used at the destination venue.",
                  "type": "string",
                  "example": "BTC"
                },
                "destination-venue": {
                  "description": "Name of the destination venue.",
                  "type": "string",
                  "example": "CITADEL_CRYPTOCURRENCY"
                },
                "max-quantity-precision": {
                  "description": "Maximum number of decimal places allowed in a quantity at this venue.",
                  "type": "integer",
                  "example": 8
                },
                "max-price-precision": {
                  "description": "Maximum number of decimal places allowed in a price at this venue.",
                  "type": "integer",
                  "example": 8
                },
                "routable": {
                  "description": "Whether orders can be routed to this venue.",
                  "type": "boolean",
                  "example": true
                }
              }
            },
            "x-tt-source": "observed-response"
          }
        },
        "description": "A tradeable cryptocurrency instrument such as BTC/USD. Cryptocurrency symbols contain a forward slash and are most often traded in fractional quantities."
      },
      "Equity": {
        "type": "object",
        "properties": {
          "active": {
            "description": "Whether the equity is currently active and tradeable.",
            "type": "boolean",
            "example": true
          },
          "borrow-rate": {
            "description": "Current rate charged to borrow shares for short selling. Decimal value serialized as a JSON string (e.g. \"150.25\").",
            "type": "string",
            "format": "decimal",
            "example": "0.0"
          },
          "bypass-manual-review": {
            "description": "",
            "type": "boolean"
          },
          "country-of-incorporation": {
            "description": "",
            "type": "string"
          },
          "country-of-taxation": {
            "description": "",
            "type": "string"
          },
          "description": {
            "description": "Full company or fund description.",
            "type": "string",
            "example": "APPLE INC"
          },
          "halted-at": {
            "description": "",
            "type": "string",
            "format": "date-time"
          },
          "instrument-sub-type": {
            "description": "Optional sub-classification of the equity instrument.",
            "type": "string",
            "example": "Index"
          },
          "instrument-type": {
            "description": "Instrument type discriminator; always `Equity` for this model.",
            "type": "string",
            "example": "Equity"
          },
          "is-closing-only": {
            "description": "Whether the equity is restricted to closing transactions only.",
            "type": "boolean",
            "example": false
          },
          "is-etf": {
            "description": "Whether the equity is an exchange-traded fund.",
            "type": "boolean",
            "example": false
          },
          "is-fractional-quantity-eligible": {
            "description": "Whether the equity can be traded in fractional share quantities.",
            "type": "boolean",
            "example": true
          },
          "is-illiquid": {
            "description": "Whether the equity is flagged as illiquid.",
            "type": "boolean",
            "example": false
          },
          "is-index": {
            "description": "Whether the equity is an index instrument.",
            "type": "boolean",
            "example": false
          },
          "is-options-closing-only": {
            "description": "Whether options on this equity are restricted to closing transactions only.",
            "type": "boolean",
            "example": false
          },
          "lendability": {
            "description": "Borrowing classification for short selling: `Easy To Borrow`, `Locate Required`, or `Preborrow`.",
            "type": "string",
            "example": "Easy To Borrow"
          },
          "listed-market": {
            "description": "Market identifier code (MIC) of the listing exchange.",
            "type": "string",
            "example": "XNAS"
          },
          "market-time-instrument-collection": {
            "description": "Market-time collection used to determine trading hours for the instrument.",
            "type": "string",
            "example": "Equity"
          },
          "overnight-trading-permitted": {
            "description": "",
            "type": "boolean"
          },
          "short-description": {
            "description": "Short human-readable name for the equity.",
            "type": "string",
            "example": "APPLE INC"
          },
          "stops-trading-at": {
            "description": "",
            "type": "string",
            "format": "date-time"
          },
          "streamer-symbol": {
            "description": "Symbol used to subscribe to market data on the DXLink streamer.",
            "type": "string",
            "example": "AAPL"
          },
          "symbol": {
            "description": "The equity ticker symbol (e.g. `AAPL`).",
            "type": "string",
            "example": "AAPL"
          },
          "underlying-product-type": {
            "description": "",
            "type": "string"
          },
          "option-tick-sizes": {
            "description": "Tick sizes for options on the equity.",
            "type": "array",
            "properties": {
              "symbol": {
                "description": "",
                "type": "string"
              },
              "threshold": {
                "description": "Decimal value serialized as a JSON string (e.g. \"150.25\").",
                "type": "string",
                "format": "decimal"
              },
              "value": {
                "description": "Decimal value serialized as a JSON string (e.g. \"150.25\").",
                "type": "string",
                "format": "decimal"
              }
            },
            "items": {
              "type": "object",
              "properties": {
                "symbol": {
                  "description": "",
                  "type": "string"
                },
                "threshold": {
                  "description": "Decimal value serialized as a JSON string (e.g. \"150.25\").",
                  "type": "string",
                  "format": "decimal"
                },
                "value": {
                  "description": "Decimal value serialized as a JSON string (e.g. \"150.25\").",
                  "type": "string",
                  "format": "decimal"
                }
              }
            },
            "example": [
              {
                "value": "0.01",
                "threshold": "3.0"
              },
              {
                "value": "0.05"
              }
            ]
          },
          "tick-sizes": {
            "description": "Tick sizes for the equity. Each entry gives a tick `value` and, when the tick applies only below a price level, a `threshold`.",
            "type": "array",
            "properties": {
              "symbol": {
                "description": "",
                "type": "string"
              },
              "threshold": {
                "description": "Decimal value serialized as a JSON string (e.g. \"150.25\").",
                "type": "string",
                "format": "decimal"
              },
              "value": {
                "description": "Decimal value serialized as a JSON string (e.g. \"150.25\").",
                "type": "string",
                "format": "decimal"
              }
            },
            "items": {
              "type": "object",
              "properties": {
                "symbol": {
                  "description": "",
                  "type": "string"
                },
                "threshold": {
                  "description": "Decimal value serialized as a JSON string (e.g. \"150.25\").",
                  "type": "string",
                  "format": "decimal"
                },
                "value": {
                  "description": "Decimal value serialized as a JSON string (e.g. \"150.25\").",
                  "type": "string",
                  "format": "decimal"
                }
              }
            },
            "example": [
              {
                "value": "0.0001",
                "threshold": "1.0"
              },
              {
                "value": "0.01"
              }
            ]
          },
          "id": {
            "description": "Unique numeric identifier of the equity instrument.",
            "type": "integer",
            "example": 726,
            "x-tt-source": "observed-response"
          },
          "cusip": {
            "description": "CUSIP identifier of the equity.",
            "type": "string",
            "example": "037833100",
            "x-tt-source": "observed-response"
          }
        },
        "description": "An equity instrument (common stock, ETF, or index) identified by its ticker symbol."
      },
      "EquityOption": {
        "type": "object",
        "properties": {
          "active": {
            "description": "Whether the option is currently available for trading with the broker.",
            "type": "boolean",
            "example": true
          },
          "days-to-expiration": {
            "description": "Number of days remaining until the option expires.",
            "type": "integer",
            "format": "int32",
            "example": 1
          },
          "exercise-style": {
            "description": "Exercise style of the option, e.g. `American` or `European`.",
            "type": "string",
            "example": "American"
          },
          "expiration-date": {
            "description": "Calendar date on which the option expires (ISO-8601).",
            "type": "string",
            "format": "date",
            "example": "2023-07-31"
          },
          "expiration-type": {
            "description": "Expiration classification, e.g. `Regular`, `Weekly`, or `Quarterly`.",
            "type": "string",
            "example": "Weekly"
          },
          "expires-at": {
            "description": "Exact timestamp at which the option expires (ISO-8601).",
            "type": "string",
            "format": "date-time",
            "example": "2023-07-31T20:15:00.000+00:00"
          },
          "halted-at": {
            "description": "",
            "type": "string",
            "format": "date-time"
          },
          "instrument-type": {
            "description": "Instrument type discriminator; always `Equity Option` for this model.",
            "type": "string",
            "example": "Equity Option"
          },
          "is-closing-only": {
            "description": "Whether the option is restricted to closing transactions only.",
            "type": "boolean",
            "example": false
          },
          "listed-market": {
            "description": "",
            "type": "string"
          },
          "market-time-instrument-collection": {
            "description": "",
            "type": "string"
          },
          "old-security-number": {
            "description": "",
            "type": "string"
          },
          "option-chain-type": {
            "description": "Type of option chain the contract belongs to, e.g. `Standard`.",
            "type": "string",
            "example": "Standard"
          },
          "option-type": {
            "description": "Whether the option is a call (`C`) or a put (`P`).",
            "type": "string",
            "example": "C"
          },
          "root-symbol": {
            "description": "Root symbol of the option, typically the underlying ticker.",
            "type": "string",
            "example": "SPY"
          },
          "settlement-type": {
            "description": "Settlement type, e.g. `PM` or `AM`.",
            "type": "string",
            "example": "PM"
          },
          "shares-per-contract": {
            "description": "Number of underlying shares deliverable per contract.",
            "type": "integer",
            "format": "int32",
            "example": 100
          },
          "stops-trading-at": {
            "description": "Timestamp at which the option stops trading (ISO-8601).",
            "type": "string",
            "format": "date-time",
            "example": "2023-07-31T20:15:00.000+00:00"
          },
          "streamer-symbol": {
            "description": "Symbol used to subscribe to market data on the DXLink streamer.",
            "type": "string",
            "example": ".SPY230731C393"
          },
          "strike-price": {
            "description": "Strike price of the option. Decimal value serialized as a JSON string (e.g. \"150.25\").",
            "type": "string",
            "format": "decimal",
            "example": "393.0"
          },
          "symbol": {
            "description": "The equity option symbol in OCC format.",
            "type": "string",
            "example": "SPY   230731C00393000"
          },
          "underlying-symbol": {
            "description": "Ticker symbol of the underlying equity.",
            "type": "string",
            "example": "SPY"
          }
        },
        "description": "An equity option contract identified by its OCC symbol (e.g. `SPY   230731C00393000`)."
      },
      "Future": {
        "type": "object",
        "properties": {
          "active": {
            "description": "Whether the contract is currently active.",
            "type": "boolean",
            "example": true
          },
          "active-month": {
            "description": "Whether this contract is in the currently active (front) month.",
            "type": "boolean",
            "example": true
          },
          "back-month-first-calendar-symbol": {
            "description": "",
            "type": "boolean"
          },
          "closing-only-date": {
            "description": "",
            "type": "string",
            "format": "date"
          },
          "contract-size": {
            "description": "Size of the contract in underlying units. Decimal value serialized as a JSON string (e.g. \"150.25\").",
            "type": "string",
            "format": "decimal",
            "example": "50.0"
          },
          "display-factor": {
            "description": "Factor applied to convert raw prices to display prices. Decimal value serialized as a JSON string (e.g. \"150.25\").",
            "type": "string",
            "format": "decimal",
            "example": "0.01"
          },
          "exchange": {
            "description": "Exchange on which the future trades.",
            "type": "string",
            "example": "CME"
          },
          "exchange-data": {
            "description": "",
            "type": "object"
          },
          "expiration-date": {
            "description": "Calendar date on which the contract expires (ISO-8601).",
            "type": "string",
            "format": "date",
            "example": "2023-09-15"
          },
          "expires-at": {
            "description": "Exact timestamp at which the contract expires (ISO-8601).",
            "type": "string",
            "format": "date-time",
            "example": "2023-09-15T13:30:00.000+00:00"
          },
          "first-notice-date": {
            "description": "",
            "type": "string",
            "format": "date"
          },
          "product-group": {
            "description": "Internal grouping identifier for the product.",
            "type": "string",
            "example": "CME_ES"
          },
          "is-closing-only": {
            "description": "Whether the contract is restricted to closing transactions only.",
            "type": "boolean",
            "example": false
          },
          "last-trade-date": {
            "description": "Last date on which the contract may be traded (ISO-8601).",
            "type": "string",
            "format": "date",
            "example": "2023-09-15"
          },
          "main-fraction": {
            "description": "Decimal value serialized as a JSON string (e.g. \"150.25\").",
            "type": "string",
            "format": "decimal"
          },
          "next-active-month": {
            "description": "Whether this contract is the next active month.",
            "type": "boolean",
            "example": false
          },
          "notional-multiplier": {
            "description": "Multiplier used to compute notional value from price. Decimal value serialized as a JSON string (e.g. \"150.25\").",
            "type": "string",
            "format": "decimal",
            "example": "50.0"
          },
          "product-code": {
            "description": "Product code of the future (e.g. `ES`).",
            "type": "string",
            "example": "ES"
          },
          "roll-target-symbol": {
            "description": "Symbol of the contract this one rolls into.",
            "type": "string",
            "example": "/ESZ3"
          },
          "security-id": {
            "description": "",
            "type": "string"
          },
          "stops-trading-at": {
            "description": "Timestamp at which the contract stops trading (ISO-8601).",
            "type": "string",
            "format": "date-time",
            "example": "2023-09-15T13:30:00.000+00:00"
          },
          "streamer-exchange-code": {
            "description": "Exchange code used by the DXLink streamer.",
            "type": "string",
            "example": "XCME"
          },
          "streamer-symbol": {
            "description": "Symbol used to subscribe to market data on the DXLink streamer.",
            "type": "string",
            "example": "/ESU23:XCME"
          },
          "sub-fraction": {
            "description": "Decimal value serialized as a JSON string (e.g. \"150.25\").",
            "type": "string",
            "format": "decimal"
          },
          "symbol": {
            "description": "The future contract symbol, beginning with a forward slash (e.g. `/ESU3`).",
            "type": "string",
            "example": "/ESU3"
          },
          "tick-size": {
            "description": "Minimum price increment for the contract. Decimal value serialized as a JSON string (e.g. \"150.25\").",
            "type": "string",
            "format": "decimal",
            "example": "0.25"
          },
          "is-tradeable": {
            "description": "Whether the contract is currently tradeable.",
            "type": "boolean",
            "example": true
          },
          "true-underlying-symbol": {
            "description": "",
            "type": "string"
          },
          "future-etf-equivalent": {
            "description": "",
            "type": "object",
            "properties": {
              "share-quantity": {
                "description": "",
                "type": "integer",
                "format": "int32"
              },
              "symbol": {
                "description": "",
                "type": "string"
              }
            }
          },
          "future-product": {
            "description": "",
            "type": "object",
            "properties": {
              "active-months": {
                "description": "",
                "type": "string"
              },
              "back-month-first-calendar-symbol": {
                "description": "",
                "type": "boolean"
              },
              "base-tick": {
                "description": "",
                "type": "integer",
                "format": "int32"
              },
              "cash-settled": {
                "description": "",
                "type": "boolean"
              },
              "code": {
                "description": "",
                "type": "string"
              },
              "contract-limit": {
                "description": "",
                "type": "integer",
                "format": "int32"
              },
              "description": {
                "description": "",
                "type": "string"
              },
              "display-factor": {
                "description": "Decimal value serialized as a JSON string (e.g. \"150.25\").",
                "type": "string",
                "format": "decimal"
              },
              "exchange": {
                "description": "",
                "type": "string"
              },
              "first-notice": {
                "description": "",
                "type": "boolean"
              },
              "listed-months": {
                "description": "",
                "type": "string"
              },
              "market-sector": {
                "description": "",
                "type": "string"
              },
              "notional-multiplier": {
                "description": "Decimal value serialized as a JSON string (e.g. \"150.25\").",
                "type": "string",
                "format": "decimal"
              },
              "price-format": {
                "description": "",
                "type": "string"
              },
              "product-subtype": {
                "description": "",
                "type": "string"
              },
              "product-type": {
                "description": "",
                "type": "string"
              },
              "security-group": {
                "description": "",
                "type": "string"
              },
              "small-notional": {
                "description": "",
                "type": "boolean"
              },
              "streamer-exchange-code": {
                "description": "",
                "type": "string"
              },
              "sub-tick": {
                "description": "",
                "type": "integer",
                "format": "int32"
              },
              "supported": {
                "description": "",
                "type": "boolean"
              },
              "root-symbol": {
                "description": "",
                "type": "string"
              },
              "tick-size": {
                "description": "Decimal value serialized as a JSON string (e.g. \"150.25\").",
                "type": "string",
                "format": "decimal"
              },
              "true-underlying-code": {
                "description": "",
                "type": "string"
              },
              "underlying-description": {
                "description": "",
                "type": "string"
              },
              "underlying-identifier": {
                "description": "",
                "type": "string"
              }
            }
          },
          "option-tick-sizes": {
            "description": "Tick sizes for options on the contract.",
            "type": "array",
            "properties": {
              "symbol": {
                "description": "",
                "type": "string"
              },
              "threshold": {
                "description": "Decimal value serialized as a JSON string (e.g. \"150.25\").",
                "type": "string",
                "format": "decimal"
              },
              "value": {
                "description": "Decimal value serialized as a JSON string (e.g. \"150.25\").",
                "type": "string",
                "format": "decimal"
              }
            },
            "items": {
              "type": "object",
              "properties": {
                "symbol": {
                  "description": "",
                  "type": "string"
                },
                "threshold": {
                  "description": "Decimal value serialized as a JSON string (e.g. \"150.25\").",
                  "type": "string",
                  "format": "decimal"
                },
                "value": {
                  "description": "Decimal value serialized as a JSON string (e.g. \"150.25\").",
                  "type": "string",
                  "format": "decimal"
                }
              }
            },
            "example": [
              {
                "value": "0.05",
                "threshold": "5.0"
              },
              {
                "value": "0.25"
              }
            ]
          },
          "spread-tick-sizes": {
            "description": "Tick sizes for spreads on the contract; entries may be scoped to a `symbol`.",
            "type": "array",
            "properties": {
              "symbol": {
                "description": "",
                "type": "string"
              },
              "threshold": {
                "description": "Decimal value serialized as a JSON string (e.g. \"150.25\").",
                "type": "string",
                "format": "decimal"
              },
              "value": {
                "description": "Decimal value serialized as a JSON string (e.g. \"150.25\").",
                "type": "string",
                "format": "decimal"
              }
            },
            "items": {
              "type": "object",
              "properties": {
                "symbol": {
                  "description": "",
                  "type": "string"
                },
                "threshold": {
                  "description": "Decimal value serialized as a JSON string (e.g. \"150.25\").",
                  "type": "string",
                  "format": "decimal"
                },
                "value": {
                  "description": "Decimal value serialized as a JSON string (e.g. \"150.25\").",
                  "type": "string",
                  "format": "decimal"
                }
              }
            },
            "example": [
              {
                "value": "0.05",
                "symbol": "/ESH4"
              },
              {
                "value": "0.05",
                "symbol": "/ESZ3"
              }
            ]
          },
          "tick-sizes": {
            "description": "Tick sizes for the contract.",
            "type": "array",
            "properties": {
              "symbol": {
                "description": "",
                "type": "string"
              },
              "threshold": {
                "description": "Decimal value serialized as a JSON string (e.g. \"150.25\").",
                "type": "string",
                "format": "decimal"
              },
              "value": {
                "description": "Decimal value serialized as a JSON string (e.g. \"150.25\").",
                "type": "string",
                "format": "decimal"
              }
            },
            "items": {
              "type": "object",
              "properties": {
                "symbol": {
                  "description": "",
                  "type": "string"
                },
                "threshold": {
                  "description": "Decimal value serialized as a JSON string (e.g. \"150.25\").",
                  "type": "string",
                  "format": "decimal"
                },
                "value": {
                  "description": "Decimal value serialized as a JSON string (e.g. \"150.25\").",
                  "type": "string",
                  "format": "decimal"
                }
              }
            },
            "example": [
              {
                "value": "0.25"
              }
            ]
          }
        },
        "description": "An outright futures contract (e.g. `/ESU3`). Includes the associated product metadata nested under `future-product`."
      },
      "FutureOptionProduct": {
        "type": "object",
        "properties": {
          "cash-settled": {
            "description": "Whether options on this product settle in cash rather than physical delivery.",
            "type": "boolean",
            "example": false
          },
          "code": {
            "description": "Product code.",
            "type": "string",
            "example": "EW1"
          },
          "display-factor": {
            "description": "Factor applied to convert raw prices to display prices. Decimal value serialized as a JSON string (e.g. \"150.25\").",
            "type": "string",
            "format": "decimal",
            "example": "0.01"
          },
          "exchange": {
            "description": "Exchange on which the product trades.",
            "type": "string",
            "example": "CME"
          },
          "expiration-type": {
            "description": "Expiration cadence, e.g. `Weekly` or `Monthly`.",
            "type": "string",
            "example": "Weekly"
          },
          "is-am-settled": {
            "description": "Whether the product settles in the morning (AM settlement).",
            "type": "boolean",
            "example": false
          },
          "itm-rule": {
            "description": "",
            "type": "string"
          },
          "market-sector": {
            "description": "Market sector classification.",
            "type": "string",
            "example": "Equity Index"
          },
          "product-subtype": {
            "description": "",
            "type": "string"
          },
          "product-type": {
            "description": "Product type, e.g. `Physical` or `Financial`.",
            "type": "string",
            "example": "Physical"
          },
          "root-symbol": {
            "description": "Root (contract) symbol of the future option product.",
            "type": "string",
            "example": "EW1"
          },
          "settlement-delay-days": {
            "description": "Number of days between expiration and settlement.",
            "type": "integer",
            "format": "int32",
            "example": 0
          },
          "supported": {
            "description": "Whether the product is supported by tastytrade.",
            "type": "boolean",
            "example": true
          },
          "legacy-code": {
            "description": "Legacy code of the option product.",
            "type": "string",
            "example": "EW1",
            "x-tt-source": "observed-response"
          },
          "clearport-code": {
            "description": "ClearPort code of the option product.",
            "type": "string",
            "example": "EW1",
            "x-tt-source": "observed-response"
          },
          "clearing-code": {
            "description": "Clearing code of the option product.",
            "type": "string",
            "example": "W1",
            "x-tt-source": "observed-response"
          },
          "clearing-exchange-code": {
            "description": "Clearing exchange code of the option product.",
            "type": "string",
            "example": "9C",
            "x-tt-source": "observed-response"
          },
          "clearing-price-multiplier": {
            "description": "Multiplier applied to clearing prices. Decimal value serialized as a JSON string (e.g. \"150.25\").",
            "type": "string",
            "format": "decimal",
            "example": "1.0",
            "x-tt-source": "observed-response"
          },
          "is-rollover": {
            "description": "Whether the option product is a rollover product.",
            "type": "boolean",
            "example": false,
            "x-tt-source": "observed-response"
          },
          "future-product": {
            "description": "The parent future product this option product belongs to. Always present.",
            "$ref": "#/components/schemas/FutureProduct",
            "x-tt-source": "observed-response"
          }
        },
        "description": "Metadata describing a future option product. A future option product is not tradeable; it describes the option contract code and expiration characteristics."
      },
      "FutureOption": {
        "type": "object",
        "properties": {
          "active": {
            "description": "Whether the option is currently available for trading.",
            "type": "boolean",
            "example": true
          },
          "days-to-expiration": {
            "description": "Number of days remaining until the option expires.",
            "type": "integer",
            "format": "int32",
            "example": 4
          },
          "display-factor": {
            "description": "Factor applied to convert raw prices to display prices. Decimal value serialized as a JSON string (e.g. \"150.25\").",
            "type": "string",
            "format": "decimal",
            "example": "0.01"
          },
          "exchange": {
            "description": "Exchange on which the option trades.",
            "type": "string",
            "example": "CME"
          },
          "exercise-style": {
            "description": "Exercise style of the option, e.g. `American` or `European`.",
            "type": "string",
            "example": "American"
          },
          "expiration-date": {
            "description": "Calendar date on which the option expires (ISO-8601).",
            "type": "string",
            "format": "date",
            "example": "2023-08-03"
          },
          "expires-at": {
            "description": "Exact timestamp at which the option expires (ISO-8601).",
            "type": "string",
            "format": "date-time",
            "example": "2023-08-03T20:00:00.000+00:00"
          },
          "future-price-ratio": {
            "description": "Decimal value serialized as a JSON string (e.g. \"150.25\").",
            "type": "string",
            "format": "decimal"
          },
          "is-closing-only": {
            "description": "",
            "type": "boolean"
          },
          "is-confirmed": {
            "description": "",
            "type": "boolean"
          },
          "is-exercisable-weekly": {
            "description": "",
            "type": "boolean"
          },
          "is-primary-deliverable": {
            "description": "",
            "type": "boolean"
          },
          "is-vanilla": {
            "description": "Whether the option is a standard (vanilla) contract.",
            "type": "boolean",
            "example": true
          },
          "last-trade-time": {
            "description": "",
            "type": "string"
          },
          "maturity-date": {
            "description": "Maturity date of the option (ISO-8601).",
            "type": "string",
            "format": "date",
            "example": "2023-08-03"
          },
          "multiplier": {
            "description": "Contract multiplier. Decimal value serialized as a JSON string (e.g. \"150.25\").",
            "type": "string",
            "format": "decimal",
            "example": "1.0"
          },
          "notional-value": {
            "description": "Notional value associated with the contract. Decimal value serialized as a JSON string (e.g. \"150.25\").",
            "type": "string",
            "format": "decimal",
            "example": "0.5"
          },
          "option-root-symbol": {
            "description": "Root symbol of the future option product (e.g. `E1D`).",
            "type": "string",
            "example": "E1D"
          },
          "option-type": {
            "description": "Whether the option is a call (`C`) or a put (`P`).",
            "type": "string",
            "example": "P"
          },
          "product-code": {
            "description": "Product code of the underlying future (e.g. `ES`).",
            "type": "string",
            "example": "ES"
          },
          "root-symbol": {
            "description": "Root symbol of the underlying future (e.g. `/ES`).",
            "type": "string",
            "example": "/ES"
          },
          "security-id": {
            "description": "",
            "type": "string"
          },
          "settlement-type": {
            "description": "Settlement type, e.g. `Future`.",
            "type": "string",
            "example": "Future"
          },
          "stops-trading-at": {
            "description": "Timestamp at which the option stops trading (ISO-8601).",
            "type": "string",
            "format": "date-time",
            "example": "2023-08-03T20:00:00.000+00:00"
          },
          "streamer-symbol": {
            "description": "Symbol used to subscribe to market data on the DXLink streamer.",
            "type": "string",
            "example": "./E1DQ23P3860:XCME"
          },
          "strike-factor": {
            "description": "Decimal value serialized as a JSON string (e.g. \"150.25\").",
            "type": "string",
            "format": "decimal"
          },
          "strike-price": {
            "description": "Strike price of the option. Decimal value serialized as a JSON string (e.g. \"150.25\").",
            "type": "string",
            "format": "decimal",
            "example": "3860.0"
          },
          "symbol": {
            "description": "The future option symbol in tastytrade symbology.",
            "type": "string",
            "example": "./ESU3 E1DQ3 230803P3860"
          },
          "underlying-count": {
            "description": "Decimal value serialized as a JSON string (e.g. \"150.25\").",
            "type": "string",
            "format": "decimal"
          },
          "underlying-symbol": {
            "description": "Symbol of the underlying future contract (e.g. `/ESU3`).",
            "type": "string",
            "example": "/ESU3"
          },
          "future-option-product": {
            "description": "",
            "type": "object",
            "properties": {
              "cash-settled": {
                "description": "",
                "type": "boolean"
              },
              "code": {
                "description": "",
                "type": "string"
              },
              "display-factor": {
                "description": "Decimal value serialized as a JSON string (e.g. \"150.25\").",
                "type": "string",
                "format": "decimal"
              },
              "exchange": {
                "description": "",
                "type": "string"
              },
              "expiration-type": {
                "description": "",
                "type": "string"
              },
              "is-am-settled": {
                "description": "",
                "type": "boolean"
              },
              "itm-rule": {
                "description": "",
                "type": "string"
              },
              "market-sector": {
                "description": "",
                "type": "string"
              },
              "product-subtype": {
                "description": "",
                "type": "string"
              },
              "product-type": {
                "description": "",
                "type": "string"
              },
              "root-symbol": {
                "description": "",
                "type": "string"
              },
              "settlement-delay-days": {
                "description": "",
                "type": "integer",
                "format": "int32"
              },
              "supported": {
                "description": "",
                "type": "boolean"
              }
            }
          },
          "exchange-symbol": {
            "description": "Exchange-format symbol for the contract.",
            "type": "string",
            "example": "E1DQ3 P3860",
            "x-tt-source": "observed-response"
          },
          "security-exchange": {
            "description": "Security exchange identifier.",
            "type": "string",
            "example": "2",
            "x-tt-source": "observed-response"
          },
          "sx-id": {
            "description": "SX identifier.",
            "type": "string",
            "example": "0",
            "x-tt-source": "observed-response"
          }
        },
        "description": "A future option contract identified by tastytrade symbology (e.g. `./ESZ9 EW4U9 190927P2975`). Includes the associated product metadata nested under `future-option-product`."
      },
      "FutureProduct": {
        "type": "object",
        "properties": {
          "active-months": {
            "description": "Month codes with currently active contracts.",
            "type": "array",
            "items": {
              "type": "string"
            },
            "example": [
              "H",
              "M",
              "U",
              "Z"
            ]
          },
          "back-month-first-calendar-symbol": {
            "description": "Whether the back month is the first calendar symbol for spreads.",
            "type": "boolean",
            "example": true
          },
          "base-tick": {
            "description": "",
            "type": "integer",
            "format": "int32"
          },
          "cash-settled": {
            "description": "Whether contracts of this product settle in cash.",
            "type": "boolean",
            "example": true
          },
          "code": {
            "description": "Product code (e.g. `ES`).",
            "type": "string",
            "example": "ES"
          },
          "contract-limit": {
            "description": "",
            "type": "integer",
            "format": "int32"
          },
          "description": {
            "description": "Human-readable description of the product.",
            "type": "string",
            "example": "E Mini S&P"
          },
          "display-factor": {
            "description": "Factor applied to convert raw prices to display prices. Decimal value serialized as a JSON string (e.g. \"150.25\").",
            "type": "string",
            "format": "decimal",
            "example": "0.01"
          },
          "exchange": {
            "description": "Exchange on which the product trades.",
            "type": "string",
            "example": "CME"
          },
          "first-notice": {
            "description": "Whether the product observes a first-notice date.",
            "type": "boolean",
            "example": false
          },
          "listed-months": {
            "description": "Month codes for which contracts of this product are listed.",
            "type": "array",
            "items": {
              "type": "string"
            },
            "example": [
              "H",
              "M",
              "U",
              "Z"
            ]
          },
          "market-sector": {
            "description": "Market sector classification.",
            "type": "string",
            "example": "Equity Index"
          },
          "notional-multiplier": {
            "description": "Multiplier used to compute notional value from price. Decimal value serialized as a JSON string (e.g. \"150.25\").",
            "type": "string",
            "format": "decimal",
            "example": "50.0"
          },
          "price-format": {
            "description": "",
            "type": "string"
          },
          "product-subtype": {
            "description": "",
            "type": "string"
          },
          "product-type": {
            "description": "Product type, e.g. `Financial` or `Physical`.",
            "type": "string",
            "example": "Financial"
          },
          "security-group": {
            "description": "Security group identifier.",
            "type": "string",
            "example": "ES"
          },
          "small-notional": {
            "description": "Whether this is a small-notional (micro) product.",
            "type": "boolean",
            "example": false
          },
          "streamer-exchange-code": {
            "description": "Exchange code used by the DXLink streamer.",
            "type": "string",
            "example": "XCME"
          },
          "sub-tick": {
            "description": "",
            "type": "integer",
            "format": "int32"
          },
          "supported": {
            "description": "Whether the product is supported by tastytrade.",
            "type": "boolean",
            "example": true
          },
          "root-symbol": {
            "description": "Root symbol of the product (e.g. `/ES`).",
            "type": "string",
            "example": "/ES"
          },
          "tick-size": {
            "description": "Minimum price increment for contracts of this product. Decimal value serialized as a JSON string (e.g. \"150.25\").",
            "type": "string",
            "format": "decimal",
            "example": "0.25"
          },
          "true-underlying-code": {
            "description": "",
            "type": "string"
          },
          "underlying-description": {
            "description": "",
            "type": "string"
          },
          "underlying-identifier": {
            "description": "",
            "type": "string"
          },
          "clearing-code": {
            "description": "Clearing code of the product.",
            "type": "string",
            "example": "ES",
            "x-tt-source": "observed-response"
          },
          "clearing-exchange-code": {
            "description": "Clearing exchange code of the product.",
            "type": "string",
            "example": "16",
            "x-tt-source": "observed-response"
          },
          "clearport-code": {
            "description": "ClearPort code of the product.",
            "type": "string",
            "example": "ES",
            "x-tt-source": "observed-response"
          },
          "legacy-code": {
            "description": "Legacy code of the product.",
            "type": "string",
            "example": "ES",
            "x-tt-source": "observed-response"
          },
          "legacy-exchange-code": {
            "description": "Legacy exchange code of the product.",
            "type": "string",
            "example": "CME",
            "x-tt-source": "observed-response"
          },
          "option-products": {
            "description": "Future option products associated with this product. Missing or empty when tastytrade does not offer options for the product.",
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/FutureOptionProduct"
            },
            "x-tt-source": "observed-response"
          },
          "roll": {
            "description": "Contract roll attributes for the product.",
            "type": "object",
            "properties": {
              "name": {
                "type": "string",
                "example": "equity_index"
              },
              "active-count": {
                "type": "integer",
                "example": 3
              },
              "cash-settled": {
                "type": "boolean",
                "example": true
              },
              "business-days-offset": {
                "type": "integer",
                "example": 4
              },
              "first-notice": {
                "type": "boolean",
                "example": false
              }
            },
            "x-tt-source": "observed-response"
          }
        },
        "description": "Metadata describing a futures product. A future product is not tradeable; it describes attributes such as the contract code, listed months, and tick size."
      },
      "QuantityDecimalPrecision": {
        "type": "object",
        "properties": {
          "instrument-type": {
            "description": "The instrument type the precision applies to, e.g. `Cryptocurrency` or `Equity`.",
            "type": "string",
            "example": "Cryptocurrency"
          },
          "minimum-increment-precision": {
            "description": "Decimal precision of the minimum tradeable increment.",
            "type": "integer",
            "format": "int32",
            "example": 8
          },
          "symbol": {
            "description": "Specific symbol the precision applies to, when scoped to a single instrument.",
            "type": "string",
            "example": "BTC/USD"
          },
          "value": {
            "description": "Number of decimal places allowed in a quantity. A value of 0 means whole numbers only.",
            "type": "integer",
            "format": "int32",
            "example": 8
          }
        },
        "description": "Defines the decimal precision allowed for an instrument type or symbol's quantity. Mostly relevant for cryptocurrencies and fractional-eligible equities."
      },
      "Warrant": {
        "type": "object",
        "properties": {
          "active": {
            "description": "Whether the warrant is currently active.",
            "type": "boolean",
            "example": true
          },
          "cusip": {
            "description": "CUSIP identifier for the warrant.",
            "type": "string",
            "example": "021304206"
          },
          "description": {
            "description": "Full human-readable description of the warrant.",
            "type": "string",
            "example": "AlphaTime Acquisition Corp - Warrant"
          },
          "instrument-type": {
            "description": "Instrument type discriminator; always `Warrant` for this model.",
            "type": "string",
            "example": "Warrant"
          },
          "is-closing-only": {
            "description": "Whether the warrant is restricted to closing transactions only.",
            "type": "boolean",
            "example": false
          },
          "listed-market": {
            "description": "Market identifier code (MIC) of the listing exchange.",
            "type": "string",
            "example": "XNAS"
          },
          "symbol": {
            "description": "The warrant ticker symbol.",
            "type": "string",
            "example": "ATMCW"
          }
        },
        "description": "A warrant instrument identified by its ticker symbol (e.g. `ATMCW`)."
      },
      "FuturesNestedOptionChainSerializer": {
        "type": "object",
        "properties": {
          "futures": {
            "description": "Futures contracts associated with the option chain.",
            "type": "array",
            "properties": {
              "symbol": {
                "description": "",
                "type": "string"
              },
              "root-symbol": {
                "description": "",
                "type": "string"
              },
              "maturity-date": {
                "description": "",
                "type": "string",
                "format": "date"
              },
              "expiration-date": {
                "description": "",
                "type": "string",
                "format": "date"
              },
              "days-to-expiration": {
                "description": "",
                "type": "integer",
                "format": "int32"
              },
              "active-month": {
                "description": "",
                "type": "boolean"
              },
              "next-active-month": {
                "description": "",
                "type": "boolean"
              },
              "stops-trading-at": {
                "description": "",
                "type": "string",
                "format": "date-time"
              },
              "expires-at": {
                "description": "",
                "type": "string",
                "format": "date-time"
              }
            },
            "items": {
              "type": "object",
              "properties": {
                "symbol": {
                  "description": "",
                  "type": "string"
                },
                "root-symbol": {
                  "description": "",
                  "type": "string"
                },
                "maturity-date": {
                  "description": "",
                  "type": "string",
                  "format": "date"
                },
                "expiration-date": {
                  "description": "",
                  "type": "string",
                  "format": "date"
                },
                "days-to-expiration": {
                  "description": "",
                  "type": "integer",
                  "format": "int32"
                },
                "active-month": {
                  "description": "",
                  "type": "boolean"
                },
                "next-active-month": {
                  "description": "",
                  "type": "boolean"
                },
                "stops-trading-at": {
                  "description": "",
                  "type": "string",
                  "format": "date-time"
                },
                "expires-at": {
                  "description": "",
                  "type": "string",
                  "format": "date-time"
                }
              }
            }
          },
          "option-chains": {
            "description": "Option chains grouped by expiration and strike for each underlying future.",
            "type": "array",
            "properties": {
              "underlying-symbol": {
                "description": "",
                "type": "string"
              },
              "root-symbol": {
                "description": "",
                "type": "string"
              },
              "exercise-style": {
                "description": "",
                "type": "string"
              },
              "expirations": {
                "description": "",
                "type": "array",
                "properties": {
                  "underlying-symbol": {
                    "description": "",
                    "type": "string"
                  },
                  "root-symbol": {
                    "description": "",
                    "type": "string"
                  },
                  "option-root-symbol": {
                    "description": "",
                    "type": "string"
                  },
                  "option-contract-symbol": {
                    "description": "",
                    "type": "string"
                  },
                  "asset": {
                    "description": "",
                    "type": "string"
                  },
                  "expiration-date": {
                    "description": "",
                    "type": "string",
                    "format": "date"
                  },
                  "days-to-expiration": {
                    "description": "",
                    "type": "integer",
                    "format": "int32"
                  },
                  "expiration-type": {
                    "description": "",
                    "type": "string"
                  },
                  "settlement-type": {
                    "description": "",
                    "type": "string"
                  },
                  "notional-value": {
                    "description": "Decimal value serialized as a JSON string (e.g. \"150.25\").",
                    "type": "string",
                    "format": "decimal"
                  },
                  "display-factor": {
                    "description": "Decimal value serialized as a JSON string (e.g. \"150.25\").",
                    "type": "string",
                    "format": "decimal"
                  },
                  "strike-factor": {
                    "description": "Decimal value serialized as a JSON string (e.g. \"150.25\").",
                    "type": "string",
                    "format": "decimal"
                  },
                  "stops-trading-at": {
                    "description": "",
                    "type": "string",
                    "format": "date-time"
                  },
                  "expires-at": {
                    "description": "",
                    "type": "string",
                    "format": "date-time"
                  },
                  "tick-sizes": {
                    "description": "",
                    "type": "array",
                    "properties": {
                      "symbol": {
                        "description": "",
                        "type": "string"
                      },
                      "threshold": {
                        "description": "Decimal value serialized as a JSON string (e.g. \"150.25\").",
                        "type": "string",
                        "format": "decimal"
                      },
                      "value": {
                        "description": "Decimal value serialized as a JSON string (e.g. \"150.25\").",
                        "type": "string",
                        "format": "decimal"
                      }
                    },
                    "items": {
                      "type": "object"
                    }
                  },
                  "strikes": {
                    "description": "",
                    "type": "array",
                    "properties": {
                      "strike-price": {
                        "description": "Decimal value serialized as a JSON string (e.g. \"150.25\").",
                        "type": "string",
                        "format": "decimal"
                      },
                      "call": {
                        "description": "",
                        "type": "string"
                      },
                      "call-streamer-symbol": {
                        "description": "",
                        "type": "string"
                      },
                      "put": {
                        "description": "",
                        "type": "string"
                      },
                      "put-streamer-symbol": {
                        "description": "",
                        "type": "string"
                      }
                    },
                    "items": {
                      "type": "object"
                    }
                  }
                },
                "items": {
                  "type": "object"
                }
              }
            },
            "items": {
              "type": "object",
              "properties": {
                "underlying-symbol": {
                  "description": "",
                  "type": "string"
                },
                "root-symbol": {
                  "description": "",
                  "type": "string"
                },
                "exercise-style": {
                  "description": "",
                  "type": "string"
                },
                "expirations": {
                  "description": "Expirations for the chain, each grouping its tick sizes and strikes.",
                  "type": "array",
                  "items": {
                    "type": "object",
                    "properties": {
                      "underlying-symbol": {
                        "description": "",
                        "type": "string"
                      },
                      "root-symbol": {
                        "description": "",
                        "type": "string"
                      },
                      "option-root-symbol": {
                        "description": "",
                        "type": "string"
                      },
                      "option-contract-symbol": {
                        "description": "",
                        "type": "string"
                      },
                      "asset": {
                        "description": "",
                        "type": "string"
                      },
                      "expiration-date": {
                        "description": "",
                        "type": "string",
                        "format": "date"
                      },
                      "days-to-expiration": {
                        "description": "",
                        "type": "integer",
                        "format": "int32"
                      },
                      "expiration-type": {
                        "description": "",
                        "type": "string"
                      },
                      "settlement-type": {
                        "description": "",
                        "type": "string"
                      },
                      "notional-value": {
                        "description": "Decimal value serialized as a JSON string (e.g. \"150.25\").",
                        "type": "string",
                        "format": "decimal"
                      },
                      "display-factor": {
                        "description": "Decimal value serialized as a JSON string (e.g. \"150.25\").",
                        "type": "string",
                        "format": "decimal"
                      },
                      "strike-factor": {
                        "description": "Decimal value serialized as a JSON string (e.g. \"150.25\").",
                        "type": "string",
                        "format": "decimal"
                      },
                      "stops-trading-at": {
                        "description": "",
                        "type": "string",
                        "format": "date-time"
                      },
                      "expires-at": {
                        "description": "",
                        "type": "string",
                        "format": "date-time"
                      },
                      "tick-sizes": {
                        "description": "Tick sizes for the expiration.",
                        "type": "array",
                        "items": {
                          "type": "object",
                          "properties": {
                            "symbol": {
                              "description": "",
                              "type": "string"
                            },
                            "threshold": {
                              "description": "Decimal value serialized as a JSON string (e.g. \"150.25\").",
                              "type": "string",
                              "format": "decimal"
                            },
                            "value": {
                              "description": "Decimal value serialized as a JSON string (e.g. \"150.25\").",
                              "type": "string",
                              "format": "decimal"
                            }
                          }
                        }
                      },
                      "strikes": {
                        "description": "Strikes for the expiration. Each strike provides its call and put symbols.",
                        "type": "array",
                        "items": {
                          "type": "object",
                          "properties": {
                            "strike-price": {
                              "description": "Decimal value serialized as a JSON string (e.g. \"150.25\").",
                              "type": "string",
                              "format": "decimal"
                            },
                            "call": {
                              "description": "",
                              "type": "string"
                            },
                            "call-streamer-symbol": {
                              "description": "",
                              "type": "string"
                            },
                            "put": {
                              "description": "",
                              "type": "string"
                            },
                            "put-streamer-symbol": {
                              "description": "",
                              "type": "string"
                            }
                          }
                        }
                      }
                    }
                  }
                }
              }
            }
          }
        },
        "description": "Nested representation of a futures option chain, grouping futures, expirations, and strikes to minimize redundant processing."
      },
      "CompactOptionChainSerializer": {
        "type": "object",
        "properties": {
          "underlying-symbol": {
            "description": "Ticker symbol of the underlying equity.",
            "type": "string",
            "example": "SPY"
          },
          "root-symbol": {
            "description": "Root symbol of the option chain.",
            "type": "string",
            "example": "SPY"
          },
          "option-chain-type": {
            "description": "Type of option chain, e.g. `Standard`.",
            "type": "string",
            "example": "Standard"
          },
          "settlement-type": {
            "description": "Settlement type, e.g. `PM`.",
            "type": "string",
            "example": "PM"
          },
          "shares-per-contract": {
            "description": "Number of underlying shares deliverable per contract.",
            "type": "integer",
            "format": "int32",
            "example": 100
          },
          "expiration-type": {
            "description": "Expiration classification, e.g. `Weekly`.",
            "type": "string",
            "example": "Weekly"
          },
          "deliverables": {
            "description": "Deliverables for the option chain.",
            "type": "array",
            "properties": {
              "id": {
                "description": "",
                "type": "integer",
                "format": "int32"
              },
              "amount": {
                "description": "Decimal value serialized as a JSON string (e.g. \"150.25\").",
                "type": "string",
                "format": "decimal"
              },
              "deliverable-type": {
                "description": "",
                "type": "string"
              },
              "description": {
                "description": "",
                "type": "string"
              },
              "instrument-type": {
                "description": "",
                "type": "string"
              },
              "percent": {
                "description": "",
                "type": "string"
              },
              "root-symbol": {
                "description": "",
                "type": "string"
              },
              "symbol": {
                "description": "",
                "type": "string"
              }
            },
            "items": {
              "type": "object",
              "properties": {
                "id": {
                  "description": "",
                  "type": "integer",
                  "format": "int32"
                },
                "amount": {
                  "description": "Decimal value serialized as a JSON string (e.g. \"150.25\").",
                  "type": "string",
                  "format": "decimal"
                },
                "deliverable-type": {
                  "description": "",
                  "type": "string"
                },
                "description": {
                  "description": "",
                  "type": "string"
                },
                "instrument-type": {
                  "description": "",
                  "type": "string"
                },
                "percent": {
                  "description": "",
                  "type": "string"
                },
                "root-symbol": {
                  "description": "",
                  "type": "string"
                },
                "symbol": {
                  "description": "",
                  "type": "string"
                }
              }
            },
            "example": [
              {
                "id": 114830,
                "root-symbol": "SPY",
                "deliverable-type": "Shares",
                "description": "100 shares of SPY",
                "amount": "100.0",
                "symbol": "SPY",
                "instrument-type": "Equity",
                "percent": "100"
              }
            ]
          },
          "symbols": {
            "description": "All option symbols (OCC format) across every expiration and strike, concatenated into a single array.",
            "type": "array",
            "items": {
              "type": "string"
            },
            "example": [
              "SPY   230731C00370000",
              "SPY   230731P00370000",
              "SPY   230731C00380000",
              "SPY   230731P00380000"
            ]
          },
          "streamer-symbols": {
            "description": "Streamer symbols corresponding to each option symbol, concatenated into a single array.",
            "type": "array",
            "items": {
              "type": "string"
            },
            "example": [
              ".SPY230706C370",
              ".SPY230706P370"
            ]
          }
        },
        "description": "Compact representation of an equity option chain that concatenates all strike symbols across expirations into a single array to minimize content size."
      },
      "NestedOptionChainSerializer": {
        "type": "object",
        "properties": {
          "underlying-symbol": {
            "description": "Ticker symbol of the underlying equity.",
            "type": "string",
            "example": "SPY"
          },
          "root-symbol": {
            "description": "Root symbol of the option chain.",
            "type": "string",
            "example": "SPY"
          },
          "option-chain-type": {
            "description": "Type of option chain, e.g. `Standard`.",
            "type": "string",
            "example": "Standard"
          },
          "shares-per-contract": {
            "description": "Number of underlying shares deliverable per contract.",
            "type": "integer",
            "format": "int32",
            "example": 100
          },
          "tick-sizes": {
            "description": "Tick sizes for the option chain.",
            "type": "array",
            "properties": {
              "symbol": {
                "description": "",
                "type": "string"
              },
              "threshold": {
                "description": "Decimal value serialized as a JSON string (e.g. \"150.25\").",
                "type": "string",
                "format": "decimal"
              },
              "value": {
                "description": "Decimal value serialized as a JSON string (e.g. \"150.25\").",
                "type": "string",
                "format": "decimal"
              }
            },
            "items": {
              "type": "object",
              "properties": {
                "symbol": {
                  "description": "",
                  "type": "string"
                },
                "threshold": {
                  "description": "Decimal value serialized as a JSON string (e.g. \"150.25\").",
                  "type": "string",
                  "format": "decimal"
                },
                "value": {
                  "description": "Decimal value serialized as a JSON string (e.g. \"150.25\").",
                  "type": "string",
                  "format": "decimal"
                }
              }
            }
          },
          "deliverables": {
            "description": "Deliverables for the option chain.",
            "type": "array",
            "properties": {
              "id": {
                "description": "",
                "type": "integer",
                "format": "int32"
              },
              "amount": {
                "description": "Decimal value serialized as a JSON string (e.g. \"150.25\").",
                "type": "string",
                "format": "decimal"
              },
              "deliverable-type": {
                "description": "",
                "type": "string"
              },
              "description": {
                "description": "",
                "type": "string"
              },
              "instrument-type": {
                "description": "",
                "type": "string"
              },
              "percent": {
                "description": "",
                "type": "string"
              },
              "root-symbol": {
                "description": "",
                "type": "string"
              },
              "symbol": {
                "description": "",
                "type": "string"
              }
            },
            "items": {
              "type": "object",
              "properties": {
                "id": {
                  "description": "",
                  "type": "integer",
                  "format": "int32"
                },
                "amount": {
                  "description": "Decimal value serialized as a JSON string (e.g. \"150.25\").",
                  "type": "string",
                  "format": "decimal"
                },
                "deliverable-type": {
                  "description": "",
                  "type": "string"
                },
                "description": {
                  "description": "",
                  "type": "string"
                },
                "instrument-type": {
                  "description": "",
                  "type": "string"
                },
                "percent": {
                  "description": "",
                  "type": "string"
                },
                "root-symbol": {
                  "description": "",
                  "type": "string"
                },
                "symbol": {
                  "description": "",
                  "type": "string"
                }
              }
            }
          },
          "expirations": {
            "description": "Expirations in the chain, each grouping its strikes.",
            "type": "array",
            "properties": {
              "expiration-type": {
                "description": "",
                "type": "string"
              },
              "expiration-date": {
                "description": "",
                "type": "string",
                "format": "date"
              },
              "days-to-expiration": {
                "description": "",
                "type": "integer",
                "format": "int32"
              },
              "settlement-type": {
                "description": "",
                "type": "string"
              },
              "strikes": {
                "description": "",
                "type": "array",
                "properties": {
                  "strike-price": {
                    "description": "Decimal value serialized as a JSON string (e.g. \"150.25\").",
                    "type": "string",
                    "format": "decimal"
                  },
                  "call": {
                    "description": "",
                    "type": "string"
                  },
                  "call-streamer-symbol": {
                    "description": "",
                    "type": "string"
                  },
                  "put": {
                    "description": "",
                    "type": "string"
                  },
                  "put-streamer-symbol": {
                    "description": "",
                    "type": "string"
                  }
                },
                "items": {
                  "type": "object"
                }
              }
            },
            "items": {
              "type": "object",
              "properties": {
                "expiration-type": {
                  "description": "",
                  "type": "string"
                },
                "expiration-date": {
                  "description": "",
                  "type": "string",
                  "format": "date"
                },
                "days-to-expiration": {
                  "description": "",
                  "type": "integer",
                  "format": "int32"
                },
                "settlement-type": {
                  "description": "",
                  "type": "string"
                },
                "strikes": {
                  "description": "Strikes for the expiration. Each strike provides its call and put symbols.",
                  "type": "array",
                  "items": {
                    "type": "object",
                    "properties": {
                      "strike-price": {
                        "description": "Decimal value serialized as a JSON string (e.g. \"150.25\").",
                        "type": "string",
                        "format": "decimal"
                      },
                      "call": {
                        "description": "",
                        "type": "string"
                      },
                      "call-streamer-symbol": {
                        "description": "",
                        "type": "string"
                      },
                      "put": {
                        "description": "",
                        "type": "string"
                      },
                      "put-streamer-symbol": {
                        "description": "",
                        "type": "string"
                      }
                    }
                  }
                }
              }
            }
          }
        },
        "description": "Nested representation of an equity option chain, grouping expirations and strikes together. Each strike provides its call and put symbols."
      },
      "NestedOptionChainList": {
        "description": "Container for the nested equity option chain. The chain objects are returned in an `items` array.",
        "type": "object",
        "properties": {
          "items": {
            "description": "Nested option chain objects for the underlying symbol.",
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/NestedOptionChainSerializer"
            }
          }
        },
        "required": [
          "items"
        ]
      },
      "CompactOptionChainList": {
        "description": "Container for the compact equity option chain. The chain objects are returned in an `items` array.",
        "type": "object",
        "properties": {
          "items": {
            "description": "Compact option chain objects for the underlying symbol.",
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/CompactOptionChainSerializer"
            }
          }
        },
        "required": [
          "items"
        ]
      }
    }
  },
  "x-tastytrade-service": {
    "serviceName": "instruments-api",
    "group": "instruments",
    "title": "Instruments"
  }
}