{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://artifacts.apis.io/backquant-com/json-schema/backquant-com-multi-gex-levels-response-schema.json",
  "title": "MultiGexLevelsResponse",
  "x-generated": "2026-11-02",
  "x-method": "derived",
  "x-generator": "derive-json-schema.py",
  "x-source": "openapi/_original/backquant-com-api-openapi.json#/components/schemas/MultiGexLevelsResponse",
  "properties": {
    "success": {
      "type": "boolean",
      "const": true,
      "title": "Success",
      "default": true
    },
    "data": {
      "$ref": "#/$defs/MultiGexLevelsData"
    },
    "meta": {
      "$ref": "#/$defs/V2Meta"
    }
  },
  "type": "object",
  "required": [
    "data",
    "meta"
  ],
  "$defs": {
    "GexAllExpiryLevels": {
      "properties": {
        "hvl": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "type": "null"
            }
          ],
          "title": "Hvl",
          "description": "Hedging volume level (gamma-flip)."
        },
        "call_resistance": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "type": "null"
            }
          ],
          "title": "Call Resistance"
        },
        "call_wall_2": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "type": "null"
            }
          ],
          "title": "Call Wall 2"
        },
        "call_wall_3": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "type": "null"
            }
          ],
          "title": "Call Wall 3"
        },
        "put_support": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "type": "null"
            }
          ],
          "title": "Put Support"
        },
        "put_wall_2": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "type": "null"
            }
          ],
          "title": "Put Wall 2"
        },
        "put_wall_3": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "type": "null"
            }
          ],
          "title": "Put Wall 3"
        }
      },
      "type": "object",
      "title": "GexAllExpiryLevels"
    },
    "GexExpectedMove": {
      "properties": {
        "upper_1sd": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "type": "null"
            }
          ],
          "title": "Upper 1Sd",
          "description": "Spot + 1 sigma move to the expiry `days_to_expiry` days out (the nearest expiry with 7 to 30 days left), not a 1-day move."
        },
        "lower_1sd": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "type": "null"
            }
          ],
          "title": "Lower 1Sd",
          "description": "Spot - 1 sigma move to the same expiry as upper_1sd."
        },
        "upper_2sd": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "type": "null"
            }
          ],
          "title": "Upper 2Sd",
          "description": "Spot + 2 sigma move to the same expiry as upper_1sd."
        },
        "lower_2sd": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "type": "null"
            }
          ],
          "title": "Lower 2Sd",
          "description": "Spot - 2 sigma move to the same expiry as upper_1sd."
        },
        "days_to_expiry": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "type": "null"
            }
          ],
          "title": "Days To Expiry",
          "description": "Days to the expiry the *_1sd / *_2sd bands are measured to."
        },
        "upper_1d": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "type": "null"
            }
          ],
          "title": "Upper 1D",
          "description": "Spot + 1 sigma move over ONE day (ATM IV scaled to 1/365 of a year). Null until published."
        },
        "lower_1d": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "type": "null"
            }
          ],
          "title": "Lower 1D",
          "description": "Spot - 1 sigma move over one day. Null until published."
        }
      },
      "type": "object",
      "title": "GexExpectedMove"
    },
    "GexMaxPainBlock": {
      "properties": {
        "strike": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "type": "null"
            }
          ],
          "title": "Strike"
        },
        "value": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "type": "null"
            }
          ],
          "title": "Value"
        }
      },
      "type": "object",
      "title": "GexMaxPainBlock"
    },
    "GexOdteLevels": {
      "properties": {
        "hvl": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "type": "null"
            }
          ],
          "title": "Hvl"
        },
        "call_resistance": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "type": "null"
            }
          ],
          "title": "Call Resistance"
        },
        "put_support": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "type": "null"
            }
          ],
          "title": "Put Support"
        }
      },
      "type": "object",
      "title": "GexOdteLevels"
    },
    "GexRanked": {
      "properties": {
        "all_expiry_top_10": {
          "items": {
            "$ref": "#/$defs/GexRankedLevel"
          },
          "type": "array",
          "title": "All Expiry Top 10",
          "default": []
        },
        "odte_top_10": {
          "items": {
            "$ref": "#/$defs/GexRankedLevel"
          },
          "type": "array",
          "title": "Odte Top 10",
          "default": []
        }
      },
      "type": "object",
      "title": "GexRanked"
    },
    "GexRankedLevel": {
      "properties": {
        "rank": {
          "type": "integer",
          "title": "Rank"
        },
        "strike": {
          "type": "number",
          "title": "Strike"
        },
        "gex": {
          "type": "number",
          "title": "Gex"
        },
        "abs_gex": {
          "type": "number",
          "title": "Abs Gex"
        }
      },
      "type": "object",
      "required": [
        "rank",
        "strike",
        "gex",
        "abs_gex"
      ],
      "title": "GexRankedLevel"
    },
    "MultiGexLevelsData": {
      "properties": {
        "results": {
          "additionalProperties": {
            "anyOf": [
              {
                "$ref": "#/$defs/MultiSymbolEntry"
              },
              {
                "type": "null"
              }
            ]
          },
          "type": "object",
          "title": "Results",
          "description": "Per-symbol entries; null for missing symbols."
        },
        "requested": {
          "items": {
            "type": "string"
          },
          "type": "array",
          "title": "Requested"
        },
        "served": {
          "items": {
            "type": "string"
          },
          "type": "array",
          "title": "Served"
        },
        "missing": {
          "items": {
            "type": "string"
          },
          "type": "array",
          "title": "Missing"
        },
        "invalid": {
          "items": {
            "type": "string"
          },
          "type": "array",
          "title": "Invalid"
        }
      },
      "type": "object",
      "required": [
        "results",
        "requested",
        "served",
        "missing",
        "invalid"
      ],
      "title": "MultiGexLevelsData"
    },
    "MultiSymbolEntry": {
      "properties": {
        "all_expiry": {
          "$ref": "#/$defs/GexAllExpiryLevels"
        },
        "odte": {
          "$ref": "#/$defs/GexOdteLevels"
        },
        "spot_price": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "type": "null"
            }
          ],
          "title": "Spot Price"
        },
        "computed_at": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "title": "Computed At"
        },
        "ranked": {
          "anyOf": [
            {
              "$ref": "#/$defs/GexRanked"
            },
            {
              "type": "null"
            }
          ]
        },
        "max_pain": {
          "anyOf": [
            {
              "$ref": "#/$defs/GexMaxPainBlock"
            },
            {
              "type": "null"
            }
          ]
        },
        "expected_move": {
          "anyOf": [
            {
              "$ref": "#/$defs/GexExpectedMove"
            },
            {
              "type": "null"
            }
          ]
        },
        "gamma_flip_zones": {
          "anyOf": [
            {
              "items": {},
              "type": "array"
            },
            {
              "type": "null"
            }
          ],
          "title": "Gamma Flip Zones"
        }
      },
      "type": "object",
      "required": [
        "all_expiry",
        "odte"
      ],
      "title": "MultiSymbolEntry",
      "description": "One symbol's slice of the bundle. Same shape as a single-symbol\n/v2/gex/levels response, sans the wrapper envelope."
    },
    "V2Meta": {
      "properties": {
        "version": {
          "type": "string",
          "const": "2.0",
          "title": "Version",
          "description": "API version tag."
        },
        "timestamp": {
          "type": "string",
          "title": "Timestamp",
          "description": "ISO 8601 wall-clock when the response was built."
        },
        "request_id": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "title": "Request Id",
          "description": "X-Request-ID for tracing across logs / Sentry."
        },
        "symbol": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "title": "Symbol",
          "description": "Symbol the response is about, if applicable."
        },
        "spot_price": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "type": "null"
            }
          ],
          "title": "Spot Price",
          "description": "Current spot price for the symbol."
        },
        "computed_at": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "title": "Computed At",
          "description": "ISO 8601 of when the underlying cache value was last written."
        },
        "freshness_seconds": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "type": "null"
            }
          ],
          "title": "Freshness Seconds",
          "description": "`now - computed_at` in seconds; useful for staleness alarms."
        },
        "source": {
          "anyOf": [
            {
              "items": {
                "type": "string"
              },
              "type": "array"
            },
            {
              "type": "null"
            }
          ],
          "title": "Source",
          "description": "Upstream venue list the data flowed through."
        },
        "exchanges_filtered": {
          "anyOf": [
            {
              "items": {
                "type": "string"
              },
              "type": "array"
            },
            {
              "type": "null"
            }
          ],
          "title": "Exchanges Filtered",
          "description": "Echo of the `?exchanges=` filter when one was applied."
        },
        "rate_limit": {
          "anyOf": [
            {
              "additionalProperties": true,
              "type": "object"
            },
            {
              "type": "null"
            }
          ],
          "title": "Rate Limit",
          "description": "`{limit, remaining, reset}` echo of the rate-limit headers."
        },
        "extra": {
          "anyOf": [
            {
              "additionalProperties": true,
              "type": "object"
            },
            {
              "type": "null"
            }
          ],
          "title": "Extra",
          "description": "Open dict for endpoint-specific metadata (filter_hash, etc.)."
        }
      },
      "type": "object",
      "required": [
        "version",
        "timestamp"
      ],
      "title": "V2Meta",
      "description": "The meta block returned alongside every v2 response.\n\nEvery field after `version`/`timestamp` is optional because endpoints\nattach different combinations - e.g. `/v2/status` skips `symbol`, the\nchain endpoint sets `extra.filter_hash`, etc. Listing them here means\nSDKs get a typed accessor for each instead of a generic `meta: dict`."
    }
  }
}