{
  "openapi": "3.1.0",
  "info": {
    "title": "Gamma Flow API",
    "description": "Gamma Intelligence Platform \u2014 free CBOE-based options analytics",
    "version": "0.1.0",
    "x-snapshot-source": "http://127.0.0.1:8888/openapi.json"
  },
  "paths": {
    "/": {
      "get": {
        "summary": "Root",
        "operationId": "root__get",
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {}
              }
            }
          }
        }
      }
    },
    "/health": {
      "get": {
        "summary": "Health",
        "operationId": "health_health_get",
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {}
              }
            }
          }
        }
      }
    },
    "/scheduler/status": {
      "get": {
        "summary": "Scheduler Status",
        "description": "Expose the scheduler's runtime state for /status page + ops.",
        "operationId": "scheduler_status_scheduler_status_get",
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {}
              }
            }
          }
        }
      }
    },
    "/api/levels/{symbol}": {
      "get": {
        "tags": [
          "levels"
        ],
        "summary": "Get Levels",
        "description": "Get current gamma levels for any supported symbol.\n\nNative symbols (computed from CBOE chain):\n    SPX, NDX, QQQ, SPY, GLD, IWM, TLT\n\nFor futures (NQ, ES, GC, RTY, ZB), use /api/conversion/{futures_symbol}.",
        "operationId": "get_levels_api_levels__symbol__get",
        "parameters": [
          {
            "name": "symbol",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "Symbol"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/LevelsResponse"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/api/matrix": {
      "get": {
        "tags": [
          "matrix"
        ],
        "summary": "Get Matrix",
        "description": "Return one-row-per-symbol summary across all tracked symbols.\n\nMirrors MentorQ's Option Matrix view.",
        "operationId": "get_matrix_api_matrix_get",
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MatrixResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/copy/{symbol}": {
      "get": {
        "tags": [
          "copy"
        ],
        "summary": "Get Paste Text",
        "description": "Return the paste-ready text block for the TradingView indicator.\n\nFormat (Pine indicator parses these keywords):\n    Gamma Flow Gamma Levels \u2014 {SYMBOL} \u2014 {timestamp}\n    Source: gamma-flow.com\n    Spot: {value}\n    Regime: {LONG_GAMMA | SHORT_GAMMA | NEUTRAL}\n\n    [All Expiries]\n    HVL: {value}\n    Call Resistance 1: {value}\n    ...\n\n    [0DTE]\n    0DTE HVL: {value}\n    ...\n\n    [Metrics]\n    Net GEX: {value}\n    ...\n\nResponse type: text/plain (not JSON) so users can copy directly to clipboard.",
        "operationId": "get_paste_text_api_copy__symbol__get",
        "parameters": [
          {
            "name": "symbol",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "Symbol"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "text/plain": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/api/conversion/{futures_symbol}": {
      "get": {
        "tags": [
          "conversion"
        ],
        "summary": "Get Futures Levels",
        "description": "Get gamma levels for a futures contract via conversion from underlying.\n\nPairs:\n    NQ  \u2190 QQQ (default) or NDX\n    ES  \u2190 SPY (default) or SPX\n    GC  \u2190 GLD\n    RTY \u2190 IWM\n    ZB  \u2190 TLT",
        "operationId": "get_futures_levels_api_conversion__futures_symbol__get",
        "parameters": [
          {
            "name": "futures_symbol",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "Futures Symbol"
            }
          },
          {
            "name": "source",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Override default source (e.g. NDX instead of QQQ)",
              "title": "Source"
            },
            "description": "Override default source (e.g. NDX instead of QQQ)"
          },
          {
            "name": "method",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "'ratio' or 'spread' (overrides default)",
              "title": "Method"
            },
            "description": "'ratio' or 'spread' (overrides default)"
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/FuturesLevelsResponse"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/api/conversion/{futures_symbol}/copy": {
      "get": {
        "tags": [
          "conversion"
        ],
        "summary": "Get Futures Paste Text",
        "description": "Paste-ready text for futures levels.",
        "operationId": "get_futures_paste_text_api_conversion__futures_symbol__copy_get",
        "parameters": [
          {
            "name": "futures_symbol",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "Futures Symbol"
            }
          },
          {
            "name": "source",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Source"
            }
          },
          {
            "name": "method",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Method"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "text/plain": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/api/profile/{symbol}": {
      "get": {
        "tags": [
          "profile"
        ],
        "summary": "Get Profile",
        "description": "Return per-strike GEX bars for chart rendering.\n\nFilters strikes to within \u00b1range_pct of spot, dropping low-OI rows.",
        "operationId": "get_profile_api_profile__symbol__get",
        "parameters": [
          {
            "name": "symbol",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "Symbol"
            }
          },
          {
            "name": "range_pct",
            "in": "query",
            "required": false,
            "schema": {
              "type": "number",
              "maximum": 0.5,
              "minimum": 0.01,
              "description": "Strike range as % from spot",
              "default": 0.1,
              "title": "Range Pct"
            },
            "description": "Strike range as % from spot"
          },
          {
            "name": "min_oi",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "minimum": 0,
              "default": 10,
              "title": "Min Oi"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProfileResponse"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/api/ladders/{symbol}/history-lookback": {
      "get": {
        "tags": [
          "ladders"
        ],
        "summary": "Get Lookback",
        "description": "Lookback dots \u2014 net GEX per strike at multiple past timestamps.",
        "operationId": "get_lookback_api_ladders__symbol__history_lookback_get",
        "parameters": [
          {
            "name": "symbol",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "Symbol"
            }
          },
          {
            "name": "asof",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string",
                  "format": "date-time"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Asof"
            }
          },
          {
            "name": "intervals_min",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "default": "5,15,30,60",
              "title": "Intervals Min"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/LookbackResponse"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/api/ladders/{symbol}/max-change": {
      "get": {
        "tags": [
          "ladders"
        ],
        "summary": "Get Max Change",
        "description": "Top-N strikes with biggest |\u0394 net_gex| over each window.",
        "operationId": "get_max_change_api_ladders__symbol__max_change_get",
        "parameters": [
          {
            "name": "symbol",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "Symbol"
            }
          },
          {
            "name": "asof",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string",
                  "format": "date-time"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Asof"
            }
          },
          {
            "name": "windows_min",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "default": "1,5,15,30",
              "title": "Windows Min"
            }
          },
          {
            "name": "top_n",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "maximum": 30,
              "minimum": 3,
              "default": 10,
              "title": "Top N"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/app__api__routes__ladders__MaxChangeResponse"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/api/ladders/{symbol}/{ladder_type}": {
      "get": {
        "tags": [
          "ladders"
        ],
        "summary": "Get Ladder",
        "description": "Return one of the four ladder types for charting.\n\n- dex       : delta exposure (one signed bar per strike)\n- convexity : long \u03b3 vs short \u03b3 (TWO bars per strike, primary=long, secondary=short)\n- vanna     : vanna $ per strike (one signed bar)\n- charm     : charm $/hr per strike (one signed bar)",
        "operationId": "get_ladder_api_ladders__symbol___ladder_type__get",
        "parameters": [
          {
            "name": "symbol",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "Symbol"
            }
          },
          {
            "name": "ladder_type",
            "in": "path",
            "required": true,
            "schema": {
              "enum": [
                "dex",
                "convexity",
                "vanna",
                "charm"
              ],
              "type": "string",
              "title": "Ladder Type"
            }
          },
          {
            "name": "range_pct",
            "in": "query",
            "required": false,
            "schema": {
              "type": "number",
              "maximum": 0.5,
              "minimum": 0.01,
              "default": 0.05,
              "title": "Range Pct"
            }
          },
          {
            "name": "min_oi",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "minimum": 0,
              "default": 10,
              "title": "Min Oi"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/LadderResponse"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/api/pulse/session": {
      "get": {
        "tags": [
          "pulse"
        ],
        "summary": "Get Session",
        "description": "Current trading session status \u2014 TLAD-style 6 sessions + close states.",
        "operationId": "get_session_api_pulse_session_get",
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {}
              }
            }
          }
        }
      }
    },
    "/api/pulse/{symbol}/fast-lanes": {
      "get": {
        "tags": [
          "pulse"
        ],
        "summary": "Get Fast Lanes",
        "description": "Detect FAST LANE zones \u2014 gaps in the gamma profile.",
        "operationId": "get_fast_lanes_api_pulse__symbol__fast_lanes_get",
        "parameters": [
          {
            "name": "symbol",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "Symbol"
            }
          },
          {
            "name": "range_pct",
            "in": "query",
            "required": false,
            "schema": {
              "type": "number",
              "maximum": 0.5,
              "minimum": 0.01,
              "default": 0.05,
              "title": "Range Pct"
            }
          },
          {
            "name": "significance_pct",
            "in": "query",
            "required": false,
            "schema": {
              "type": "number",
              "maximum": 0.5,
              "minimum": 0.05,
              "default": 0.2,
              "title": "Significance Pct"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/FastLaneResponse"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/api/pulse/{symbol}": {
      "get": {
        "tags": [
          "pulse"
        ],
        "summary": "Get Pulse",
        "description": "Composite Market Pulse \u2014 everything the header needs in one call.",
        "operationId": "get_pulse_api_pulse__symbol__get",
        "parameters": [
          {
            "name": "symbol",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "Symbol"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PulseResponse"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/api/multi-expiry/{symbol}": {
      "get": {
        "tags": [
          "extras"
        ],
        "summary": "Get Multi Expiry",
        "description": "Per-expiry GEX breakdown + 4 highlighted panels.",
        "operationId": "get_multi_expiry_api_multi_expiry__symbol__get",
        "parameters": [
          {
            "name": "symbol",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "Symbol"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MultiExpiryResponse"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/api/qscore/{symbol}": {
      "get": {
        "tags": [
          "extras"
        ],
        "summary": "Get Qscore",
        "description": "4-D composite signal \u2014 Option / Vol / Momentum / Seasonality.",
        "operationId": "get_qscore_api_qscore__symbol__get",
        "parameters": [
          {
            "name": "symbol",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "Symbol"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/QScoreResponse"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/api/matrix-full": {
      "get": {
        "tags": [
          "extras"
        ],
        "summary": "Get Matrix Full",
        "description": "Multi-symbol screener \u2014 parallel + 30s TTL response cache.\n\nIf include_qscore=true, also computes the 4D Q-Score per symbol\n(slower \u2014 adds ~1s per symbol due to vanna/charm + Yahoo momentum).",
        "operationId": "get_matrix_full_api_matrix_full_get",
        "parameters": [
          {
            "name": "include_qscore",
            "in": "query",
            "required": false,
            "schema": {
              "type": "boolean",
              "default": false,
              "title": "Include Qscore"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MatrixFullResponse"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/api/hero/{symbol}": {
      "get": {
        "tags": [
          "hero"
        ],
        "summary": "Get Hero",
        "description": "Combined data for the Hero chart page.\n\nArgs:\n    interval: yfinance bar interval (1m default)\n    period:   yfinance lookback (1d default \u2014 current session)\n    strike_window: keep strikes within \u00b1N% of spot for heatmap density\n    source: for futures only \u2014 override the default source ETF/index\n            (NQ defaults to QQQ; pass `?source=NDX` for the index-based read).\n\nFutures (NQ, ES, GC, RTY, ZB) are derived from their source ETF chain\nmultiplied by the live futures/source spot ratio. Candles come straight\nfrom yfinance NQ=F / ES=F / etc. so they're already in the futures\ncontract's own price scale.",
        "operationId": "get_hero_api_hero__symbol__get",
        "parameters": [
          {
            "name": "symbol",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "Symbol"
            }
          },
          {
            "name": "interval",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "pattern": "^(1m|2m|5m|15m|30m|1h)$",
              "default": "1m",
              "title": "Interval"
            }
          },
          {
            "name": "period",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "pattern": "^(1d|5d|1mo)$",
              "default": "1d",
              "title": "Period"
            }
          },
          {
            "name": "strike_window",
            "in": "query",
            "required": false,
            "schema": {
              "type": "number",
              "maximum": 0.3,
              "minimum": 0.01,
              "description": "Strike window as \u00b1 fraction of spot (0.06 = \u00b16%)",
              "default": 0.06,
              "title": "Strike Window"
            },
            "description": "Strike window as \u00b1 fraction of spot (0.06 = \u00b16%)"
          },
          {
            "name": "source",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Override source for futures (e.g. ?source=NDX for NQ)",
              "title": "Source"
            },
            "description": "Override source for futures (e.g. ?source=NDX for NQ)"
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HeroResponse"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/api/chain/{symbol}": {
      "get": {
        "tags": [
          "chain"
        ],
        "summary": "Get Chain",
        "description": "Full chain for one expiry.\n\nDefaults to the nearest expiry. Pass `expiry=YYYY-MM-DD` to switch.",
        "operationId": "get_chain_api_chain__symbol__get",
        "parameters": [
          {
            "name": "symbol",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "Symbol"
            }
          },
          {
            "name": "expiry",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "YYYY-MM-DD; defaults to front month",
              "title": "Expiry"
            },
            "description": "YYYY-MM-DD; defaults to front month"
          },
          {
            "name": "strike_window",
            "in": "query",
            "required": false,
            "schema": {
              "type": "number",
              "maximum": 0.5,
              "minimum": 0.01,
              "description": "Keep strikes within \u00b1N of spot to bound payload.",
              "default": 0.08,
              "title": "Strike Window"
            },
            "description": "Keep strikes within \u00b1N of spot to bound payload."
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ChainResponse"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/api/spot/{symbol}": {
      "get": {
        "tags": [
          "spot"
        ],
        "summary": "Get Spot",
        "description": "Fast spot poll. Returns the freshest price we can get for free.",
        "operationId": "get_spot_api_spot__symbol__get",
        "parameters": [
          {
            "name": "symbol",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "Symbol"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SpotResponse"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/api/vol/{symbol}": {
      "get": {
        "tags": [
          "vol"
        ],
        "summary": "Get Vol Surface",
        "operationId": "get_vol_surface_api_vol__symbol__get",
        "parameters": [
          {
            "name": "symbol",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "Symbol"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/VolResponse"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/api/blind-spots/groups": {
      "get": {
        "tags": [
          "blind-spots"
        ],
        "summary": "List Groups",
        "description": "List known cluster groups, for the UI's group picker.",
        "operationId": "list_groups_api_blind_spots_groups_get",
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "items": {
                    "additionalProperties": true,
                    "type": "object"
                  },
                  "type": "array",
                  "title": "Response List Groups Api Blind Spots Groups Get"
                }
              }
            }
          }
        }
      }
    },
    "/api/blind-spots/{group_id}": {
      "get": {
        "tags": [
          "blind-spots"
        ],
        "summary": "Get Blind Spots",
        "operationId": "get_blind_spots_api_blind_spots__group_id__get",
        "parameters": [
          {
            "name": "group_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "Group Id"
            }
          },
          {
            "name": "bin_pct",
            "in": "query",
            "required": false,
            "schema": {
              "type": "number",
              "maximum": 0.01,
              "minimum": 0.0005,
              "description": "Bin width as fraction of reference spot",
              "default": 0.0015,
              "title": "Bin Pct"
            },
            "description": "Bin width as fraction of reference spot"
          },
          {
            "name": "top_k",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "maximum": 20,
              "minimum": 1,
              "default": 10,
              "title": "Top K"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BlindSpotsResponse"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/api/history/{symbol}": {
      "get": {
        "tags": [
          "history"
        ],
        "summary": "Get History",
        "description": "Time-series of derived levels accumulated by the ingestion loop.",
        "operationId": "get_history_api_history__symbol__get",
        "parameters": [
          {
            "name": "symbol",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "Symbol"
            }
          },
          {
            "name": "days",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "maximum": 90,
              "minimum": 1,
              "description": "How many days back to include",
              "default": 7,
              "title": "Days"
            },
            "description": "How many days back to include"
          },
          {
            "name": "max_points",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "maximum": 20000,
              "minimum": 10,
              "default": 2000,
              "title": "Max Points"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HistoryResponse"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/api/alerts": {
      "get": {
        "tags": [
          "alerts"
        ],
        "summary": "List Alerts",
        "operationId": "list_alerts_api_alerts_get",
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "items": {
                    "$ref": "#/components/schemas/Alert"
                  },
                  "type": "array",
                  "title": "Response List Alerts Api Alerts Get"
                }
              }
            }
          }
        }
      },
      "post": {
        "tags": [
          "alerts"
        ],
        "summary": "Create Alert",
        "operationId": "create_alert_api_alerts_post",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/AlertCreate"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Alert"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/api/alerts/{alert_id}": {
      "delete": {
        "tags": [
          "alerts"
        ],
        "summary": "Delete Alert",
        "operationId": "delete_alert_api_alerts__alert_id__delete",
        "parameters": [
          {
            "name": "alert_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "title": "Alert Id"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {}
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/api/newsletter/{symbol}": {
      "get": {
        "tags": [
          "newsletter"
        ],
        "summary": "Daily Brief",
        "operationId": "daily_brief_api_newsletter__symbol__get",
        "parameters": [
          {
            "name": "symbol",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "Symbol"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "text/plain": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/api/ai/chat": {
      "post": {
        "tags": [
          "ai"
        ],
        "summary": "Chat",
        "operationId": "chat_api_ai_chat_post",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ChatRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ChatResponse"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/api/backtest/{symbol}": {
      "get": {
        "tags": [
          "backtest"
        ],
        "summary": "Backtest Symbol",
        "operationId": "backtest_symbol_api_backtest__symbol__get",
        "parameters": [
          {
            "name": "symbol",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "Symbol"
            }
          },
          {
            "name": "forward_days",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "maximum": 30,
              "minimum": 1,
              "default": 5,
              "title": "Forward Days"
            }
          },
          {
            "name": "bucket",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "pattern": "^(gamma_regime)$",
              "default": "gamma_regime",
              "title": "Bucket"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BacktestResponse"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/api/polygon-hiro/{symbol}": {
      "get": {
        "tags": [
          "polygon-hiro"
        ],
        "summary": "Get Polygon Hiro",
        "description": "Real HIRO computed from Polygon classified options trades.\n\nRequires a paid Polygon plan ($99/mo Options Starter minimum).",
        "operationId": "get_polygon_hiro_api_polygon_hiro__symbol__get",
        "parameters": [
          {
            "name": "symbol",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "Symbol"
            }
          },
          {
            "name": "interval",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "pattern": "^(1m|5m|15m)$",
              "default": "1m",
              "title": "Interval"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PolygonHiroResponse"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/api/surface/{symbol}": {
      "get": {
        "tags": [
          "surface"
        ],
        "summary": "Get Surface",
        "operationId": "get_surface_api_surface__symbol__get",
        "parameters": [
          {
            "name": "symbol",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "Symbol"
            }
          },
          {
            "name": "mode",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "pattern": "^(gex|vanna|charm)$",
              "default": "gex",
              "title": "Mode"
            }
          },
          {
            "name": "strike_window",
            "in": "query",
            "required": false,
            "schema": {
              "type": "number",
              "maximum": 0.3,
              "minimum": 0.01,
              "default": 0.08,
              "title": "Strike Window"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SurfaceResponse"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/api/forced-flow/{symbol}": {
      "get": {
        "tags": [
          "forced-flow"
        ],
        "summary": "Get Forced Flow",
        "description": "Dealer hedging asymmetry under \u00b10.5% and \u00b11% spot shocks.",
        "operationId": "get_forced_flow_api_forced_flow__symbol__get",
        "parameters": [
          {
            "name": "symbol",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "Symbol"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ForcedFlowResponse"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/api/skew-cross": {
      "get": {
        "tags": [
          "skew-cross"
        ],
        "summary": "Get Skew Cross",
        "description": "Compute current skew for several symbols side-by-side.",
        "operationId": "get_skew_cross_api_skew_cross_get",
        "parameters": [
          {
            "name": "symbols",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Comma-separated. Defaults to SPX,QQQ,GLD,IWM,TLT",
              "title": "Symbols"
            },
            "description": "Comma-separated. Defaults to SPX,QQQ,GLD,IWM,TLT"
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SkewCrossResponse"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/api/menthorq/{symbol}": {
      "get": {
        "tags": [
          "menthorq"
        ],
        "summary": "Get Menthorq Levels",
        "description": "Levels matching MenthorQ's TradingView indicator field names + semantics.",
        "operationId": "get_menthorq_levels_api_menthorq__symbol__get",
        "parameters": [
          {
            "name": "symbol",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "Symbol"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MenthorqLevelsResponse"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/api/menthorq/{symbol}/pine": {
      "get": {
        "tags": [
          "menthorq"
        ],
        "summary": "Get Menthorq Pine",
        "description": "Paste-ready Pine v5 script with all levels baked in.",
        "operationId": "get_menthorq_pine_api_menthorq__symbol__pine_get",
        "parameters": [
          {
            "name": "symbol",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "Symbol"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "text/plain": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/api/gex-plus/{symbol}": {
      "get": {
        "tags": [
          "gex-plus"
        ],
        "summary": "Get Gex Plus",
        "description": "Return combined GEX + VEX exposure for `symbol`.\n\nHeuristic-dealer-sign caveat applies \u2014 same as `/api/levels/{symbol}`.\nWill gain DDOI-corrected signs once #2 in the SqueezeMetrics roadmap\nships. Stable interface; only the signs become more accurate.",
        "operationId": "get_gex_plus_api_gex_plus__symbol__get",
        "parameters": [
          {
            "name": "symbol",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "Symbol"
            }
          },
          {
            "name": "min_oi",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "default": 10,
              "title": "Min Oi"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GEXPlusResponse"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/api/maxchange/{symbol}": {
      "get": {
        "tags": [
          "max-change"
        ],
        "summary": "Get Max Change",
        "description": "Return per-strike GEX deltas for the requested horizons + tier.",
        "operationId": "get_max_change_api_maxchange__symbol__get",
        "parameters": [
          {
            "name": "symbol",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "Symbol"
            }
          },
          {
            "name": "tier",
            "in": "query",
            "required": false,
            "schema": {
              "enum": [
                "zero",
                "one",
                "full"
              ],
              "type": "string",
              "default": "full",
              "title": "Tier"
            }
          },
          {
            "name": "horizons",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "default": "1,5,10,15,30",
              "title": "Horizons"
            }
          },
          {
            "name": "top_n",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "maximum": 50,
              "minimum": 1,
              "default": 10,
              "title": "Top N"
            }
          },
          {
            "name": "min_oi",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "minimum": 0,
              "default": 10,
              "title": "Min Oi"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/app__api__routes__max_change__MaxChangeResponse"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    }
  },
  "components": {
    "schemas": {
      "Alert": {
        "properties": {
          "id": {
            "type": "integer",
            "title": "Id"
          },
          "symbol": {
            "type": "string",
            "title": "Symbol"
          },
          "rule": {
            "type": "string",
            "title": "Rule"
          },
          "params": {
            "additionalProperties": true,
            "type": "object",
            "title": "Params"
          },
          "channel": {
            "type": "string",
            "title": "Channel"
          },
          "webhook": {
            "type": "string",
            "title": "Webhook"
          },
          "created_at": {
            "type": "string",
            "format": "date-time",
            "title": "Created At"
          },
          "enabled": {
            "type": "boolean",
            "title": "Enabled"
          },
          "last_fired_at": {
            "anyOf": [
              {
                "type": "string",
                "format": "date-time"
              },
              {
                "type": "null"
              }
            ],
            "title": "Last Fired At"
          }
        },
        "type": "object",
        "required": [
          "id",
          "symbol",
          "rule",
          "params",
          "channel",
          "webhook",
          "created_at",
          "enabled"
        ],
        "title": "Alert"
      },
      "AlertCreate": {
        "properties": {
          "symbol": {
            "type": "string",
            "title": "Symbol"
          },
          "rule": {
            "type": "string",
            "pattern": "^(PRICE_CROSS|REGIME_FLIP|GEX_THRESHOLD|LEVEL_BREACH)$",
            "title": "Rule"
          },
          "params": {
            "additionalProperties": true,
            "type": "object",
            "title": "Params"
          },
          "channel": {
            "type": "string",
            "pattern": "^(discord|telegram)$",
            "title": "Channel"
          },
          "webhook": {
            "type": "string",
            "title": "Webhook"
          }
        },
        "type": "object",
        "required": [
          "symbol",
          "rule",
          "params",
          "channel",
          "webhook"
        ],
        "title": "AlertCreate"
      },
      "BacktestResponse": {
        "properties": {
          "symbol": {
            "type": "string",
            "title": "Symbol"
          },
          "forward_days": {
            "type": "integer",
            "title": "Forward Days"
          },
          "total_snapshots": {
            "type": "integer",
            "title": "Total Snapshots"
          },
          "earliest_utc": {
            "anyOf": [
              {
                "type": "string",
                "format": "date-time"
              },
              {
                "type": "null"
              }
            ],
            "title": "Earliest Utc"
          },
          "latest_utc": {
            "anyOf": [
              {
                "type": "string",
                "format": "date-time"
              },
              {
                "type": "null"
              }
            ],
            "title": "Latest Utc"
          },
          "bucket_dimension": {
            "type": "string",
            "title": "Bucket Dimension"
          },
          "buckets": {
            "items": {
              "$ref": "#/components/schemas/BucketStat"
            },
            "type": "array",
            "title": "Buckets"
          },
          "note": {
            "type": "string",
            "title": "Note"
          }
        },
        "type": "object",
        "required": [
          "symbol",
          "forward_days",
          "total_snapshots",
          "earliest_utc",
          "latest_utc",
          "bucket_dimension",
          "buckets",
          "note"
        ],
        "title": "BacktestResponse"
      },
      "BlindSpotsResponse": {
        "properties": {
          "group": {
            "type": "string",
            "title": "Group"
          },
          "reference_symbol": {
            "type": "string",
            "title": "Reference Symbol"
          },
          "reference_spot": {
            "type": "number",
            "title": "Reference Spot"
          },
          "asof": {
            "type": "string",
            "format": "date-time",
            "title": "Asof"
          },
          "bin_pct": {
            "type": "number",
            "title": "Bin Pct"
          },
          "members_used": {
            "items": {
              "type": "string"
            },
            "type": "array",
            "title": "Members Used"
          },
          "members_failed": {
            "items": {
              "type": "string"
            },
            "type": "array",
            "title": "Members Failed"
          },
          "spots": {
            "items": {
              "$ref": "#/components/schemas/SpotDto"
            },
            "type": "array",
            "title": "Spots"
          }
        },
        "type": "object",
        "required": [
          "group",
          "reference_symbol",
          "reference_spot",
          "asof",
          "bin_pct",
          "members_used",
          "members_failed",
          "spots"
        ],
        "title": "BlindSpotsResponse"
      },
      "BucketStat": {
        "properties": {
          "bucket": {
            "type": "string",
            "title": "Bucket"
          },
          "n_samples": {
            "type": "integer",
            "title": "N Samples"
          },
          "hit_rate_up": {
            "type": "number",
            "title": "Hit Rate Up"
          },
          "avg_forward_return_pct": {
            "type": "number",
            "title": "Avg Forward Return Pct"
          },
          "median_forward_return_pct": {
            "type": "number",
            "title": "Median Forward Return Pct"
          },
          "stddev_pct": {
            "type": "number",
            "title": "Stddev Pct"
          }
        },
        "type": "object",
        "required": [
          "bucket",
          "n_samples",
          "hit_rate_up",
          "avg_forward_return_pct",
          "median_forward_return_pct",
          "stddev_pct"
        ],
        "title": "BucketStat"
      },
      "Candle": {
        "properties": {
          "t": {
            "type": "string",
            "title": "T"
          },
          "o": {
            "type": "number",
            "title": "O"
          },
          "h": {
            "type": "number",
            "title": "H"
          },
          "l": {
            "type": "number",
            "title": "L"
          },
          "c": {
            "type": "number",
            "title": "C"
          },
          "v": {
            "type": "integer",
            "title": "V"
          }
        },
        "type": "object",
        "required": [
          "t",
          "o",
          "h",
          "l",
          "c",
          "v"
        ],
        "title": "Candle"
      },
      "ChainContractSide": {
        "properties": {
          "bid": {
            "type": "number",
            "title": "Bid"
          },
          "ask": {
            "type": "number",
            "title": "Ask"
          },
          "iv": {
            "type": "number",
            "title": "Iv"
          },
          "oi": {
            "type": "integer",
            "title": "Oi"
          },
          "volume": {
            "type": "integer",
            "title": "Volume"
          },
          "delta": {
            "type": "number",
            "title": "Delta"
          },
          "gamma": {
            "type": "number",
            "title": "Gamma"
          },
          "theta": {
            "type": "number",
            "title": "Theta"
          },
          "vega": {
            "type": "number",
            "title": "Vega"
          },
          "rho": {
            "type": "number",
            "title": "Rho"
          },
          "occ": {
            "type": "string",
            "title": "Occ"
          }
        },
        "type": "object",
        "required": [
          "bid",
          "ask",
          "iv",
          "oi",
          "volume",
          "delta",
          "gamma",
          "theta",
          "vega",
          "rho",
          "occ"
        ],
        "title": "ChainContractSide"
      },
      "ChainExpiry": {
        "properties": {
          "expiry": {
            "type": "string",
            "format": "date",
            "title": "Expiry"
          },
          "dte": {
            "type": "integer",
            "title": "Dte"
          },
          "n_strikes": {
            "type": "integer",
            "title": "N Strikes"
          },
          "n_contracts": {
            "type": "integer",
            "title": "N Contracts"
          }
        },
        "type": "object",
        "required": [
          "expiry",
          "dte",
          "n_strikes",
          "n_contracts"
        ],
        "title": "ChainExpiry"
      },
      "ChainResponse": {
        "properties": {
          "symbol": {
            "type": "string",
            "title": "Symbol"
          },
          "spot": {
            "type": "number",
            "title": "Spot"
          },
          "asof": {
            "type": "string",
            "format": "date-time",
            "title": "Asof"
          },
          "expiries": {
            "items": {
              "$ref": "#/components/schemas/ChainExpiry"
            },
            "type": "array",
            "title": "Expiries"
          },
          "selected_expiry": {
            "type": "string",
            "format": "date",
            "title": "Selected Expiry"
          },
          "rows": {
            "items": {
              "$ref": "#/components/schemas/ChainStrikeRow"
            },
            "type": "array",
            "title": "Rows"
          }
        },
        "type": "object",
        "required": [
          "symbol",
          "spot",
          "asof",
          "expiries",
          "selected_expiry",
          "rows"
        ],
        "title": "ChainResponse"
      },
      "ChainStrikeRow": {
        "properties": {
          "strike": {
            "type": "number",
            "title": "Strike"
          },
          "call": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/ChainContractSide"
              },
              {
                "type": "null"
              }
            ]
          },
          "put": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/ChainContractSide"
              },
              {
                "type": "null"
              }
            ]
          }
        },
        "type": "object",
        "required": [
          "strike",
          "call",
          "put"
        ],
        "title": "ChainStrikeRow"
      },
      "ChainTotals": {
        "properties": {
          "total_call_oi": {
            "type": "integer",
            "title": "Total Call Oi"
          },
          "total_put_oi": {
            "type": "integer",
            "title": "Total Put Oi"
          },
          "total_oi": {
            "type": "integer",
            "title": "Total Oi"
          },
          "total_call_volume": {
            "type": "integer",
            "title": "Total Call Volume"
          },
          "total_put_volume": {
            "type": "integer",
            "title": "Total Put Volume"
          },
          "total_volume": {
            "type": "integer",
            "title": "Total Volume"
          },
          "put_call_oi_ratio": {
            "anyOf": [
              {
                "type": "number"
              },
              {
                "type": "null"
              }
            ],
            "title": "Put Call Oi Ratio"
          },
          "put_call_volume_ratio": {
            "anyOf": [
              {
                "type": "number"
              },
              {
                "type": "null"
              }
            ],
            "title": "Put Call Volume Ratio"
          }
        },
        "type": "object",
        "required": [
          "total_call_oi",
          "total_put_oi",
          "total_oi",
          "total_call_volume",
          "total_put_volume",
          "total_volume",
          "put_call_oi_ratio",
          "put_call_volume_ratio"
        ],
        "title": "ChainTotals",
        "description": "Whole-chain totals (NOT filtered to in-range strikes). Used by the\nKey Levels card to show overall call/put activity. Reflects every\ncontract in the live CBOE chain \u2014 gives traders a sense of which side\nof the book is heavier today."
      },
      "ChatRequest": {
        "properties": {
          "messages": {
            "items": {
              "$ref": "#/components/schemas/ChatTurn"
            },
            "type": "array",
            "title": "Messages"
          },
          "model": {
            "type": "string",
            "title": "Model",
            "default": "claude-opus-4-7"
          },
          "max_tokens": {
            "type": "integer",
            "title": "Max Tokens",
            "default": 1024
          }
        },
        "type": "object",
        "required": [
          "messages"
        ],
        "title": "ChatRequest"
      },
      "ChatResponse": {
        "properties": {
          "reply": {
            "type": "string",
            "title": "Reply"
          },
          "tools_used": {
            "items": {
              "type": "string"
            },
            "type": "array",
            "title": "Tools Used"
          },
          "debug": {
            "additionalProperties": true,
            "type": "object",
            "title": "Debug"
          }
        },
        "type": "object",
        "required": [
          "reply",
          "tools_used",
          "debug"
        ],
        "title": "ChatResponse"
      },
      "ChatTurn": {
        "properties": {
          "role": {
            "type": "string",
            "title": "Role"
          },
          "content": {
            "type": "string",
            "title": "Content"
          }
        },
        "type": "object",
        "required": [
          "role",
          "content"
        ],
        "title": "ChatTurn"
      },
      "ConversionMeta": {
        "properties": {
          "source_symbol": {
            "type": "string",
            "title": "Source Symbol"
          },
          "ratio": {
            "type": "number",
            "title": "Ratio"
          },
          "source_spot": {
            "type": "number",
            "title": "Source Spot"
          }
        },
        "type": "object",
        "required": [
          "source_symbol",
          "ratio",
          "source_spot"
        ],
        "title": "ConversionMeta",
        "description": "Set when this symbol's levels were derived from a different chain."
      },
      "ExpiryAxis": {
        "properties": {
          "expiry": {
            "type": "string",
            "format": "date",
            "title": "Expiry"
          },
          "dte": {
            "type": "integer",
            "title": "Dte"
          }
        },
        "type": "object",
        "required": [
          "expiry",
          "dte"
        ],
        "title": "ExpiryAxis"
      },
      "ExpiryPanelItem": {
        "properties": {
          "expiry": {
            "type": "string",
            "format": "date",
            "title": "Expiry"
          },
          "dte": {
            "type": "integer",
            "title": "Dte"
          },
          "tag": {
            "type": "string",
            "title": "Tag"
          },
          "label": {
            "type": "string",
            "title": "Label"
          },
          "total_gex": {
            "type": "number",
            "title": "Total Gex"
          },
          "net_gex": {
            "type": "number",
            "title": "Net Gex"
          },
          "pct_of_total": {
            "type": "number",
            "title": "Pct Of Total"
          },
          "call_resistance": {
            "anyOf": [
              {
                "type": "number"
              },
              {
                "type": "null"
              }
            ],
            "title": "Call Resistance"
          },
          "put_support": {
            "anyOf": [
              {
                "type": "number"
              },
              {
                "type": "null"
              }
            ],
            "title": "Put Support"
          },
          "hvl": {
            "anyOf": [
              {
                "type": "number"
              },
              {
                "type": "null"
              }
            ],
            "title": "Hvl"
          },
          "bars": {
            "items": {
              "$ref": "#/components/schemas/PanelBar"
            },
            "type": "array",
            "title": "Bars",
            "default": []
          },
          "max_abs_gex": {
            "type": "number",
            "title": "Max Abs Gex",
            "default": 0.0
          }
        },
        "type": "object",
        "required": [
          "expiry",
          "dte",
          "tag",
          "label",
          "total_gex",
          "net_gex",
          "pct_of_total",
          "call_resistance",
          "put_support",
          "hvl"
        ],
        "title": "ExpiryPanelItem"
      },
      "FastLaneItem": {
        "properties": {
          "low_strike": {
            "type": "number",
            "title": "Low Strike"
          },
          "high_strike": {
            "type": "number",
            "title": "High Strike"
          },
          "width_pts": {
            "type": "number",
            "title": "Width Pts"
          },
          "width_pct": {
            "type": "number",
            "title": "Width Pct"
          },
          "density": {
            "type": "number",
            "title": "Density"
          }
        },
        "type": "object",
        "required": [
          "low_strike",
          "high_strike",
          "width_pts",
          "width_pct",
          "density"
        ],
        "title": "FastLaneItem"
      },
      "FastLaneResponse": {
        "properties": {
          "symbol": {
            "type": "string",
            "title": "Symbol"
          },
          "asof": {
            "type": "string",
            "format": "date-time",
            "title": "Asof"
          },
          "spot": {
            "type": "number",
            "title": "Spot"
          },
          "threshold": {
            "type": "number",
            "title": "Threshold"
          },
          "lanes": {
            "items": {
              "$ref": "#/components/schemas/FastLaneItem"
            },
            "type": "array",
            "title": "Lanes"
          }
        },
        "type": "object",
        "required": [
          "symbol",
          "asof",
          "spot",
          "threshold",
          "lanes"
        ],
        "title": "FastLaneResponse"
      },
      "FlowResult": {
        "properties": {
          "shock_pct": {
            "type": "number",
            "title": "Shock Pct"
          },
          "spot_up": {
            "type": "number",
            "title": "Spot Up"
          },
          "spot_dn": {
            "type": "number",
            "title": "Spot Dn"
          },
          "flow_up_shares": {
            "type": "number",
            "title": "Flow Up Shares"
          },
          "flow_dn_shares": {
            "type": "number",
            "title": "Flow Dn Shares"
          },
          "flow_up_dollar": {
            "type": "number",
            "title": "Flow Up Dollar"
          },
          "flow_dn_dollar": {
            "type": "number",
            "title": "Flow Dn Dollar"
          },
          "abs_ratio": {
            "type": "number",
            "title": "Abs Ratio"
          },
          "bias": {
            "type": "string",
            "title": "Bias"
          },
          "gamma_dollar_up_weighted": {
            "type": "number",
            "title": "Gamma Dollar Up Weighted"
          },
          "gamma_dollar_dn_weighted": {
            "type": "number",
            "title": "Gamma Dollar Dn Weighted"
          }
        },
        "type": "object",
        "required": [
          "shock_pct",
          "spot_up",
          "spot_dn",
          "flow_up_shares",
          "flow_dn_shares",
          "flow_up_dollar",
          "flow_dn_dollar",
          "abs_ratio",
          "bias",
          "gamma_dollar_up_weighted",
          "gamma_dollar_dn_weighted"
        ],
        "title": "FlowResult"
      },
      "ForcedFlowResponse": {
        "properties": {
          "symbol": {
            "type": "string",
            "title": "Symbol"
          },
          "spot": {
            "type": "number",
            "title": "Spot"
          },
          "asof": {
            "type": "string",
            "format": "date-time",
            "title": "Asof"
          },
          "results": {
            "items": {
              "$ref": "#/components/schemas/FlowResult"
            },
            "type": "array",
            "title": "Results"
          }
        },
        "type": "object",
        "required": [
          "symbol",
          "spot",
          "asof",
          "results"
        ],
        "title": "ForcedFlowResponse"
      },
      "FuturesLevelsResponse": {
        "properties": {
          "futures_symbol": {
            "type": "string",
            "title": "Futures Symbol"
          },
          "source_symbol": {
            "type": "string",
            "title": "Source Symbol"
          },
          "asof": {
            "type": "string",
            "format": "date-time",
            "title": "Asof"
          },
          "futures_spot": {
            "type": "number",
            "title": "Futures Spot"
          },
          "source_spot": {
            "type": "number",
            "title": "Source Spot"
          },
          "ratio": {
            "type": "number",
            "title": "Ratio"
          },
          "method": {
            "type": "string",
            "title": "Method"
          },
          "converted_levels": {
            "additionalProperties": {
              "anyOf": [
                {
                  "type": "number"
                },
                {
                  "type": "null"
                }
              ]
            },
            "type": "object",
            "title": "Converted Levels"
          }
        },
        "type": "object",
        "required": [
          "futures_symbol",
          "source_symbol",
          "asof",
          "futures_spot",
          "source_spot",
          "ratio",
          "method",
          "converted_levels"
        ],
        "title": "FuturesLevelsResponse"
      },
      "GEXPlusResponse": {
        "properties": {
          "symbol": {
            "type": "string",
            "title": "Symbol"
          },
          "asof": {
            "type": "string",
            "format": "date-time",
            "title": "Asof"
          },
          "spot": {
            "type": "number",
            "title": "Spot"
          },
          "net_gex": {
            "type": "number",
            "title": "Net Gex"
          },
          "net_vex": {
            "type": "number",
            "title": "Net Vex"
          },
          "net_gex_plus": {
            "type": "number",
            "title": "Net Gex Plus"
          },
          "vex_share": {
            "type": "number",
            "title": "Vex Share"
          },
          "call_wall_plus": {
            "anyOf": [
              {
                "type": "number"
              },
              {
                "type": "null"
              }
            ],
            "title": "Call Wall Plus"
          },
          "put_wall_plus": {
            "anyOf": [
              {
                "type": "number"
              },
              {
                "type": "null"
              }
            ],
            "title": "Put Wall Plus"
          },
          "gex_plus_flip": {
            "anyOf": [
              {
                "type": "number"
              },
              {
                "type": "null"
              }
            ],
            "title": "Gex Plus Flip"
          }
        },
        "type": "object",
        "required": [
          "symbol",
          "asof",
          "spot",
          "net_gex",
          "net_vex",
          "net_gex_plus",
          "vex_share",
          "call_wall_plus",
          "put_wall_plus",
          "gex_plus_flip"
        ],
        "title": "GEXPlusResponse"
      },
      "HTTPValidationError": {
        "properties": {
          "detail": {
            "items": {
              "$ref": "#/components/schemas/ValidationError"
            },
            "type": "array",
            "title": "Detail"
          }
        },
        "type": "object",
        "title": "HTTPValidationError"
      },
      "HeroLevels": {
        "properties": {
          "spot": {
            "type": "number",
            "title": "Spot"
          },
          "previous_close": {
            "anyOf": [
              {
                "type": "number"
              },
              {
                "type": "null"
              }
            ],
            "title": "Previous Close"
          },
          "call_resistance_1": {
            "anyOf": [
              {
                "type": "number"
              },
              {
                "type": "null"
              }
            ],
            "title": "Call Resistance 1"
          },
          "call_resistance_2": {
            "anyOf": [
              {
                "type": "number"
              },
              {
                "type": "null"
              }
            ],
            "title": "Call Resistance 2"
          },
          "put_support_1": {
            "anyOf": [
              {
                "type": "number"
              },
              {
                "type": "null"
              }
            ],
            "title": "Put Support 1"
          },
          "put_support_2": {
            "anyOf": [
              {
                "type": "number"
              },
              {
                "type": "null"
              }
            ],
            "title": "Put Support 2"
          },
          "hvl": {
            "anyOf": [
              {
                "type": "number"
              },
              {
                "type": "null"
              }
            ],
            "title": "Hvl"
          },
          "gamma_flip": {
            "anyOf": [
              {
                "type": "number"
              },
              {
                "type": "null"
              }
            ],
            "title": "Gamma Flip"
          },
          "vol_trigger": {
            "anyOf": [
              {
                "type": "number"
              },
              {
                "type": "null"
              }
            ],
            "title": "Vol Trigger"
          },
          "max_pain": {
            "anyOf": [
              {
                "type": "number"
              },
              {
                "type": "null"
              }
            ],
            "title": "Max Pain"
          },
          "expected_move_high": {
            "anyOf": [
              {
                "type": "number"
              },
              {
                "type": "null"
              }
            ],
            "title": "Expected Move High"
          },
          "expected_move_low": {
            "anyOf": [
              {
                "type": "number"
              },
              {
                "type": "null"
              }
            ],
            "title": "Expected Move Low"
          },
          "net_gex": {
            "type": "number",
            "title": "Net Gex"
          },
          "total_gex": {
            "type": "number",
            "title": "Total Gex"
          },
          "gamma_regime": {
            "type": "string",
            "title": "Gamma Regime"
          },
          "call_resistance_0dte": {
            "anyOf": [
              {
                "type": "number"
              },
              {
                "type": "null"
              }
            ],
            "title": "Call Resistance 0Dte"
          },
          "put_support_0dte": {
            "anyOf": [
              {
                "type": "number"
              },
              {
                "type": "null"
              }
            ],
            "title": "Put Support 0Dte"
          },
          "hvl_0dte": {
            "anyOf": [
              {
                "type": "number"
              },
              {
                "type": "null"
              }
            ],
            "title": "Hvl 0Dte"
          }
        },
        "type": "object",
        "required": [
          "spot",
          "previous_close",
          "call_resistance_1",
          "call_resistance_2",
          "put_support_1",
          "put_support_2",
          "hvl",
          "gamma_flip",
          "max_pain",
          "expected_move_high",
          "expected_move_low",
          "net_gex",
          "total_gex",
          "gamma_regime"
        ],
        "title": "HeroLevels"
      },
      "HeroResponse": {
        "properties": {
          "symbol": {
            "type": "string",
            "title": "Symbol"
          },
          "asof": {
            "type": "string",
            "format": "date-time",
            "title": "Asof"
          },
          "candles": {
            "items": {
              "$ref": "#/components/schemas/Candle"
            },
            "type": "array",
            "title": "Candles"
          },
          "candles_source": {
            "type": "string",
            "title": "Candles Source"
          },
          "strikes": {
            "items": {
              "$ref": "#/components/schemas/StrikeRow"
            },
            "type": "array",
            "title": "Strikes"
          },
          "levels": {
            "$ref": "#/components/schemas/HeroLevels"
          },
          "conversion": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/ConversionMeta"
              },
              {
                "type": "null"
              }
            ]
          },
          "vwaps": {
            "items": {
              "$ref": "#/components/schemas/SessionVwapDto"
            },
            "type": "array",
            "title": "Vwaps",
            "default": []
          },
          "hiro": {
            "items": {
              "$ref": "#/components/schemas/HiroPoint"
            },
            "type": "array",
            "title": "Hiro",
            "default": []
          },
          "volume_profile": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/VolumeProfileDto"
              },
              {
                "type": "null"
              }
            ]
          }
        },
        "type": "object",
        "required": [
          "symbol",
          "asof",
          "candles",
          "candles_source",
          "strikes",
          "levels"
        ],
        "title": "HeroResponse"
      },
      "HiroPoint": {
        "properties": {
          "t": {
            "type": "string",
            "title": "T"
          },
          "delta": {
            "type": "number",
            "title": "Delta"
          },
          "cum": {
            "type": "number",
            "title": "Cum"
          }
        },
        "type": "object",
        "required": [
          "t",
          "delta",
          "cum"
        ],
        "title": "HiroPoint"
      },
      "HistoryPoint": {
        "properties": {
          "asof_utc": {
            "type": "string",
            "format": "date-time",
            "title": "Asof Utc"
          },
          "spot": {
            "type": "number",
            "title": "Spot"
          },
          "net_gex": {
            "type": "number",
            "title": "Net Gex"
          },
          "total_gex": {
            "type": "number",
            "title": "Total Gex"
          },
          "call_resistance_1": {
            "anyOf": [
              {
                "type": "number"
              },
              {
                "type": "null"
              }
            ],
            "title": "Call Resistance 1"
          },
          "put_support_1": {
            "anyOf": [
              {
                "type": "number"
              },
              {
                "type": "null"
              }
            ],
            "title": "Put Support 1"
          },
          "hvl": {
            "anyOf": [
              {
                "type": "number"
              },
              {
                "type": "null"
              }
            ],
            "title": "Hvl"
          },
          "gamma_flip": {
            "anyOf": [
              {
                "type": "number"
              },
              {
                "type": "null"
              }
            ],
            "title": "Gamma Flip"
          },
          "max_pain": {
            "anyOf": [
              {
                "type": "number"
              },
              {
                "type": "null"
              }
            ],
            "title": "Max Pain"
          },
          "gamma_regime": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Gamma Regime"
          }
        },
        "type": "object",
        "required": [
          "asof_utc",
          "spot",
          "net_gex",
          "total_gex"
        ],
        "title": "HistoryPoint"
      },
      "HistoryResponse": {
        "properties": {
          "symbol": {
            "type": "string",
            "title": "Symbol"
          },
          "bucket_path": {
            "type": "string",
            "title": "Bucket Path"
          },
          "points": {
            "items": {
              "$ref": "#/components/schemas/HistoryPoint"
            },
            "type": "array",
            "title": "Points"
          },
          "earliest_utc": {
            "anyOf": [
              {
                "type": "string",
                "format": "date-time"
              },
              {
                "type": "null"
              }
            ],
            "title": "Earliest Utc"
          },
          "latest_utc": {
            "anyOf": [
              {
                "type": "string",
                "format": "date-time"
              },
              {
                "type": "null"
              }
            ],
            "title": "Latest Utc"
          }
        },
        "type": "object",
        "required": [
          "symbol",
          "bucket_path",
          "points",
          "earliest_utc",
          "latest_utc"
        ],
        "title": "HistoryResponse"
      },
      "HorizonReportModel": {
        "properties": {
          "horizon_min": {
            "type": "integer",
            "title": "Horizon Min"
          },
          "snapshot_at": {
            "type": "string",
            "format": "date-time",
            "title": "Snapshot At"
          },
          "n_snapshots_back": {
            "type": "integer",
            "title": "N Snapshots Back"
          },
          "movers": {
            "items": {
              "$ref": "#/components/schemas/StrikeDeltaModel"
            },
            "type": "array",
            "title": "Movers"
          },
          "biggest_gainer": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/StrikeDeltaModel"
              },
              {
                "type": "null"
              }
            ]
          },
          "biggest_loser": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/StrikeDeltaModel"
              },
              {
                "type": "null"
              }
            ]
          }
        },
        "type": "object",
        "required": [
          "horizon_min",
          "snapshot_at",
          "n_snapshots_back",
          "movers",
          "biggest_gainer",
          "biggest_loser"
        ],
        "title": "HorizonReportModel"
      },
      "LadderBar": {
        "properties": {
          "strike": {
            "type": "number",
            "title": "Strike"
          },
          "primary": {
            "type": "number",
            "title": "Primary"
          },
          "secondary": {
            "anyOf": [
              {
                "type": "number"
              },
              {
                "type": "null"
              }
            ],
            "title": "Secondary"
          }
        },
        "type": "object",
        "required": [
          "strike",
          "primary"
        ],
        "title": "LadderBar"
      },
      "LadderResponse": {
        "properties": {
          "symbol": {
            "type": "string",
            "title": "Symbol"
          },
          "ladder_type": {
            "type": "string",
            "title": "Ladder Type"
          },
          "asof": {
            "type": "string",
            "format": "date-time",
            "title": "Asof"
          },
          "spot": {
            "type": "number",
            "title": "Spot"
          },
          "range_pct": {
            "type": "number",
            "title": "Range Pct"
          },
          "bars": {
            "items": {
              "$ref": "#/components/schemas/LadderBar"
            },
            "type": "array",
            "title": "Bars"
          },
          "max_abs": {
            "type": "number",
            "title": "Max Abs"
          },
          "net_value": {
            "type": "number",
            "title": "Net Value"
          },
          "units": {
            "type": "string",
            "title": "Units"
          },
          "is_beta": {
            "type": "boolean",
            "title": "Is Beta"
          }
        },
        "type": "object",
        "required": [
          "symbol",
          "ladder_type",
          "asof",
          "spot",
          "range_pct",
          "bars",
          "max_abs",
          "net_value",
          "units",
          "is_beta"
        ],
        "title": "LadderResponse"
      },
      "LevelsResponse": {
        "properties": {
          "symbol": {
            "type": "string",
            "title": "Symbol"
          },
          "spot": {
            "type": "number",
            "title": "Spot"
          },
          "asof": {
            "type": "string",
            "format": "date-time",
            "title": "Asof"
          },
          "call_resistance_1": {
            "anyOf": [
              {
                "type": "number"
              },
              {
                "type": "null"
              }
            ],
            "title": "Call Resistance 1"
          },
          "call_resistance_2": {
            "anyOf": [
              {
                "type": "number"
              },
              {
                "type": "null"
              }
            ],
            "title": "Call Resistance 2"
          },
          "call_resistance_3": {
            "anyOf": [
              {
                "type": "number"
              },
              {
                "type": "null"
              }
            ],
            "title": "Call Resistance 3"
          },
          "put_support_1": {
            "anyOf": [
              {
                "type": "number"
              },
              {
                "type": "null"
              }
            ],
            "title": "Put Support 1"
          },
          "put_support_2": {
            "anyOf": [
              {
                "type": "number"
              },
              {
                "type": "null"
              }
            ],
            "title": "Put Support 2"
          },
          "put_support_3": {
            "anyOf": [
              {
                "type": "number"
              },
              {
                "type": "null"
              }
            ],
            "title": "Put Support 3"
          },
          "hvl": {
            "anyOf": [
              {
                "type": "number"
              },
              {
                "type": "null"
              }
            ],
            "title": "Hvl"
          },
          "gamma_wall": {
            "anyOf": [
              {
                "type": "number"
              },
              {
                "type": "null"
              }
            ],
            "title": "Gamma Wall"
          },
          "gamma_flip": {
            "anyOf": [
              {
                "type": "number"
              },
              {
                "type": "null"
              }
            ],
            "title": "Gamma Flip"
          },
          "max_pain": {
            "anyOf": [
              {
                "type": "number"
              },
              {
                "type": "null"
              }
            ],
            "title": "Max Pain"
          },
          "call_resistance_0dte": {
            "anyOf": [
              {
                "type": "number"
              },
              {
                "type": "null"
              }
            ],
            "title": "Call Resistance 0Dte"
          },
          "put_support_0dte": {
            "anyOf": [
              {
                "type": "number"
              },
              {
                "type": "null"
              }
            ],
            "title": "Put Support 0Dte"
          },
          "hvl_0dte": {
            "anyOf": [
              {
                "type": "number"
              },
              {
                "type": "null"
              }
            ],
            "title": "Hvl 0Dte"
          },
          "gamma_wall_0dte": {
            "anyOf": [
              {
                "type": "number"
              },
              {
                "type": "null"
              }
            ],
            "title": "Gamma Wall 0Dte"
          },
          "total_gex": {
            "type": "number",
            "title": "Total Gex"
          },
          "net_gex": {
            "type": "number",
            "title": "Net Gex"
          },
          "total_dex": {
            "type": "number",
            "title": "Total Dex"
          },
          "net_dex": {
            "type": "number",
            "title": "Net Dex"
          },
          "put_call_gex_ratio": {
            "anyOf": [
              {
                "type": "number"
              },
              {
                "type": "null"
              }
            ],
            "title": "Put Call Gex Ratio"
          },
          "gamma_regime": {
            "type": "string",
            "title": "Gamma Regime"
          }
        },
        "type": "object",
        "required": [
          "symbol",
          "spot",
          "asof",
          "call_resistance_1",
          "call_resistance_2",
          "call_resistance_3",
          "put_support_1",
          "put_support_2",
          "put_support_3",
          "hvl",
          "gamma_wall",
          "gamma_flip",
          "max_pain",
          "call_resistance_0dte",
          "put_support_0dte",
          "hvl_0dte",
          "gamma_wall_0dte",
          "total_gex",
          "net_gex",
          "total_dex",
          "net_dex",
          "put_call_gex_ratio",
          "gamma_regime"
        ],
        "title": "LevelsResponse"
      },
      "LookbackResponse": {
        "properties": {
          "symbol": {
            "type": "string",
            "title": "Symbol"
          },
          "has_history": {
            "type": "boolean",
            "title": "Has History"
          },
          "intervals": {
            "additionalProperties": {
              "items": {
                "additionalProperties": true,
                "type": "object"
              },
              "type": "array"
            },
            "type": "object",
            "title": "Intervals"
          }
        },
        "type": "object",
        "required": [
          "symbol",
          "has_history",
          "intervals"
        ],
        "title": "LookbackResponse"
      },
      "MatrixFullResponse": {
        "properties": {
          "rows": {
            "items": {
              "$ref": "#/components/schemas/MatrixRowFull"
            },
            "type": "array",
            "title": "Rows"
          },
          "fetched_at": {
            "type": "string",
            "format": "date-time",
            "title": "Fetched At"
          }
        },
        "type": "object",
        "required": [
          "rows",
          "fetched_at"
        ],
        "title": "MatrixFullResponse"
      },
      "MatrixResponse": {
        "properties": {
          "rows": {
            "items": {
              "$ref": "#/components/schemas/MatrixRow"
            },
            "type": "array",
            "title": "Rows"
          },
          "fetched_at": {
            "type": "string",
            "format": "date-time",
            "title": "Fetched At"
          }
        },
        "type": "object",
        "required": [
          "rows",
          "fetched_at"
        ],
        "title": "MatrixResponse"
      },
      "MatrixRow": {
        "properties": {
          "symbol": {
            "type": "string",
            "title": "Symbol"
          },
          "spot": {
            "type": "number",
            "title": "Spot"
          },
          "call_resistance": {
            "anyOf": [
              {
                "type": "number"
              },
              {
                "type": "null"
              }
            ],
            "title": "Call Resistance"
          },
          "put_support": {
            "anyOf": [
              {
                "type": "number"
              },
              {
                "type": "null"
              }
            ],
            "title": "Put Support"
          },
          "hvl": {
            "anyOf": [
              {
                "type": "number"
              },
              {
                "type": "null"
              }
            ],
            "title": "Hvl"
          },
          "net_gex": {
            "type": "number",
            "title": "Net Gex"
          },
          "total_gex": {
            "type": "number",
            "title": "Total Gex"
          },
          "gamma_regime": {
            "type": "string",
            "title": "Gamma Regime"
          },
          "asof": {
            "type": "string",
            "format": "date-time",
            "title": "Asof"
          }
        },
        "type": "object",
        "required": [
          "symbol",
          "spot",
          "call_resistance",
          "put_support",
          "hvl",
          "net_gex",
          "total_gex",
          "gamma_regime",
          "asof"
        ],
        "title": "MatrixRow"
      },
      "MatrixRowFull": {
        "properties": {
          "symbol": {
            "type": "string",
            "title": "Symbol"
          },
          "spot": {
            "type": "number",
            "title": "Spot"
          },
          "call_resistance": {
            "anyOf": [
              {
                "type": "number"
              },
              {
                "type": "null"
              }
            ],
            "title": "Call Resistance"
          },
          "put_support": {
            "anyOf": [
              {
                "type": "number"
              },
              {
                "type": "null"
              }
            ],
            "title": "Put Support"
          },
          "hvl": {
            "anyOf": [
              {
                "type": "number"
              },
              {
                "type": "null"
              }
            ],
            "title": "Hvl"
          },
          "net_gex": {
            "type": "number",
            "title": "Net Gex"
          },
          "total_gex": {
            "type": "number",
            "title": "Total Gex"
          },
          "iv_30d": {
            "type": "number",
            "title": "Iv 30D"
          },
          "gamma_regime": {
            "type": "string",
            "title": "Gamma Regime"
          },
          "composite_score": {
            "anyOf": [
              {
                "type": "number"
              },
              {
                "type": "null"
              }
            ],
            "title": "Composite Score"
          },
          "composite_signal": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Composite Signal"
          }
        },
        "type": "object",
        "required": [
          "symbol",
          "spot",
          "call_resistance",
          "put_support",
          "hvl",
          "net_gex",
          "total_gex",
          "iv_30d",
          "gamma_regime"
        ],
        "title": "MatrixRowFull"
      },
      "MaxChangeBar": {
        "properties": {
          "strike": {
            "type": "number",
            "title": "Strike"
          },
          "prev_gex": {
            "type": "number",
            "title": "Prev Gex"
          },
          "now_gex": {
            "type": "number",
            "title": "Now Gex"
          },
          "delta": {
            "type": "number",
            "title": "Delta"
          }
        },
        "type": "object",
        "required": [
          "strike",
          "prev_gex",
          "now_gex",
          "delta"
        ],
        "title": "MaxChangeBar"
      },
      "MemberDto": {
        "properties": {
          "symbol": {
            "type": "string",
            "title": "Symbol"
          },
          "level_name": {
            "type": "string",
            "title": "Level Name"
          },
          "raw_price": {
            "type": "number",
            "title": "Raw Price"
          },
          "normalised_price": {
            "type": "number",
            "title": "Normalised Price"
          }
        },
        "type": "object",
        "required": [
          "symbol",
          "level_name",
          "raw_price",
          "normalised_price"
        ],
        "title": "MemberDto"
      },
      "MenthorqLevelsResponse": {
        "properties": {
          "symbol": {
            "type": "string",
            "title": "Symbol"
          },
          "spot": {
            "type": "number",
            "title": "Spot"
          },
          "asof": {
            "type": "string",
            "format": "date-time",
            "title": "Asof"
          },
          "call_resistance": {
            "anyOf": [
              {
                "type": "number"
              },
              {
                "type": "null"
              }
            ],
            "title": "Call Resistance"
          },
          "put_support": {
            "anyOf": [
              {
                "type": "number"
              },
              {
                "type": "null"
              }
            ],
            "title": "Put Support"
          },
          "hvl": {
            "anyOf": [
              {
                "type": "number"
              },
              {
                "type": "null"
              }
            ],
            "title": "Hvl"
          },
          "gamma_wall": {
            "anyOf": [
              {
                "type": "number"
              },
              {
                "type": "null"
              }
            ],
            "title": "Gamma Wall"
          },
          "gex_1": {
            "anyOf": [
              {
                "type": "number"
              },
              {
                "type": "null"
              }
            ],
            "title": "Gex 1"
          },
          "gex_2": {
            "anyOf": [
              {
                "type": "number"
              },
              {
                "type": "null"
              }
            ],
            "title": "Gex 2"
          },
          "gex_3": {
            "anyOf": [
              {
                "type": "number"
              },
              {
                "type": "null"
              }
            ],
            "title": "Gex 3"
          },
          "gex_4": {
            "anyOf": [
              {
                "type": "number"
              },
              {
                "type": "null"
              }
            ],
            "title": "Gex 4"
          },
          "gex_5": {
            "anyOf": [
              {
                "type": "number"
              },
              {
                "type": "null"
              }
            ],
            "title": "Gex 5"
          },
          "gex_6": {
            "anyOf": [
              {
                "type": "number"
              },
              {
                "type": "null"
              }
            ],
            "title": "Gex 6"
          },
          "gex_7": {
            "anyOf": [
              {
                "type": "number"
              },
              {
                "type": "null"
              }
            ],
            "title": "Gex 7"
          },
          "gex_8": {
            "anyOf": [
              {
                "type": "number"
              },
              {
                "type": "null"
              }
            ],
            "title": "Gex 8"
          },
          "gex_9": {
            "anyOf": [
              {
                "type": "number"
              },
              {
                "type": "null"
              }
            ],
            "title": "Gex 9"
          },
          "gex_10": {
            "anyOf": [
              {
                "type": "number"
              },
              {
                "type": "null"
              }
            ],
            "title": "Gex 10"
          },
          "call_resistance_0dte": {
            "anyOf": [
              {
                "type": "number"
              },
              {
                "type": "null"
              }
            ],
            "title": "Call Resistance 0Dte"
          },
          "put_support_0dte": {
            "anyOf": [
              {
                "type": "number"
              },
              {
                "type": "null"
              }
            ],
            "title": "Put Support 0Dte"
          },
          "hvl_0dte": {
            "anyOf": [
              {
                "type": "number"
              },
              {
                "type": "null"
              }
            ],
            "title": "Hvl 0Dte"
          },
          "gamma_wall_0dte": {
            "anyOf": [
              {
                "type": "number"
              },
              {
                "type": "null"
              }
            ],
            "title": "Gamma Wall 0Dte"
          },
          "one_d_max": {
            "anyOf": [
              {
                "type": "number"
              },
              {
                "type": "null"
              }
            ],
            "title": "One D Max"
          },
          "one_d_min": {
            "anyOf": [
              {
                "type": "number"
              },
              {
                "type": "null"
              }
            ],
            "title": "One D Min"
          }
        },
        "type": "object",
        "required": [
          "symbol",
          "spot",
          "asof",
          "call_resistance",
          "put_support",
          "hvl",
          "gamma_wall",
          "gex_1",
          "gex_2",
          "gex_3",
          "gex_4",
          "gex_5",
          "gex_6",
          "gex_7",
          "gex_8",
          "gex_9",
          "gex_10",
          "call_resistance_0dte",
          "put_support_0dte",
          "hvl_0dte",
          "gamma_wall_0dte",
          "one_d_max",
          "one_d_min"
        ],
        "title": "MenthorqLevelsResponse"
      },
      "MultiExpiryResponse": {
        "properties": {
          "symbol": {
            "type": "string",
            "title": "Symbol"
          },
          "asof": {
            "type": "string",
            "format": "date-time",
            "title": "Asof"
          },
          "spot": {
            "type": "number",
            "title": "Spot"
          },
          "panels": {
            "items": {
              "$ref": "#/components/schemas/ExpiryPanelItem"
            },
            "type": "array",
            "title": "Panels"
          },
          "by_expiry": {
            "items": {
              "additionalProperties": true,
              "type": "object"
            },
            "type": "array",
            "title": "By Expiry"
          }
        },
        "type": "object",
        "required": [
          "symbol",
          "asof",
          "spot",
          "panels",
          "by_expiry"
        ],
        "title": "MultiExpiryResponse"
      },
      "PanelBar": {
        "properties": {
          "strike": {
            "type": "number",
            "title": "Strike"
          },
          "call_gex": {
            "type": "number",
            "title": "Call Gex"
          },
          "put_gex": {
            "type": "number",
            "title": "Put Gex"
          },
          "net_gex": {
            "type": "number",
            "title": "Net Gex"
          }
        },
        "type": "object",
        "required": [
          "strike",
          "call_gex",
          "put_gex",
          "net_gex"
        ],
        "title": "PanelBar"
      },
      "PolygonHiroPoint": {
        "properties": {
          "t": {
            "type": "string",
            "title": "T"
          },
          "cum_delta": {
            "type": "number",
            "title": "Cum Delta"
          },
          "calls_cum": {
            "type": "number",
            "title": "Calls Cum"
          },
          "puts_cum": {
            "type": "number",
            "title": "Puts Cum"
          }
        },
        "type": "object",
        "required": [
          "t",
          "cum_delta",
          "calls_cum",
          "puts_cum"
        ],
        "title": "PolygonHiroPoint"
      },
      "PolygonHiroResponse": {
        "properties": {
          "symbol": {
            "type": "string",
            "title": "Symbol"
          },
          "source": {
            "type": "string",
            "title": "Source"
          },
          "points": {
            "items": {
              "$ref": "#/components/schemas/PolygonHiroPoint"
            },
            "type": "array",
            "title": "Points"
          }
        },
        "type": "object",
        "required": [
          "symbol",
          "source",
          "points"
        ],
        "title": "PolygonHiroResponse"
      },
      "ProfileResponse": {
        "properties": {
          "symbol": {
            "type": "string",
            "title": "Symbol"
          },
          "asof": {
            "type": "string",
            "format": "date-time",
            "title": "Asof"
          },
          "spot": {
            "type": "number",
            "title": "Spot"
          },
          "strikes": {
            "items": {
              "$ref": "#/components/schemas/StrikeBar"
            },
            "type": "array",
            "title": "Strikes"
          },
          "max_abs_gex": {
            "type": "number",
            "title": "Max Abs Gex"
          },
          "max_abs_dex": {
            "type": "number",
            "title": "Max Abs Dex"
          },
          "max_abs_vex": {
            "type": "number",
            "title": "Max Abs Vex"
          },
          "max_abs_gex_plus": {
            "type": "number",
            "title": "Max Abs Gex Plus"
          },
          "totals": {
            "$ref": "#/components/schemas/ChainTotals"
          }
        },
        "type": "object",
        "required": [
          "symbol",
          "asof",
          "spot",
          "strikes",
          "max_abs_gex",
          "max_abs_dex",
          "max_abs_vex",
          "max_abs_gex_plus",
          "totals"
        ],
        "title": "ProfileResponse"
      },
      "PulseResponse": {
        "properties": {
          "symbol": {
            "type": "string",
            "title": "Symbol"
          },
          "asof": {
            "type": "string",
            "format": "date-time",
            "title": "Asof"
          },
          "spot": {
            "type": "number",
            "title": "Spot"
          },
          "gamma_regime": {
            "type": "string",
            "title": "Gamma Regime"
          },
          "gamma_regime_label": {
            "type": "string",
            "title": "Gamma Regime Label"
          },
          "net_gex": {
            "type": "number",
            "title": "Net Gex"
          },
          "zero_gamma_distance_pct": {
            "type": "number",
            "title": "Zero Gamma Distance Pct"
          },
          "volatility_regime": {
            "type": "string",
            "title": "Volatility Regime"
          },
          "gvi_magnitude": {
            "type": "number",
            "title": "Gvi Magnitude"
          },
          "atr_pct": {
            "type": "number",
            "title": "Atr Pct"
          },
          "vix": {
            "anyOf": [
              {
                "type": "number"
              },
              {
                "type": "null"
              }
            ],
            "title": "Vix"
          },
          "iv_30d": {
            "type": "number",
            "title": "Iv 30D"
          },
          "expected_move_pts": {
            "type": "number",
            "title": "Expected Move Pts"
          },
          "expected_move_pct": {
            "type": "number",
            "title": "Expected Move Pct"
          },
          "realized_range_pct": {
            "type": "number",
            "title": "Realized Range Pct"
          },
          "realized_vs_expected_pct": {
            "type": "number",
            "title": "Realized Vs Expected Pct"
          },
          "skew": {
            "type": "number",
            "title": "Skew"
          },
          "skew_label": {
            "type": "string",
            "title": "Skew Label"
          },
          "vanna_state": {
            "type": "string",
            "title": "Vanna State"
          },
          "charm_state": {
            "type": "string",
            "title": "Charm State"
          },
          "charm_magnet": {
            "anyOf": [
              {
                "type": "number"
              },
              {
                "type": "null"
              }
            ],
            "title": "Charm Magnet"
          },
          "diagnosis_title": {
            "type": "string",
            "title": "Diagnosis Title"
          },
          "diagnosis_text": {
            "type": "string",
            "title": "Diagnosis Text"
          }
        },
        "type": "object",
        "required": [
          "symbol",
          "asof",
          "spot",
          "gamma_regime",
          "gamma_regime_label",
          "net_gex",
          "zero_gamma_distance_pct",
          "volatility_regime",
          "gvi_magnitude",
          "atr_pct",
          "vix",
          "iv_30d",
          "expected_move_pts",
          "expected_move_pct",
          "realized_range_pct",
          "realized_vs_expected_pct",
          "skew",
          "skew_label",
          "vanna_state",
          "charm_state",
          "charm_magnet",
          "diagnosis_title",
          "diagnosis_text"
        ],
        "title": "PulseResponse"
      },
      "QScoreComp": {
        "properties": {
          "score": {
            "type": "integer",
            "title": "Score"
          },
          "label": {
            "type": "string",
            "title": "Label"
          },
          "signal": {
            "type": "string",
            "title": "Signal"
          },
          "description": {
            "type": "string",
            "title": "Description"
          }
        },
        "type": "object",
        "required": [
          "score",
          "label",
          "signal",
          "description"
        ],
        "title": "QScoreComp"
      },
      "QScoreResponse": {
        "properties": {
          "symbol": {
            "type": "string",
            "title": "Symbol"
          },
          "asof": {
            "type": "string",
            "format": "date-time",
            "title": "Asof"
          },
          "option": {
            "$ref": "#/components/schemas/QScoreComp"
          },
          "volatility": {
            "$ref": "#/components/schemas/QScoreComp"
          },
          "momentum": {
            "$ref": "#/components/schemas/QScoreComp"
          },
          "seasonality": {
            "$ref": "#/components/schemas/QScoreComp"
          },
          "composite_score": {
            "type": "number",
            "title": "Composite Score"
          },
          "composite_signal": {
            "type": "string",
            "title": "Composite Signal"
          }
        },
        "type": "object",
        "required": [
          "symbol",
          "asof",
          "option",
          "volatility",
          "momentum",
          "seasonality",
          "composite_score",
          "composite_signal"
        ],
        "title": "QScoreResponse"
      },
      "SessionVwapDto": {
        "properties": {
          "session": {
            "type": "string",
            "title": "Session"
          },
          "label": {
            "type": "string",
            "title": "Label"
          },
          "vwap": {
            "type": "number",
            "title": "Vwap"
          },
          "volume": {
            "type": "integer",
            "title": "Volume"
          },
          "bars": {
            "type": "integer",
            "title": "Bars"
          },
          "color": {
            "type": "string",
            "title": "Color"
          },
          "is_current": {
            "type": "boolean",
            "title": "Is Current"
          }
        },
        "type": "object",
        "required": [
          "session",
          "label",
          "vwap",
          "volume",
          "bars",
          "color",
          "is_current"
        ],
        "title": "SessionVwapDto"
      },
      "SkewCrossResponse": {
        "properties": {
          "asof": {
            "type": "string",
            "format": "date-time",
            "title": "Asof"
          },
          "rows": {
            "items": {
              "$ref": "#/components/schemas/SkewRow"
            },
            "type": "array",
            "title": "Rows"
          },
          "systemic_direction": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Systemic Direction"
          }
        },
        "type": "object",
        "required": [
          "asof",
          "rows",
          "systemic_direction"
        ],
        "title": "SkewCrossResponse"
      },
      "SkewRow": {
        "properties": {
          "symbol": {
            "type": "string",
            "title": "Symbol"
          },
          "skew": {
            "type": "number",
            "title": "Skew"
          },
          "skew_label": {
            "type": "string",
            "title": "Skew Label"
          },
          "iv_30d": {
            "type": "number",
            "title": "Iv 30D"
          },
          "spot": {
            "type": "number",
            "title": "Spot"
          },
          "velocity_label": {
            "type": "string",
            "title": "Velocity Label"
          },
          "delta_skew_1h": {
            "anyOf": [
              {
                "type": "number"
              },
              {
                "type": "null"
              }
            ],
            "title": "Delta Skew 1H"
          }
        },
        "type": "object",
        "required": [
          "symbol",
          "skew",
          "skew_label",
          "iv_30d",
          "spot",
          "velocity_label",
          "delta_skew_1h"
        ],
        "title": "SkewRow"
      },
      "SmilePointDto": {
        "properties": {
          "strike": {
            "type": "number",
            "title": "Strike"
          },
          "call_iv": {
            "anyOf": [
              {
                "type": "number"
              },
              {
                "type": "null"
              }
            ],
            "title": "Call Iv"
          },
          "put_iv": {
            "anyOf": [
              {
                "type": "number"
              },
              {
                "type": "null"
              }
            ],
            "title": "Put Iv"
          },
          "moneyness": {
            "type": "number",
            "title": "Moneyness"
          }
        },
        "type": "object",
        "required": [
          "strike",
          "call_iv",
          "put_iv",
          "moneyness"
        ],
        "title": "SmilePointDto"
      },
      "SpotDto": {
        "properties": {
          "rank": {
            "type": "integer",
            "title": "Rank"
          },
          "price": {
            "type": "number",
            "title": "Price"
          },
          "overlap_count": {
            "type": "integer",
            "title": "Overlap Count"
          },
          "members": {
            "items": {
              "$ref": "#/components/schemas/MemberDto"
            },
            "type": "array",
            "title": "Members"
          }
        },
        "type": "object",
        "required": [
          "rank",
          "price",
          "overlap_count",
          "members"
        ],
        "title": "SpotDto"
      },
      "SpotResponse": {
        "properties": {
          "symbol": {
            "type": "string",
            "title": "Symbol"
          },
          "yf_ticker": {
            "type": "string",
            "title": "Yf Ticker"
          },
          "price": {
            "type": "number",
            "title": "Price"
          },
          "raw_yf_price": {
            "anyOf": [
              {
                "type": "number"
              },
              {
                "type": "null"
              }
            ],
            "title": "Raw Yf Price"
          },
          "previous_close": {
            "anyOf": [
              {
                "type": "number"
              },
              {
                "type": "null"
              }
            ],
            "title": "Previous Close"
          },
          "change_abs": {
            "anyOf": [
              {
                "type": "number"
              },
              {
                "type": "null"
              }
            ],
            "title": "Change Abs"
          },
          "change_pct": {
            "anyOf": [
              {
                "type": "number"
              },
              {
                "type": "null"
              }
            ],
            "title": "Change Pct"
          },
          "asof_utc": {
            "type": "string",
            "format": "date-time",
            "title": "Asof Utc"
          },
          "source": {
            "type": "string",
            "title": "Source"
          },
          "proxy_etf": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Proxy Etf"
          },
          "proxy_ratio": {
            "anyOf": [
              {
                "type": "number"
              },
              {
                "type": "null"
              }
            ],
            "title": "Proxy Ratio"
          },
          "is_market_open": {
            "type": "boolean",
            "title": "Is Market Open"
          },
          "is_likely_realtime": {
            "type": "boolean",
            "title": "Is Likely Realtime"
          }
        },
        "type": "object",
        "required": [
          "symbol",
          "yf_ticker",
          "price",
          "raw_yf_price",
          "previous_close",
          "change_abs",
          "change_pct",
          "asof_utc",
          "source",
          "proxy_etf",
          "proxy_ratio",
          "is_market_open",
          "is_likely_realtime"
        ],
        "title": "SpotResponse"
      },
      "StrikeBar": {
        "properties": {
          "strike": {
            "type": "number",
            "title": "Strike"
          },
          "call_gex": {
            "type": "number",
            "title": "Call Gex"
          },
          "put_gex": {
            "type": "number",
            "title": "Put Gex"
          },
          "net_gex": {
            "type": "number",
            "title": "Net Gex"
          },
          "call_dex": {
            "type": "number",
            "title": "Call Dex"
          },
          "put_dex": {
            "type": "number",
            "title": "Put Dex"
          },
          "net_dex": {
            "type": "number",
            "title": "Net Dex"
          },
          "vex": {
            "type": "number",
            "title": "Vex"
          },
          "gex_plus": {
            "type": "number",
            "title": "Gex Plus"
          },
          "oi": {
            "type": "integer",
            "title": "Oi"
          }
        },
        "type": "object",
        "required": [
          "strike",
          "call_gex",
          "put_gex",
          "net_gex",
          "call_dex",
          "put_dex",
          "net_dex",
          "vex",
          "gex_plus",
          "oi"
        ],
        "title": "StrikeBar"
      },
      "StrikeDeltaModel": {
        "properties": {
          "strike": {
            "type": "number",
            "title": "Strike"
          },
          "gex_now": {
            "type": "number",
            "title": "Gex Now"
          },
          "gex_then": {
            "type": "number",
            "title": "Gex Then"
          },
          "delta": {
            "type": "number",
            "title": "Delta"
          },
          "delta_abs": {
            "type": "number",
            "title": "Delta Abs"
          },
          "direction": {
            "type": "string",
            "title": "Direction"
          }
        },
        "type": "object",
        "required": [
          "strike",
          "gex_now",
          "gex_then",
          "delta",
          "delta_abs",
          "direction"
        ],
        "title": "StrikeDeltaModel"
      },
      "StrikeRow": {
        "properties": {
          "strike": {
            "type": "number",
            "title": "Strike"
          },
          "call_gex": {
            "type": "number",
            "title": "Call Gex"
          },
          "put_gex": {
            "type": "number",
            "title": "Put Gex"
          },
          "net_gex": {
            "type": "number",
            "title": "Net Gex"
          },
          "abs_gex": {
            "type": "number",
            "title": "Abs Gex"
          },
          "oi": {
            "type": "integer",
            "title": "Oi"
          }
        },
        "type": "object",
        "required": [
          "strike",
          "call_gex",
          "put_gex",
          "net_gex",
          "abs_gex",
          "oi"
        ],
        "title": "StrikeRow"
      },
      "SurfaceResponse": {
        "properties": {
          "symbol": {
            "type": "string",
            "title": "Symbol"
          },
          "spot": {
            "type": "number",
            "title": "Spot"
          },
          "asof": {
            "type": "string",
            "format": "date-time",
            "title": "Asof"
          },
          "mode": {
            "type": "string",
            "title": "Mode"
          },
          "strikes": {
            "items": {
              "type": "number"
            },
            "type": "array",
            "title": "Strikes"
          },
          "expiries": {
            "items": {
              "$ref": "#/components/schemas/ExpiryAxis"
            },
            "type": "array",
            "title": "Expiries"
          },
          "matrix": {
            "items": {
              "items": {
                "type": "number"
              },
              "type": "array"
            },
            "type": "array",
            "title": "Matrix"
          },
          "sign_matrix": {
            "items": {
              "items": {
                "type": "number"
              },
              "type": "array"
            },
            "type": "array",
            "title": "Sign Matrix"
          },
          "max_value": {
            "type": "number",
            "title": "Max Value"
          },
          "total": {
            "type": "number",
            "title": "Total"
          }
        },
        "type": "object",
        "required": [
          "symbol",
          "spot",
          "asof",
          "mode",
          "strikes",
          "expiries",
          "matrix",
          "sign_matrix",
          "max_value",
          "total"
        ],
        "title": "SurfaceResponse"
      },
      "TermPointDto": {
        "properties": {
          "expiry": {
            "type": "string",
            "format": "date",
            "title": "Expiry"
          },
          "dte": {
            "type": "integer",
            "title": "Dte"
          },
          "atm_iv": {
            "anyOf": [
              {
                "type": "number"
              },
              {
                "type": "null"
              }
            ],
            "title": "Atm Iv"
          }
        },
        "type": "object",
        "required": [
          "expiry",
          "dte",
          "atm_iv"
        ],
        "title": "TermPointDto"
      },
      "ValidationError": {
        "properties": {
          "loc": {
            "items": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "integer"
                }
              ]
            },
            "type": "array",
            "title": "Location"
          },
          "msg": {
            "type": "string",
            "title": "Message"
          },
          "type": {
            "type": "string",
            "title": "Error Type"
          },
          "input": {
            "title": "Input"
          },
          "ctx": {
            "type": "object",
            "title": "Context"
          }
        },
        "type": "object",
        "required": [
          "loc",
          "msg",
          "type"
        ],
        "title": "ValidationError"
      },
      "VolResponse": {
        "properties": {
          "symbol": {
            "type": "string",
            "title": "Symbol"
          },
          "spot": {
            "type": "number",
            "title": "Spot"
          },
          "asof": {
            "type": "string",
            "format": "date-time",
            "title": "Asof"
          },
          "iv30": {
            "type": "number",
            "title": "Iv30"
          },
          "realized_30d": {
            "anyOf": [
              {
                "type": "number"
              },
              {
                "type": "null"
              }
            ],
            "title": "Realized 30D"
          },
          "vrp": {
            "anyOf": [
              {
                "type": "number"
              },
              {
                "type": "null"
              }
            ],
            "title": "Vrp"
          },
          "smile_expiry": {
            "anyOf": [
              {
                "type": "string",
                "format": "date"
              },
              {
                "type": "null"
              }
            ],
            "title": "Smile Expiry"
          },
          "smile": {
            "items": {
              "$ref": "#/components/schemas/SmilePointDto"
            },
            "type": "array",
            "title": "Smile"
          },
          "term": {
            "items": {
              "$ref": "#/components/schemas/TermPointDto"
            },
            "type": "array",
            "title": "Term"
          }
        },
        "type": "object",
        "required": [
          "symbol",
          "spot",
          "asof",
          "iv30",
          "realized_30d",
          "vrp",
          "smile_expiry",
          "smile",
          "term"
        ],
        "title": "VolResponse"
      },
      "VolumeProfileDto": {
        "properties": {
          "poc": {
            "type": "number",
            "title": "Poc"
          },
          "vah": {
            "type": "number",
            "title": "Vah"
          },
          "val": {
            "type": "number",
            "title": "Val"
          },
          "total_volume": {
            "type": "number",
            "title": "Total Volume"
          },
          "value_area_pct": {
            "type": "number",
            "title": "Value Area Pct"
          },
          "bins": {
            "items": {
              "additionalProperties": true,
              "type": "object"
            },
            "type": "array",
            "title": "Bins"
          },
          "high": {
            "type": "number",
            "title": "High"
          },
          "low": {
            "type": "number",
            "title": "Low"
          }
        },
        "type": "object",
        "required": [
          "poc",
          "vah",
          "val",
          "total_volume",
          "value_area_pct",
          "bins",
          "high",
          "low"
        ],
        "title": "VolumeProfileDto"
      },
      "app__api__routes__ladders__MaxChangeResponse": {
        "properties": {
          "symbol": {
            "type": "string",
            "title": "Symbol"
          },
          "windows": {
            "additionalProperties": {
              "items": {
                "$ref": "#/components/schemas/MaxChangeBar"
              },
              "type": "array"
            },
            "type": "object",
            "title": "Windows"
          }
        },
        "type": "object",
        "required": [
          "symbol",
          "windows"
        ],
        "title": "MaxChangeResponse"
      },
      "app__api__routes__max_change__MaxChangeResponse": {
        "properties": {
          "symbol": {
            "type": "string",
            "title": "Symbol"
          },
          "tier": {
            "type": "string",
            "title": "Tier"
          },
          "asof": {
            "type": "string",
            "format": "date-time",
            "title": "Asof"
          },
          "spot": {
            "type": "number",
            "title": "Spot"
          },
          "horizons": {
            "items": {
              "$ref": "#/components/schemas/HorizonReportModel"
            },
            "type": "array",
            "title": "Horizons"
          }
        },
        "type": "object",
        "required": [
          "symbol",
          "tier",
          "asof",
          "spot",
          "horizons"
        ],
        "title": "MaxChangeResponse"
      }
    }
  }
}