{
    "openapi": "3.1.0",
    "info": {
        "title": "OHLC Market Data API",
        "version": "2.0.0+b5463f5bbb43",
        "description": "Query parameters take YYYY-MM-DD dates; responses carry UTC timestamps, explicit currencies, decimal strings and effective-dated MIC:TICKER symbols. Live coverage requires configured source metadata."
    },
    "servers": [
        {
            "url": "https://api.ohlc.io",
            "description": "Production"
        }
    ],
    "security": [
        {
            "apiKey": []
        }
    ],
    "paths": {
        "/v1/quotes": {
            "get": {
                "operationId": "quotes",
                "x-dataset-id": 1,
                "x-required-capability": "quotes.read",
                "parameters": [
                    {
                        "name": "limit",
                        "in": "query",
                        "schema": {
                            "type": "integer",
                            "minimum": 1,
                            "maximum": 500,
                            "default": 100
                        },
                        "description": "Maximum records per page, from 1 to 500; default 100."
                    },
                    {
                        "name": "cursor",
                        "in": "query",
                        "schema": {
                            "type": "string"
                        },
                        "description": "Opaque cursor, expires after one hour. Keep all query parameters unchanged. Changes to entitlements can invalidate it."
                    },
                    {
                        "name": "If-None-Match",
                        "in": "header",
                        "schema": {
                            "type": "string"
                        },
                        "description": "ETag from a previous response. Authorization is rechecked before returning 304, and a 304 costs no credits."
                    },
                    {
                        "name": "symbols",
                        "in": "query",
                        "style": "form",
                        "explode": false,
                        "schema": {
                            "type": "array",
                            "minItems": 1,
                            "maxItems": 100,
                            "uniqueItems": true,
                            "items": {
                                "type": "string",
                                "pattern": "^(?:(?:[A-Za-z0-9]{4}|[Cc][Rr][Yy][Pp][Tt][Oo]|[Ff][Oo][Rr][Ee][Xx]|[Ii][Nn][Dd][Ee][Xx]):|\\^)?[A-Za-z0-9][A-Za-z0-9./_^= -]{0,63}$"
                            }
                        },
                        "description": "Comma-separated MIC:TICKER symbols (crypto pairs are CRYPTO:BTC-USD, currency pairs FOREX:EUR-USD, indices INDEX:GSPC, bonds BOND and the ISIN, such as BOND:US00037BAF94) or bare tickers, which resolve to the exchange listing that ticker; neither part is case-sensitive, and two spellings of one listing count as a repeated value. A bare ticker that names no listing as written is also read in the common vendor spellings: with an exchange suffix (RY.TO, SHEL.L, VOD.LSE, BHP.AX), ^GSPC for INDEX:GSPC, and EURUSD=X or EURUSD for FOREX:EUR-USD. At most 100, further limited by the effective plan and key scope. A symbol names the listing recorded under it at symbol_at; at a date before any ticker is recorded for a listing, the earliest ticker recorded for it selects it as well (see symbol_at). Supply symbols or instrument_ids.",
                        "example": [
                            "XNAS:AAPL"
                        ]
                    },
                    {
                        "name": "instrument_ids",
                        "in": "query",
                        "style": "form",
                        "explode": false,
                        "schema": {
                            "type": "array",
                            "minItems": 1,
                            "maxItems": 100,
                            "uniqueItems": true,
                            "items": {
                                "type": "string",
                                "minLength": 1,
                                "maxLength": 128,
                                "pattern": "^[A-Za-z0-9][A-Za-z0-9_.:-]{0,127}$"
                            }
                        },
                        "description": "Comma-separated stable instrument IDs (the instrument_id of each row, and of the research endpoints) instead of symbols; each selects its listing at any date, including history from before its earliest recorded ticker and listings that no longer trade. Rows carry the symbol the listing had at symbol_at, or where it had none then, its symbol at as_of, else the last one it carried by as_of, else its first. At most 100. Cannot be combined with symbols."
                    },
                    {
                        "name": "symbol_at",
                        "in": "query",
                        "schema": {
                            "type": "string",
                            "format": "date"
                        },
                        "description": "Resolve symbols as they were assigned at the end of this UTC date (YYYY-MM-DD); defaults to as_of. Only listings the security master holds resolve: it was built in September 2026 and records delistings from then on, so most issuers delisted earlier, such as TWTR or SIVB, resolve at no date. A ticker names the listing that carries it at symbol_at, and every row of a from/to range carries that symbol, rows from before the listing took the ticker included: a ticker reused after its earlier holder delisted returns the new holder's older rows, so set symbol_at inside the range to name the listing that traded under the ticker then. Tickers are recorded only where there is evidence for them (for many listings from 2003, though prices start earlier), and none is asserted earlier. As a lookup convenience, a date before a listing's earliest recorded ticker still finds the listing by that ticker when no record contradicts it (no listing is recorded under the ticker by that date, and the listing has no earlier ticker): its rows carry the symbol as a label and meta.unrecorded_symbols lists it. A date before the listing's first row returns 200 with no-data, as a to before it does. A ticker another listing held, or one the listing was renamed from or to, returns 404 naming the date and the listing; instrument_ids select a listing at any date."
                    },
                    {
                        "name": "as_of",
                        "in": "query",
                        "schema": {
                            "type": "string",
                            "format": "date"
                        },
                        "description": "Knowledge cutoff as a UTC date (YYYY-MM-DD): the response reflects what was known by the end of that day. Defaults to now; cannot be in the future. A date from before the dataset's knowledge history returns 422 point-in-time-unavailable naming the earliest one, which GET /v1/datasets lists as earliest_as_of."
                    },
                    {
                        "name": "format",
                        "in": "query",
                        "description": "Response format. csv returns the data rows with a header row, for spreadsheet functions such as IMPORTDATA; nested fields become dotted columns and lists one JSON array cell, the next page cursor is returned in X-Next-Cursor and meta.errors in X-Meta-Errors. A result without rows is the header row alone, listing the documented fields of a row. Default json, or csv when format is omitted and the Accept header ranks text/csv above JSON; a format the Accept header does not admit returns 406 not-acceptable.",
                        "schema": {
                            "type": "string",
                            "enum": [
                                "json",
                                "csv"
                            ]
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Authorized data. Monetary and price values are decimal strings with currency_code.",
                        "headers": {
                            "X-RateLimit-Limit": {
                                "$ref": "#/components/headers/X-RateLimit-Limit"
                            },
                            "X-RateLimit-Remaining": {
                                "$ref": "#/components/headers/X-RateLimit-Remaining"
                            },
                            "X-RateLimit-Reset": {
                                "$ref": "#/components/headers/X-RateLimit-Reset"
                            },
                            "ETag": {
                                "$ref": "#/components/headers/ETag"
                            },
                            "Cache-Control": {
                                "schema": {
                                    "type": "string",
                                    "const": "must-revalidate, no-cache, private"
                                },
                                "description": "Responses of this endpoint carry an ETag: a client may keep one, and revalidates it with If-None-Match before reuse."
                            },
                            "X-Request-ID": {
                                "$ref": "#/components/headers/X-Request-ID"
                            },
                            "X-Next-Cursor": {
                                "$ref": "#/components/headers/X-Next-Cursor"
                            },
                            "X-Meta-Errors": {
                                "$ref": "#/components/headers/X-Meta-Errors"
                            },
                            "X-Credits-Limit": {
                                "$ref": "#/components/headers/X-Credits-Limit"
                            },
                            "X-Credits-Remaining": {
                                "$ref": "#/components/headers/X-Credits-Remaining"
                            },
                            "X-Credits-Cost": {
                                "$ref": "#/components/headers/X-Credits-Cost"
                            },
                            "X-Concurrency-Limit": {
                                "$ref": "#/components/headers/X-Concurrency-Limit"
                            },
                            "X-Concurrency-Remaining": {
                                "$ref": "#/components/headers/X-Concurrency-Remaining"
                            }
                        },
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "object",
                                    "required": [
                                        "data",
                                        "meta"
                                    ],
                                    "properties": {
                                        "data": {
                                            "type": "array",
                                            "items": {
                                                "$ref": "#/components/schemas/Quote"
                                            }
                                        },
                                        "meta": {
                                            "type": "object",
                                            "required": [
                                                "timezone",
                                                "next_cursor",
                                                "as_of"
                                            ],
                                            "properties": {
                                                "timezone": {
                                                    "const": "UTC"
                                                },
                                                "as_of": {
                                                    "type": "string",
                                                    "format": "date-time"
                                                },
                                                "next_cursor": {
                                                    "type": [
                                                        "string",
                                                        "null"
                                                    ]
                                                },
                                                "errors": {
                                                    "type": "array",
                                                    "items": {
                                                        "type": "object",
                                                        "properties": {
                                                            "symbol": {
                                                                "type": [
                                                                    "string",
                                                                    "null"
                                                                ],
                                                                "description": "Requested symbol, or the symbol a requested instrument ID resolved to; null when the instrument ID has no unique symbol."
                                                            },
                                                            "instrument_id": {
                                                                "type": [
                                                                    "string",
                                                                    "null"
                                                                ],
                                                                "description": "Instrument ID of the listing: the requested one, or the one a requested symbol resolved to; null when a symbol resolved to no listing."
                                                            },
                                                            "code": {
                                                                "type": "string",
                                                                "description": "symbol-not-resolved or identifier-not-found when the member names no listing; no-data when it resolved but has no rows for this request, such as a listing without a quote or a date it did not trade."
                                                            },
                                                            "status": {
                                                                "type": "integer"
                                                            },
                                                            "detail": {
                                                                "type": "string"
                                                            }
                                                        },
                                                        "required": [
                                                            "symbol",
                                                            "instrument_id",
                                                            "code",
                                                            "status",
                                                            "detail"
                                                        ]
                                                    },
                                                    "description": "Requested members of a batch that return no rows: every requested symbol or instrument ID appears in data or here. A member that names no listing is reported on the first page, and one that resolved but has no rows on the page that reaches it, so a paginated request reports each one once. Valid members are still returned; entitlement failures reject the request, and a request in which no member resolves is a 404. CSV responses carry these entries in the X-Meta-Errors header."
                                                },
                                                "unrecorded_symbols": {
                                                    "type": "array",
                                                    "items": {
                                                        "type": "string"
                                                    },
                                                    "description": "Present when rows in data carry a symbol that is only a label: no ticker is recorded for that listing at symbol_at (ticker records begin in 2003 at the earliest, later for many listings, while prices start earlier), so the listing was found by the earliest ticker recorded for it, or by its instrument ID, and its rows carry that symbol. OHLC does not assert that the listing traded under the symbol then; /v1/instruments/{instrument_id}/symbols lists the recorded tickers. Not sent with format=csv."
                                                }
                                            }
                                        }
                                    }
                                }
                            },
                            "text/csv": {
                                "schema": {
                                    "type": "string"
                                }
                            }
                        }
                    },
                    "304": {
                        "$ref": "#/components/responses/NotModified"
                    },
                    "400": {
                        "$ref": "#/components/responses/BadRequest"
                    },
                    "401": {
                        "$ref": "#/components/responses/Unauthorized"
                    },
                    "403": {
                        "$ref": "#/components/responses/Forbidden"
                    },
                    "404": {
                        "$ref": "#/components/responses/NotFound"
                    },
                    "405": {
                        "$ref": "#/components/responses/MethodNotAllowed"
                    },
                    "406": {
                        "$ref": "#/components/responses/NotAcceptable"
                    },
                    "409": {
                        "$ref": "#/components/responses/Conflict"
                    },
                    "413": {
                        "$ref": "#/components/responses/ContentTooLarge"
                    },
                    "414": {
                        "$ref": "#/components/responses/URITooLong"
                    },
                    "415": {
                        "$ref": "#/components/responses/UnsupportedMediaType"
                    },
                    "422": {
                        "$ref": "#/components/responses/UnprocessableContent"
                    },
                    "429": {
                        "$ref": "#/components/responses/TooManyRequests"
                    },
                    "431": {
                        "$ref": "#/components/responses/RequestHeaderFieldsTooLarge"
                    },
                    "500": {
                        "$ref": "#/components/responses/InternalServerError"
                    },
                    "503": {
                        "description": "RFC 9457 problem.",
                        "headers": {
                            "X-RateLimit-Limit": {
                                "$ref": "#/components/headers/X-RateLimit-Limit"
                            },
                            "X-RateLimit-Remaining": {
                                "$ref": "#/components/headers/X-RateLimit-Remaining"
                            },
                            "X-RateLimit-Reset": {
                                "$ref": "#/components/headers/X-RateLimit-Reset"
                            },
                            "Retry-After": {
                                "$ref": "#/components/headers/Retry-After"
                            },
                            "X-Request-ID": {
                                "$ref": "#/components/headers/X-Request-ID"
                            },
                            "Cache-Control": {
                                "$ref": "#/components/headers/Cache-Control"
                            },
                            "X-Credits-Limit": {
                                "$ref": "#/components/headers/X-Credits-Limit"
                            },
                            "X-Credits-Remaining": {
                                "$ref": "#/components/headers/X-Credits-Remaining"
                            },
                            "X-Credits-Cost": {
                                "$ref": "#/components/headers/X-Credits-Cost"
                            },
                            "X-Concurrency-Limit": {
                                "$ref": "#/components/headers/X-Concurrency-Limit"
                            },
                            "X-Concurrency-Remaining": {
                                "$ref": "#/components/headers/X-Concurrency-Remaining"
                            }
                        },
                        "content": {
                            "application/problem+json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Problem"
                                }
                            }
                        }
                    }
                },
                "summary": "Quotes",
                "tags": [
                    "Market prices"
                ],
                "description": "Latest delayed quote per symbol: the last trade of the newest snapshot, never real-time. Exchange listings are delayed at least 15 minutes. US listings are snapshotted every 10 minutes from 9:31 New York time until the delay has caught up with the close (about 16:30), so after the close last_price is the last trade in that final snapshot, after-hours prints included, and can differ from the official close; read the close from /v1/eod or /v1/snapshot (price_source session_close). Listings on the Toronto, TSX Venture, Cboe Canada, London, Euronext Paris and Amsterdam and ASX exchanges are quoted every 60 minutes while their exchange is open, from about 20 minutes after the open (on the ASX 20 minutes later, after its opening auction), and once more about 20 minutes after the close; in between, the listings requested from /v1/quotes, /v1/snapshot or the quote stream in the last 24 hours (up to 250 a market, the most recently requested) are quoted every 10 minutes, so their last_at is usually 20 to 35 minutes old while the exchange is open. Crypto quotes come around the clock from two sources that are not delayed: the leading pairs by market capitalization are quoted about every five minutes, so a pair's last_at is usually under 10 minutes old, and every other pair a source prices about every one to two hours. bid and ask fields are always null: no licensed source supplies quotes yet. Mutual funds (one NAV a day, in /v1/eod), bonds (the BOND venue, daily prices in /v1/eod) and OTC listings have no quotes; neither do preferreds listed on NYSE and NYSE American, which the delayed snapshot does not carry, and a crypto pair neither source prices has none. A request naming a mutual fund with a key whose plan lacks mutual-funds.read (Commercial and Scale include it) returns 403 mutual-funds-not-entitled. GET /v1/health lists, per exchange and asset type, how many listings have a quote (coverage.asset_types). A listing whose newest quote predates a session that has traded since is not served as current: it is reported in meta.errors as no-data, and /v1/snapshot and /v1/eod carry that session's close. A crypto pair's quote also gives way to a daily bar that closed after it, so a quote the source stopped updating is replaced by that UTC day's close. Currency pairs are quoted every ten minutes, without delay, for the majors and leading crosses only, while the forex market is open (Sunday 17:00 to Friday 17:30 New York time). Indices (the INDEX venue, such as INDEX:GSPC) are quoted every ten minutes, delayed about 15 minutes, for 38 leading indices only, while each one's home market is open; the other indices have daily bars only. Select listings with symbols or instrument_ids, not both. Requires quotes.read and an entitled market. An empty data array is a successful result. When none of the requested symbols resolves, the response is 404 symbol-not-resolved, whatever the size of the list; when at least one does, the others are reported in meta.errors.",
                "x-credit-cost": "5 credits per symbol.",
                "x-availability": "available",
                "x-example-query": {
                    "symbols": [
                        "XNAS:AAPL"
                    ]
                }
            }
        },
        "/v1/eod": {
            "get": {
                "operationId": "eod",
                "x-dataset-id": 2,
                "x-required-capability": "eod.read",
                "parameters": [
                    {
                        "name": "limit",
                        "in": "query",
                        "schema": {
                            "type": "integer",
                            "minimum": 1,
                            "maximum": 500,
                            "default": 100
                        },
                        "description": "Maximum records per page, from 1 to 500; default 100."
                    },
                    {
                        "name": "cursor",
                        "in": "query",
                        "schema": {
                            "type": "string"
                        },
                        "description": "Opaque cursor, expires after one hour. Keep all query parameters unchanged. Changes to entitlements can invalidate it."
                    },
                    {
                        "name": "If-None-Match",
                        "in": "header",
                        "schema": {
                            "type": "string"
                        },
                        "description": "ETag from a previous response. Authorization is rechecked before returning 304, and a 304 costs no credits."
                    },
                    {
                        "name": "symbols",
                        "in": "query",
                        "style": "form",
                        "explode": false,
                        "schema": {
                            "type": "array",
                            "minItems": 1,
                            "maxItems": 100,
                            "uniqueItems": true,
                            "items": {
                                "type": "string",
                                "pattern": "^(?:(?:[A-Za-z0-9]{4}|[Cc][Rr][Yy][Pp][Tt][Oo]|[Ff][Oo][Rr][Ee][Xx]|[Ii][Nn][Dd][Ee][Xx]):|\\^)?[A-Za-z0-9][A-Za-z0-9./_^= -]{0,63}$"
                            }
                        },
                        "description": "Comma-separated MIC:TICKER symbols (crypto pairs are CRYPTO:BTC-USD, currency pairs FOREX:EUR-USD, indices INDEX:GSPC, bonds BOND and the ISIN, such as BOND:US00037BAF94) or bare tickers, which resolve to the exchange listing that ticker; neither part is case-sensitive, and two spellings of one listing count as a repeated value. A bare ticker that names no listing as written is also read in the common vendor spellings: with an exchange suffix (RY.TO, SHEL.L, VOD.LSE, BHP.AX), ^GSPC for INDEX:GSPC, and EURUSD=X or EURUSD for FOREX:EUR-USD. At most 100, further limited by the effective plan and key scope. A symbol names the listing recorded under it at symbol_at; at a date before any ticker is recorded for a listing, the earliest ticker recorded for it selects it as well (see symbol_at). Supply symbols or instrument_ids, except with date, where omitting both selects every entitled listing.",
                        "example": [
                            "XNAS:AAPL"
                        ]
                    },
                    {
                        "name": "instrument_ids",
                        "in": "query",
                        "style": "form",
                        "explode": false,
                        "schema": {
                            "type": "array",
                            "minItems": 1,
                            "maxItems": 100,
                            "uniqueItems": true,
                            "items": {
                                "type": "string",
                                "minLength": 1,
                                "maxLength": 128,
                                "pattern": "^[A-Za-z0-9][A-Za-z0-9_.:-]{0,127}$"
                            }
                        },
                        "description": "Comma-separated stable instrument IDs (the instrument_id of each row, and of the research endpoints) instead of symbols; each selects its listing at any date, including history from before its earliest recorded ticker and listings that no longer trade. Rows carry the symbol the listing had at symbol_at, or where it had none then, its symbol at as_of, else the last one it carried by as_of, else its first. At most 100. Cannot be combined with symbols."
                    },
                    {
                        "name": "symbol_at",
                        "in": "query",
                        "schema": {
                            "type": "string",
                            "format": "date"
                        },
                        "description": "Resolve symbols as they were assigned at the end of this UTC date (YYYY-MM-DD); defaults to as_of. Only listings the security master holds resolve: it was built in September 2026 and records delistings from then on, so most issuers delisted earlier, such as TWTR or SIVB, resolve at no date. With date it defaults to that date when earlier, so listings carry the symbols they traded under that day. A ticker names the listing that carries it at symbol_at, and every row of a from/to range carries that symbol, rows from before the listing took the ticker included: a ticker reused after its earlier holder delisted returns the new holder's older rows, so set symbol_at inside the range to name the listing that traded under the ticker then. Tickers are recorded only where there is evidence for them (for many listings from 2003, though prices start earlier), and none is asserted earlier. As a lookup convenience, a date before a listing's earliest recorded ticker still finds the listing by that ticker when no record contradicts it (no listing is recorded under the ticker by that date, and the listing has no earlier ticker): its rows carry the symbol as a label and meta.unrecorded_symbols lists it. A date before the listing's first row returns 200 with no-data, as a to before it does. A ticker another listing held, or one the listing was renamed from or to, returns 404 naming the date and the listing; instrument_ids select a listing at any date."
                    },
                    {
                        "name": "as_of",
                        "in": "query",
                        "schema": {
                            "type": "string",
                            "format": "date"
                        },
                        "description": "Knowledge cutoff as a UTC date (YYYY-MM-DD): the response reflects what was known by the end of that day. Defaults to now; cannot be in the future. A date from before the dataset's knowledge history returns 422 point-in-time-unavailable naming the earliest one, which GET /v1/datasets lists as earliest_as_of."
                    },
                    {
                        "name": "adjustment",
                        "in": "query",
                        "description": "raw (default) serves prices and volume as traded. split restates bars before each later split to the current share basis: prices are multiplied by old over new shares, as the exact fraction, and rounded half up to 6 decimal places, and volume is multiplied by new over old shares and rounded half up to whole shares. total_return also multiplies prices by the dividend factors of later cash dividends, to the same 6 places. Adjusted bars carry adjustment and factor_set_version. Listings whose corporate actions are not collected (crypto and currency pairs, OTC) return 422 adjustment-unsupported for anything but raw, as do indices, whose levels already reflect their members' corporate actions, and bonds. Each mode needs its own validated factor set, else 503 adjustments-unavailable: split never waits on a dividend, while total_return is unavailable for a dividend it cannot value (one detaching on the day of a split, or not below that close) and, for rows before a dividend that just detached, until that close is in.",
                        "schema": {
                            "type": "string",
                            "enum": [
                                "raw",
                                "split",
                                "total_return"
                            ],
                            "default": "raw"
                        }
                    },
                    {
                        "name": "date",
                        "in": "query",
                        "schema": {
                            "type": "string",
                            "format": "date"
                        },
                        "description": "One exchange-local trading date (YYYY-MM-DD) instead of from and to: returns one bar per listing that traded that day, in symbol order. Without symbols or instrument_ids it covers every listing in the entitled markets. Raw prices only; cannot be combined with from, to or adjustment other than raw."
                    },
                    {
                        "name": "exchanges",
                        "in": "query",
                        "style": "form",
                        "explode": false,
                        "schema": {
                            "type": "array",
                            "minItems": 1,
                            "maxItems": 100,
                            "uniqueItems": true,
                            "items": {
                                "type": "string",
                                "pattern": "^(?:[A-Z0-9]{4}|CRYPTO|FOREX|INDEX)$"
                            }
                        },
                        "description": "Comma-separated ISO MIC codes, at most 100, that limit a whole-market date query; requires date without symbols or instrument_ids. Defaults to all entitled exchanges. A malformed or repeated code returns 422 invalid-exchanges, a MIC the API does not serve 404 exchange-not-found, and one outside the key's markets 403 market-not-entitled."
                    },
                    {
                        "name": "from",
                        "in": "query",
                        "schema": {
                            "type": "string",
                            "format": "date"
                        },
                        "description": "First exchange-local trading date to include (YYYY-MM-DD).",
                        "example": "2026-09-01"
                    },
                    {
                        "name": "to",
                        "in": "query",
                        "schema": {
                            "type": "string",
                            "format": "date"
                        },
                        "description": "Last exchange-local trading date to include (YYYY-MM-DD); on or after from, so from equal to to selects one session.",
                        "example": "2026-09-25"
                    },
                    {
                        "name": "order",
                        "in": "query",
                        "schema": {
                            "type": "string",
                            "enum": [
                                "asc",
                                "desc"
                            ],
                            "default": "desc"
                        },
                        "description": "Direction on date, or on the symbol in a date query, desc (default, newest first) or asc; a date query defaults to asc; ties keep their internal order in the same direction. The cursor is bound to it."
                    },
                    {
                        "name": "format",
                        "in": "query",
                        "description": "Response format. csv returns the data rows with a header row, for spreadsheet functions such as IMPORTDATA; nested fields become dotted columns and lists one JSON array cell, the next page cursor is returned in X-Next-Cursor and meta.errors in X-Meta-Errors. A result without rows is the header row alone, listing the documented fields of a row. Default json, or csv when format is omitted and the Accept header ranks text/csv above JSON; a format the Accept header does not admit returns 406 not-acceptable.",
                        "schema": {
                            "type": "string",
                            "enum": [
                                "json",
                                "csv"
                            ]
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Authorized data. Monetary and price values are decimal strings with currency_code.",
                        "headers": {
                            "X-RateLimit-Limit": {
                                "$ref": "#/components/headers/X-RateLimit-Limit"
                            },
                            "X-RateLimit-Remaining": {
                                "$ref": "#/components/headers/X-RateLimit-Remaining"
                            },
                            "X-RateLimit-Reset": {
                                "$ref": "#/components/headers/X-RateLimit-Reset"
                            },
                            "ETag": {
                                "$ref": "#/components/headers/ETag"
                            },
                            "Cache-Control": {
                                "schema": {
                                    "type": "string",
                                    "const": "must-revalidate, no-cache, private"
                                },
                                "description": "Responses of this endpoint carry an ETag: a client may keep one, and revalidates it with If-None-Match before reuse."
                            },
                            "X-Request-ID": {
                                "$ref": "#/components/headers/X-Request-ID"
                            },
                            "X-Next-Cursor": {
                                "$ref": "#/components/headers/X-Next-Cursor"
                            },
                            "X-Meta-Errors": {
                                "$ref": "#/components/headers/X-Meta-Errors"
                            },
                            "X-Credits-Limit": {
                                "$ref": "#/components/headers/X-Credits-Limit"
                            },
                            "X-Credits-Remaining": {
                                "$ref": "#/components/headers/X-Credits-Remaining"
                            },
                            "X-Credits-Cost": {
                                "$ref": "#/components/headers/X-Credits-Cost"
                            },
                            "X-Concurrency-Limit": {
                                "$ref": "#/components/headers/X-Concurrency-Limit"
                            },
                            "X-Concurrency-Remaining": {
                                "$ref": "#/components/headers/X-Concurrency-Remaining"
                            }
                        },
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "object",
                                    "required": [
                                        "data",
                                        "meta"
                                    ],
                                    "properties": {
                                        "data": {
                                            "type": "array",
                                            "items": {
                                                "$ref": "#/components/schemas/DailyBar"
                                            }
                                        },
                                        "meta": {
                                            "type": "object",
                                            "required": [
                                                "timezone",
                                                "next_cursor",
                                                "as_of"
                                            ],
                                            "properties": {
                                                "timezone": {
                                                    "const": "UTC"
                                                },
                                                "as_of": {
                                                    "type": "string",
                                                    "format": "date-time"
                                                },
                                                "next_cursor": {
                                                    "type": [
                                                        "string",
                                                        "null"
                                                    ]
                                                },
                                                "errors": {
                                                    "type": "array",
                                                    "items": {
                                                        "type": "object",
                                                        "properties": {
                                                            "symbol": {
                                                                "type": [
                                                                    "string",
                                                                    "null"
                                                                ],
                                                                "description": "Requested symbol, or the symbol a requested instrument ID resolved to; null when the instrument ID has no unique symbol."
                                                            },
                                                            "instrument_id": {
                                                                "type": [
                                                                    "string",
                                                                    "null"
                                                                ],
                                                                "description": "Instrument ID of the listing: the requested one, or the one a requested symbol resolved to; null when a symbol resolved to no listing."
                                                            },
                                                            "code": {
                                                                "type": "string",
                                                                "description": "symbol-not-resolved or identifier-not-found when the member names no listing; no-data when it resolved but has no rows for this request, such as a listing without a quote or a date it did not trade."
                                                            },
                                                            "status": {
                                                                "type": "integer"
                                                            },
                                                            "detail": {
                                                                "type": "string"
                                                            }
                                                        },
                                                        "required": [
                                                            "symbol",
                                                            "instrument_id",
                                                            "code",
                                                            "status",
                                                            "detail"
                                                        ]
                                                    },
                                                    "description": "Requested members of a batch that return no rows: every requested symbol or instrument ID appears in data or here. A member that names no listing is reported on the first page, and one that resolved but has no rows on the page that reaches it, so a paginated request reports each one once. Valid members are still returned; entitlement failures reject the request, and a request in which no member resolves is a 404. CSV responses carry these entries in the X-Meta-Errors header."
                                                },
                                                "unrecorded_symbols": {
                                                    "type": "array",
                                                    "items": {
                                                        "type": "string"
                                                    },
                                                    "description": "Present when rows in data carry a symbol that is only a label: no ticker is recorded for that listing at symbol_at (ticker records begin in 2003 at the earliest, later for many listings, while prices start earlier), so the listing was found by the earliest ticker recorded for it, or by its instrument ID, and its rows carry that symbol. OHLC does not assert that the listing traded under the symbol then; /v1/instruments/{instrument_id}/symbols lists the recorded tickers. Not sent with format=csv."
                                                }
                                            }
                                        }
                                    }
                                }
                            },
                            "text/csv": {
                                "schema": {
                                    "type": "string"
                                }
                            }
                        }
                    },
                    "304": {
                        "$ref": "#/components/responses/NotModified"
                    },
                    "400": {
                        "$ref": "#/components/responses/BadRequest"
                    },
                    "401": {
                        "$ref": "#/components/responses/Unauthorized"
                    },
                    "403": {
                        "$ref": "#/components/responses/Forbidden"
                    },
                    "404": {
                        "$ref": "#/components/responses/NotFound"
                    },
                    "405": {
                        "$ref": "#/components/responses/MethodNotAllowed"
                    },
                    "406": {
                        "$ref": "#/components/responses/NotAcceptable"
                    },
                    "409": {
                        "$ref": "#/components/responses/Conflict"
                    },
                    "413": {
                        "$ref": "#/components/responses/ContentTooLarge"
                    },
                    "414": {
                        "$ref": "#/components/responses/URITooLong"
                    },
                    "415": {
                        "$ref": "#/components/responses/UnsupportedMediaType"
                    },
                    "422": {
                        "$ref": "#/components/responses/UnprocessableContent"
                    },
                    "429": {
                        "$ref": "#/components/responses/TooManyRequests"
                    },
                    "431": {
                        "$ref": "#/components/responses/RequestHeaderFieldsTooLarge"
                    },
                    "500": {
                        "$ref": "#/components/responses/InternalServerError"
                    },
                    "503": {
                        "description": "RFC 9457 problem.",
                        "headers": {
                            "X-RateLimit-Limit": {
                                "$ref": "#/components/headers/X-RateLimit-Limit"
                            },
                            "X-RateLimit-Remaining": {
                                "$ref": "#/components/headers/X-RateLimit-Remaining"
                            },
                            "X-RateLimit-Reset": {
                                "$ref": "#/components/headers/X-RateLimit-Reset"
                            },
                            "Retry-After": {
                                "$ref": "#/components/headers/Retry-After"
                            },
                            "X-Request-ID": {
                                "$ref": "#/components/headers/X-Request-ID"
                            },
                            "Cache-Control": {
                                "$ref": "#/components/headers/Cache-Control"
                            },
                            "X-Credits-Limit": {
                                "$ref": "#/components/headers/X-Credits-Limit"
                            },
                            "X-Credits-Remaining": {
                                "$ref": "#/components/headers/X-Credits-Remaining"
                            },
                            "X-Credits-Cost": {
                                "$ref": "#/components/headers/X-Credits-Cost"
                            },
                            "X-Concurrency-Limit": {
                                "$ref": "#/components/headers/X-Concurrency-Limit"
                            },
                            "X-Concurrency-Remaining": {
                                "$ref": "#/components/headers/X-Concurrency-Remaining"
                            }
                        },
                        "content": {
                            "application/problem+json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Problem"
                                }
                            }
                        }
                    }
                },
                "summary": "Daily bars",
                "tags": [
                    "Market prices"
                ],
                "description": "End-of-day OHLCV bars, one per exchange-local trading date. Raw bars are as traded: prices are never restated for a later split, and share volume is whole shares. A US listing's latest session bar is published within minutes of the close from the consolidated tape and can be revised when the primary end-of-day source delivers the session later that evening or the next day: the bar then takes that source's prices, and keeps the consolidated tape's volume and trade count wherever the two agree on open, high, low and close; a bar that closes at least 90% away from the previous close is held until a split record or the next session confirms it. A listing on the Toronto, TSX Venture, Cboe Canada, London, Euronext Paris and Amsterdam or ASX exchanges has its session's bar published from the exchange's daily file about two hours after the close (asked for again hourly until the file carries the session), and the file is read again at 04:00 UTC the next day. A mutual fund has one bar a day, its net asset value; mutual funds need mutual-funds.read (Commercial and Scale): for other keys a request naming one returns 403 mutual-funds-not-entitled, and whole-market date queries leave them out. Most funds' history starts on 1 January 10 years before the current year; a short list of funds carries its full history. The leading crypto pairs' UTC day is published at about 00:10 UTC the next day from their last quotes of it, and every pair's from the provider's daily file at about 02:00 UTC, read again over the following week as the provider replaces the first bars it posts; a crypto bar's open is the previous day's close. A currency pair's UTC day is published at about 02:00 UTC the next day, Sunday's from the market's open that evening in New York; Saturday has no bar, and the bars carry no volume. History reaches back to 1971 for the majors. An index (the INDEX venue, such as INDEX:GSPC for the S&P 500) has a bar for each trading date of its home market, as its publisher calculates the level, with no volume; its instrument_id is the one /v1/indices gives it. Its bar is published at about 00:30 UTC after its trading date, whatever its market, since the venue's days are UTC days, and the leading indices are quoted during their sessions (/v1/quotes). History reaches back to 1927 for the S&P 500. A US corporate bond (the BOND venue, BOND: and its ISIN, such as BOND:US00037BAF94) has a bar for each US business day it traded, its clean price per 100 of face value, evaluated or last-trade, as open, high, low and close alike, with no volume: a bond that did not trade has no bar that day. A day's bars are published from about 08:00 UTC the next morning and again as the source adds prices during that morning; yields and terms are in /v1/bonds and /v1/bonds/yields. Default order: requested symbol, then date descending (newest first). With date instead of from and to, returns one bar per listing for that exchange-local trading date in symbol order: for every listing in the key's entitled markets (optionally limited by exchanges) when symbols and instrument_ids are omitted, like a daily market summary, or for the requested listings. A listing carries the symbol recorded for it on that date, or where none is recorded yet, the earliest symbol recorded for it (listed in meta.unrecorded_symbols). In a date query, order applies to the symbol, ascending by default, and prices are raw. Select listings with symbols or instrument_ids, not both; order=desc returns each listing's rows newest first (the default) and order=asc oldest first. Requires eod.read and an entitled market. An empty data array is a successful result. When none of the requested symbols resolves, the response is 404 symbol-not-resolved, whatever the size of the list; when at least one does, the others are reported in meta.errors.",
                "x-time-field": "date",
                "x-credit-cost": "5 credits per symbol; 500 credits without symbols (whole market).",
                "x-availability": "available",
                "x-example-query": {
                    "symbols": [
                        "XNAS:AAPL"
                    ],
                    "from": "2026-09-01",
                    "to": "2026-09-25"
                }
            }
        },
        "/v1/intraday": {
            "get": {
                "operationId": "intraday",
                "x-dataset-id": 3,
                "x-required-capability": "intraday.read",
                "parameters": [
                    {
                        "name": "limit",
                        "in": "query",
                        "schema": {
                            "type": "integer",
                            "minimum": 1,
                            "maximum": 500,
                            "default": 100
                        },
                        "description": "Maximum records per page, from 1 to 500; default 100."
                    },
                    {
                        "name": "cursor",
                        "in": "query",
                        "schema": {
                            "type": "string"
                        },
                        "description": "Opaque cursor, expires after one hour. Keep all query parameters unchanged. Changes to entitlements can invalidate it."
                    },
                    {
                        "name": "If-None-Match",
                        "in": "header",
                        "schema": {
                            "type": "string"
                        },
                        "description": "ETag from a previous response. Authorization is rechecked before returning 304, and a 304 costs no credits."
                    },
                    {
                        "name": "symbols",
                        "in": "query",
                        "style": "form",
                        "explode": false,
                        "schema": {
                            "type": "array",
                            "minItems": 1,
                            "maxItems": 100,
                            "uniqueItems": true,
                            "items": {
                                "type": "string",
                                "pattern": "^(?:(?:[A-Za-z0-9]{4}|[Cc][Rr][Yy][Pp][Tt][Oo]|[Ff][Oo][Rr][Ee][Xx]|[Ii][Nn][Dd][Ee][Xx]):|\\^)?[A-Za-z0-9][A-Za-z0-9./_^= -]{0,63}$"
                            }
                        },
                        "description": "Comma-separated MIC:TICKER symbols (crypto pairs are CRYPTO:BTC-USD, currency pairs FOREX:EUR-USD, indices INDEX:GSPC, bonds BOND and the ISIN, such as BOND:US00037BAF94) or bare tickers, which resolve to the exchange listing that ticker; neither part is case-sensitive, and two spellings of one listing count as a repeated value. A bare ticker that names no listing as written is also read in the common vendor spellings: with an exchange suffix (RY.TO, SHEL.L, VOD.LSE, BHP.AX), ^GSPC for INDEX:GSPC, and EURUSD=X or EURUSD for FOREX:EUR-USD. At most 100, further limited by the effective plan and key scope. A symbol names the listing recorded under it at symbol_at; at a date before any ticker is recorded for a listing, the earliest ticker recorded for it selects it as well (see symbol_at). Supply symbols or instrument_ids.",
                        "example": [
                            "XNAS:AAPL"
                        ]
                    },
                    {
                        "name": "instrument_ids",
                        "in": "query",
                        "style": "form",
                        "explode": false,
                        "schema": {
                            "type": "array",
                            "minItems": 1,
                            "maxItems": 100,
                            "uniqueItems": true,
                            "items": {
                                "type": "string",
                                "minLength": 1,
                                "maxLength": 128,
                                "pattern": "^[A-Za-z0-9][A-Za-z0-9_.:-]{0,127}$"
                            }
                        },
                        "description": "Comma-separated stable instrument IDs (the instrument_id of each row, and of the research endpoints) instead of symbols; each selects its listing at any date, including history from before its earliest recorded ticker and listings that no longer trade. Rows carry the symbol the listing had at symbol_at, or where it had none then, its symbol at as_of, else the last one it carried by as_of, else its first. At most 100. Cannot be combined with symbols."
                    },
                    {
                        "name": "symbol_at",
                        "in": "query",
                        "schema": {
                            "type": "string",
                            "format": "date"
                        },
                        "description": "Resolve symbols as they were assigned at the end of this UTC date (YYYY-MM-DD); defaults to as_of. Only listings the security master holds resolve: it was built in September 2026 and records delistings from then on, so most issuers delisted earlier, such as TWTR or SIVB, resolve at no date. A ticker names the listing that carries it at symbol_at, and every row of a from/to range carries that symbol, rows from before the listing took the ticker included: a ticker reused after its earlier holder delisted returns the new holder's older rows, so set symbol_at inside the range to name the listing that traded under the ticker then. Tickers are recorded only where there is evidence for them (for many listings from 2003, though prices start earlier), and none is asserted earlier. As a lookup convenience, a date before a listing's earliest recorded ticker still finds the listing by that ticker when no record contradicts it (no listing is recorded under the ticker by that date, and the listing has no earlier ticker): its rows carry the symbol as a label and meta.unrecorded_symbols lists it. A date before the listing's first row returns 200 with no-data, as a to before it does. A ticker another listing held, or one the listing was renamed from or to, returns 404 naming the date and the listing; instrument_ids select a listing at any date."
                    },
                    {
                        "name": "as_of",
                        "in": "query",
                        "schema": {
                            "type": "string",
                            "format": "date"
                        },
                        "description": "Knowledge cutoff as a UTC date (YYYY-MM-DD): the response reflects what was known by the end of that day. Defaults to now; cannot be in the future. A date from before the dataset's knowledge history returns 422 point-in-time-unavailable naming the earliest one, which GET /v1/datasets lists as earliest_as_of."
                    },
                    {
                        "name": "adjustment",
                        "in": "query",
                        "description": "raw (default) serves prices and volume as traded. split restates bars before each later split to the current share basis: prices are multiplied by old over new shares, as the exact fraction, and rounded half up to 6 decimal places, and volume is multiplied by new over old shares and rounded half up to whole shares. total_return also multiplies prices by the dividend factors of later cash dividends, to the same 6 places. Adjusted bars carry adjustment and factor_set_version. Listings whose corporate actions are not collected (crypto and currency pairs, OTC) return 422 adjustment-unsupported for anything but raw, as do indices, whose levels already reflect their members' corporate actions, and bonds. Each mode needs its own validated factor set, else 503 adjustments-unavailable: split never waits on a dividend, while total_return is unavailable for a dividend it cannot value (one detaching on the day of a split, or not below that close) and, for rows before a dividend that just detached, until that close is in.",
                        "schema": {
                            "type": "string",
                            "enum": [
                                "raw",
                                "split",
                                "total_return"
                            ],
                            "default": "raw"
                        }
                    },
                    {
                        "name": "from",
                        "in": "query",
                        "schema": {
                            "type": "string",
                            "format": "date"
                        },
                        "description": "First exchange-local trading date (YYYY-MM-DD) whose bars to include, from that exchange's midnight."
                    },
                    {
                        "name": "to",
                        "in": "query",
                        "schema": {
                            "type": "string",
                            "format": "date"
                        },
                        "description": "Last exchange-local trading date (YYYY-MM-DD) whose bars to include, through that exchange's midnight; on or after from, so from equal to to selects one day."
                    },
                    {
                        "name": "order",
                        "in": "query",
                        "schema": {
                            "type": "string",
                            "enum": [
                                "asc",
                                "desc"
                            ],
                            "default": "desc"
                        },
                        "description": "Direction on datetime, desc (default, newest first) or asc; ties keep their internal order in the same direction. The cursor is bound to it."
                    },
                    {
                        "name": "interval",
                        "in": "query",
                        "required": true,
                        "description": "Required, with session; a request without either returns 422 interval-required. Bar length. Exchange listings are collected as five-minute bars, so they serve 5m and 1h (rolled up from 5m); 1m is served only by listings collected at one minute, which today are crypto and currency pairs, and returns 422 unsupported-interval for the others.",
                        "schema": {
                            "type": "string",
                            "enum": [
                                "5m",
                                "1m",
                                "1h"
                            ]
                        },
                        "example": "5m"
                    },
                    {
                        "name": "session",
                        "in": "query",
                        "required": true,
                        "description": "Required, with interval; a request without either returns 422 interval-required. regular selects the regular trading session, the only one collected for exchange listings: there are no pre-market or after-hours bars. all is every session of a continuous market: a crypto or currency pair trades in one session a UTC day, so it selects the same bars as regular there, and returns 422 unsupported-session for exchange listings.",
                        "schema": {
                            "type": "string",
                            "enum": [
                                "regular",
                                "all"
                            ]
                        },
                        "example": "regular"
                    },
                    {
                        "name": "format",
                        "in": "query",
                        "description": "Response format. csv returns the data rows with a header row, for spreadsheet functions such as IMPORTDATA; nested fields become dotted columns and lists one JSON array cell, the next page cursor is returned in X-Next-Cursor and meta.errors in X-Meta-Errors. A result without rows is the header row alone, listing the documented fields of a row. Default json, or csv when format is omitted and the Accept header ranks text/csv above JSON; a format the Accept header does not admit returns 406 not-acceptable.",
                        "schema": {
                            "type": "string",
                            "enum": [
                                "json",
                                "csv"
                            ]
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Authorized data. Monetary and price values are decimal strings with currency_code.",
                        "headers": {
                            "X-RateLimit-Limit": {
                                "$ref": "#/components/headers/X-RateLimit-Limit"
                            },
                            "X-RateLimit-Remaining": {
                                "$ref": "#/components/headers/X-RateLimit-Remaining"
                            },
                            "X-RateLimit-Reset": {
                                "$ref": "#/components/headers/X-RateLimit-Reset"
                            },
                            "ETag": {
                                "$ref": "#/components/headers/ETag"
                            },
                            "Cache-Control": {
                                "schema": {
                                    "type": "string",
                                    "const": "must-revalidate, no-cache, private"
                                },
                                "description": "Responses of this endpoint carry an ETag: a client may keep one, and revalidates it with If-None-Match before reuse."
                            },
                            "X-Request-ID": {
                                "$ref": "#/components/headers/X-Request-ID"
                            },
                            "X-Next-Cursor": {
                                "$ref": "#/components/headers/X-Next-Cursor"
                            },
                            "X-Meta-Errors": {
                                "$ref": "#/components/headers/X-Meta-Errors"
                            },
                            "X-Credits-Limit": {
                                "$ref": "#/components/headers/X-Credits-Limit"
                            },
                            "X-Credits-Remaining": {
                                "$ref": "#/components/headers/X-Credits-Remaining"
                            },
                            "X-Credits-Cost": {
                                "$ref": "#/components/headers/X-Credits-Cost"
                            },
                            "X-Concurrency-Limit": {
                                "$ref": "#/components/headers/X-Concurrency-Limit"
                            },
                            "X-Concurrency-Remaining": {
                                "$ref": "#/components/headers/X-Concurrency-Remaining"
                            }
                        },
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "object",
                                    "required": [
                                        "data",
                                        "meta"
                                    ],
                                    "properties": {
                                        "data": {
                                            "type": "array",
                                            "items": {
                                                "$ref": "#/components/schemas/Bar"
                                            }
                                        },
                                        "meta": {
                                            "type": "object",
                                            "required": [
                                                "timezone",
                                                "next_cursor",
                                                "as_of"
                                            ],
                                            "properties": {
                                                "timezone": {
                                                    "const": "UTC"
                                                },
                                                "as_of": {
                                                    "type": "string",
                                                    "format": "date-time"
                                                },
                                                "next_cursor": {
                                                    "type": [
                                                        "string",
                                                        "null"
                                                    ]
                                                },
                                                "errors": {
                                                    "type": "array",
                                                    "items": {
                                                        "type": "object",
                                                        "properties": {
                                                            "symbol": {
                                                                "type": [
                                                                    "string",
                                                                    "null"
                                                                ],
                                                                "description": "Requested symbol, or the symbol a requested instrument ID resolved to; null when the instrument ID has no unique symbol."
                                                            },
                                                            "instrument_id": {
                                                                "type": [
                                                                    "string",
                                                                    "null"
                                                                ],
                                                                "description": "Instrument ID of the listing: the requested one, or the one a requested symbol resolved to; null when a symbol resolved to no listing."
                                                            },
                                                            "code": {
                                                                "type": "string",
                                                                "description": "symbol-not-resolved or identifier-not-found when the member names no listing; no-data when it resolved but has no rows for this request, such as a listing without a quote or a date it did not trade."
                                                            },
                                                            "status": {
                                                                "type": "integer"
                                                            },
                                                            "detail": {
                                                                "type": "string"
                                                            }
                                                        },
                                                        "required": [
                                                            "symbol",
                                                            "instrument_id",
                                                            "code",
                                                            "status",
                                                            "detail"
                                                        ]
                                                    },
                                                    "description": "Requested members of a batch that return no rows: every requested symbol or instrument ID appears in data or here. A member that names no listing is reported on the first page, and one that resolved but has no rows on the page that reaches it, so a paginated request reports each one once. Valid members are still returned; entitlement failures reject the request, and a request in which no member resolves is a 404. CSV responses carry these entries in the X-Meta-Errors header."
                                                },
                                                "unrecorded_symbols": {
                                                    "type": "array",
                                                    "items": {
                                                        "type": "string"
                                                    },
                                                    "description": "Present when rows in data carry a symbol that is only a label: no ticker is recorded for that listing at symbol_at (ticker records begin in 2003 at the earliest, later for many listings, while prices start earlier), so the listing was found by the earliest ticker recorded for it, or by its instrument ID, and its rows carry that symbol. OHLC does not assert that the listing traded under the symbol then; /v1/instruments/{instrument_id}/symbols lists the recorded tickers. Not sent with format=csv."
                                                }
                                            }
                                        }
                                    }
                                }
                            },
                            "text/csv": {
                                "schema": {
                                    "type": "string"
                                }
                            }
                        }
                    },
                    "304": {
                        "$ref": "#/components/responses/NotModified"
                    },
                    "400": {
                        "$ref": "#/components/responses/BadRequest"
                    },
                    "401": {
                        "$ref": "#/components/responses/Unauthorized"
                    },
                    "403": {
                        "$ref": "#/components/responses/Forbidden"
                    },
                    "404": {
                        "$ref": "#/components/responses/NotFound"
                    },
                    "405": {
                        "$ref": "#/components/responses/MethodNotAllowed"
                    },
                    "406": {
                        "$ref": "#/components/responses/NotAcceptable"
                    },
                    "409": {
                        "$ref": "#/components/responses/Conflict"
                    },
                    "413": {
                        "$ref": "#/components/responses/ContentTooLarge"
                    },
                    "414": {
                        "$ref": "#/components/responses/URITooLong"
                    },
                    "415": {
                        "$ref": "#/components/responses/UnsupportedMediaType"
                    },
                    "422": {
                        "$ref": "#/components/responses/UnprocessableContent"
                    },
                    "429": {
                        "$ref": "#/components/responses/TooManyRequests"
                    },
                    "431": {
                        "$ref": "#/components/responses/RequestHeaderFieldsTooLarge"
                    },
                    "500": {
                        "$ref": "#/components/responses/InternalServerError"
                    },
                    "503": {
                        "description": "RFC 9457 problem.",
                        "headers": {
                            "X-RateLimit-Limit": {
                                "$ref": "#/components/headers/X-RateLimit-Limit"
                            },
                            "X-RateLimit-Remaining": {
                                "$ref": "#/components/headers/X-RateLimit-Remaining"
                            },
                            "X-RateLimit-Reset": {
                                "$ref": "#/components/headers/X-RateLimit-Reset"
                            },
                            "Retry-After": {
                                "$ref": "#/components/headers/Retry-After"
                            },
                            "X-Request-ID": {
                                "$ref": "#/components/headers/X-Request-ID"
                            },
                            "Cache-Control": {
                                "$ref": "#/components/headers/Cache-Control"
                            },
                            "X-Credits-Limit": {
                                "$ref": "#/components/headers/X-Credits-Limit"
                            },
                            "X-Credits-Remaining": {
                                "$ref": "#/components/headers/X-Credits-Remaining"
                            },
                            "X-Credits-Cost": {
                                "$ref": "#/components/headers/X-Credits-Cost"
                            },
                            "X-Concurrency-Limit": {
                                "$ref": "#/components/headers/X-Concurrency-Limit"
                            },
                            "X-Concurrency-Remaining": {
                                "$ref": "#/components/headers/X-Concurrency-Remaining"
                            }
                        },
                        "content": {
                            "application/problem+json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Problem"
                                }
                            }
                        }
                    }
                },
                "summary": "Intraday bars",
                "tags": [
                    "Market prices"
                ],
                "description": "Intraday OHLCV bars of the regular session, kept for 30 days: older bars are deleted and there is no archive. A US listing's bars can be published during the session from a 15-minute-delayed minute-bar stream, each about 15 minutes after it closes, and are read again overnight from the end-of-day intraday source, which fills any the stream missed and decides where the two differ; other exchanges' bars are published overnight after the close. A listing whose bars the source posts late follows a session later; GET /v1/health reports per exchange how many listings have the newest closed session (coverage.latest_session) and turns partial or stale when they fall short 8 hours after the close. Crypto bars cover the leading pairs only, and each UTC day is read at 09:15 UTC the morning after it ends (again at 15:15 for a pair it left short), so the newest crypto bar is from the end of the previous UTC day, or of the day before that until about 09:30. They come from the provider's intraday feed, not the one behind the daily bars: their prices differ from the daily bar's by a fraction of a percent (0.1-0.2% measured in October 2026), so a day's minute high or low can fall outside its daily range, and their volume is in coins. The daily bar is the reference for a crypto pair's day. Currency pairs are collected at one minute for the majors and leading crosses only, each UTC day read at 03:20 UTC the morning after it ends; they carry no volume, and their bars match the daily bar. Indices, bonds and mutual funds have no intraday bars: a request for one returns no rows and names it in meta.errors as no-data. Exchange listings are collected as five-minute bars; 1h bars are rolled up from them on request, each session cut into hours from its open (for a US listing 9:30, 10:30, ..., 15:30 New York time, the last one shorter), with the first open, last close, extreme high and low and summed volume. Crypto and currency pairs serve the interval they are collected at and longer ones rolled up the same way. An interval a listing is not collected at returns 422 unsupported-interval rather than an empty page. Intraday bars do not sum to the daily bar of /v1/eod. The intraday source reports the regular session's five-minute bars from fewer trades than the consolidated daily bar counts: with all 78 bars of a session present, a liquid US stock's five-minute volumes added up to 66-77% of its daily volume over six sessions measured in 2026, and a daily open, high or low can lie outside the intraday range. Nothing outside the regular session is collected. Use /v1/eod for the session's official open, high, low, close and volume. Default order: requested symbol, then datetime descending (newest first). Select listings with symbols or instrument_ids, not both; order=desc returns each listing's rows newest first (the default) and order=asc oldest first. Requires intraday.read and an entitled market. An empty data array is a successful result. When none of the requested symbols resolves, the response is 404 symbol-not-resolved, whatever the size of the list; when at least one does, the others are reported in meta.errors.",
                "x-time-field": "datetime",
                "x-credit-cost": "25 credits per symbol.",
                "x-availability": "available",
                "x-example-query": {
                    "symbols": [
                        "XNAS:AAPL"
                    ],
                    "interval": "5m",
                    "session": "regular"
                }
            }
        },
        "/v1/financials/facts": {
            "get": {
                "operationId": "financials_facts",
                "x-dataset-id": 4,
                "x-required-capability": "fundamentals.read",
                "parameters": [
                    {
                        "name": "limit",
                        "in": "query",
                        "schema": {
                            "type": "integer",
                            "minimum": 1,
                            "maximum": 500,
                            "default": 100
                        },
                        "description": "Maximum records per page, from 1 to 500; default 100."
                    },
                    {
                        "name": "cursor",
                        "in": "query",
                        "schema": {
                            "type": "string"
                        },
                        "description": "Opaque cursor, expires after one hour. Keep all query parameters unchanged. Changes to entitlements can invalidate it."
                    },
                    {
                        "name": "If-None-Match",
                        "in": "header",
                        "schema": {
                            "type": "string"
                        },
                        "description": "ETag from a previous response. Authorization is rechecked before returning 304, and a 304 costs no credits."
                    },
                    {
                        "name": "symbols",
                        "in": "query",
                        "style": "form",
                        "explode": false,
                        "schema": {
                            "type": "array",
                            "minItems": 1,
                            "maxItems": 100,
                            "uniqueItems": true,
                            "items": {
                                "type": "string",
                                "pattern": "^(?:(?:[A-Za-z0-9]{4}|[Cc][Rr][Yy][Pp][Tt][Oo]|[Ff][Oo][Rr][Ee][Xx]|[Ii][Nn][Dd][Ee][Xx]):|\\^)?[A-Za-z0-9][A-Za-z0-9./_^= -]{0,63}$"
                            }
                        },
                        "description": "Comma-separated MIC:TICKER symbols (crypto pairs are CRYPTO:BTC-USD, currency pairs FOREX:EUR-USD, indices INDEX:GSPC, bonds BOND and the ISIN, such as BOND:US00037BAF94) or bare tickers, which resolve to the exchange listing that ticker; neither part is case-sensitive, and two spellings of one listing count as a repeated value. A bare ticker that names no listing as written is also read in the common vendor spellings: with an exchange suffix (RY.TO, SHEL.L, VOD.LSE, BHP.AX), ^GSPC for INDEX:GSPC, and EURUSD=X or EURUSD for FOREX:EUR-USD. At most 100, further limited by the effective plan and key scope. A symbol names the listing recorded under it at symbol_at; at a date before any ticker is recorded for a listing, the earliest ticker recorded for it selects it as well (see symbol_at). Supply symbols or instrument_ids.",
                        "example": [
                            "XNAS:AAPL"
                        ]
                    },
                    {
                        "name": "instrument_ids",
                        "in": "query",
                        "style": "form",
                        "explode": false,
                        "schema": {
                            "type": "array",
                            "minItems": 1,
                            "maxItems": 100,
                            "uniqueItems": true,
                            "items": {
                                "type": "string",
                                "minLength": 1,
                                "maxLength": 128,
                                "pattern": "^[A-Za-z0-9][A-Za-z0-9_.:-]{0,127}$"
                            }
                        },
                        "description": "Comma-separated stable instrument IDs (the instrument_id of each row, and of the research endpoints) instead of symbols; each selects its listing at any date, including history from before its earliest recorded ticker and listings that no longer trade. Rows carry the symbol the listing had at symbol_at, or where it had none then, its symbol at as_of, else the last one it carried by as_of, else its first. At most 100. Cannot be combined with symbols."
                    },
                    {
                        "name": "symbol_at",
                        "in": "query",
                        "schema": {
                            "type": "string",
                            "format": "date"
                        },
                        "description": "Resolve symbols as they were assigned at the end of this UTC date (YYYY-MM-DD); defaults to as_of. Only listings the security master holds resolve: it was built in September 2026 and records delistings from then on, so most issuers delisted earlier, such as TWTR or SIVB, resolve at no date. A ticker names the listing that carries it at symbol_at, and every row of a from/to range carries that symbol, rows from before the listing took the ticker included: a ticker reused after its earlier holder delisted returns the new holder's older rows, so set symbol_at inside the range to name the listing that traded under the ticker then. Tickers are recorded only where there is evidence for them (for many listings from 2003, though prices start earlier), and none is asserted earlier. As a lookup convenience, a date before a listing's earliest recorded ticker still finds the listing by that ticker when no record contradicts it (no listing is recorded under the ticker by that date, and the listing has no earlier ticker): its rows carry the symbol as a label and meta.unrecorded_symbols lists it. A date before the listing's first row returns 200 with no-data, as a to before it does. A ticker another listing held, or one the listing was renamed from or to, returns 404 naming the date and the listing; instrument_ids select a listing at any date."
                    },
                    {
                        "name": "as_of",
                        "in": "query",
                        "schema": {
                            "type": "string",
                            "format": "date"
                        },
                        "description": "Knowledge cutoff as a UTC date (YYYY-MM-DD): the response reflects what was known by the end of that day. Defaults to now; cannot be in the future. A date from before the dataset's knowledge history returns 422 point-in-time-unavailable naming the earliest one, which GET /v1/datasets lists as earliest_as_of."
                    },
                    {
                        "name": "from",
                        "in": "query",
                        "schema": {
                            "type": "string",
                            "format": "date"
                        },
                        "description": "First fiscal_end to include (YYYY-MM-DD).",
                        "example": "2025-01-01"
                    },
                    {
                        "name": "to",
                        "in": "query",
                        "schema": {
                            "type": "string",
                            "format": "date"
                        },
                        "description": "Last fiscal_end to include (YYYY-MM-DD); on or after from, so from equal to to selects one day.",
                        "example": "2026-09-25"
                    },
                    {
                        "name": "known_from",
                        "in": "query",
                        "schema": {
                            "type": "string",
                            "format": "date"
                        },
                        "description": "First UTC date (YYYY-MM-DD, inclusive) on which a revision became known. Filters eligible revisions; not a change feed or deletion log."
                    },
                    {
                        "name": "known_to",
                        "in": "query",
                        "schema": {
                            "type": "string",
                            "format": "date"
                        },
                        "description": "Last UTC date (YYYY-MM-DD, inclusive) on which a revision became known; on or after known_from."
                    },
                    {
                        "name": "order",
                        "in": "query",
                        "schema": {
                            "type": "string",
                            "enum": [
                                "asc",
                                "desc"
                            ],
                            "default": "asc"
                        },
                        "description": "Direction on fiscal_end, asc (default) or desc; ties keep their internal order in the same direction. The cursor is bound to it."
                    },
                    {
                        "name": "concepts",
                        "in": "query",
                        "schema": {
                            "type": "array",
                            "minItems": 1,
                            "maxItems": 100,
                            "uniqueItems": true,
                            "items": {
                                "type": "string",
                                "minLength": 1,
                                "maxLength": 256
                            }
                        },
                        "style": "form",
                        "explode": false,
                        "description": "Exact source taxonomy concept names."
                    },
                    {
                        "name": "taxonomy",
                        "in": "query",
                        "schema": {
                            "type": "string",
                            "minLength": 1,
                            "maxLength": 256
                        },
                        "description": "Exact source taxonomy namespace."
                    },
                    {
                        "name": "format",
                        "in": "query",
                        "description": "Response format. csv returns the data rows with a header row, for spreadsheet functions such as IMPORTDATA; nested fields become dotted columns and lists one JSON array cell, the next page cursor is returned in X-Next-Cursor and meta.errors in X-Meta-Errors. A result without rows is the header row alone, listing the documented fields of a row. Default json, or csv when format is omitted and the Accept header ranks text/csv above JSON; a format the Accept header does not admit returns 406 not-acceptable.",
                        "schema": {
                            "type": "string",
                            "enum": [
                                "json",
                                "csv"
                            ]
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Authorized data. Monetary and price values are decimal strings with currency_code.",
                        "headers": {
                            "X-RateLimit-Limit": {
                                "$ref": "#/components/headers/X-RateLimit-Limit"
                            },
                            "X-RateLimit-Remaining": {
                                "$ref": "#/components/headers/X-RateLimit-Remaining"
                            },
                            "X-RateLimit-Reset": {
                                "$ref": "#/components/headers/X-RateLimit-Reset"
                            },
                            "ETag": {
                                "$ref": "#/components/headers/ETag"
                            },
                            "Cache-Control": {
                                "schema": {
                                    "type": "string",
                                    "const": "must-revalidate, no-cache, private"
                                },
                                "description": "Responses of this endpoint carry an ETag: a client may keep one, and revalidates it with If-None-Match before reuse."
                            },
                            "X-Request-ID": {
                                "$ref": "#/components/headers/X-Request-ID"
                            },
                            "X-Next-Cursor": {
                                "$ref": "#/components/headers/X-Next-Cursor"
                            },
                            "X-Meta-Errors": {
                                "$ref": "#/components/headers/X-Meta-Errors"
                            },
                            "X-Credits-Limit": {
                                "$ref": "#/components/headers/X-Credits-Limit"
                            },
                            "X-Credits-Remaining": {
                                "$ref": "#/components/headers/X-Credits-Remaining"
                            },
                            "X-Credits-Cost": {
                                "$ref": "#/components/headers/X-Credits-Cost"
                            },
                            "X-Concurrency-Limit": {
                                "$ref": "#/components/headers/X-Concurrency-Limit"
                            },
                            "X-Concurrency-Remaining": {
                                "$ref": "#/components/headers/X-Concurrency-Remaining"
                            }
                        },
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "object",
                                    "required": [
                                        "data",
                                        "meta"
                                    ],
                                    "properties": {
                                        "data": {
                                            "type": "array",
                                            "items": {
                                                "$ref": "#/components/schemas/FinancialFact"
                                            }
                                        },
                                        "meta": {
                                            "type": "object",
                                            "required": [
                                                "timezone",
                                                "next_cursor",
                                                "as_of"
                                            ],
                                            "properties": {
                                                "timezone": {
                                                    "const": "UTC"
                                                },
                                                "as_of": {
                                                    "type": "string",
                                                    "format": "date-time"
                                                },
                                                "next_cursor": {
                                                    "type": [
                                                        "string",
                                                        "null"
                                                    ]
                                                },
                                                "errors": {
                                                    "type": "array",
                                                    "items": {
                                                        "type": "object",
                                                        "properties": {
                                                            "symbol": {
                                                                "type": [
                                                                    "string",
                                                                    "null"
                                                                ],
                                                                "description": "Requested symbol, or the symbol a requested instrument ID resolved to; null when the instrument ID has no unique symbol."
                                                            },
                                                            "instrument_id": {
                                                                "type": [
                                                                    "string",
                                                                    "null"
                                                                ],
                                                                "description": "Instrument ID of the listing: the requested one, or the one a requested symbol resolved to; null when a symbol resolved to no listing."
                                                            },
                                                            "code": {
                                                                "type": "string",
                                                                "description": "symbol-not-resolved or identifier-not-found when the member names no listing; no-data when it resolved but has no rows for this request, such as a listing without a quote or a date it did not trade."
                                                            },
                                                            "status": {
                                                                "type": "integer"
                                                            },
                                                            "detail": {
                                                                "type": "string"
                                                            }
                                                        },
                                                        "required": [
                                                            "symbol",
                                                            "instrument_id",
                                                            "code",
                                                            "status",
                                                            "detail"
                                                        ]
                                                    },
                                                    "description": "Requested members of a batch that return no rows: every requested symbol or instrument ID appears in data or here. A member that names no listing is reported on the first page, and one that resolved but has no rows on the page that reaches it, so a paginated request reports each one once. Valid members are still returned; entitlement failures reject the request, and a request in which no member resolves is a 404. CSV responses carry these entries in the X-Meta-Errors header."
                                                },
                                                "unrecorded_symbols": {
                                                    "type": "array",
                                                    "items": {
                                                        "type": "string"
                                                    },
                                                    "description": "Present when rows in data carry a symbol that is only a label: no ticker is recorded for that listing at symbol_at (ticker records begin in 2003 at the earliest, later for many listings, while prices start earlier), so the listing was found by the earliest ticker recorded for it, or by its instrument ID, and its rows carry that symbol. OHLC does not assert that the listing traded under the symbol then; /v1/instruments/{instrument_id}/symbols lists the recorded tickers. Not sent with format=csv."
                                                }
                                            }
                                        }
                                    }
                                }
                            },
                            "text/csv": {
                                "schema": {
                                    "type": "string"
                                }
                            }
                        }
                    },
                    "304": {
                        "$ref": "#/components/responses/NotModified"
                    },
                    "400": {
                        "$ref": "#/components/responses/BadRequest"
                    },
                    "401": {
                        "$ref": "#/components/responses/Unauthorized"
                    },
                    "403": {
                        "$ref": "#/components/responses/Forbidden"
                    },
                    "404": {
                        "$ref": "#/components/responses/NotFound"
                    },
                    "405": {
                        "$ref": "#/components/responses/MethodNotAllowed"
                    },
                    "406": {
                        "$ref": "#/components/responses/NotAcceptable"
                    },
                    "409": {
                        "$ref": "#/components/responses/Conflict"
                    },
                    "413": {
                        "$ref": "#/components/responses/ContentTooLarge"
                    },
                    "414": {
                        "$ref": "#/components/responses/URITooLong"
                    },
                    "415": {
                        "$ref": "#/components/responses/UnsupportedMediaType"
                    },
                    "422": {
                        "$ref": "#/components/responses/UnprocessableContent"
                    },
                    "429": {
                        "$ref": "#/components/responses/TooManyRequests"
                    },
                    "431": {
                        "$ref": "#/components/responses/RequestHeaderFieldsTooLarge"
                    },
                    "500": {
                        "$ref": "#/components/responses/InternalServerError"
                    },
                    "503": {
                        "description": "RFC 9457 problem.",
                        "headers": {
                            "X-RateLimit-Limit": {
                                "$ref": "#/components/headers/X-RateLimit-Limit"
                            },
                            "X-RateLimit-Remaining": {
                                "$ref": "#/components/headers/X-RateLimit-Remaining"
                            },
                            "X-RateLimit-Reset": {
                                "$ref": "#/components/headers/X-RateLimit-Reset"
                            },
                            "Retry-After": {
                                "$ref": "#/components/headers/Retry-After"
                            },
                            "X-Request-ID": {
                                "$ref": "#/components/headers/X-Request-ID"
                            },
                            "Cache-Control": {
                                "$ref": "#/components/headers/Cache-Control"
                            },
                            "X-Credits-Limit": {
                                "$ref": "#/components/headers/X-Credits-Limit"
                            },
                            "X-Credits-Remaining": {
                                "$ref": "#/components/headers/X-Credits-Remaining"
                            },
                            "X-Credits-Cost": {
                                "$ref": "#/components/headers/X-Credits-Cost"
                            },
                            "X-Concurrency-Limit": {
                                "$ref": "#/components/headers/X-Concurrency-Limit"
                            },
                            "X-Concurrency-Remaining": {
                                "$ref": "#/components/headers/X-Concurrency-Remaining"
                            }
                        },
                        "content": {
                            "application/problem+json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Problem"
                                }
                            }
                        }
                    }
                },
                "summary": "Financial facts",
                "tags": [
                    "Financials"
                ],
                "description": "Point-in-time facts as reported in the XBRL of SEC filings, read from SEC EDGAR: one record per taxonomy concept, fiscal period and unit, with the source filing. Only consolidated (non-dimensional) facts are carried; segment figures are in /v1/financials/segments. Issuers that do not file with the SEC have no facts. For normalized statements use /v1/financials/statements. Default order: requested symbol, then fiscal_end ascending, then concept. Select listings with symbols or instrument_ids, not both; order=desc returns each listing's rows newest first. Requires fundamentals.read and an entitled market. An empty data array is a successful result. When none of the requested symbols resolves, the response is 404 symbol-not-resolved, whatever the size of the list; when at least one does, the others are reported in meta.errors.",
                "x-time-field": "fiscal_end",
                "x-credit-cost": "50 credits per symbol.",
                "x-availability": "available",
                "x-example-query": {
                    "symbols": [
                        "XNAS:AAPL"
                    ],
                    "from": "2025-01-01",
                    "to": "2026-09-25"
                }
            }
        },
        "/v1/corporate-actions": {
            "get": {
                "operationId": "corporate_actions",
                "x-dataset-id": 5,
                "x-required-capability": "corporate-actions.read",
                "parameters": [
                    {
                        "name": "limit",
                        "in": "query",
                        "schema": {
                            "type": "integer",
                            "minimum": 1,
                            "maximum": 500,
                            "default": 100
                        },
                        "description": "Maximum records per page, from 1 to 500; default 100."
                    },
                    {
                        "name": "cursor",
                        "in": "query",
                        "schema": {
                            "type": "string"
                        },
                        "description": "Opaque cursor, expires after one hour. Keep all query parameters unchanged. Changes to entitlements can invalidate it."
                    },
                    {
                        "name": "If-None-Match",
                        "in": "header",
                        "schema": {
                            "type": "string"
                        },
                        "description": "ETag from a previous response. Authorization is rechecked before returning 304, and a 304 costs no credits."
                    },
                    {
                        "name": "symbols",
                        "in": "query",
                        "style": "form",
                        "explode": false,
                        "schema": {
                            "type": "array",
                            "minItems": 1,
                            "maxItems": 100,
                            "uniqueItems": true,
                            "items": {
                                "type": "string",
                                "pattern": "^(?:(?:[A-Za-z0-9]{4}|[Cc][Rr][Yy][Pp][Tt][Oo]|[Ff][Oo][Rr][Ee][Xx]|[Ii][Nn][Dd][Ee][Xx]):|\\^)?[A-Za-z0-9][A-Za-z0-9./_^= -]{0,63}$"
                            }
                        },
                        "description": "Comma-separated MIC:TICKER symbols (crypto pairs are CRYPTO:BTC-USD, currency pairs FOREX:EUR-USD, indices INDEX:GSPC, bonds BOND and the ISIN, such as BOND:US00037BAF94) or bare tickers, which resolve to the exchange listing that ticker; neither part is case-sensitive, and two spellings of one listing count as a repeated value. A bare ticker that names no listing as written is also read in the common vendor spellings: with an exchange suffix (RY.TO, SHEL.L, VOD.LSE, BHP.AX), ^GSPC for INDEX:GSPC, and EURUSD=X or EURUSD for FOREX:EUR-USD. At most 100, further limited by the effective plan and key scope. A symbol names the listing recorded under it at symbol_at; at a date before any ticker is recorded for a listing, the earliest ticker recorded for it selects it as well (see symbol_at). Supply symbols or instrument_ids, or omit both for a market-wide request, which from and to must bound.",
                        "example": [
                            "XNAS:AAPL"
                        ]
                    },
                    {
                        "name": "instrument_ids",
                        "in": "query",
                        "style": "form",
                        "explode": false,
                        "schema": {
                            "type": "array",
                            "minItems": 1,
                            "maxItems": 100,
                            "uniqueItems": true,
                            "items": {
                                "type": "string",
                                "minLength": 1,
                                "maxLength": 128,
                                "pattern": "^[A-Za-z0-9][A-Za-z0-9_.:-]{0,127}$"
                            }
                        },
                        "description": "Comma-separated stable instrument IDs (the instrument_id of each row, and of the research endpoints) instead of symbols; each selects its listing at any date, including history from before its earliest recorded ticker and listings that no longer trade. Rows carry the symbol the listing had at symbol_at, or where it had none then, its symbol at as_of, else the last one it carried by as_of, else its first. At most 100. Cannot be combined with symbols."
                    },
                    {
                        "name": "exchanges",
                        "in": "query",
                        "style": "form",
                        "explode": false,
                        "schema": {
                            "type": "array",
                            "minItems": 1,
                            "maxItems": 100,
                            "uniqueItems": true,
                            "items": {
                                "type": "string",
                                "pattern": "^(?:[A-Z0-9]{4}|CRYPTO|FOREX|INDEX)$"
                            }
                        },
                        "description": "Market-wide requests only (no symbols or instrument_ids): comma-separated ISO MIC codes, at most 100. Defaults to every exchange of the entitled markets. A malformed or repeated code returns 422 invalid-exchanges, a MIC the API does not serve 404 exchange-not-found, and one outside the key's markets 403 market-not-entitled."
                    },
                    {
                        "name": "symbol_at",
                        "in": "query",
                        "schema": {
                            "type": "string",
                            "format": "date"
                        },
                        "description": "Resolve symbols as they were assigned at the end of this UTC date (YYYY-MM-DD); defaults to as_of. Only listings the security master holds resolve: it was built in September 2026 and records delistings from then on, so most issuers delisted earlier, such as TWTR or SIVB, resolve at no date. A ticker names the listing that carries it at symbol_at, and every row of a from/to range carries that symbol, rows from before the listing took the ticker included: a ticker reused after its earlier holder delisted returns the new holder's older rows, so set symbol_at inside the range to name the listing that traded under the ticker then. Tickers are recorded only where there is evidence for them (for many listings from 2003, though prices start earlier), and none is asserted earlier. As a lookup convenience, a date before a listing's earliest recorded ticker still finds the listing by that ticker when no record contradicts it (no listing is recorded under the ticker by that date, and the listing has no earlier ticker): its rows carry the symbol as a label and meta.unrecorded_symbols lists it. A date before the listing's first row returns 200 with no-data, as a to before it does. A ticker another listing held, or one the listing was renamed from or to, returns 404 naming the date and the listing; instrument_ids select a listing at any date."
                    },
                    {
                        "name": "as_of",
                        "in": "query",
                        "schema": {
                            "type": "string",
                            "format": "date"
                        },
                        "description": "Knowledge cutoff as a UTC date (YYYY-MM-DD): the response reflects what was known by the end of that day. Defaults to now; cannot be in the future. A date from before the dataset's knowledge history returns 422 point-in-time-unavailable naming the earliest one, which GET /v1/datasets lists as earliest_as_of."
                    },
                    {
                        "name": "from",
                        "in": "query",
                        "schema": {
                            "type": "string",
                            "format": "date"
                        },
                        "description": "First ex_date to include (YYYY-MM-DD). Required without symbols or instrument_ids.",
                        "example": "2020-01-01"
                    },
                    {
                        "name": "to",
                        "in": "query",
                        "schema": {
                            "type": "string",
                            "format": "date"
                        },
                        "description": "Last ex_date to include (YYYY-MM-DD); on or after from, so from equal to to selects one day. Required without symbols or instrument_ids, at most 365 days after from.",
                        "example": "2026-09-25"
                    },
                    {
                        "name": "known_from",
                        "in": "query",
                        "schema": {
                            "type": "string",
                            "format": "date"
                        },
                        "description": "First UTC date (YYYY-MM-DD, inclusive) on which a revision became known. Filters eligible revisions; not a change feed or deletion log."
                    },
                    {
                        "name": "known_to",
                        "in": "query",
                        "schema": {
                            "type": "string",
                            "format": "date"
                        },
                        "description": "Last UTC date (YYYY-MM-DD, inclusive) on which a revision became known; on or after known_from."
                    },
                    {
                        "name": "order",
                        "in": "query",
                        "schema": {
                            "type": "string",
                            "enum": [
                                "asc",
                                "desc"
                            ],
                            "default": "asc"
                        },
                        "description": "Direction on ex_date, asc (default) or desc; ties keep their internal order in the same direction. The cursor is bound to it."
                    },
                    {
                        "name": "types",
                        "in": "query",
                        "schema": {
                            "type": "array",
                            "minItems": 1,
                            "maxItems": 100,
                            "uniqueItems": true,
                            "items": {
                                "type": "string",
                                "minLength": 1,
                                "maxLength": 256
                            }
                        },
                        "style": "form",
                        "explode": false,
                        "description": "Corporate-action type codes: cash_dividend or split. Any other code is accepted and matches no action."
                    },
                    {
                        "name": "effective_from",
                        "in": "query",
                        "schema": {
                            "type": "string",
                            "format": "date"
                        },
                        "description": "First UTC date (YYYY-MM-DD, inclusive) of effective_at. No current source states effective_at, so this filter matches no action today; bound ex_date with from and to instead."
                    },
                    {
                        "name": "effective_to",
                        "in": "query",
                        "schema": {
                            "type": "string",
                            "format": "date"
                        },
                        "description": "Last UTC date (YYYY-MM-DD, inclusive) of effective_at; on or after effective_from. No current source states effective_at, so this filter matches no action today; bound ex_date with from and to instead."
                    },
                    {
                        "name": "format",
                        "in": "query",
                        "description": "Response format. csv returns the data rows with a header row, for spreadsheet functions such as IMPORTDATA; nested fields become dotted columns and lists one JSON array cell, the next page cursor is returned in X-Next-Cursor and meta.errors in X-Meta-Errors. A result without rows is the header row alone, listing the documented fields of a row. Default json, or csv when format is omitted and the Accept header ranks text/csv above JSON; a format the Accept header does not admit returns 406 not-acceptable.",
                        "schema": {
                            "type": "string",
                            "enum": [
                                "json",
                                "csv"
                            ]
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Authorized data. Monetary and price values are decimal strings with currency_code.",
                        "headers": {
                            "X-RateLimit-Limit": {
                                "$ref": "#/components/headers/X-RateLimit-Limit"
                            },
                            "X-RateLimit-Remaining": {
                                "$ref": "#/components/headers/X-RateLimit-Remaining"
                            },
                            "X-RateLimit-Reset": {
                                "$ref": "#/components/headers/X-RateLimit-Reset"
                            },
                            "ETag": {
                                "$ref": "#/components/headers/ETag"
                            },
                            "Cache-Control": {
                                "schema": {
                                    "type": "string",
                                    "const": "must-revalidate, no-cache, private"
                                },
                                "description": "Responses of this endpoint carry an ETag: a client may keep one, and revalidates it with If-None-Match before reuse."
                            },
                            "X-Request-ID": {
                                "$ref": "#/components/headers/X-Request-ID"
                            },
                            "X-Next-Cursor": {
                                "$ref": "#/components/headers/X-Next-Cursor"
                            },
                            "X-Meta-Errors": {
                                "$ref": "#/components/headers/X-Meta-Errors"
                            },
                            "X-Credits-Limit": {
                                "$ref": "#/components/headers/X-Credits-Limit"
                            },
                            "X-Credits-Remaining": {
                                "$ref": "#/components/headers/X-Credits-Remaining"
                            },
                            "X-Credits-Cost": {
                                "$ref": "#/components/headers/X-Credits-Cost"
                            },
                            "X-Concurrency-Limit": {
                                "$ref": "#/components/headers/X-Concurrency-Limit"
                            },
                            "X-Concurrency-Remaining": {
                                "$ref": "#/components/headers/X-Concurrency-Remaining"
                            }
                        },
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "object",
                                    "required": [
                                        "data",
                                        "meta"
                                    ],
                                    "properties": {
                                        "data": {
                                            "type": "array",
                                            "items": {
                                                "$ref": "#/components/schemas/CorporateAction"
                                            }
                                        },
                                        "meta": {
                                            "type": "object",
                                            "required": [
                                                "timezone",
                                                "next_cursor",
                                                "as_of"
                                            ],
                                            "properties": {
                                                "timezone": {
                                                    "const": "UTC"
                                                },
                                                "as_of": {
                                                    "type": "string",
                                                    "format": "date-time"
                                                },
                                                "next_cursor": {
                                                    "type": [
                                                        "string",
                                                        "null"
                                                    ]
                                                },
                                                "errors": {
                                                    "type": "array",
                                                    "items": {
                                                        "type": "object",
                                                        "properties": {
                                                            "symbol": {
                                                                "type": [
                                                                    "string",
                                                                    "null"
                                                                ],
                                                                "description": "Requested symbol, or the symbol a requested instrument ID resolved to; null when the instrument ID has no unique symbol."
                                                            },
                                                            "instrument_id": {
                                                                "type": [
                                                                    "string",
                                                                    "null"
                                                                ],
                                                                "description": "Instrument ID of the listing: the requested one, or the one a requested symbol resolved to; null when a symbol resolved to no listing."
                                                            },
                                                            "code": {
                                                                "type": "string",
                                                                "description": "symbol-not-resolved or identifier-not-found when the member names no listing; no-data when it resolved but has no rows for this request, such as a listing without a quote or a date it did not trade."
                                                            },
                                                            "status": {
                                                                "type": "integer"
                                                            },
                                                            "detail": {
                                                                "type": "string"
                                                            }
                                                        },
                                                        "required": [
                                                            "symbol",
                                                            "instrument_id",
                                                            "code",
                                                            "status",
                                                            "detail"
                                                        ]
                                                    },
                                                    "description": "Requested members of a batch that return no rows: every requested symbol or instrument ID appears in data or here. A member that names no listing is reported on the first page, and one that resolved but has no rows on the page that reaches it, so a paginated request reports each one once. Valid members are still returned; entitlement failures reject the request, and a request in which no member resolves is a 404. CSV responses carry these entries in the X-Meta-Errors header."
                                                },
                                                "unrecorded_symbols": {
                                                    "type": "array",
                                                    "items": {
                                                        "type": "string"
                                                    },
                                                    "description": "Present when rows in data carry a symbol that is only a label: no ticker is recorded for that listing at symbol_at (ticker records begin in 2003 at the earliest, later for many listings, while prices start earlier), so the listing was found by the earliest ticker recorded for it, or by its instrument ID, and its rows carry that symbol. OHLC does not assert that the listing traded under the symbol then; /v1/instruments/{instrument_id}/symbols lists the recorded tickers. Not sent with format=csv."
                                                }
                                            }
                                        }
                                    }
                                }
                            },
                            "text/csv": {
                                "schema": {
                                    "type": "string"
                                }
                            }
                        }
                    },
                    "304": {
                        "$ref": "#/components/responses/NotModified"
                    },
                    "400": {
                        "$ref": "#/components/responses/BadRequest"
                    },
                    "401": {
                        "$ref": "#/components/responses/Unauthorized"
                    },
                    "403": {
                        "$ref": "#/components/responses/Forbidden"
                    },
                    "404": {
                        "$ref": "#/components/responses/NotFound"
                    },
                    "405": {
                        "$ref": "#/components/responses/MethodNotAllowed"
                    },
                    "406": {
                        "$ref": "#/components/responses/NotAcceptable"
                    },
                    "409": {
                        "$ref": "#/components/responses/Conflict"
                    },
                    "413": {
                        "$ref": "#/components/responses/ContentTooLarge"
                    },
                    "414": {
                        "$ref": "#/components/responses/URITooLong"
                    },
                    "415": {
                        "$ref": "#/components/responses/UnsupportedMediaType"
                    },
                    "422": {
                        "$ref": "#/components/responses/UnprocessableContent"
                    },
                    "429": {
                        "$ref": "#/components/responses/TooManyRequests"
                    },
                    "431": {
                        "$ref": "#/components/responses/RequestHeaderFieldsTooLarge"
                    },
                    "500": {
                        "$ref": "#/components/responses/InternalServerError"
                    },
                    "503": {
                        "description": "RFC 9457 problem.",
                        "headers": {
                            "X-RateLimit-Limit": {
                                "$ref": "#/components/headers/X-RateLimit-Limit"
                            },
                            "X-RateLimit-Remaining": {
                                "$ref": "#/components/headers/X-RateLimit-Remaining"
                            },
                            "X-RateLimit-Reset": {
                                "$ref": "#/components/headers/X-RateLimit-Reset"
                            },
                            "Retry-After": {
                                "$ref": "#/components/headers/Retry-After"
                            },
                            "X-Request-ID": {
                                "$ref": "#/components/headers/X-Request-ID"
                            },
                            "Cache-Control": {
                                "$ref": "#/components/headers/Cache-Control"
                            },
                            "X-Credits-Limit": {
                                "$ref": "#/components/headers/X-Credits-Limit"
                            },
                            "X-Credits-Remaining": {
                                "$ref": "#/components/headers/X-Credits-Remaining"
                            },
                            "X-Credits-Cost": {
                                "$ref": "#/components/headers/X-Credits-Cost"
                            },
                            "X-Concurrency-Limit": {
                                "$ref": "#/components/headers/X-Concurrency-Limit"
                            },
                            "X-Concurrency-Remaining": {
                                "$ref": "#/components/headers/X-Concurrency-Remaining"
                            }
                        },
                        "content": {
                            "application/problem+json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Problem"
                                }
                            }
                        }
                    }
                },
                "summary": "Corporate actions",
                "tags": [
                    "Company data"
                ],
                "description": "Point-in-time consensus actions and their cash/security legs. Default order: requested symbol, then ex_date ascending (undated actions last); without symbols or instrument_ids, ex_date ascending across listings. Select listings with symbols or instrument_ids, not both; order=desc returns each listing's rows newest first. Without symbols or instrument_ids, returns every entitled listing's rows (optionally only those on exchanges) for a from-to window of at most 366 days counting both, newest first with order=desc; plans limited to named symbols see only those. Each such row names its listing by its symbol at symbol_at, or its last symbol before then. Requires corporate-actions.read and an entitled market. An empty data array is a successful result. When none of the requested symbols resolves, the response is 404 symbol-not-resolved, whatever the size of the list; when at least one does, the others are reported in meta.errors.",
                "x-time-field": "ex_date",
                "x-credit-cost": "5 credits per symbol; 500 credits without symbols (whole market).",
                "x-availability": "available",
                "x-example-query": {
                    "symbols": [
                        "XNAS:AAPL"
                    ],
                    "from": "2020-01-01",
                    "to": "2026-09-25"
                }
            }
        },
        "/v1/dividends": {
            "get": {
                "operationId": "dividends",
                "x-dataset-id": 5,
                "x-required-capability": "corporate-actions.read",
                "parameters": [
                    {
                        "name": "limit",
                        "in": "query",
                        "schema": {
                            "type": "integer",
                            "minimum": 1,
                            "maximum": 500,
                            "default": 100
                        },
                        "description": "Maximum records per page, from 1 to 500; default 100."
                    },
                    {
                        "name": "cursor",
                        "in": "query",
                        "schema": {
                            "type": "string"
                        },
                        "description": "Opaque cursor, expires after one hour. Keep all query parameters unchanged. Changes to entitlements can invalidate it."
                    },
                    {
                        "name": "If-None-Match",
                        "in": "header",
                        "schema": {
                            "type": "string"
                        },
                        "description": "ETag from a previous response. Authorization is rechecked before returning 304, and a 304 costs no credits."
                    },
                    {
                        "name": "symbols",
                        "in": "query",
                        "style": "form",
                        "explode": false,
                        "schema": {
                            "type": "array",
                            "minItems": 1,
                            "maxItems": 100,
                            "uniqueItems": true,
                            "items": {
                                "type": "string",
                                "pattern": "^(?:(?:[A-Za-z0-9]{4}|[Cc][Rr][Yy][Pp][Tt][Oo]|[Ff][Oo][Rr][Ee][Xx]|[Ii][Nn][Dd][Ee][Xx]):|\\^)?[A-Za-z0-9][A-Za-z0-9./_^= -]{0,63}$"
                            }
                        },
                        "description": "Comma-separated MIC:TICKER symbols (crypto pairs are CRYPTO:BTC-USD, currency pairs FOREX:EUR-USD, indices INDEX:GSPC, bonds BOND and the ISIN, such as BOND:US00037BAF94) or bare tickers, which resolve to the exchange listing that ticker; neither part is case-sensitive, and two spellings of one listing count as a repeated value. A bare ticker that names no listing as written is also read in the common vendor spellings: with an exchange suffix (RY.TO, SHEL.L, VOD.LSE, BHP.AX), ^GSPC for INDEX:GSPC, and EURUSD=X or EURUSD for FOREX:EUR-USD. At most 100, further limited by the effective plan and key scope. A symbol names the listing recorded under it at symbol_at; at a date before any ticker is recorded for a listing, the earliest ticker recorded for it selects it as well (see symbol_at). Supply symbols or instrument_ids, or omit both for a market-wide request, which from and to must bound.",
                        "example": [
                            "XNAS:AAPL"
                        ]
                    },
                    {
                        "name": "instrument_ids",
                        "in": "query",
                        "style": "form",
                        "explode": false,
                        "schema": {
                            "type": "array",
                            "minItems": 1,
                            "maxItems": 100,
                            "uniqueItems": true,
                            "items": {
                                "type": "string",
                                "minLength": 1,
                                "maxLength": 128,
                                "pattern": "^[A-Za-z0-9][A-Za-z0-9_.:-]{0,127}$"
                            }
                        },
                        "description": "Comma-separated stable instrument IDs (the instrument_id of each row, and of the research endpoints) instead of symbols; each selects its listing at any date, including history from before its earliest recorded ticker and listings that no longer trade. Rows carry the symbol the listing had at symbol_at, or where it had none then, its symbol at as_of, else the last one it carried by as_of, else its first. At most 100. Cannot be combined with symbols."
                    },
                    {
                        "name": "exchanges",
                        "in": "query",
                        "style": "form",
                        "explode": false,
                        "schema": {
                            "type": "array",
                            "minItems": 1,
                            "maxItems": 100,
                            "uniqueItems": true,
                            "items": {
                                "type": "string",
                                "pattern": "^(?:[A-Z0-9]{4}|CRYPTO|FOREX|INDEX)$"
                            }
                        },
                        "description": "Market-wide requests only (no symbols or instrument_ids): comma-separated ISO MIC codes, at most 100. Defaults to every exchange of the entitled markets. A malformed or repeated code returns 422 invalid-exchanges, a MIC the API does not serve 404 exchange-not-found, and one outside the key's markets 403 market-not-entitled."
                    },
                    {
                        "name": "symbol_at",
                        "in": "query",
                        "schema": {
                            "type": "string",
                            "format": "date"
                        },
                        "description": "Resolve symbols as they were assigned at the end of this UTC date (YYYY-MM-DD); defaults to as_of. Only listings the security master holds resolve: it was built in September 2026 and records delistings from then on, so most issuers delisted earlier, such as TWTR or SIVB, resolve at no date. A ticker names the listing that carries it at symbol_at, and every row of a from/to range carries that symbol, rows from before the listing took the ticker included: a ticker reused after its earlier holder delisted returns the new holder's older rows, so set symbol_at inside the range to name the listing that traded under the ticker then. Tickers are recorded only where there is evidence for them (for many listings from 2003, though prices start earlier), and none is asserted earlier. As a lookup convenience, a date before a listing's earliest recorded ticker still finds the listing by that ticker when no record contradicts it (no listing is recorded under the ticker by that date, and the listing has no earlier ticker): its rows carry the symbol as a label and meta.unrecorded_symbols lists it. A date before the listing's first row returns 200 with no-data, as a to before it does. A ticker another listing held, or one the listing was renamed from or to, returns 404 naming the date and the listing; instrument_ids select a listing at any date."
                    },
                    {
                        "name": "as_of",
                        "in": "query",
                        "schema": {
                            "type": "string",
                            "format": "date"
                        },
                        "description": "Knowledge cutoff as a UTC date (YYYY-MM-DD): the response reflects what was known by the end of that day. Defaults to now; cannot be in the future. A date from before the dataset's knowledge history returns 422 point-in-time-unavailable naming the earliest one, which GET /v1/datasets lists as earliest_as_of."
                    },
                    {
                        "name": "from",
                        "in": "query",
                        "schema": {
                            "type": "string",
                            "format": "date"
                        },
                        "description": "First ex_date to include (YYYY-MM-DD). Required without symbols or instrument_ids.",
                        "example": "2025-01-01"
                    },
                    {
                        "name": "to",
                        "in": "query",
                        "schema": {
                            "type": "string",
                            "format": "date"
                        },
                        "description": "Last ex_date to include (YYYY-MM-DD); on or after from, so from equal to to selects one day. Required without symbols or instrument_ids, at most 365 days after from.",
                        "example": "2026-09-25"
                    },
                    {
                        "name": "known_from",
                        "in": "query",
                        "schema": {
                            "type": "string",
                            "format": "date"
                        },
                        "description": "First UTC date (YYYY-MM-DD, inclusive) on which a revision became known. Filters eligible revisions; not a change feed or deletion log."
                    },
                    {
                        "name": "known_to",
                        "in": "query",
                        "schema": {
                            "type": "string",
                            "format": "date"
                        },
                        "description": "Last UTC date (YYYY-MM-DD, inclusive) on which a revision became known; on or after known_from."
                    },
                    {
                        "name": "order",
                        "in": "query",
                        "schema": {
                            "type": "string",
                            "enum": [
                                "asc",
                                "desc"
                            ],
                            "default": "asc"
                        },
                        "description": "Direction on ex_date, asc (default) or desc; ties keep their internal order in the same direction. The cursor is bound to it."
                    },
                    {
                        "name": "types",
                        "in": "query",
                        "schema": {
                            "type": "array",
                            "minItems": 1,
                            "maxItems": 100,
                            "uniqueItems": true,
                            "items": {
                                "type": "string",
                                "minLength": 1,
                                "maxLength": 256
                            }
                        },
                        "style": "form",
                        "explode": false,
                        "description": "Corporate-action type codes: cash_dividend or split. Any other code is accepted and matches no action."
                    },
                    {
                        "name": "effective_from",
                        "in": "query",
                        "schema": {
                            "type": "string",
                            "format": "date"
                        },
                        "description": "First UTC date (YYYY-MM-DD, inclusive) of effective_at. No current source states effective_at, so this filter matches no action today; bound ex_date with from and to instead."
                    },
                    {
                        "name": "effective_to",
                        "in": "query",
                        "schema": {
                            "type": "string",
                            "format": "date"
                        },
                        "description": "Last UTC date (YYYY-MM-DD, inclusive) of effective_at; on or after effective_from. No current source states effective_at, so this filter matches no action today; bound ex_date with from and to instead."
                    },
                    {
                        "name": "format",
                        "in": "query",
                        "description": "Response format. csv returns the data rows with a header row, for spreadsheet functions such as IMPORTDATA; nested fields become dotted columns and lists one JSON array cell, the next page cursor is returned in X-Next-Cursor and meta.errors in X-Meta-Errors. A result without rows is the header row alone, listing the documented fields of a row. Default json, or csv when format is omitted and the Accept header ranks text/csv above JSON; a format the Accept header does not admit returns 406 not-acceptable.",
                        "schema": {
                            "type": "string",
                            "enum": [
                                "json",
                                "csv"
                            ]
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Authorized data. Monetary and price values are decimal strings with currency_code.",
                        "headers": {
                            "X-RateLimit-Limit": {
                                "$ref": "#/components/headers/X-RateLimit-Limit"
                            },
                            "X-RateLimit-Remaining": {
                                "$ref": "#/components/headers/X-RateLimit-Remaining"
                            },
                            "X-RateLimit-Reset": {
                                "$ref": "#/components/headers/X-RateLimit-Reset"
                            },
                            "ETag": {
                                "$ref": "#/components/headers/ETag"
                            },
                            "Cache-Control": {
                                "schema": {
                                    "type": "string",
                                    "const": "must-revalidate, no-cache, private"
                                },
                                "description": "Responses of this endpoint carry an ETag: a client may keep one, and revalidates it with If-None-Match before reuse."
                            },
                            "X-Request-ID": {
                                "$ref": "#/components/headers/X-Request-ID"
                            },
                            "X-Next-Cursor": {
                                "$ref": "#/components/headers/X-Next-Cursor"
                            },
                            "X-Meta-Errors": {
                                "$ref": "#/components/headers/X-Meta-Errors"
                            },
                            "X-Credits-Limit": {
                                "$ref": "#/components/headers/X-Credits-Limit"
                            },
                            "X-Credits-Remaining": {
                                "$ref": "#/components/headers/X-Credits-Remaining"
                            },
                            "X-Credits-Cost": {
                                "$ref": "#/components/headers/X-Credits-Cost"
                            },
                            "X-Concurrency-Limit": {
                                "$ref": "#/components/headers/X-Concurrency-Limit"
                            },
                            "X-Concurrency-Remaining": {
                                "$ref": "#/components/headers/X-Concurrency-Remaining"
                            }
                        },
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "object",
                                    "required": [
                                        "data",
                                        "meta"
                                    ],
                                    "properties": {
                                        "data": {
                                            "type": "array",
                                            "items": {
                                                "$ref": "#/components/schemas/Dividend"
                                            }
                                        },
                                        "meta": {
                                            "type": "object",
                                            "required": [
                                                "timezone",
                                                "next_cursor",
                                                "as_of"
                                            ],
                                            "properties": {
                                                "timezone": {
                                                    "const": "UTC"
                                                },
                                                "as_of": {
                                                    "type": "string",
                                                    "format": "date-time"
                                                },
                                                "next_cursor": {
                                                    "type": [
                                                        "string",
                                                        "null"
                                                    ]
                                                },
                                                "errors": {
                                                    "type": "array",
                                                    "items": {
                                                        "type": "object",
                                                        "properties": {
                                                            "symbol": {
                                                                "type": [
                                                                    "string",
                                                                    "null"
                                                                ],
                                                                "description": "Requested symbol, or the symbol a requested instrument ID resolved to; null when the instrument ID has no unique symbol."
                                                            },
                                                            "instrument_id": {
                                                                "type": [
                                                                    "string",
                                                                    "null"
                                                                ],
                                                                "description": "Instrument ID of the listing: the requested one, or the one a requested symbol resolved to; null when a symbol resolved to no listing."
                                                            },
                                                            "code": {
                                                                "type": "string",
                                                                "description": "symbol-not-resolved or identifier-not-found when the member names no listing; no-data when it resolved but has no rows for this request, such as a listing without a quote or a date it did not trade."
                                                            },
                                                            "status": {
                                                                "type": "integer"
                                                            },
                                                            "detail": {
                                                                "type": "string"
                                                            }
                                                        },
                                                        "required": [
                                                            "symbol",
                                                            "instrument_id",
                                                            "code",
                                                            "status",
                                                            "detail"
                                                        ]
                                                    },
                                                    "description": "Requested members of a batch that return no rows: every requested symbol or instrument ID appears in data or here. A member that names no listing is reported on the first page, and one that resolved but has no rows on the page that reaches it, so a paginated request reports each one once. Valid members are still returned; entitlement failures reject the request, and a request in which no member resolves is a 404. CSV responses carry these entries in the X-Meta-Errors header."
                                                },
                                                "unrecorded_symbols": {
                                                    "type": "array",
                                                    "items": {
                                                        "type": "string"
                                                    },
                                                    "description": "Present when rows in data carry a symbol that is only a label: no ticker is recorded for that listing at symbol_at (ticker records begin in 2003 at the earliest, later for many listings, while prices start earlier), so the listing was found by the earliest ticker recorded for it, or by its instrument ID, and its rows carry that symbol. OHLC does not assert that the listing traded under the symbol then; /v1/instruments/{instrument_id}/symbols lists the recorded tickers. Not sent with format=csv."
                                                }
                                            }
                                        }
                                    }
                                }
                            },
                            "text/csv": {
                                "schema": {
                                    "type": "string"
                                }
                            }
                        }
                    },
                    "304": {
                        "$ref": "#/components/responses/NotModified"
                    },
                    "400": {
                        "$ref": "#/components/responses/BadRequest"
                    },
                    "401": {
                        "$ref": "#/components/responses/Unauthorized"
                    },
                    "403": {
                        "$ref": "#/components/responses/Forbidden"
                    },
                    "404": {
                        "$ref": "#/components/responses/NotFound"
                    },
                    "405": {
                        "$ref": "#/components/responses/MethodNotAllowed"
                    },
                    "406": {
                        "$ref": "#/components/responses/NotAcceptable"
                    },
                    "409": {
                        "$ref": "#/components/responses/Conflict"
                    },
                    "413": {
                        "$ref": "#/components/responses/ContentTooLarge"
                    },
                    "414": {
                        "$ref": "#/components/responses/URITooLong"
                    },
                    "415": {
                        "$ref": "#/components/responses/UnsupportedMediaType"
                    },
                    "422": {
                        "$ref": "#/components/responses/UnprocessableContent"
                    },
                    "429": {
                        "$ref": "#/components/responses/TooManyRequests"
                    },
                    "431": {
                        "$ref": "#/components/responses/RequestHeaderFieldsTooLarge"
                    },
                    "500": {
                        "$ref": "#/components/responses/InternalServerError"
                    },
                    "503": {
                        "description": "RFC 9457 problem.",
                        "headers": {
                            "X-RateLimit-Limit": {
                                "$ref": "#/components/headers/X-RateLimit-Limit"
                            },
                            "X-RateLimit-Remaining": {
                                "$ref": "#/components/headers/X-RateLimit-Remaining"
                            },
                            "X-RateLimit-Reset": {
                                "$ref": "#/components/headers/X-RateLimit-Reset"
                            },
                            "Retry-After": {
                                "$ref": "#/components/headers/Retry-After"
                            },
                            "X-Request-ID": {
                                "$ref": "#/components/headers/X-Request-ID"
                            },
                            "Cache-Control": {
                                "$ref": "#/components/headers/Cache-Control"
                            },
                            "X-Credits-Limit": {
                                "$ref": "#/components/headers/X-Credits-Limit"
                            },
                            "X-Credits-Remaining": {
                                "$ref": "#/components/headers/X-Credits-Remaining"
                            },
                            "X-Credits-Cost": {
                                "$ref": "#/components/headers/X-Credits-Cost"
                            },
                            "X-Concurrency-Limit": {
                                "$ref": "#/components/headers/X-Concurrency-Limit"
                            },
                            "X-Concurrency-Remaining": {
                                "$ref": "#/components/headers/X-Concurrency-Remaining"
                            }
                        },
                        "content": {
                            "application/problem+json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Problem"
                                }
                            }
                        }
                    }
                },
                "summary": "Dividends",
                "tags": [
                    "Company data"
                ],
                "description": "Cash dividends with ex, record and pay dates, cash/security legs, frequency, split-adjusted amounts and cumulative dividend adjustment factors, and for ASX listings the exchange's announcement: fiscal period, franking (imputation credits), withholding, specials and the dividend reinvestment plan. Filters from and to apply to ex_date. Default order: requested symbol, then ex_date ascending (undated actions last); without symbols or instrument_ids, ex_date ascending across listings. Select listings with symbols or instrument_ids, not both; order=desc returns each listing's rows newest first. Without symbols or instrument_ids, returns every entitled listing's rows (optionally only those on exchanges) for a from-to window of at most 366 days counting both, newest first with order=desc; plans limited to named symbols see only those. Each such row names its listing by its symbol at symbol_at, or its last symbol before then. Requires corporate-actions.read and an entitled market. An empty data array is a successful result. When none of the requested symbols resolves, the response is 404 symbol-not-resolved, whatever the size of the list; when at least one does, the others are reported in meta.errors.",
                "x-time-field": "ex_date",
                "x-credit-cost": "5 credits per symbol; 500 credits without symbols (whole market).",
                "x-availability": "available",
                "x-example-query": {
                    "symbols": [
                        "XNAS:AAPL"
                    ],
                    "from": "2025-01-01",
                    "to": "2026-09-25"
                }
            }
        },
        "/v1/splits": {
            "get": {
                "operationId": "splits",
                "x-dataset-id": 5,
                "x-required-capability": "corporate-actions.read",
                "parameters": [
                    {
                        "name": "limit",
                        "in": "query",
                        "schema": {
                            "type": "integer",
                            "minimum": 1,
                            "maximum": 500,
                            "default": 100
                        },
                        "description": "Maximum records per page, from 1 to 500; default 100."
                    },
                    {
                        "name": "cursor",
                        "in": "query",
                        "schema": {
                            "type": "string"
                        },
                        "description": "Opaque cursor, expires after one hour. Keep all query parameters unchanged. Changes to entitlements can invalidate it."
                    },
                    {
                        "name": "If-None-Match",
                        "in": "header",
                        "schema": {
                            "type": "string"
                        },
                        "description": "ETag from a previous response. Authorization is rechecked before returning 304, and a 304 costs no credits."
                    },
                    {
                        "name": "symbols",
                        "in": "query",
                        "style": "form",
                        "explode": false,
                        "schema": {
                            "type": "array",
                            "minItems": 1,
                            "maxItems": 100,
                            "uniqueItems": true,
                            "items": {
                                "type": "string",
                                "pattern": "^(?:(?:[A-Za-z0-9]{4}|[Cc][Rr][Yy][Pp][Tt][Oo]|[Ff][Oo][Rr][Ee][Xx]|[Ii][Nn][Dd][Ee][Xx]):|\\^)?[A-Za-z0-9][A-Za-z0-9./_^= -]{0,63}$"
                            }
                        },
                        "description": "Comma-separated MIC:TICKER symbols (crypto pairs are CRYPTO:BTC-USD, currency pairs FOREX:EUR-USD, indices INDEX:GSPC, bonds BOND and the ISIN, such as BOND:US00037BAF94) or bare tickers, which resolve to the exchange listing that ticker; neither part is case-sensitive, and two spellings of one listing count as a repeated value. A bare ticker that names no listing as written is also read in the common vendor spellings: with an exchange suffix (RY.TO, SHEL.L, VOD.LSE, BHP.AX), ^GSPC for INDEX:GSPC, and EURUSD=X or EURUSD for FOREX:EUR-USD. At most 100, further limited by the effective plan and key scope. A symbol names the listing recorded under it at symbol_at; at a date before any ticker is recorded for a listing, the earliest ticker recorded for it selects it as well (see symbol_at). Supply symbols or instrument_ids, or omit both for a market-wide request, which from and to must bound.",
                        "example": [
                            "XNAS:AAPL"
                        ]
                    },
                    {
                        "name": "instrument_ids",
                        "in": "query",
                        "style": "form",
                        "explode": false,
                        "schema": {
                            "type": "array",
                            "minItems": 1,
                            "maxItems": 100,
                            "uniqueItems": true,
                            "items": {
                                "type": "string",
                                "minLength": 1,
                                "maxLength": 128,
                                "pattern": "^[A-Za-z0-9][A-Za-z0-9_.:-]{0,127}$"
                            }
                        },
                        "description": "Comma-separated stable instrument IDs (the instrument_id of each row, and of the research endpoints) instead of symbols; each selects its listing at any date, including history from before its earliest recorded ticker and listings that no longer trade. Rows carry the symbol the listing had at symbol_at, or where it had none then, its symbol at as_of, else the last one it carried by as_of, else its first. At most 100. Cannot be combined with symbols."
                    },
                    {
                        "name": "exchanges",
                        "in": "query",
                        "style": "form",
                        "explode": false,
                        "schema": {
                            "type": "array",
                            "minItems": 1,
                            "maxItems": 100,
                            "uniqueItems": true,
                            "items": {
                                "type": "string",
                                "pattern": "^(?:[A-Z0-9]{4}|CRYPTO|FOREX|INDEX)$"
                            }
                        },
                        "description": "Market-wide requests only (no symbols or instrument_ids): comma-separated ISO MIC codes, at most 100. Defaults to every exchange of the entitled markets. A malformed or repeated code returns 422 invalid-exchanges, a MIC the API does not serve 404 exchange-not-found, and one outside the key's markets 403 market-not-entitled."
                    },
                    {
                        "name": "symbol_at",
                        "in": "query",
                        "schema": {
                            "type": "string",
                            "format": "date"
                        },
                        "description": "Resolve symbols as they were assigned at the end of this UTC date (YYYY-MM-DD); defaults to as_of. Only listings the security master holds resolve: it was built in September 2026 and records delistings from then on, so most issuers delisted earlier, such as TWTR or SIVB, resolve at no date. A ticker names the listing that carries it at symbol_at, and every row of a from/to range carries that symbol, rows from before the listing took the ticker included: a ticker reused after its earlier holder delisted returns the new holder's older rows, so set symbol_at inside the range to name the listing that traded under the ticker then. Tickers are recorded only where there is evidence for them (for many listings from 2003, though prices start earlier), and none is asserted earlier. As a lookup convenience, a date before a listing's earliest recorded ticker still finds the listing by that ticker when no record contradicts it (no listing is recorded under the ticker by that date, and the listing has no earlier ticker): its rows carry the symbol as a label and meta.unrecorded_symbols lists it. A date before the listing's first row returns 200 with no-data, as a to before it does. A ticker another listing held, or one the listing was renamed from or to, returns 404 naming the date and the listing; instrument_ids select a listing at any date."
                    },
                    {
                        "name": "as_of",
                        "in": "query",
                        "schema": {
                            "type": "string",
                            "format": "date"
                        },
                        "description": "Knowledge cutoff as a UTC date (YYYY-MM-DD): the response reflects what was known by the end of that day. Defaults to now; cannot be in the future. A date from before the dataset's knowledge history returns 422 point-in-time-unavailable naming the earliest one, which GET /v1/datasets lists as earliest_as_of."
                    },
                    {
                        "name": "from",
                        "in": "query",
                        "schema": {
                            "type": "string",
                            "format": "date"
                        },
                        "description": "First execution_date to include (YYYY-MM-DD). Required without symbols or instrument_ids.",
                        "example": "2020-01-01"
                    },
                    {
                        "name": "to",
                        "in": "query",
                        "schema": {
                            "type": "string",
                            "format": "date"
                        },
                        "description": "Last execution_date to include (YYYY-MM-DD); on or after from, so from equal to to selects one day. Required without symbols or instrument_ids, at most 365 days after from.",
                        "example": "2026-09-25"
                    },
                    {
                        "name": "known_from",
                        "in": "query",
                        "schema": {
                            "type": "string",
                            "format": "date"
                        },
                        "description": "First UTC date (YYYY-MM-DD, inclusive) on which a revision became known. Filters eligible revisions; not a change feed or deletion log."
                    },
                    {
                        "name": "known_to",
                        "in": "query",
                        "schema": {
                            "type": "string",
                            "format": "date"
                        },
                        "description": "Last UTC date (YYYY-MM-DD, inclusive) on which a revision became known; on or after known_from."
                    },
                    {
                        "name": "order",
                        "in": "query",
                        "schema": {
                            "type": "string",
                            "enum": [
                                "asc",
                                "desc"
                            ],
                            "default": "asc"
                        },
                        "description": "Direction on execution_date, asc (default) or desc; ties keep their internal order in the same direction. The cursor is bound to it."
                    },
                    {
                        "name": "format",
                        "in": "query",
                        "description": "Response format. csv returns the data rows with a header row, for spreadsheet functions such as IMPORTDATA; nested fields become dotted columns and lists one JSON array cell, the next page cursor is returned in X-Next-Cursor and meta.errors in X-Meta-Errors. A result without rows is the header row alone, listing the documented fields of a row. Default json, or csv when format is omitted and the Accept header ranks text/csv above JSON; a format the Accept header does not admit returns 406 not-acceptable.",
                        "schema": {
                            "type": "string",
                            "enum": [
                                "json",
                                "csv"
                            ]
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Authorized data. Monetary and price values are decimal strings with currency_code.",
                        "headers": {
                            "X-RateLimit-Limit": {
                                "$ref": "#/components/headers/X-RateLimit-Limit"
                            },
                            "X-RateLimit-Remaining": {
                                "$ref": "#/components/headers/X-RateLimit-Remaining"
                            },
                            "X-RateLimit-Reset": {
                                "$ref": "#/components/headers/X-RateLimit-Reset"
                            },
                            "ETag": {
                                "$ref": "#/components/headers/ETag"
                            },
                            "Cache-Control": {
                                "schema": {
                                    "type": "string",
                                    "const": "must-revalidate, no-cache, private"
                                },
                                "description": "Responses of this endpoint carry an ETag: a client may keep one, and revalidates it with If-None-Match before reuse."
                            },
                            "X-Request-ID": {
                                "$ref": "#/components/headers/X-Request-ID"
                            },
                            "X-Next-Cursor": {
                                "$ref": "#/components/headers/X-Next-Cursor"
                            },
                            "X-Meta-Errors": {
                                "$ref": "#/components/headers/X-Meta-Errors"
                            },
                            "X-Credits-Limit": {
                                "$ref": "#/components/headers/X-Credits-Limit"
                            },
                            "X-Credits-Remaining": {
                                "$ref": "#/components/headers/X-Credits-Remaining"
                            },
                            "X-Credits-Cost": {
                                "$ref": "#/components/headers/X-Credits-Cost"
                            },
                            "X-Concurrency-Limit": {
                                "$ref": "#/components/headers/X-Concurrency-Limit"
                            },
                            "X-Concurrency-Remaining": {
                                "$ref": "#/components/headers/X-Concurrency-Remaining"
                            }
                        },
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "object",
                                    "required": [
                                        "data",
                                        "meta"
                                    ],
                                    "properties": {
                                        "data": {
                                            "type": "array",
                                            "items": {
                                                "$ref": "#/components/schemas/Split"
                                            }
                                        },
                                        "meta": {
                                            "type": "object",
                                            "required": [
                                                "timezone",
                                                "next_cursor",
                                                "as_of"
                                            ],
                                            "properties": {
                                                "timezone": {
                                                    "const": "UTC"
                                                },
                                                "as_of": {
                                                    "type": "string",
                                                    "format": "date-time"
                                                },
                                                "next_cursor": {
                                                    "type": [
                                                        "string",
                                                        "null"
                                                    ]
                                                },
                                                "errors": {
                                                    "type": "array",
                                                    "items": {
                                                        "type": "object",
                                                        "properties": {
                                                            "symbol": {
                                                                "type": [
                                                                    "string",
                                                                    "null"
                                                                ],
                                                                "description": "Requested symbol, or the symbol a requested instrument ID resolved to; null when the instrument ID has no unique symbol."
                                                            },
                                                            "instrument_id": {
                                                                "type": [
                                                                    "string",
                                                                    "null"
                                                                ],
                                                                "description": "Instrument ID of the listing: the requested one, or the one a requested symbol resolved to; null when a symbol resolved to no listing."
                                                            },
                                                            "code": {
                                                                "type": "string",
                                                                "description": "symbol-not-resolved or identifier-not-found when the member names no listing; no-data when it resolved but has no rows for this request, such as a listing without a quote or a date it did not trade."
                                                            },
                                                            "status": {
                                                                "type": "integer"
                                                            },
                                                            "detail": {
                                                                "type": "string"
                                                            }
                                                        },
                                                        "required": [
                                                            "symbol",
                                                            "instrument_id",
                                                            "code",
                                                            "status",
                                                            "detail"
                                                        ]
                                                    },
                                                    "description": "Requested members of a batch that return no rows: every requested symbol or instrument ID appears in data or here. A member that names no listing is reported on the first page, and one that resolved but has no rows on the page that reaches it, so a paginated request reports each one once. Valid members are still returned; entitlement failures reject the request, and a request in which no member resolves is a 404. CSV responses carry these entries in the X-Meta-Errors header."
                                                },
                                                "unrecorded_symbols": {
                                                    "type": "array",
                                                    "items": {
                                                        "type": "string"
                                                    },
                                                    "description": "Present when rows in data carry a symbol that is only a label: no ticker is recorded for that listing at symbol_at (ticker records begin in 2003 at the earliest, later for many listings, while prices start earlier), so the listing was found by the earliest ticker recorded for it, or by its instrument ID, and its rows carry that symbol. OHLC does not assert that the listing traded under the symbol then; /v1/instruments/{instrument_id}/symbols lists the recorded tickers. Not sent with format=csv."
                                                }
                                            }
                                        }
                                    }
                                }
                            },
                            "text/csv": {
                                "schema": {
                                    "type": "string"
                                }
                            }
                        }
                    },
                    "304": {
                        "$ref": "#/components/responses/NotModified"
                    },
                    "400": {
                        "$ref": "#/components/responses/BadRequest"
                    },
                    "401": {
                        "$ref": "#/components/responses/Unauthorized"
                    },
                    "403": {
                        "$ref": "#/components/responses/Forbidden"
                    },
                    "404": {
                        "$ref": "#/components/responses/NotFound"
                    },
                    "405": {
                        "$ref": "#/components/responses/MethodNotAllowed"
                    },
                    "406": {
                        "$ref": "#/components/responses/NotAcceptable"
                    },
                    "409": {
                        "$ref": "#/components/responses/Conflict"
                    },
                    "413": {
                        "$ref": "#/components/responses/ContentTooLarge"
                    },
                    "414": {
                        "$ref": "#/components/responses/URITooLong"
                    },
                    "415": {
                        "$ref": "#/components/responses/UnsupportedMediaType"
                    },
                    "422": {
                        "$ref": "#/components/responses/UnprocessableContent"
                    },
                    "429": {
                        "$ref": "#/components/responses/TooManyRequests"
                    },
                    "431": {
                        "$ref": "#/components/responses/RequestHeaderFieldsTooLarge"
                    },
                    "500": {
                        "$ref": "#/components/responses/InternalServerError"
                    },
                    "503": {
                        "description": "RFC 9457 problem.",
                        "headers": {
                            "X-RateLimit-Limit": {
                                "$ref": "#/components/headers/X-RateLimit-Limit"
                            },
                            "X-RateLimit-Remaining": {
                                "$ref": "#/components/headers/X-RateLimit-Remaining"
                            },
                            "X-RateLimit-Reset": {
                                "$ref": "#/components/headers/X-RateLimit-Reset"
                            },
                            "Retry-After": {
                                "$ref": "#/components/headers/Retry-After"
                            },
                            "X-Request-ID": {
                                "$ref": "#/components/headers/X-Request-ID"
                            },
                            "Cache-Control": {
                                "$ref": "#/components/headers/Cache-Control"
                            },
                            "X-Credits-Limit": {
                                "$ref": "#/components/headers/X-Credits-Limit"
                            },
                            "X-Credits-Remaining": {
                                "$ref": "#/components/headers/X-Credits-Remaining"
                            },
                            "X-Credits-Cost": {
                                "$ref": "#/components/headers/X-Credits-Cost"
                            },
                            "X-Concurrency-Limit": {
                                "$ref": "#/components/headers/X-Concurrency-Limit"
                            },
                            "X-Concurrency-Remaining": {
                                "$ref": "#/components/headers/X-Concurrency-Remaining"
                            }
                        },
                        "content": {
                            "application/problem+json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Problem"
                                }
                            }
                        }
                    }
                },
                "summary": "Splits",
                "tags": [
                    "Company data"
                ],
                "description": "Splits and reverse splits, including stock dividends paid in the listing's own shares, which the source records as splits (forward_split), with split ratios and cumulative price adjustment factors. Splits at whose ex-date prices did not move, and spin-off or rights-offering price adjustments the source records as splits but which distribute no shares, are not listed; /v1/eod still applies the latter to prices (not volume), so adjusted bars before one differ from the product of the listed splits. Filters from and to apply to execution_date as the source recorded it, which differs from the published date only for a split recorded on a day the exchange was closed. A split usually reaches the feed before it executes; one can arrive up to a day after, and until it does the bars of its execution_date are on the new share basis without a split record. Default order: requested symbol, then execution_date ascending; without symbols or instrument_ids, execution_date ascending across listings. Select listings with symbols or instrument_ids, not both; order=desc returns each listing's rows newest first. Without symbols or instrument_ids, returns every entitled listing's rows (optionally only those on exchanges) for a from-to window of at most 366 days counting both, newest first with order=desc; plans limited to named symbols see only those. Each such row names its listing by its symbol at symbol_at, or its last symbol before then. Requires corporate-actions.read and an entitled market. An empty data array is a successful result. When none of the requested symbols resolves, the response is 404 symbol-not-resolved, whatever the size of the list; when at least one does, the others are reported in meta.errors.",
                "x-time-field": "execution_date",
                "x-credit-cost": "5 credits per symbol; 500 credits without symbols (whole market).",
                "x-availability": "available",
                "x-example-query": {
                    "symbols": [
                        "XNAS:AAPL"
                    ],
                    "from": "2020-01-01",
                    "to": "2026-09-25"
                }
            }
        },
        "/v1/filings": {
            "get": {
                "operationId": "filings",
                "x-dataset-id": 6,
                "x-required-capability": "filings.read",
                "parameters": [
                    {
                        "name": "limit",
                        "in": "query",
                        "schema": {
                            "type": "integer",
                            "minimum": 1,
                            "maximum": 500,
                            "default": 100
                        },
                        "description": "Maximum records per page, from 1 to 500; default 100."
                    },
                    {
                        "name": "cursor",
                        "in": "query",
                        "schema": {
                            "type": "string"
                        },
                        "description": "Opaque cursor, expires after one hour. Keep all query parameters unchanged. Changes to entitlements can invalidate it."
                    },
                    {
                        "name": "If-None-Match",
                        "in": "header",
                        "schema": {
                            "type": "string"
                        },
                        "description": "ETag from a previous response. Authorization is rechecked before returning 304, and a 304 costs no credits."
                    },
                    {
                        "name": "symbols",
                        "in": "query",
                        "style": "form",
                        "explode": false,
                        "schema": {
                            "type": "array",
                            "minItems": 1,
                            "maxItems": 100,
                            "uniqueItems": true,
                            "items": {
                                "type": "string",
                                "pattern": "^(?:(?:[A-Za-z0-9]{4}|[Cc][Rr][Yy][Pp][Tt][Oo]|[Ff][Oo][Rr][Ee][Xx]|[Ii][Nn][Dd][Ee][Xx]):|\\^)?[A-Za-z0-9][A-Za-z0-9./_^= -]{0,63}$"
                            }
                        },
                        "description": "Comma-separated MIC:TICKER symbols (crypto pairs are CRYPTO:BTC-USD, currency pairs FOREX:EUR-USD, indices INDEX:GSPC, bonds BOND and the ISIN, such as BOND:US00037BAF94) or bare tickers, which resolve to the exchange listing that ticker; neither part is case-sensitive, and two spellings of one listing count as a repeated value. A bare ticker that names no listing as written is also read in the common vendor spellings: with an exchange suffix (RY.TO, SHEL.L, VOD.LSE, BHP.AX), ^GSPC for INDEX:GSPC, and EURUSD=X or EURUSD for FOREX:EUR-USD. At most 100, further limited by the effective plan and key scope. A symbol names the listing recorded under it at symbol_at; at a date before any ticker is recorded for a listing, the earliest ticker recorded for it selects it as well (see symbol_at). Supply symbols or instrument_ids.",
                        "example": [
                            "XNAS:AAPL"
                        ]
                    },
                    {
                        "name": "instrument_ids",
                        "in": "query",
                        "style": "form",
                        "explode": false,
                        "schema": {
                            "type": "array",
                            "minItems": 1,
                            "maxItems": 100,
                            "uniqueItems": true,
                            "items": {
                                "type": "string",
                                "minLength": 1,
                                "maxLength": 128,
                                "pattern": "^[A-Za-z0-9][A-Za-z0-9_.:-]{0,127}$"
                            }
                        },
                        "description": "Comma-separated stable instrument IDs (the instrument_id of each row, and of the research endpoints) instead of symbols; each selects its listing at any date, including history from before its earliest recorded ticker and listings that no longer trade. Rows carry the symbol the listing had at symbol_at, or where it had none then, its symbol at as_of, else the last one it carried by as_of, else its first. At most 100. Cannot be combined with symbols."
                    },
                    {
                        "name": "symbol_at",
                        "in": "query",
                        "schema": {
                            "type": "string",
                            "format": "date"
                        },
                        "description": "Resolve symbols as they were assigned at the end of this UTC date (YYYY-MM-DD); defaults to as_of. Only listings the security master holds resolve: it was built in September 2026 and records delistings from then on, so most issuers delisted earlier, such as TWTR or SIVB, resolve at no date. A ticker names the listing that carries it at symbol_at, and every row of a from/to range carries that symbol, rows from before the listing took the ticker included: a ticker reused after its earlier holder delisted returns the new holder's older rows, so set symbol_at inside the range to name the listing that traded under the ticker then. Tickers are recorded only where there is evidence for them (for many listings from 2003, though prices start earlier), and none is asserted earlier. As a lookup convenience, a date before a listing's earliest recorded ticker still finds the listing by that ticker when no record contradicts it (no listing is recorded under the ticker by that date, and the listing has no earlier ticker): its rows carry the symbol as a label and meta.unrecorded_symbols lists it. A date before the listing's first row returns 200 with no-data, as a to before it does. A ticker another listing held, or one the listing was renamed from or to, returns 404 naming the date and the listing; instrument_ids select a listing at any date."
                    },
                    {
                        "name": "as_of",
                        "in": "query",
                        "schema": {
                            "type": "string",
                            "format": "date"
                        },
                        "description": "Knowledge cutoff as a UTC date (YYYY-MM-DD): the response reflects what was known by the end of that day. Defaults to now; cannot be in the future. A date from before the dataset's knowledge history returns 422 point-in-time-unavailable naming the earliest one, which GET /v1/datasets lists as earliest_as_of."
                    },
                    {
                        "name": "from",
                        "in": "query",
                        "schema": {
                            "type": "string",
                            "format": "date"
                        },
                        "description": "First filed_on to include (YYYY-MM-DD).",
                        "example": "2026-01-01"
                    },
                    {
                        "name": "to",
                        "in": "query",
                        "schema": {
                            "type": "string",
                            "format": "date"
                        },
                        "description": "Last filed_on to include (YYYY-MM-DD); on or after from, so from equal to to selects one day.",
                        "example": "2026-09-25"
                    },
                    {
                        "name": "known_from",
                        "in": "query",
                        "schema": {
                            "type": "string",
                            "format": "date"
                        },
                        "description": "First UTC date (YYYY-MM-DD, inclusive) on which a revision became known. Filters eligible revisions; not a change feed or deletion log."
                    },
                    {
                        "name": "known_to",
                        "in": "query",
                        "schema": {
                            "type": "string",
                            "format": "date"
                        },
                        "description": "Last UTC date (YYYY-MM-DD, inclusive) on which a revision became known; on or after known_from."
                    },
                    {
                        "name": "order",
                        "in": "query",
                        "schema": {
                            "type": "string",
                            "enum": [
                                "asc",
                                "desc"
                            ],
                            "default": "asc"
                        },
                        "description": "Direction on filed_on, asc (default) or desc; ties keep their internal order in the same direction. The cursor is bound to it."
                    },
                    {
                        "name": "forms",
                        "in": "query",
                        "schema": {
                            "type": "array",
                            "minItems": 1,
                            "maxItems": 100,
                            "uniqueItems": true,
                            "items": {
                                "type": "string",
                                "minLength": 1,
                                "maxLength": 256
                            }
                        },
                        "style": "form",
                        "explode": false,
                        "description": "Exact regulatory form types, such as 8-K, 10-K or 10-Q."
                    },
                    {
                        "name": "period_from",
                        "in": "query",
                        "schema": {
                            "type": "string",
                            "format": "date"
                        },
                        "description": "Inclusive lower bound on period_end (YYYY-MM-DD)."
                    },
                    {
                        "name": "period_to",
                        "in": "query",
                        "schema": {
                            "type": "string",
                            "format": "date"
                        },
                        "description": "Inclusive upper bound on period_end (YYYY-MM-DD); must be on or after period_from."
                    },
                    {
                        "name": "format",
                        "in": "query",
                        "description": "Response format. csv returns the data rows with a header row, for spreadsheet functions such as IMPORTDATA; nested fields become dotted columns and lists one JSON array cell, the next page cursor is returned in X-Next-Cursor and meta.errors in X-Meta-Errors. A result without rows is the header row alone, listing the documented fields of a row. Default json, or csv when format is omitted and the Accept header ranks text/csv above JSON; a format the Accept header does not admit returns 406 not-acceptable.",
                        "schema": {
                            "type": "string",
                            "enum": [
                                "json",
                                "csv"
                            ]
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Authorized data. Monetary and price values are decimal strings with currency_code.",
                        "headers": {
                            "X-RateLimit-Limit": {
                                "$ref": "#/components/headers/X-RateLimit-Limit"
                            },
                            "X-RateLimit-Remaining": {
                                "$ref": "#/components/headers/X-RateLimit-Remaining"
                            },
                            "X-RateLimit-Reset": {
                                "$ref": "#/components/headers/X-RateLimit-Reset"
                            },
                            "ETag": {
                                "$ref": "#/components/headers/ETag"
                            },
                            "Cache-Control": {
                                "schema": {
                                    "type": "string",
                                    "const": "must-revalidate, no-cache, private"
                                },
                                "description": "Responses of this endpoint carry an ETag: a client may keep one, and revalidates it with If-None-Match before reuse."
                            },
                            "X-Request-ID": {
                                "$ref": "#/components/headers/X-Request-ID"
                            },
                            "X-Next-Cursor": {
                                "$ref": "#/components/headers/X-Next-Cursor"
                            },
                            "X-Meta-Errors": {
                                "$ref": "#/components/headers/X-Meta-Errors"
                            },
                            "X-Credits-Limit": {
                                "$ref": "#/components/headers/X-Credits-Limit"
                            },
                            "X-Credits-Remaining": {
                                "$ref": "#/components/headers/X-Credits-Remaining"
                            },
                            "X-Credits-Cost": {
                                "$ref": "#/components/headers/X-Credits-Cost"
                            },
                            "X-Concurrency-Limit": {
                                "$ref": "#/components/headers/X-Concurrency-Limit"
                            },
                            "X-Concurrency-Remaining": {
                                "$ref": "#/components/headers/X-Concurrency-Remaining"
                            }
                        },
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "object",
                                    "required": [
                                        "data",
                                        "meta"
                                    ],
                                    "properties": {
                                        "data": {
                                            "type": "array",
                                            "items": {
                                                "$ref": "#/components/schemas/Filing"
                                            }
                                        },
                                        "meta": {
                                            "type": "object",
                                            "required": [
                                                "timezone",
                                                "next_cursor",
                                                "as_of"
                                            ],
                                            "properties": {
                                                "timezone": {
                                                    "const": "UTC"
                                                },
                                                "as_of": {
                                                    "type": "string",
                                                    "format": "date-time"
                                                },
                                                "next_cursor": {
                                                    "type": [
                                                        "string",
                                                        "null"
                                                    ]
                                                },
                                                "errors": {
                                                    "type": "array",
                                                    "items": {
                                                        "type": "object",
                                                        "properties": {
                                                            "symbol": {
                                                                "type": [
                                                                    "string",
                                                                    "null"
                                                                ],
                                                                "description": "Requested symbol, or the symbol a requested instrument ID resolved to; null when the instrument ID has no unique symbol."
                                                            },
                                                            "instrument_id": {
                                                                "type": [
                                                                    "string",
                                                                    "null"
                                                                ],
                                                                "description": "Instrument ID of the listing: the requested one, or the one a requested symbol resolved to; null when a symbol resolved to no listing."
                                                            },
                                                            "code": {
                                                                "type": "string",
                                                                "description": "symbol-not-resolved or identifier-not-found when the member names no listing; no-data when it resolved but has no rows for this request, such as a listing without a quote or a date it did not trade."
                                                            },
                                                            "status": {
                                                                "type": "integer"
                                                            },
                                                            "detail": {
                                                                "type": "string"
                                                            }
                                                        },
                                                        "required": [
                                                            "symbol",
                                                            "instrument_id",
                                                            "code",
                                                            "status",
                                                            "detail"
                                                        ]
                                                    },
                                                    "description": "Requested members of a batch that return no rows: every requested symbol or instrument ID appears in data or here. A member that names no listing is reported on the first page, and one that resolved but has no rows on the page that reaches it, so a paginated request reports each one once. Valid members are still returned; entitlement failures reject the request, and a request in which no member resolves is a 404. CSV responses carry these entries in the X-Meta-Errors header."
                                                },
                                                "unrecorded_symbols": {
                                                    "type": "array",
                                                    "items": {
                                                        "type": "string"
                                                    },
                                                    "description": "Present when rows in data carry a symbol that is only a label: no ticker is recorded for that listing at symbol_at (ticker records begin in 2003 at the earliest, later for many listings, while prices start earlier), so the listing was found by the earliest ticker recorded for it, or by its instrument ID, and its rows carry that symbol. OHLC does not assert that the listing traded under the symbol then; /v1/instruments/{instrument_id}/symbols lists the recorded tickers. Not sent with format=csv."
                                                }
                                            }
                                        }
                                    }
                                }
                            },
                            "text/csv": {
                                "schema": {
                                    "type": "string"
                                }
                            }
                        }
                    },
                    "304": {
                        "$ref": "#/components/responses/NotModified"
                    },
                    "400": {
                        "$ref": "#/components/responses/BadRequest"
                    },
                    "401": {
                        "$ref": "#/components/responses/Unauthorized"
                    },
                    "403": {
                        "$ref": "#/components/responses/Forbidden"
                    },
                    "404": {
                        "$ref": "#/components/responses/NotFound"
                    },
                    "405": {
                        "$ref": "#/components/responses/MethodNotAllowed"
                    },
                    "406": {
                        "$ref": "#/components/responses/NotAcceptable"
                    },
                    "409": {
                        "$ref": "#/components/responses/Conflict"
                    },
                    "413": {
                        "$ref": "#/components/responses/ContentTooLarge"
                    },
                    "414": {
                        "$ref": "#/components/responses/URITooLong"
                    },
                    "415": {
                        "$ref": "#/components/responses/UnsupportedMediaType"
                    },
                    "422": {
                        "$ref": "#/components/responses/UnprocessableContent"
                    },
                    "429": {
                        "$ref": "#/components/responses/TooManyRequests"
                    },
                    "431": {
                        "$ref": "#/components/responses/RequestHeaderFieldsTooLarge"
                    },
                    "500": {
                        "$ref": "#/components/responses/InternalServerError"
                    },
                    "503": {
                        "description": "RFC 9457 problem.",
                        "headers": {
                            "X-RateLimit-Limit": {
                                "$ref": "#/components/headers/X-RateLimit-Limit"
                            },
                            "X-RateLimit-Remaining": {
                                "$ref": "#/components/headers/X-RateLimit-Remaining"
                            },
                            "X-RateLimit-Reset": {
                                "$ref": "#/components/headers/X-RateLimit-Reset"
                            },
                            "Retry-After": {
                                "$ref": "#/components/headers/Retry-After"
                            },
                            "X-Request-ID": {
                                "$ref": "#/components/headers/X-Request-ID"
                            },
                            "Cache-Control": {
                                "$ref": "#/components/headers/Cache-Control"
                            },
                            "X-Credits-Limit": {
                                "$ref": "#/components/headers/X-Credits-Limit"
                            },
                            "X-Credits-Remaining": {
                                "$ref": "#/components/headers/X-Credits-Remaining"
                            },
                            "X-Credits-Cost": {
                                "$ref": "#/components/headers/X-Credits-Cost"
                            },
                            "X-Concurrency-Limit": {
                                "$ref": "#/components/headers/X-Concurrency-Limit"
                            },
                            "X-Concurrency-Remaining": {
                                "$ref": "#/components/headers/X-Concurrency-Remaining"
                            }
                        },
                        "content": {
                            "application/problem+json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Problem"
                                }
                            }
                        }
                    }
                },
                "summary": "Filings",
                "tags": [
                    "Company data"
                ],
                "description": "Issuer filings filtered by filing date, form type and reporting period. The index holds annual, quarterly and current reports (10-K, 10-Q, 8-K, and 20-F, 40-F and 6-K of foreign issuers) and their amendments, filed since September 23, 2024. Ownership forms (3, 4, 5), registration statements, proxy statements and earlier filings are not indexed. Default order: requested symbol, then filed_on ascending. Select listings with symbols or instrument_ids, not both; order=desc returns each listing's rows newest first. Requires filings.read and an entitled market. An empty data array is a successful result. When none of the requested symbols resolves, the response is 404 symbol-not-resolved, whatever the size of the list; when at least one does, the others are reported in meta.errors.",
                "x-time-field": "filed_on",
                "x-credit-cost": "50 credits per request.",
                "x-availability": "available",
                "x-example-query": {
                    "symbols": [
                        "XNAS:AAPL"
                    ],
                    "from": "2026-01-01",
                    "to": "2026-09-25"
                }
            }
        },
        "/v1/securities": {
            "get": {
                "operationId": "securities",
                "x-dataset-id": 7,
                "x-required-capability": "reference.read",
                "parameters": [
                    {
                        "name": "limit",
                        "in": "query",
                        "schema": {
                            "type": "integer",
                            "minimum": 1,
                            "maximum": 500,
                            "default": 100
                        },
                        "description": "Maximum records per page, from 1 to 500; default 100."
                    },
                    {
                        "name": "cursor",
                        "in": "query",
                        "schema": {
                            "type": "string"
                        },
                        "description": "Opaque cursor, expires after one hour. Keep all query parameters unchanged. Changes to entitlements can invalidate it."
                    },
                    {
                        "name": "If-None-Match",
                        "in": "header",
                        "schema": {
                            "type": "string"
                        },
                        "description": "ETag from a previous response. Authorization is rechecked before returning 304, and a 304 costs no credits."
                    },
                    {
                        "name": "symbols",
                        "in": "query",
                        "style": "form",
                        "explode": false,
                        "schema": {
                            "type": "array",
                            "minItems": 1,
                            "maxItems": 100,
                            "uniqueItems": true,
                            "items": {
                                "type": "string",
                                "pattern": "^(?:(?:[A-Za-z0-9]{4}|[Cc][Rr][Yy][Pp][Tt][Oo]|[Ff][Oo][Rr][Ee][Xx]|[Ii][Nn][Dd][Ee][Xx]):|\\^)?[A-Za-z0-9][A-Za-z0-9./_^= -]{0,63}$"
                            }
                        },
                        "description": "Comma-separated MIC:TICKER symbols (crypto pairs are CRYPTO:BTC-USD, currency pairs FOREX:EUR-USD, indices INDEX:GSPC, bonds BOND and the ISIN, such as BOND:US00037BAF94) or bare tickers, which resolve to the exchange listing that ticker; neither part is case-sensitive, and two spellings of one listing count as a repeated value. A bare ticker that names no listing as written is also read in the common vendor spellings: with an exchange suffix (RY.TO, SHEL.L, VOD.LSE, BHP.AX), ^GSPC for INDEX:GSPC, and EURUSD=X or EURUSD for FOREX:EUR-USD. At most 100, further limited by the effective plan and key scope. A symbol names the listing recorded under it at symbol_at; at a date before any ticker is recorded for a listing, the earliest ticker recorded for it selects it as well (see symbol_at). Supply symbols or instrument_ids.",
                        "example": [
                            "XNAS:AAPL"
                        ]
                    },
                    {
                        "name": "instrument_ids",
                        "in": "query",
                        "style": "form",
                        "explode": false,
                        "schema": {
                            "type": "array",
                            "minItems": 1,
                            "maxItems": 100,
                            "uniqueItems": true,
                            "items": {
                                "type": "string",
                                "minLength": 1,
                                "maxLength": 128,
                                "pattern": "^[A-Za-z0-9][A-Za-z0-9_.:-]{0,127}$"
                            }
                        },
                        "description": "Comma-separated stable instrument IDs (the instrument_id of each row, and of the research endpoints) instead of symbols; each selects its listing at any date, including history from before its earliest recorded ticker and listings that no longer trade. Rows carry the symbol the listing had at symbol_at, or where it had none then, its symbol at as_of, else the last one it carried by as_of, else its first. At most 100. Cannot be combined with symbols."
                    },
                    {
                        "name": "symbol_at",
                        "in": "query",
                        "schema": {
                            "type": "string",
                            "format": "date"
                        },
                        "description": "Resolve symbols as they were assigned at the end of this UTC date (YYYY-MM-DD); defaults to as_of. Only listings the security master holds resolve: it was built in September 2026 and records delistings from then on, so most issuers delisted earlier, such as TWTR or SIVB, resolve at no date. A ticker names the listing that carries it at symbol_at, and every row of a from/to range carries that symbol, rows from before the listing took the ticker included: a ticker reused after its earlier holder delisted returns the new holder's older rows, so set symbol_at inside the range to name the listing that traded under the ticker then. Tickers are recorded only where there is evidence for them (for many listings from 2003, though prices start earlier), and none is asserted earlier. As a lookup convenience, a date before a listing's earliest recorded ticker still finds the listing by that ticker when no record contradicts it (no listing is recorded under the ticker by that date, and the listing has no earlier ticker): its rows carry the symbol as a label and meta.unrecorded_symbols lists it. A date before the listing's first row returns 200 with no-data, as a to before it does. A ticker another listing held, or one the listing was renamed from or to, returns 404 naming the date and the listing; instrument_ids select a listing at any date."
                    },
                    {
                        "name": "as_of",
                        "in": "query",
                        "schema": {
                            "type": "string",
                            "format": "date"
                        },
                        "description": "Knowledge cutoff as a UTC date (YYYY-MM-DD): the response reflects what was known by the end of that day. Defaults to now; cannot be in the future. A date from before the dataset's knowledge history returns 422 point-in-time-unavailable naming the earliest one, which GET /v1/datasets lists as earliest_as_of."
                    },
                    {
                        "name": "format",
                        "in": "query",
                        "description": "Response format. csv returns the data rows with a header row, for spreadsheet functions such as IMPORTDATA; nested fields become dotted columns and lists one JSON array cell, the next page cursor is returned in X-Next-Cursor and meta.errors in X-Meta-Errors. A result without rows is the header row alone, listing the documented fields of a row. Default json, or csv when format is omitted and the Accept header ranks text/csv above JSON; a format the Accept header does not admit returns 406 not-acceptable.",
                        "schema": {
                            "type": "string",
                            "enum": [
                                "json",
                                "csv"
                            ]
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Authorized data. Monetary and price values are decimal strings with currency_code.",
                        "headers": {
                            "X-RateLimit-Limit": {
                                "$ref": "#/components/headers/X-RateLimit-Limit"
                            },
                            "X-RateLimit-Remaining": {
                                "$ref": "#/components/headers/X-RateLimit-Remaining"
                            },
                            "X-RateLimit-Reset": {
                                "$ref": "#/components/headers/X-RateLimit-Reset"
                            },
                            "ETag": {
                                "$ref": "#/components/headers/ETag"
                            },
                            "Cache-Control": {
                                "schema": {
                                    "type": "string",
                                    "const": "must-revalidate, no-cache, private"
                                },
                                "description": "Responses of this endpoint carry an ETag: a client may keep one, and revalidates it with If-None-Match before reuse."
                            },
                            "X-Request-ID": {
                                "$ref": "#/components/headers/X-Request-ID"
                            },
                            "X-Next-Cursor": {
                                "$ref": "#/components/headers/X-Next-Cursor"
                            },
                            "X-Meta-Errors": {
                                "$ref": "#/components/headers/X-Meta-Errors"
                            },
                            "X-Credits-Limit": {
                                "$ref": "#/components/headers/X-Credits-Limit"
                            },
                            "X-Credits-Remaining": {
                                "$ref": "#/components/headers/X-Credits-Remaining"
                            },
                            "X-Credits-Cost": {
                                "$ref": "#/components/headers/X-Credits-Cost"
                            },
                            "X-Concurrency-Limit": {
                                "$ref": "#/components/headers/X-Concurrency-Limit"
                            },
                            "X-Concurrency-Remaining": {
                                "$ref": "#/components/headers/X-Concurrency-Remaining"
                            }
                        },
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "object",
                                    "required": [
                                        "data",
                                        "meta"
                                    ],
                                    "properties": {
                                        "data": {
                                            "type": "array",
                                            "items": {
                                                "$ref": "#/components/schemas/Security"
                                            }
                                        },
                                        "meta": {
                                            "type": "object",
                                            "required": [
                                                "timezone",
                                                "next_cursor",
                                                "as_of"
                                            ],
                                            "properties": {
                                                "timezone": {
                                                    "const": "UTC"
                                                },
                                                "as_of": {
                                                    "type": "string",
                                                    "format": "date-time"
                                                },
                                                "next_cursor": {
                                                    "type": [
                                                        "string",
                                                        "null"
                                                    ]
                                                },
                                                "errors": {
                                                    "type": "array",
                                                    "items": {
                                                        "type": "object",
                                                        "properties": {
                                                            "symbol": {
                                                                "type": [
                                                                    "string",
                                                                    "null"
                                                                ],
                                                                "description": "Requested symbol, or the symbol a requested instrument ID resolved to; null when the instrument ID has no unique symbol."
                                                            },
                                                            "instrument_id": {
                                                                "type": [
                                                                    "string",
                                                                    "null"
                                                                ],
                                                                "description": "Instrument ID of the listing: the requested one, or the one a requested symbol resolved to; null when a symbol resolved to no listing."
                                                            },
                                                            "code": {
                                                                "type": "string",
                                                                "description": "symbol-not-resolved or identifier-not-found when the member names no listing; no-data when it resolved but has no rows for this request, such as a listing without a quote or a date it did not trade."
                                                            },
                                                            "status": {
                                                                "type": "integer"
                                                            },
                                                            "detail": {
                                                                "type": "string"
                                                            }
                                                        },
                                                        "required": [
                                                            "symbol",
                                                            "instrument_id",
                                                            "code",
                                                            "status",
                                                            "detail"
                                                        ]
                                                    },
                                                    "description": "Requested members of a batch that return no rows: every requested symbol or instrument ID appears in data or here. A member that names no listing is reported on the first page, and one that resolved but has no rows on the page that reaches it, so a paginated request reports each one once. Valid members are still returned; entitlement failures reject the request, and a request in which no member resolves is a 404. CSV responses carry these entries in the X-Meta-Errors header."
                                                },
                                                "unrecorded_symbols": {
                                                    "type": "array",
                                                    "items": {
                                                        "type": "string"
                                                    },
                                                    "description": "Present when rows in data carry a symbol that is only a label: no ticker is recorded for that listing at symbol_at (ticker records begin in 2003 at the earliest, later for many listings, while prices start earlier), so the listing was found by the earliest ticker recorded for it, or by its instrument ID, and its rows carry that symbol. OHLC does not assert that the listing traded under the symbol then; /v1/instruments/{instrument_id}/symbols lists the recorded tickers. Not sent with format=csv."
                                                }
                                            }
                                        }
                                    }
                                }
                            },
                            "text/csv": {
                                "schema": {
                                    "type": "string"
                                }
                            }
                        }
                    },
                    "304": {
                        "$ref": "#/components/responses/NotModified"
                    },
                    "400": {
                        "$ref": "#/components/responses/BadRequest"
                    },
                    "401": {
                        "$ref": "#/components/responses/Unauthorized"
                    },
                    "403": {
                        "$ref": "#/components/responses/Forbidden"
                    },
                    "404": {
                        "$ref": "#/components/responses/NotFound"
                    },
                    "405": {
                        "$ref": "#/components/responses/MethodNotAllowed"
                    },
                    "406": {
                        "$ref": "#/components/responses/NotAcceptable"
                    },
                    "409": {
                        "$ref": "#/components/responses/Conflict"
                    },
                    "413": {
                        "$ref": "#/components/responses/ContentTooLarge"
                    },
                    "414": {
                        "$ref": "#/components/responses/URITooLong"
                    },
                    "415": {
                        "$ref": "#/components/responses/UnsupportedMediaType"
                    },
                    "422": {
                        "$ref": "#/components/responses/UnprocessableContent"
                    },
                    "429": {
                        "$ref": "#/components/responses/TooManyRequests"
                    },
                    "431": {
                        "$ref": "#/components/responses/RequestHeaderFieldsTooLarge"
                    },
                    "500": {
                        "$ref": "#/components/responses/InternalServerError"
                    },
                    "503": {
                        "description": "RFC 9457 problem.",
                        "headers": {
                            "X-RateLimit-Limit": {
                                "$ref": "#/components/headers/X-RateLimit-Limit"
                            },
                            "X-RateLimit-Remaining": {
                                "$ref": "#/components/headers/X-RateLimit-Remaining"
                            },
                            "X-RateLimit-Reset": {
                                "$ref": "#/components/headers/X-RateLimit-Reset"
                            },
                            "Retry-After": {
                                "$ref": "#/components/headers/Retry-After"
                            },
                            "X-Request-ID": {
                                "$ref": "#/components/headers/X-Request-ID"
                            },
                            "Cache-Control": {
                                "$ref": "#/components/headers/Cache-Control"
                            },
                            "X-Credits-Limit": {
                                "$ref": "#/components/headers/X-Credits-Limit"
                            },
                            "X-Credits-Remaining": {
                                "$ref": "#/components/headers/X-Credits-Remaining"
                            },
                            "X-Credits-Cost": {
                                "$ref": "#/components/headers/X-Credits-Cost"
                            },
                            "X-Concurrency-Limit": {
                                "$ref": "#/components/headers/X-Concurrency-Limit"
                            },
                            "X-Concurrency-Remaining": {
                                "$ref": "#/components/headers/X-Concurrency-Remaining"
                            }
                        },
                        "content": {
                            "application/problem+json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Problem"
                                }
                            }
                        }
                    }
                },
                "summary": "Securities",
                "tags": [
                    "Reference data"
                ],
                "description": "Effective security identity and symbol assignment at symbol_at: valid_from and valid_to bound the whole stretch the listing has carried that symbol without a break. Select listings with symbols or instrument_ids, not both. Requires reference.read and an entitled market. An empty data array is a successful result. When none of the requested symbols resolves, the response is 404 symbol-not-resolved, whatever the size of the list; when at least one does, the others are reported in meta.errors.",
                "x-credit-cost": "5 credits per request.",
                "x-availability": "available",
                "x-example-query": {
                    "symbols": [
                        "XNAS:AAPL"
                    ]
                }
            }
        },
        "/v1/symbols/search": {
            "get": {
                "operationId": "symbols_search",
                "x-dataset-id": 7,
                "x-required-capability": "reference.read",
                "parameters": [
                    {
                        "name": "limit",
                        "in": "query",
                        "schema": {
                            "type": "integer",
                            "minimum": 1,
                            "maximum": 500,
                            "default": 100
                        },
                        "description": "Maximum records per page, from 1 to 500; default 100."
                    },
                    {
                        "name": "cursor",
                        "in": "query",
                        "schema": {
                            "type": "string",
                            "maxLength": 4096
                        },
                        "description": "Opaque cursor, expires after one hour. Keep all query parameters unchanged. Changes to entitlements can invalidate it."
                    },
                    {
                        "name": "If-None-Match",
                        "in": "header",
                        "schema": {
                            "type": "string"
                        },
                        "description": "ETag from a previous response. Authorization is rechecked before returning 304, and a 304 costs no credits."
                    },
                    {
                        "name": "exchanges",
                        "in": "query",
                        "style": "form",
                        "explode": false,
                        "schema": {
                            "type": "array",
                            "minItems": 1,
                            "maxItems": 100,
                            "uniqueItems": true,
                            "items": {
                                "type": "string",
                                "pattern": "^(?:[A-Z0-9]{4}|CRYPTO|FOREX|INDEX)$"
                            }
                        },
                        "description": "Comma-separated ISO MIC codes, at most 100, each listed once. Defaults to all entitled exchanges. A malformed or repeated code returns 422 invalid-exchanges, a MIC the API does not serve 404 exchange-not-found, and one outside the key's markets 403 market-not-entitled."
                    },
                    {
                        "name": "q",
                        "in": "query",
                        "schema": {
                            "type": "string",
                            "minLength": 1,
                            "maxLength": 64,
                            "pattern": "\\S"
                        },
                        "description": "Case-insensitive ticker prefix; omit it to list every symbol. A value that is empty or only whitespace returns 422.",
                        "example": "AAPL"
                    },
                    {
                        "name": "format",
                        "in": "query",
                        "description": "Response format. csv returns the data rows with a header row, for spreadsheet functions such as IMPORTDATA; nested fields become dotted columns and lists one JSON array cell, the next page cursor is returned in X-Next-Cursor and meta.errors in X-Meta-Errors. A result without rows is the header row alone, listing the documented fields of a row. Default json, or csv when format is omitted and the Accept header ranks text/csv above JSON; a format the Accept header does not admit returns 406 not-acceptable.",
                        "schema": {
                            "type": "string",
                            "enum": [
                                "json",
                                "csv"
                            ]
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Authorized data. Monetary and price values are decimal strings with currency_code.",
                        "headers": {
                            "X-RateLimit-Limit": {
                                "$ref": "#/components/headers/X-RateLimit-Limit"
                            },
                            "X-RateLimit-Remaining": {
                                "$ref": "#/components/headers/X-RateLimit-Remaining"
                            },
                            "X-RateLimit-Reset": {
                                "$ref": "#/components/headers/X-RateLimit-Reset"
                            },
                            "ETag": {
                                "$ref": "#/components/headers/ETag"
                            },
                            "Cache-Control": {
                                "schema": {
                                    "type": "string",
                                    "const": "must-revalidate, no-cache, private"
                                },
                                "description": "Responses of this endpoint carry an ETag: a client may keep one, and revalidates it with If-None-Match before reuse."
                            },
                            "X-Request-ID": {
                                "$ref": "#/components/headers/X-Request-ID"
                            },
                            "X-Next-Cursor": {
                                "$ref": "#/components/headers/X-Next-Cursor"
                            },
                            "X-Meta-Errors": {
                                "$ref": "#/components/headers/X-Meta-Errors"
                            },
                            "X-Credits-Limit": {
                                "$ref": "#/components/headers/X-Credits-Limit"
                            },
                            "X-Credits-Remaining": {
                                "$ref": "#/components/headers/X-Credits-Remaining"
                            },
                            "X-Credits-Cost": {
                                "$ref": "#/components/headers/X-Credits-Cost"
                            },
                            "X-Concurrency-Limit": {
                                "$ref": "#/components/headers/X-Concurrency-Limit"
                            },
                            "X-Concurrency-Remaining": {
                                "$ref": "#/components/headers/X-Concurrency-Remaining"
                            }
                        },
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "object",
                                    "required": [
                                        "data",
                                        "meta"
                                    ],
                                    "properties": {
                                        "data": {
                                            "type": "array",
                                            "items": {
                                                "$ref": "#/components/schemas/SymbolMatch"
                                            }
                                        },
                                        "meta": {
                                            "type": "object",
                                            "required": [
                                                "timezone",
                                                "next_cursor"
                                            ],
                                            "properties": {
                                                "timezone": {
                                                    "const": "UTC"
                                                },
                                                "next_cursor": {
                                                    "type": [
                                                        "string",
                                                        "null"
                                                    ]
                                                }
                                            }
                                        }
                                    }
                                }
                            },
                            "text/csv": {
                                "schema": {
                                    "type": "string"
                                }
                            }
                        }
                    },
                    "304": {
                        "$ref": "#/components/responses/NotModified"
                    },
                    "400": {
                        "$ref": "#/components/responses/BadRequest"
                    },
                    "401": {
                        "$ref": "#/components/responses/Unauthorized"
                    },
                    "403": {
                        "$ref": "#/components/responses/Forbidden"
                    },
                    "404": {
                        "$ref": "#/components/responses/NotFound"
                    },
                    "405": {
                        "$ref": "#/components/responses/MethodNotAllowed"
                    },
                    "406": {
                        "$ref": "#/components/responses/NotAcceptable"
                    },
                    "409": {
                        "$ref": "#/components/responses/Conflict"
                    },
                    "413": {
                        "$ref": "#/components/responses/ContentTooLarge"
                    },
                    "414": {
                        "$ref": "#/components/responses/URITooLong"
                    },
                    "415": {
                        "$ref": "#/components/responses/UnsupportedMediaType"
                    },
                    "422": {
                        "$ref": "#/components/responses/UnprocessableContent"
                    },
                    "429": {
                        "$ref": "#/components/responses/TooManyRequests"
                    },
                    "431": {
                        "$ref": "#/components/responses/RequestHeaderFieldsTooLarge"
                    },
                    "500": {
                        "$ref": "#/components/responses/InternalServerError"
                    },
                    "503": {
                        "description": "RFC 9457 problem.",
                        "headers": {
                            "X-RateLimit-Limit": {
                                "$ref": "#/components/headers/X-RateLimit-Limit"
                            },
                            "X-RateLimit-Remaining": {
                                "$ref": "#/components/headers/X-RateLimit-Remaining"
                            },
                            "X-RateLimit-Reset": {
                                "$ref": "#/components/headers/X-RateLimit-Reset"
                            },
                            "Retry-After": {
                                "$ref": "#/components/headers/Retry-After"
                            },
                            "X-Request-ID": {
                                "$ref": "#/components/headers/X-Request-ID"
                            },
                            "Cache-Control": {
                                "$ref": "#/components/headers/Cache-Control"
                            },
                            "X-Credits-Limit": {
                                "$ref": "#/components/headers/X-Credits-Limit"
                            },
                            "X-Credits-Remaining": {
                                "$ref": "#/components/headers/X-Credits-Remaining"
                            },
                            "X-Credits-Cost": {
                                "$ref": "#/components/headers/X-Credits-Cost"
                            },
                            "X-Concurrency-Limit": {
                                "$ref": "#/components/headers/X-Concurrency-Limit"
                            },
                            "X-Concurrency-Remaining": {
                                "$ref": "#/components/headers/X-Concurrency-Remaining"
                            }
                        },
                        "content": {
                            "application/problem+json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Problem"
                                }
                            }
                        }
                    }
                },
                "summary": "Symbol search",
                "tags": [
                    "Reference data"
                ],
                "description": "Current symbol assignments matching a case-insensitive ticker prefix. q also matches the other spellings of a share class or series (BRK.B, BRK-B and BRK/B find the same listing; BAC-PL as BAC.PRL or BAC PRL), and results are in the order each assignment was recorded. Requires reference.read and an entitled market. An empty data array is a successful result.",
                "x-credit-cost": "5 credits per request.",
                "x-availability": "available",
                "x-example-query": {
                    "q": "AAPL"
                }
            }
        },
        "/v1/exchanges": {
            "get": {
                "operationId": "exchanges",
                "x-dataset-id": 8,
                "x-required-capability": "exchanges.read",
                "parameters": [
                    {
                        "name": "limit",
                        "in": "query",
                        "schema": {
                            "type": "integer",
                            "minimum": 1,
                            "maximum": 500,
                            "default": 100
                        },
                        "description": "Maximum records per page, from 1 to 500; default 100."
                    },
                    {
                        "name": "cursor",
                        "in": "query",
                        "schema": {
                            "type": "string",
                            "maxLength": 4096
                        },
                        "description": "Opaque cursor, expires after one hour. Keep all query parameters unchanged. Changes to entitlements can invalidate it."
                    },
                    {
                        "name": "If-None-Match",
                        "in": "header",
                        "schema": {
                            "type": "string"
                        },
                        "description": "ETag from a previous response. Authorization is rechecked before returning 304, and a 304 costs no credits."
                    },
                    {
                        "name": "exchanges",
                        "in": "query",
                        "style": "form",
                        "explode": false,
                        "schema": {
                            "type": "array",
                            "minItems": 1,
                            "maxItems": 100,
                            "uniqueItems": true,
                            "items": {
                                "type": "string",
                                "pattern": "^(?:[A-Z0-9]{4}|CRYPTO|FOREX|INDEX)$"
                            }
                        },
                        "description": "Comma-separated ISO MIC codes, at most 100, each listed once. Defaults to all entitled exchanges. A malformed or repeated code returns 422 invalid-exchanges, a MIC the API does not serve 404 exchange-not-found, and one outside the key's markets 403 market-not-entitled."
                    },
                    {
                        "name": "format",
                        "in": "query",
                        "description": "Response format. csv returns the data rows with a header row, for spreadsheet functions such as IMPORTDATA; nested fields become dotted columns and lists one JSON array cell, the next page cursor is returned in X-Next-Cursor and meta.errors in X-Meta-Errors. A result without rows is the header row alone, listing the documented fields of a row. Default json, or csv when format is omitted and the Accept header ranks text/csv above JSON; a format the Accept header does not admit returns 406 not-acceptable.",
                        "schema": {
                            "type": "string",
                            "enum": [
                                "json",
                                "csv"
                            ]
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Authorized data. Monetary and price values are decimal strings with currency_code.",
                        "headers": {
                            "X-RateLimit-Limit": {
                                "$ref": "#/components/headers/X-RateLimit-Limit"
                            },
                            "X-RateLimit-Remaining": {
                                "$ref": "#/components/headers/X-RateLimit-Remaining"
                            },
                            "X-RateLimit-Reset": {
                                "$ref": "#/components/headers/X-RateLimit-Reset"
                            },
                            "ETag": {
                                "$ref": "#/components/headers/ETag"
                            },
                            "Cache-Control": {
                                "schema": {
                                    "type": "string",
                                    "const": "must-revalidate, no-cache, private"
                                },
                                "description": "Responses of this endpoint carry an ETag: a client may keep one, and revalidates it with If-None-Match before reuse."
                            },
                            "X-Request-ID": {
                                "$ref": "#/components/headers/X-Request-ID"
                            },
                            "X-Next-Cursor": {
                                "$ref": "#/components/headers/X-Next-Cursor"
                            },
                            "X-Meta-Errors": {
                                "$ref": "#/components/headers/X-Meta-Errors"
                            },
                            "X-Credits-Limit": {
                                "$ref": "#/components/headers/X-Credits-Limit"
                            },
                            "X-Credits-Remaining": {
                                "$ref": "#/components/headers/X-Credits-Remaining"
                            },
                            "X-Credits-Cost": {
                                "$ref": "#/components/headers/X-Credits-Cost"
                            },
                            "X-Concurrency-Limit": {
                                "$ref": "#/components/headers/X-Concurrency-Limit"
                            },
                            "X-Concurrency-Remaining": {
                                "$ref": "#/components/headers/X-Concurrency-Remaining"
                            }
                        },
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "object",
                                    "required": [
                                        "data",
                                        "meta"
                                    ],
                                    "properties": {
                                        "data": {
                                            "type": "array",
                                            "items": {
                                                "$ref": "#/components/schemas/Exchange"
                                            }
                                        },
                                        "meta": {
                                            "type": "object",
                                            "required": [
                                                "timezone",
                                                "next_cursor"
                                            ],
                                            "properties": {
                                                "timezone": {
                                                    "const": "UTC"
                                                },
                                                "next_cursor": {
                                                    "type": [
                                                        "string",
                                                        "null"
                                                    ]
                                                }
                                            }
                                        }
                                    }
                                }
                            },
                            "text/csv": {
                                "schema": {
                                    "type": "string"
                                }
                            }
                        }
                    },
                    "304": {
                        "$ref": "#/components/responses/NotModified"
                    },
                    "400": {
                        "$ref": "#/components/responses/BadRequest"
                    },
                    "401": {
                        "$ref": "#/components/responses/Unauthorized"
                    },
                    "403": {
                        "$ref": "#/components/responses/Forbidden"
                    },
                    "404": {
                        "$ref": "#/components/responses/NotFound"
                    },
                    "405": {
                        "$ref": "#/components/responses/MethodNotAllowed"
                    },
                    "406": {
                        "$ref": "#/components/responses/NotAcceptable"
                    },
                    "409": {
                        "$ref": "#/components/responses/Conflict"
                    },
                    "413": {
                        "$ref": "#/components/responses/ContentTooLarge"
                    },
                    "414": {
                        "$ref": "#/components/responses/URITooLong"
                    },
                    "415": {
                        "$ref": "#/components/responses/UnsupportedMediaType"
                    },
                    "422": {
                        "$ref": "#/components/responses/UnprocessableContent"
                    },
                    "429": {
                        "$ref": "#/components/responses/TooManyRequests"
                    },
                    "431": {
                        "$ref": "#/components/responses/RequestHeaderFieldsTooLarge"
                    },
                    "500": {
                        "$ref": "#/components/responses/InternalServerError"
                    },
                    "503": {
                        "description": "RFC 9457 problem.",
                        "headers": {
                            "X-RateLimit-Limit": {
                                "$ref": "#/components/headers/X-RateLimit-Limit"
                            },
                            "X-RateLimit-Remaining": {
                                "$ref": "#/components/headers/X-RateLimit-Remaining"
                            },
                            "X-RateLimit-Reset": {
                                "$ref": "#/components/headers/X-RateLimit-Reset"
                            },
                            "Retry-After": {
                                "$ref": "#/components/headers/Retry-After"
                            },
                            "X-Request-ID": {
                                "$ref": "#/components/headers/X-Request-ID"
                            },
                            "Cache-Control": {
                                "$ref": "#/components/headers/Cache-Control"
                            },
                            "X-Credits-Limit": {
                                "$ref": "#/components/headers/X-Credits-Limit"
                            },
                            "X-Credits-Remaining": {
                                "$ref": "#/components/headers/X-Credits-Remaining"
                            },
                            "X-Credits-Cost": {
                                "$ref": "#/components/headers/X-Credits-Cost"
                            },
                            "X-Concurrency-Limit": {
                                "$ref": "#/components/headers/X-Concurrency-Limit"
                            },
                            "X-Concurrency-Remaining": {
                                "$ref": "#/components/headers/X-Concurrency-Remaining"
                            }
                        },
                        "content": {
                            "application/problem+json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Problem"
                                }
                            }
                        }
                    }
                },
                "summary": "Exchanges",
                "tags": [
                    "Reference data"
                ],
                "description": "Entitled exchange reference data and trading conventions. Requires exchanges.read and an entitled market. An empty data array is a successful result.",
                "x-credit-cost": "5 credits per request.",
                "x-availability": "available",
                "x-example-query": []
            }
        },
        "/v1/calendar": {
            "get": {
                "operationId": "calendar",
                "x-dataset-id": 9,
                "x-required-capability": "calendar.read",
                "parameters": [
                    {
                        "name": "limit",
                        "in": "query",
                        "schema": {
                            "type": "integer",
                            "minimum": 1,
                            "maximum": 500,
                            "default": 100
                        },
                        "description": "Maximum records per page, from 1 to 500; default 100."
                    },
                    {
                        "name": "cursor",
                        "in": "query",
                        "schema": {
                            "type": "string",
                            "maxLength": 4096
                        },
                        "description": "Opaque cursor, expires after one hour. Keep all query parameters unchanged. Changes to entitlements can invalidate it."
                    },
                    {
                        "name": "If-None-Match",
                        "in": "header",
                        "schema": {
                            "type": "string"
                        },
                        "description": "ETag from a previous response. Authorization is rechecked before returning 304, and a 304 costs no credits."
                    },
                    {
                        "name": "exchanges",
                        "in": "query",
                        "style": "form",
                        "explode": false,
                        "schema": {
                            "type": "array",
                            "minItems": 1,
                            "maxItems": 100,
                            "uniqueItems": true,
                            "items": {
                                "type": "string",
                                "pattern": "^(?:[A-Z0-9]{4}|CRYPTO|FOREX|INDEX)$"
                            }
                        },
                        "description": "Comma-separated ISO MIC codes, at most 100, each listed once. Defaults to all entitled exchanges. A malformed or repeated code returns 422 invalid-exchanges, a MIC the API does not serve 404 exchange-not-found, and one outside the key's markets 403 market-not-entitled.",
                        "example": [
                            "XNAS"
                        ]
                    },
                    {
                        "name": "date",
                        "in": "query",
                        "schema": {
                            "type": "string",
                            "format": "date"
                        },
                        "description": "Exchange-local YYYY-MM-DD date; defaults to today in each exchange timezone. Outside the range every requested exchange calendar covers, 422; outside one of several, that exchange is named in meta.errors.",
                        "example": "2026-09-25"
                    },
                    {
                        "name": "format",
                        "in": "query",
                        "description": "Response format. csv returns the data rows with a header row, for spreadsheet functions such as IMPORTDATA; nested fields become dotted columns and lists one JSON array cell, the next page cursor is returned in X-Next-Cursor and meta.errors in X-Meta-Errors. A result without rows is the header row alone, listing the documented fields of a row. Default json, or csv when format is omitted and the Accept header ranks text/csv above JSON; a format the Accept header does not admit returns 406 not-acceptable.",
                        "schema": {
                            "type": "string",
                            "enum": [
                                "json",
                                "csv"
                            ]
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Authorized data. Monetary and price values are decimal strings with currency_code.",
                        "headers": {
                            "X-RateLimit-Limit": {
                                "$ref": "#/components/headers/X-RateLimit-Limit"
                            },
                            "X-RateLimit-Remaining": {
                                "$ref": "#/components/headers/X-RateLimit-Remaining"
                            },
                            "X-RateLimit-Reset": {
                                "$ref": "#/components/headers/X-RateLimit-Reset"
                            },
                            "ETag": {
                                "$ref": "#/components/headers/ETag"
                            },
                            "Cache-Control": {
                                "schema": {
                                    "type": "string",
                                    "const": "must-revalidate, no-cache, private"
                                },
                                "description": "Responses of this endpoint carry an ETag: a client may keep one, and revalidates it with If-None-Match before reuse."
                            },
                            "X-Request-ID": {
                                "$ref": "#/components/headers/X-Request-ID"
                            },
                            "X-Next-Cursor": {
                                "$ref": "#/components/headers/X-Next-Cursor"
                            },
                            "X-Meta-Errors": {
                                "schema": {
                                    "type": "string"
                                },
                                "description": "CSV only: meta.errors as a JSON array of {exchange_mic, code, status}, present when some requested exchange has no row for the date."
                            },
                            "X-Credits-Limit": {
                                "$ref": "#/components/headers/X-Credits-Limit"
                            },
                            "X-Credits-Remaining": {
                                "$ref": "#/components/headers/X-Credits-Remaining"
                            },
                            "X-Credits-Cost": {
                                "$ref": "#/components/headers/X-Credits-Cost"
                            },
                            "X-Concurrency-Limit": {
                                "$ref": "#/components/headers/X-Concurrency-Limit"
                            },
                            "X-Concurrency-Remaining": {
                                "$ref": "#/components/headers/X-Concurrency-Remaining"
                            }
                        },
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "object",
                                    "required": [
                                        "data",
                                        "meta"
                                    ],
                                    "properties": {
                                        "data": {
                                            "type": "array",
                                            "items": {
                                                "$ref": "#/components/schemas/CalendarDay"
                                            }
                                        },
                                        "meta": {
                                            "type": "object",
                                            "required": [
                                                "timezone",
                                                "next_cursor"
                                            ],
                                            "properties": {
                                                "timezone": {
                                                    "const": "UTC"
                                                },
                                                "next_cursor": {
                                                    "type": [
                                                        "string",
                                                        "null"
                                                    ]
                                                },
                                                "errors": {
                                                    "type": "array",
                                                    "items": {
                                                        "type": "object",
                                                        "properties": {
                                                            "exchange_mic": {
                                                                "type": "string",
                                                                "pattern": "^(?:[A-Z0-9]{4}|CRYPTO|FOREX|INDEX)$",
                                                                "description": "The requested exchange whose calendar has no row for the request."
                                                            },
                                                            "code": {
                                                                "type": "string",
                                                                "description": "no-data: the date is outside the exchange's calendar, whose range detail names (GET /v1/datasets/calendar/coverage gives it as history_from and history_to)."
                                                            },
                                                            "status": {
                                                                "type": "integer"
                                                            },
                                                            "detail": {
                                                                "type": "string"
                                                            }
                                                        },
                                                        "required": [
                                                            "exchange_mic",
                                                            "code",
                                                            "status",
                                                            "detail"
                                                        ]
                                                    },
                                                    "description": "Requested exchanges with no row for the date: every requested exchange appears in data or here. Present on the first page only, when the request names exchanges and a date that some of their calendars cover and others do not; a date none of them covers returns 422."
                                                }
                                            }
                                        }
                                    }
                                }
                            },
                            "text/csv": {
                                "schema": {
                                    "type": "string"
                                }
                            }
                        }
                    },
                    "304": {
                        "$ref": "#/components/responses/NotModified"
                    },
                    "400": {
                        "$ref": "#/components/responses/BadRequest"
                    },
                    "401": {
                        "$ref": "#/components/responses/Unauthorized"
                    },
                    "403": {
                        "$ref": "#/components/responses/Forbidden"
                    },
                    "404": {
                        "$ref": "#/components/responses/NotFound"
                    },
                    "405": {
                        "$ref": "#/components/responses/MethodNotAllowed"
                    },
                    "406": {
                        "$ref": "#/components/responses/NotAcceptable"
                    },
                    "409": {
                        "$ref": "#/components/responses/Conflict"
                    },
                    "413": {
                        "$ref": "#/components/responses/ContentTooLarge"
                    },
                    "414": {
                        "$ref": "#/components/responses/URITooLong"
                    },
                    "415": {
                        "$ref": "#/components/responses/UnsupportedMediaType"
                    },
                    "422": {
                        "$ref": "#/components/responses/UnprocessableContent"
                    },
                    "429": {
                        "$ref": "#/components/responses/TooManyRequests"
                    },
                    "431": {
                        "$ref": "#/components/responses/RequestHeaderFieldsTooLarge"
                    },
                    "500": {
                        "$ref": "#/components/responses/InternalServerError"
                    },
                    "503": {
                        "description": "RFC 9457 problem.",
                        "headers": {
                            "X-RateLimit-Limit": {
                                "$ref": "#/components/headers/X-RateLimit-Limit"
                            },
                            "X-RateLimit-Remaining": {
                                "$ref": "#/components/headers/X-RateLimit-Remaining"
                            },
                            "X-RateLimit-Reset": {
                                "$ref": "#/components/headers/X-RateLimit-Reset"
                            },
                            "Retry-After": {
                                "$ref": "#/components/headers/Retry-After"
                            },
                            "X-Request-ID": {
                                "$ref": "#/components/headers/X-Request-ID"
                            },
                            "Cache-Control": {
                                "$ref": "#/components/headers/Cache-Control"
                            },
                            "X-Credits-Limit": {
                                "$ref": "#/components/headers/X-Credits-Limit"
                            },
                            "X-Credits-Remaining": {
                                "$ref": "#/components/headers/X-Credits-Remaining"
                            },
                            "X-Credits-Cost": {
                                "$ref": "#/components/headers/X-Credits-Cost"
                            },
                            "X-Concurrency-Limit": {
                                "$ref": "#/components/headers/X-Concurrency-Limit"
                            },
                            "X-Concurrency-Remaining": {
                                "$ref": "#/components/headers/X-Concurrency-Remaining"
                            }
                        },
                        "content": {
                            "application/problem+json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Problem"
                                }
                            }
                        }
                    }
                },
                "summary": "Market calendar",
                "tags": [
                    "Reference data"
                ],
                "description": "Latest calendar revision and sessions for an exchange-local date. US exchange calendars run from the 1950s through the end of the published NYSE holiday schedule (2028-12-31), holidays and early closes included. The Toronto, TSX Venture, Cboe Canada, London, Euronext Paris and Amsterdam and ASX calendars, and that of FSRV (Canadian mutual funds, which keeps Toronto's), run through the same date: the provider's about 45 days ahead, and after that the days each exchange's holiday rules give, early closes included, which the provider's replace as its calendar reaches them (a closing announced for one year is known only then). The crypto venue trades every day, so it has a row for any date from 2010-07-01 on, and the forex venue every day but Saturday, from 1970-01-01 on (a Saturday row is closed), trading from Sunday 17:00 to Friday 17:30 New York time. The index venue is open every day from 1900-01-01 through about a month ahead, with the UTC day as its session: each index trades on its own market's days, and has a bar only where its market traded. The bond venue is open every weekday from 2000-01-01 through about a month ahead, with the UTC day as its session, and closed on weekends; a bond has a bar only on the days it traded. A date that no requested exchange calendar covers returns 422 naming their range; a requested exchange whose calendar alone does not reach the date has no row and is named in meta.errors by its exchange_mic. GET /v1/datasets/calendar/coverage gives each calendar's first and last date as history_from and history_to (history_to is null only for CRYPTO and FOREX, which trade continuously). Requires calendar.read and an entitled market. An empty data array is a successful result.",
                "x-credit-cost": "5 credits per request.",
                "x-availability": "available",
                "x-example-query": {
                    "exchanges": [
                        "XNAS"
                    ],
                    "date": "2026-09-25"
                }
            }
        },
        "/v1/exports": {
            "post": {
                "operationId": "create_export",
                "x-required-capability": "bulk.download",
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "oneOf": [
                                    {
                                        "oneOf": [
                                            {
                                                "type": "object",
                                                "required": [
                                                    "endpoint",
                                                    "parameters"
                                                ],
                                                "additionalProperties": false,
                                                "properties": {
                                                    "endpoint": {
                                                        "type": "string",
                                                        "const": "quotes"
                                                    },
                                                    "parameters": {
                                                        "type": "object",
                                                        "required": [],
                                                        "additionalProperties": false,
                                                        "properties": {
                                                            "symbols": {
                                                                "oneOf": [
                                                                    {
                                                                        "type": "array",
                                                                        "minItems": 1,
                                                                        "maxItems": 100,
                                                                        "uniqueItems": true,
                                                                        "items": {
                                                                            "type": "string",
                                                                            "pattern": "^(?:(?:[A-Za-z0-9]{4}|[Cc][Rr][Yy][Pp][Tt][Oo]|[Ff][Oo][Rr][Ee][Xx]|[Ii][Nn][Dd][Ee][Xx]):|\\^)?[A-Za-z0-9][A-Za-z0-9./_^= -]{0,63}$"
                                                                        }
                                                                    },
                                                                    {
                                                                        "type": "string",
                                                                        "description": "Comma-separated list."
                                                                    }
                                                                ],
                                                                "description": "Comma-separated MIC:TICKER symbols (crypto pairs are CRYPTO:BTC-USD, currency pairs FOREX:EUR-USD, indices INDEX:GSPC, bonds BOND and the ISIN, such as BOND:US00037BAF94) or bare tickers, which resolve to the exchange listing that ticker; neither part is case-sensitive, and two spellings of one listing count as a repeated value. A bare ticker that names no listing as written is also read in the common vendor spellings: with an exchange suffix (RY.TO, SHEL.L, VOD.LSE, BHP.AX), ^GSPC for INDEX:GSPC, and EURUSD=X or EURUSD for FOREX:EUR-USD. At most 100, further limited by the effective plan and key scope. A symbol names the listing recorded under it at symbol_at; at a date before any ticker is recorded for a listing, the earliest ticker recorded for it selects it as well (see symbol_at). Supply symbols or instrument_ids."
                                                            },
                                                            "instrument_ids": {
                                                                "oneOf": [
                                                                    {
                                                                        "type": "array",
                                                                        "minItems": 1,
                                                                        "maxItems": 100,
                                                                        "uniqueItems": true,
                                                                        "items": {
                                                                            "type": "string",
                                                                            "minLength": 1,
                                                                            "maxLength": 128,
                                                                            "pattern": "^[A-Za-z0-9][A-Za-z0-9_.:-]{0,127}$"
                                                                        }
                                                                    },
                                                                    {
                                                                        "type": "string",
                                                                        "description": "Comma-separated list."
                                                                    }
                                                                ],
                                                                "description": "Comma-separated stable instrument IDs (the instrument_id of each row, and of the research endpoints) instead of symbols; each selects its listing at any date, including history from before its earliest recorded ticker and listings that no longer trade. Rows carry the symbol the listing had at symbol_at, or where it had none then, its symbol at as_of, else the last one it carried by as_of, else its first. At most 100. Cannot be combined with symbols."
                                                            },
                                                            "symbol_at": {
                                                                "type": "string",
                                                                "format": "date",
                                                                "description": "Resolve symbols as they were assigned at the end of this UTC date (YYYY-MM-DD); defaults to as_of. Only listings the security master holds resolve: it was built in September 2026 and records delistings from then on, so most issuers delisted earlier, such as TWTR or SIVB, resolve at no date. A ticker names the listing that carries it at symbol_at, and every row of a from/to range carries that symbol, rows from before the listing took the ticker included: a ticker reused after its earlier holder delisted returns the new holder's older rows, so set symbol_at inside the range to name the listing that traded under the ticker then. Tickers are recorded only where there is evidence for them (for many listings from 2003, though prices start earlier), and none is asserted earlier. As a lookup convenience, a date before a listing's earliest recorded ticker still finds the listing by that ticker when no record contradicts it (no listing is recorded under the ticker by that date, and the listing has no earlier ticker): its rows carry the symbol as a label and meta.unrecorded_symbols lists it. A date before the listing's first row returns 200 with no-data, as a to before it does. A ticker another listing held, or one the listing was renamed from or to, returns 404 naming the date and the listing; instrument_ids select a listing at any date."
                                                            },
                                                            "as_of": {
                                                                "type": "string",
                                                                "format": "date",
                                                                "description": "Knowledge cutoff as a UTC date (YYYY-MM-DD): the response reflects what was known by the end of that day. Defaults to now; cannot be in the future. A date from before the dataset's knowledge history returns 422 point-in-time-unavailable naming the earliest one, which GET /v1/datasets lists as earliest_as_of."
                                                            }
                                                        }
                                                    }
                                                }
                                            },
                                            {
                                                "type": "object",
                                                "required": [
                                                    "endpoint",
                                                    "parameters"
                                                ],
                                                "additionalProperties": false,
                                                "properties": {
                                                    "endpoint": {
                                                        "type": "string",
                                                        "const": "eod"
                                                    },
                                                    "parameters": {
                                                        "type": "object",
                                                        "required": [],
                                                        "additionalProperties": false,
                                                        "properties": {
                                                            "symbols": {
                                                                "oneOf": [
                                                                    {
                                                                        "type": "array",
                                                                        "minItems": 1,
                                                                        "maxItems": 100,
                                                                        "uniqueItems": true,
                                                                        "items": {
                                                                            "type": "string",
                                                                            "pattern": "^(?:(?:[A-Za-z0-9]{4}|[Cc][Rr][Yy][Pp][Tt][Oo]|[Ff][Oo][Rr][Ee][Xx]|[Ii][Nn][Dd][Ee][Xx]):|\\^)?[A-Za-z0-9][A-Za-z0-9./_^= -]{0,63}$"
                                                                        }
                                                                    },
                                                                    {
                                                                        "type": "string",
                                                                        "description": "Comma-separated list."
                                                                    }
                                                                ],
                                                                "description": "Comma-separated MIC:TICKER symbols (crypto pairs are CRYPTO:BTC-USD, currency pairs FOREX:EUR-USD, indices INDEX:GSPC, bonds BOND and the ISIN, such as BOND:US00037BAF94) or bare tickers, which resolve to the exchange listing that ticker; neither part is case-sensitive, and two spellings of one listing count as a repeated value. A bare ticker that names no listing as written is also read in the common vendor spellings: with an exchange suffix (RY.TO, SHEL.L, VOD.LSE, BHP.AX), ^GSPC for INDEX:GSPC, and EURUSD=X or EURUSD for FOREX:EUR-USD. At most 100, further limited by the effective plan and key scope. A symbol names the listing recorded under it at symbol_at; at a date before any ticker is recorded for a listing, the earliest ticker recorded for it selects it as well (see symbol_at). Supply symbols or instrument_ids, except with date, where omitting both selects every entitled listing."
                                                            },
                                                            "instrument_ids": {
                                                                "oneOf": [
                                                                    {
                                                                        "type": "array",
                                                                        "minItems": 1,
                                                                        "maxItems": 100,
                                                                        "uniqueItems": true,
                                                                        "items": {
                                                                            "type": "string",
                                                                            "minLength": 1,
                                                                            "maxLength": 128,
                                                                            "pattern": "^[A-Za-z0-9][A-Za-z0-9_.:-]{0,127}$"
                                                                        }
                                                                    },
                                                                    {
                                                                        "type": "string",
                                                                        "description": "Comma-separated list."
                                                                    }
                                                                ],
                                                                "description": "Comma-separated stable instrument IDs (the instrument_id of each row, and of the research endpoints) instead of symbols; each selects its listing at any date, including history from before its earliest recorded ticker and listings that no longer trade. Rows carry the symbol the listing had at symbol_at, or where it had none then, its symbol at as_of, else the last one it carried by as_of, else its first. At most 100. Cannot be combined with symbols."
                                                            },
                                                            "symbol_at": {
                                                                "type": "string",
                                                                "format": "date",
                                                                "description": "Resolve symbols as they were assigned at the end of this UTC date (YYYY-MM-DD); defaults to as_of. Only listings the security master holds resolve: it was built in September 2026 and records delistings from then on, so most issuers delisted earlier, such as TWTR or SIVB, resolve at no date. With date it defaults to that date when earlier, so listings carry the symbols they traded under that day. A ticker names the listing that carries it at symbol_at, and every row of a from/to range carries that symbol, rows from before the listing took the ticker included: a ticker reused after its earlier holder delisted returns the new holder's older rows, so set symbol_at inside the range to name the listing that traded under the ticker then. Tickers are recorded only where there is evidence for them (for many listings from 2003, though prices start earlier), and none is asserted earlier. As a lookup convenience, a date before a listing's earliest recorded ticker still finds the listing by that ticker when no record contradicts it (no listing is recorded under the ticker by that date, and the listing has no earlier ticker): its rows carry the symbol as a label and meta.unrecorded_symbols lists it. A date before the listing's first row returns 200 with no-data, as a to before it does. A ticker another listing held, or one the listing was renamed from or to, returns 404 naming the date and the listing; instrument_ids select a listing at any date."
                                                            },
                                                            "as_of": {
                                                                "type": "string",
                                                                "format": "date",
                                                                "description": "Knowledge cutoff as a UTC date (YYYY-MM-DD): the response reflects what was known by the end of that day. Defaults to now; cannot be in the future. A date from before the dataset's knowledge history returns 422 point-in-time-unavailable naming the earliest one, which GET /v1/datasets lists as earliest_as_of."
                                                            },
                                                            "adjustment": {
                                                                "type": "string",
                                                                "enum": [
                                                                    "raw",
                                                                    "split",
                                                                    "total_return"
                                                                ],
                                                                "default": "raw",
                                                                "description": "raw (default) serves prices and volume as traded. split restates bars before each later split to the current share basis: prices are multiplied by old over new shares, as the exact fraction, and rounded half up to 6 decimal places, and volume is multiplied by new over old shares and rounded half up to whole shares. total_return also multiplies prices by the dividend factors of later cash dividends, to the same 6 places. Adjusted bars carry adjustment and factor_set_version. Listings whose corporate actions are not collected (crypto and currency pairs, OTC) return 422 adjustment-unsupported for anything but raw, as do indices, whose levels already reflect their members' corporate actions, and bonds. Each mode needs its own validated factor set, else 503 adjustments-unavailable: split never waits on a dividend, while total_return is unavailable for a dividend it cannot value (one detaching on the day of a split, or not below that close) and, for rows before a dividend that just detached, until that close is in."
                                                            },
                                                            "date": {
                                                                "type": "string",
                                                                "format": "date",
                                                                "description": "One exchange-local trading date (YYYY-MM-DD) instead of from and to: returns one bar per listing that traded that day, in symbol order. Without symbols or instrument_ids it covers every listing in the entitled markets. Raw prices only; cannot be combined with from, to or adjustment other than raw."
                                                            },
                                                            "exchanges": {
                                                                "oneOf": [
                                                                    {
                                                                        "type": "array",
                                                                        "minItems": 1,
                                                                        "maxItems": 100,
                                                                        "uniqueItems": true,
                                                                        "items": {
                                                                            "type": "string",
                                                                            "pattern": "^(?:[A-Z0-9]{4}|CRYPTO|FOREX|INDEX)$"
                                                                        }
                                                                    },
                                                                    {
                                                                        "type": "string",
                                                                        "description": "Comma-separated list."
                                                                    }
                                                                ],
                                                                "description": "Comma-separated ISO MIC codes, at most 100, that limit a whole-market date query; requires date without symbols or instrument_ids. Defaults to all entitled exchanges. A malformed or repeated code returns 422 invalid-exchanges, a MIC the API does not serve 404 exchange-not-found, and one outside the key's markets 403 market-not-entitled."
                                                            },
                                                            "from": {
                                                                "type": "string",
                                                                "format": "date",
                                                                "description": "First exchange-local trading date to include (YYYY-MM-DD)."
                                                            },
                                                            "to": {
                                                                "type": "string",
                                                                "format": "date",
                                                                "description": "Last exchange-local trading date to include (YYYY-MM-DD); on or after from, so from equal to to selects one session."
                                                            },
                                                            "order": {
                                                                "type": "string",
                                                                "enum": [
                                                                    "asc",
                                                                    "desc"
                                                                ],
                                                                "default": "desc",
                                                                "description": "Direction on date, or on the symbol in a date query, desc (default, newest first) or asc; a date query defaults to asc; ties keep their internal order in the same direction. The cursor is bound to it."
                                                            }
                                                        }
                                                    }
                                                }
                                            },
                                            {
                                                "type": "object",
                                                "required": [
                                                    "endpoint",
                                                    "parameters"
                                                ],
                                                "additionalProperties": false,
                                                "properties": {
                                                    "endpoint": {
                                                        "type": "string",
                                                        "const": "intraday"
                                                    },
                                                    "parameters": {
                                                        "type": "object",
                                                        "required": [
                                                            "interval",
                                                            "session"
                                                        ],
                                                        "additionalProperties": false,
                                                        "properties": {
                                                            "symbols": {
                                                                "oneOf": [
                                                                    {
                                                                        "type": "array",
                                                                        "minItems": 1,
                                                                        "maxItems": 100,
                                                                        "uniqueItems": true,
                                                                        "items": {
                                                                            "type": "string",
                                                                            "pattern": "^(?:(?:[A-Za-z0-9]{4}|[Cc][Rr][Yy][Pp][Tt][Oo]|[Ff][Oo][Rr][Ee][Xx]|[Ii][Nn][Dd][Ee][Xx]):|\\^)?[A-Za-z0-9][A-Za-z0-9./_^= -]{0,63}$"
                                                                        }
                                                                    },
                                                                    {
                                                                        "type": "string",
                                                                        "description": "Comma-separated list."
                                                                    }
                                                                ],
                                                                "description": "Comma-separated MIC:TICKER symbols (crypto pairs are CRYPTO:BTC-USD, currency pairs FOREX:EUR-USD, indices INDEX:GSPC, bonds BOND and the ISIN, such as BOND:US00037BAF94) or bare tickers, which resolve to the exchange listing that ticker; neither part is case-sensitive, and two spellings of one listing count as a repeated value. A bare ticker that names no listing as written is also read in the common vendor spellings: with an exchange suffix (RY.TO, SHEL.L, VOD.LSE, BHP.AX), ^GSPC for INDEX:GSPC, and EURUSD=X or EURUSD for FOREX:EUR-USD. At most 100, further limited by the effective plan and key scope. A symbol names the listing recorded under it at symbol_at; at a date before any ticker is recorded for a listing, the earliest ticker recorded for it selects it as well (see symbol_at). Supply symbols or instrument_ids."
                                                            },
                                                            "instrument_ids": {
                                                                "oneOf": [
                                                                    {
                                                                        "type": "array",
                                                                        "minItems": 1,
                                                                        "maxItems": 100,
                                                                        "uniqueItems": true,
                                                                        "items": {
                                                                            "type": "string",
                                                                            "minLength": 1,
                                                                            "maxLength": 128,
                                                                            "pattern": "^[A-Za-z0-9][A-Za-z0-9_.:-]{0,127}$"
                                                                        }
                                                                    },
                                                                    {
                                                                        "type": "string",
                                                                        "description": "Comma-separated list."
                                                                    }
                                                                ],
                                                                "description": "Comma-separated stable instrument IDs (the instrument_id of each row, and of the research endpoints) instead of symbols; each selects its listing at any date, including history from before its earliest recorded ticker and listings that no longer trade. Rows carry the symbol the listing had at symbol_at, or where it had none then, its symbol at as_of, else the last one it carried by as_of, else its first. At most 100. Cannot be combined with symbols."
                                                            },
                                                            "symbol_at": {
                                                                "type": "string",
                                                                "format": "date",
                                                                "description": "Resolve symbols as they were assigned at the end of this UTC date (YYYY-MM-DD); defaults to as_of. Only listings the security master holds resolve: it was built in September 2026 and records delistings from then on, so most issuers delisted earlier, such as TWTR or SIVB, resolve at no date. A ticker names the listing that carries it at symbol_at, and every row of a from/to range carries that symbol, rows from before the listing took the ticker included: a ticker reused after its earlier holder delisted returns the new holder's older rows, so set symbol_at inside the range to name the listing that traded under the ticker then. Tickers are recorded only where there is evidence for them (for many listings from 2003, though prices start earlier), and none is asserted earlier. As a lookup convenience, a date before a listing's earliest recorded ticker still finds the listing by that ticker when no record contradicts it (no listing is recorded under the ticker by that date, and the listing has no earlier ticker): its rows carry the symbol as a label and meta.unrecorded_symbols lists it. A date before the listing's first row returns 200 with no-data, as a to before it does. A ticker another listing held, or one the listing was renamed from or to, returns 404 naming the date and the listing; instrument_ids select a listing at any date."
                                                            },
                                                            "as_of": {
                                                                "type": "string",
                                                                "format": "date",
                                                                "description": "Knowledge cutoff as a UTC date (YYYY-MM-DD): the response reflects what was known by the end of that day. Defaults to now; cannot be in the future. A date from before the dataset's knowledge history returns 422 point-in-time-unavailable naming the earliest one, which GET /v1/datasets lists as earliest_as_of."
                                                            },
                                                            "adjustment": {
                                                                "type": "string",
                                                                "enum": [
                                                                    "raw",
                                                                    "split",
                                                                    "total_return"
                                                                ],
                                                                "default": "raw",
                                                                "description": "raw (default) serves prices and volume as traded. split restates bars before each later split to the current share basis: prices are multiplied by old over new shares, as the exact fraction, and rounded half up to 6 decimal places, and volume is multiplied by new over old shares and rounded half up to whole shares. total_return also multiplies prices by the dividend factors of later cash dividends, to the same 6 places. Adjusted bars carry adjustment and factor_set_version. Listings whose corporate actions are not collected (crypto and currency pairs, OTC) return 422 adjustment-unsupported for anything but raw, as do indices, whose levels already reflect their members' corporate actions, and bonds. Each mode needs its own validated factor set, else 503 adjustments-unavailable: split never waits on a dividend, while total_return is unavailable for a dividend it cannot value (one detaching on the day of a split, or not below that close) and, for rows before a dividend that just detached, until that close is in."
                                                            },
                                                            "from": {
                                                                "type": "string",
                                                                "format": "date",
                                                                "description": "First exchange-local trading date (YYYY-MM-DD) whose bars to include, from that exchange's midnight."
                                                            },
                                                            "to": {
                                                                "type": "string",
                                                                "format": "date",
                                                                "description": "Last exchange-local trading date (YYYY-MM-DD) whose bars to include, through that exchange's midnight; on or after from, so from equal to to selects one day."
                                                            },
                                                            "order": {
                                                                "type": "string",
                                                                "enum": [
                                                                    "asc",
                                                                    "desc"
                                                                ],
                                                                "default": "desc",
                                                                "description": "Direction on datetime, desc (default, newest first) or asc; ties keep their internal order in the same direction. The cursor is bound to it."
                                                            },
                                                            "interval": {
                                                                "type": "string",
                                                                "enum": [
                                                                    "1m",
                                                                    "5m",
                                                                    "1h"
                                                                ],
                                                                "description": "Required, with session; a request without either returns 422 interval-required. Bar length. Exchange listings are collected as five-minute bars, so they serve 5m and 1h (rolled up from 5m); 1m is served only by listings collected at one minute, which today are crypto and currency pairs, and returns 422 unsupported-interval for the others."
                                                            },
                                                            "session": {
                                                                "type": "string",
                                                                "enum": [
                                                                    "regular",
                                                                    "all"
                                                                ],
                                                                "description": "Required, with interval; a request without either returns 422 interval-required. regular selects the regular trading session, the only one collected for exchange listings: there are no pre-market or after-hours bars. all is every session of a continuous market: a crypto or currency pair trades in one session a UTC day, so it selects the same bars as regular there, and returns 422 unsupported-session for exchange listings."
                                                            }
                                                        }
                                                    }
                                                }
                                            },
                                            {
                                                "type": "object",
                                                "required": [
                                                    "endpoint",
                                                    "parameters"
                                                ],
                                                "additionalProperties": false,
                                                "properties": {
                                                    "endpoint": {
                                                        "type": "string",
                                                        "const": "financials/facts"
                                                    },
                                                    "parameters": {
                                                        "type": "object",
                                                        "required": [],
                                                        "additionalProperties": false,
                                                        "properties": {
                                                            "symbols": {
                                                                "oneOf": [
                                                                    {
                                                                        "type": "array",
                                                                        "minItems": 1,
                                                                        "maxItems": 100,
                                                                        "uniqueItems": true,
                                                                        "items": {
                                                                            "type": "string",
                                                                            "pattern": "^(?:(?:[A-Za-z0-9]{4}|[Cc][Rr][Yy][Pp][Tt][Oo]|[Ff][Oo][Rr][Ee][Xx]|[Ii][Nn][Dd][Ee][Xx]):|\\^)?[A-Za-z0-9][A-Za-z0-9./_^= -]{0,63}$"
                                                                        }
                                                                    },
                                                                    {
                                                                        "type": "string",
                                                                        "description": "Comma-separated list."
                                                                    }
                                                                ],
                                                                "description": "Comma-separated MIC:TICKER symbols (crypto pairs are CRYPTO:BTC-USD, currency pairs FOREX:EUR-USD, indices INDEX:GSPC, bonds BOND and the ISIN, such as BOND:US00037BAF94) or bare tickers, which resolve to the exchange listing that ticker; neither part is case-sensitive, and two spellings of one listing count as a repeated value. A bare ticker that names no listing as written is also read in the common vendor spellings: with an exchange suffix (RY.TO, SHEL.L, VOD.LSE, BHP.AX), ^GSPC for INDEX:GSPC, and EURUSD=X or EURUSD for FOREX:EUR-USD. At most 100, further limited by the effective plan and key scope. A symbol names the listing recorded under it at symbol_at; at a date before any ticker is recorded for a listing, the earliest ticker recorded for it selects it as well (see symbol_at). Supply symbols or instrument_ids."
                                                            },
                                                            "instrument_ids": {
                                                                "oneOf": [
                                                                    {
                                                                        "type": "array",
                                                                        "minItems": 1,
                                                                        "maxItems": 100,
                                                                        "uniqueItems": true,
                                                                        "items": {
                                                                            "type": "string",
                                                                            "minLength": 1,
                                                                            "maxLength": 128,
                                                                            "pattern": "^[A-Za-z0-9][A-Za-z0-9_.:-]{0,127}$"
                                                                        }
                                                                    },
                                                                    {
                                                                        "type": "string",
                                                                        "description": "Comma-separated list."
                                                                    }
                                                                ],
                                                                "description": "Comma-separated stable instrument IDs (the instrument_id of each row, and of the research endpoints) instead of symbols; each selects its listing at any date, including history from before its earliest recorded ticker and listings that no longer trade. Rows carry the symbol the listing had at symbol_at, or where it had none then, its symbol at as_of, else the last one it carried by as_of, else its first. At most 100. Cannot be combined with symbols."
                                                            },
                                                            "symbol_at": {
                                                                "type": "string",
                                                                "format": "date",
                                                                "description": "Resolve symbols as they were assigned at the end of this UTC date (YYYY-MM-DD); defaults to as_of. Only listings the security master holds resolve: it was built in September 2026 and records delistings from then on, so most issuers delisted earlier, such as TWTR or SIVB, resolve at no date. A ticker names the listing that carries it at symbol_at, and every row of a from/to range carries that symbol, rows from before the listing took the ticker included: a ticker reused after its earlier holder delisted returns the new holder's older rows, so set symbol_at inside the range to name the listing that traded under the ticker then. Tickers are recorded only where there is evidence for them (for many listings from 2003, though prices start earlier), and none is asserted earlier. As a lookup convenience, a date before a listing's earliest recorded ticker still finds the listing by that ticker when no record contradicts it (no listing is recorded under the ticker by that date, and the listing has no earlier ticker): its rows carry the symbol as a label and meta.unrecorded_symbols lists it. A date before the listing's first row returns 200 with no-data, as a to before it does. A ticker another listing held, or one the listing was renamed from or to, returns 404 naming the date and the listing; instrument_ids select a listing at any date."
                                                            },
                                                            "as_of": {
                                                                "type": "string",
                                                                "format": "date",
                                                                "description": "Knowledge cutoff as a UTC date (YYYY-MM-DD): the response reflects what was known by the end of that day. Defaults to now; cannot be in the future. A date from before the dataset's knowledge history returns 422 point-in-time-unavailable naming the earliest one, which GET /v1/datasets lists as earliest_as_of."
                                                            },
                                                            "from": {
                                                                "type": "string",
                                                                "format": "date",
                                                                "description": "First fiscal_end to include (YYYY-MM-DD)."
                                                            },
                                                            "to": {
                                                                "type": "string",
                                                                "format": "date",
                                                                "description": "Last fiscal_end to include (YYYY-MM-DD); on or after from, so from equal to to selects one day."
                                                            },
                                                            "known_from": {
                                                                "type": "string",
                                                                "format": "date",
                                                                "description": "First UTC date (YYYY-MM-DD, inclusive) on which a revision became known. Filters eligible revisions; not a change feed or deletion log."
                                                            },
                                                            "known_to": {
                                                                "type": "string",
                                                                "format": "date",
                                                                "description": "Last UTC date (YYYY-MM-DD, inclusive) on which a revision became known; on or after known_from."
                                                            },
                                                            "order": {
                                                                "type": "string",
                                                                "enum": [
                                                                    "asc",
                                                                    "desc"
                                                                ],
                                                                "default": "asc",
                                                                "description": "Direction on fiscal_end, asc (default) or desc; ties keep their internal order in the same direction. The cursor is bound to it."
                                                            },
                                                            "concepts": {
                                                                "oneOf": [
                                                                    {
                                                                        "type": "array",
                                                                        "minItems": 1,
                                                                        "maxItems": 100,
                                                                        "uniqueItems": true,
                                                                        "items": {
                                                                            "type": "string",
                                                                            "minLength": 1,
                                                                            "maxLength": 256
                                                                        }
                                                                    },
                                                                    {
                                                                        "type": "string",
                                                                        "description": "Comma-separated list."
                                                                    }
                                                                ],
                                                                "description": "Exact source taxonomy concept names."
                                                            },
                                                            "taxonomy": {
                                                                "type": "string",
                                                                "minLength": 1,
                                                                "maxLength": 256,
                                                                "description": "Exact source taxonomy namespace."
                                                            }
                                                        }
                                                    }
                                                }
                                            },
                                            {
                                                "type": "object",
                                                "required": [
                                                    "endpoint",
                                                    "parameters"
                                                ],
                                                "additionalProperties": false,
                                                "properties": {
                                                    "endpoint": {
                                                        "type": "string",
                                                        "const": "corporate-actions"
                                                    },
                                                    "parameters": {
                                                        "type": "object",
                                                        "required": [],
                                                        "additionalProperties": false,
                                                        "properties": {
                                                            "symbols": {
                                                                "oneOf": [
                                                                    {
                                                                        "type": "array",
                                                                        "minItems": 1,
                                                                        "maxItems": 100,
                                                                        "uniqueItems": true,
                                                                        "items": {
                                                                            "type": "string",
                                                                            "pattern": "^(?:(?:[A-Za-z0-9]{4}|[Cc][Rr][Yy][Pp][Tt][Oo]|[Ff][Oo][Rr][Ee][Xx]|[Ii][Nn][Dd][Ee][Xx]):|\\^)?[A-Za-z0-9][A-Za-z0-9./_^= -]{0,63}$"
                                                                        }
                                                                    },
                                                                    {
                                                                        "type": "string",
                                                                        "description": "Comma-separated list."
                                                                    }
                                                                ],
                                                                "description": "Comma-separated MIC:TICKER symbols (crypto pairs are CRYPTO:BTC-USD, currency pairs FOREX:EUR-USD, indices INDEX:GSPC, bonds BOND and the ISIN, such as BOND:US00037BAF94) or bare tickers, which resolve to the exchange listing that ticker; neither part is case-sensitive, and two spellings of one listing count as a repeated value. A bare ticker that names no listing as written is also read in the common vendor spellings: with an exchange suffix (RY.TO, SHEL.L, VOD.LSE, BHP.AX), ^GSPC for INDEX:GSPC, and EURUSD=X or EURUSD for FOREX:EUR-USD. At most 100, further limited by the effective plan and key scope. A symbol names the listing recorded under it at symbol_at; at a date before any ticker is recorded for a listing, the earliest ticker recorded for it selects it as well (see symbol_at). Supply symbols or instrument_ids, or omit both for a market-wide request, which from and to must bound."
                                                            },
                                                            "instrument_ids": {
                                                                "oneOf": [
                                                                    {
                                                                        "type": "array",
                                                                        "minItems": 1,
                                                                        "maxItems": 100,
                                                                        "uniqueItems": true,
                                                                        "items": {
                                                                            "type": "string",
                                                                            "minLength": 1,
                                                                            "maxLength": 128,
                                                                            "pattern": "^[A-Za-z0-9][A-Za-z0-9_.:-]{0,127}$"
                                                                        }
                                                                    },
                                                                    {
                                                                        "type": "string",
                                                                        "description": "Comma-separated list."
                                                                    }
                                                                ],
                                                                "description": "Comma-separated stable instrument IDs (the instrument_id of each row, and of the research endpoints) instead of symbols; each selects its listing at any date, including history from before its earliest recorded ticker and listings that no longer trade. Rows carry the symbol the listing had at symbol_at, or where it had none then, its symbol at as_of, else the last one it carried by as_of, else its first. At most 100. Cannot be combined with symbols."
                                                            },
                                                            "exchanges": {
                                                                "oneOf": [
                                                                    {
                                                                        "type": "array",
                                                                        "minItems": 1,
                                                                        "maxItems": 100,
                                                                        "uniqueItems": true,
                                                                        "items": {
                                                                            "type": "string",
                                                                            "pattern": "^(?:[A-Z0-9]{4}|CRYPTO|FOREX|INDEX)$"
                                                                        }
                                                                    },
                                                                    {
                                                                        "type": "string",
                                                                        "description": "Comma-separated list."
                                                                    }
                                                                ],
                                                                "description": "Market-wide requests only (no symbols or instrument_ids): comma-separated ISO MIC codes, at most 100. Defaults to every exchange of the entitled markets. A malformed or repeated code returns 422 invalid-exchanges, a MIC the API does not serve 404 exchange-not-found, and one outside the key's markets 403 market-not-entitled."
                                                            },
                                                            "symbol_at": {
                                                                "type": "string",
                                                                "format": "date",
                                                                "description": "Resolve symbols as they were assigned at the end of this UTC date (YYYY-MM-DD); defaults to as_of. Only listings the security master holds resolve: it was built in September 2026 and records delistings from then on, so most issuers delisted earlier, such as TWTR or SIVB, resolve at no date. A ticker names the listing that carries it at symbol_at, and every row of a from/to range carries that symbol, rows from before the listing took the ticker included: a ticker reused after its earlier holder delisted returns the new holder's older rows, so set symbol_at inside the range to name the listing that traded under the ticker then. Tickers are recorded only where there is evidence for them (for many listings from 2003, though prices start earlier), and none is asserted earlier. As a lookup convenience, a date before a listing's earliest recorded ticker still finds the listing by that ticker when no record contradicts it (no listing is recorded under the ticker by that date, and the listing has no earlier ticker): its rows carry the symbol as a label and meta.unrecorded_symbols lists it. A date before the listing's first row returns 200 with no-data, as a to before it does. A ticker another listing held, or one the listing was renamed from or to, returns 404 naming the date and the listing; instrument_ids select a listing at any date."
                                                            },
                                                            "as_of": {
                                                                "type": "string",
                                                                "format": "date",
                                                                "description": "Knowledge cutoff as a UTC date (YYYY-MM-DD): the response reflects what was known by the end of that day. Defaults to now; cannot be in the future. A date from before the dataset's knowledge history returns 422 point-in-time-unavailable naming the earliest one, which GET /v1/datasets lists as earliest_as_of."
                                                            },
                                                            "from": {
                                                                "type": "string",
                                                                "format": "date",
                                                                "description": "First ex_date to include (YYYY-MM-DD). Required without symbols or instrument_ids."
                                                            },
                                                            "to": {
                                                                "type": "string",
                                                                "format": "date",
                                                                "description": "Last ex_date to include (YYYY-MM-DD); on or after from, so from equal to to selects one day. Required without symbols or instrument_ids, at most 365 days after from."
                                                            },
                                                            "known_from": {
                                                                "type": "string",
                                                                "format": "date",
                                                                "description": "First UTC date (YYYY-MM-DD, inclusive) on which a revision became known. Filters eligible revisions; not a change feed or deletion log."
                                                            },
                                                            "known_to": {
                                                                "type": "string",
                                                                "format": "date",
                                                                "description": "Last UTC date (YYYY-MM-DD, inclusive) on which a revision became known; on or after known_from."
                                                            },
                                                            "order": {
                                                                "type": "string",
                                                                "enum": [
                                                                    "asc",
                                                                    "desc"
                                                                ],
                                                                "default": "asc",
                                                                "description": "Direction on ex_date, asc (default) or desc; ties keep their internal order in the same direction. The cursor is bound to it."
                                                            },
                                                            "types": {
                                                                "oneOf": [
                                                                    {
                                                                        "type": "array",
                                                                        "minItems": 1,
                                                                        "maxItems": 100,
                                                                        "uniqueItems": true,
                                                                        "items": {
                                                                            "type": "string",
                                                                            "minLength": 1,
                                                                            "maxLength": 256
                                                                        }
                                                                    },
                                                                    {
                                                                        "type": "string",
                                                                        "description": "Comma-separated list."
                                                                    }
                                                                ],
                                                                "description": "Corporate-action type codes: cash_dividend or split. Any other code is accepted and matches no action."
                                                            },
                                                            "effective_from": {
                                                                "type": "string",
                                                                "format": "date",
                                                                "description": "First UTC date (YYYY-MM-DD, inclusive) of effective_at. No current source states effective_at, so this filter matches no action today; bound ex_date with from and to instead."
                                                            },
                                                            "effective_to": {
                                                                "type": "string",
                                                                "format": "date",
                                                                "description": "Last UTC date (YYYY-MM-DD, inclusive) of effective_at; on or after effective_from. No current source states effective_at, so this filter matches no action today; bound ex_date with from and to instead."
                                                            }
                                                        }
                                                    }
                                                }
                                            },
                                            {
                                                "type": "object",
                                                "required": [
                                                    "endpoint",
                                                    "parameters"
                                                ],
                                                "additionalProperties": false,
                                                "properties": {
                                                    "endpoint": {
                                                        "type": "string",
                                                        "const": "dividends"
                                                    },
                                                    "parameters": {
                                                        "type": "object",
                                                        "required": [],
                                                        "additionalProperties": false,
                                                        "properties": {
                                                            "symbols": {
                                                                "oneOf": [
                                                                    {
                                                                        "type": "array",
                                                                        "minItems": 1,
                                                                        "maxItems": 100,
                                                                        "uniqueItems": true,
                                                                        "items": {
                                                                            "type": "string",
                                                                            "pattern": "^(?:(?:[A-Za-z0-9]{4}|[Cc][Rr][Yy][Pp][Tt][Oo]|[Ff][Oo][Rr][Ee][Xx]|[Ii][Nn][Dd][Ee][Xx]):|\\^)?[A-Za-z0-9][A-Za-z0-9./_^= -]{0,63}$"
                                                                        }
                                                                    },
                                                                    {
                                                                        "type": "string",
                                                                        "description": "Comma-separated list."
                                                                    }
                                                                ],
                                                                "description": "Comma-separated MIC:TICKER symbols (crypto pairs are CRYPTO:BTC-USD, currency pairs FOREX:EUR-USD, indices INDEX:GSPC, bonds BOND and the ISIN, such as BOND:US00037BAF94) or bare tickers, which resolve to the exchange listing that ticker; neither part is case-sensitive, and two spellings of one listing count as a repeated value. A bare ticker that names no listing as written is also read in the common vendor spellings: with an exchange suffix (RY.TO, SHEL.L, VOD.LSE, BHP.AX), ^GSPC for INDEX:GSPC, and EURUSD=X or EURUSD for FOREX:EUR-USD. At most 100, further limited by the effective plan and key scope. A symbol names the listing recorded under it at symbol_at; at a date before any ticker is recorded for a listing, the earliest ticker recorded for it selects it as well (see symbol_at). Supply symbols or instrument_ids, or omit both for a market-wide request, which from and to must bound."
                                                            },
                                                            "instrument_ids": {
                                                                "oneOf": [
                                                                    {
                                                                        "type": "array",
                                                                        "minItems": 1,
                                                                        "maxItems": 100,
                                                                        "uniqueItems": true,
                                                                        "items": {
                                                                            "type": "string",
                                                                            "minLength": 1,
                                                                            "maxLength": 128,
                                                                            "pattern": "^[A-Za-z0-9][A-Za-z0-9_.:-]{0,127}$"
                                                                        }
                                                                    },
                                                                    {
                                                                        "type": "string",
                                                                        "description": "Comma-separated list."
                                                                    }
                                                                ],
                                                                "description": "Comma-separated stable instrument IDs (the instrument_id of each row, and of the research endpoints) instead of symbols; each selects its listing at any date, including history from before its earliest recorded ticker and listings that no longer trade. Rows carry the symbol the listing had at symbol_at, or where it had none then, its symbol at as_of, else the last one it carried by as_of, else its first. At most 100. Cannot be combined with symbols."
                                                            },
                                                            "exchanges": {
                                                                "oneOf": [
                                                                    {
                                                                        "type": "array",
                                                                        "minItems": 1,
                                                                        "maxItems": 100,
                                                                        "uniqueItems": true,
                                                                        "items": {
                                                                            "type": "string",
                                                                            "pattern": "^(?:[A-Z0-9]{4}|CRYPTO|FOREX|INDEX)$"
                                                                        }
                                                                    },
                                                                    {
                                                                        "type": "string",
                                                                        "description": "Comma-separated list."
                                                                    }
                                                                ],
                                                                "description": "Market-wide requests only (no symbols or instrument_ids): comma-separated ISO MIC codes, at most 100. Defaults to every exchange of the entitled markets. A malformed or repeated code returns 422 invalid-exchanges, a MIC the API does not serve 404 exchange-not-found, and one outside the key's markets 403 market-not-entitled."
                                                            },
                                                            "symbol_at": {
                                                                "type": "string",
                                                                "format": "date",
                                                                "description": "Resolve symbols as they were assigned at the end of this UTC date (YYYY-MM-DD); defaults to as_of. Only listings the security master holds resolve: it was built in September 2026 and records delistings from then on, so most issuers delisted earlier, such as TWTR or SIVB, resolve at no date. A ticker names the listing that carries it at symbol_at, and every row of a from/to range carries that symbol, rows from before the listing took the ticker included: a ticker reused after its earlier holder delisted returns the new holder's older rows, so set symbol_at inside the range to name the listing that traded under the ticker then. Tickers are recorded only where there is evidence for them (for many listings from 2003, though prices start earlier), and none is asserted earlier. As a lookup convenience, a date before a listing's earliest recorded ticker still finds the listing by that ticker when no record contradicts it (no listing is recorded under the ticker by that date, and the listing has no earlier ticker): its rows carry the symbol as a label and meta.unrecorded_symbols lists it. A date before the listing's first row returns 200 with no-data, as a to before it does. A ticker another listing held, or one the listing was renamed from or to, returns 404 naming the date and the listing; instrument_ids select a listing at any date."
                                                            },
                                                            "as_of": {
                                                                "type": "string",
                                                                "format": "date",
                                                                "description": "Knowledge cutoff as a UTC date (YYYY-MM-DD): the response reflects what was known by the end of that day. Defaults to now; cannot be in the future. A date from before the dataset's knowledge history returns 422 point-in-time-unavailable naming the earliest one, which GET /v1/datasets lists as earliest_as_of."
                                                            },
                                                            "from": {
                                                                "type": "string",
                                                                "format": "date",
                                                                "description": "First ex_date to include (YYYY-MM-DD). Required without symbols or instrument_ids."
                                                            },
                                                            "to": {
                                                                "type": "string",
                                                                "format": "date",
                                                                "description": "Last ex_date to include (YYYY-MM-DD); on or after from, so from equal to to selects one day. Required without symbols or instrument_ids, at most 365 days after from."
                                                            },
                                                            "known_from": {
                                                                "type": "string",
                                                                "format": "date",
                                                                "description": "First UTC date (YYYY-MM-DD, inclusive) on which a revision became known. Filters eligible revisions; not a change feed or deletion log."
                                                            },
                                                            "known_to": {
                                                                "type": "string",
                                                                "format": "date",
                                                                "description": "Last UTC date (YYYY-MM-DD, inclusive) on which a revision became known; on or after known_from."
                                                            },
                                                            "order": {
                                                                "type": "string",
                                                                "enum": [
                                                                    "asc",
                                                                    "desc"
                                                                ],
                                                                "default": "asc",
                                                                "description": "Direction on ex_date, asc (default) or desc; ties keep their internal order in the same direction. The cursor is bound to it."
                                                            },
                                                            "types": {
                                                                "oneOf": [
                                                                    {
                                                                        "type": "array",
                                                                        "minItems": 1,
                                                                        "maxItems": 100,
                                                                        "uniqueItems": true,
                                                                        "items": {
                                                                            "type": "string",
                                                                            "minLength": 1,
                                                                            "maxLength": 256
                                                                        }
                                                                    },
                                                                    {
                                                                        "type": "string",
                                                                        "description": "Comma-separated list."
                                                                    }
                                                                ],
                                                                "description": "Corporate-action type codes: cash_dividend or split. Any other code is accepted and matches no action."
                                                            },
                                                            "effective_from": {
                                                                "type": "string",
                                                                "format": "date",
                                                                "description": "First UTC date (YYYY-MM-DD, inclusive) of effective_at. No current source states effective_at, so this filter matches no action today; bound ex_date with from and to instead."
                                                            },
                                                            "effective_to": {
                                                                "type": "string",
                                                                "format": "date",
                                                                "description": "Last UTC date (YYYY-MM-DD, inclusive) of effective_at; on or after effective_from. No current source states effective_at, so this filter matches no action today; bound ex_date with from and to instead."
                                                            }
                                                        }
                                                    }
                                                }
                                            },
                                            {
                                                "type": "object",
                                                "required": [
                                                    "endpoint",
                                                    "parameters"
                                                ],
                                                "additionalProperties": false,
                                                "properties": {
                                                    "endpoint": {
                                                        "type": "string",
                                                        "const": "splits"
                                                    },
                                                    "parameters": {
                                                        "type": "object",
                                                        "required": [],
                                                        "additionalProperties": false,
                                                        "properties": {
                                                            "symbols": {
                                                                "oneOf": [
                                                                    {
                                                                        "type": "array",
                                                                        "minItems": 1,
                                                                        "maxItems": 100,
                                                                        "uniqueItems": true,
                                                                        "items": {
                                                                            "type": "string",
                                                                            "pattern": "^(?:(?:[A-Za-z0-9]{4}|[Cc][Rr][Yy][Pp][Tt][Oo]|[Ff][Oo][Rr][Ee][Xx]|[Ii][Nn][Dd][Ee][Xx]):|\\^)?[A-Za-z0-9][A-Za-z0-9./_^= -]{0,63}$"
                                                                        }
                                                                    },
                                                                    {
                                                                        "type": "string",
                                                                        "description": "Comma-separated list."
                                                                    }
                                                                ],
                                                                "description": "Comma-separated MIC:TICKER symbols (crypto pairs are CRYPTO:BTC-USD, currency pairs FOREX:EUR-USD, indices INDEX:GSPC, bonds BOND and the ISIN, such as BOND:US00037BAF94) or bare tickers, which resolve to the exchange listing that ticker; neither part is case-sensitive, and two spellings of one listing count as a repeated value. A bare ticker that names no listing as written is also read in the common vendor spellings: with an exchange suffix (RY.TO, SHEL.L, VOD.LSE, BHP.AX), ^GSPC for INDEX:GSPC, and EURUSD=X or EURUSD for FOREX:EUR-USD. At most 100, further limited by the effective plan and key scope. A symbol names the listing recorded under it at symbol_at; at a date before any ticker is recorded for a listing, the earliest ticker recorded for it selects it as well (see symbol_at). Supply symbols or instrument_ids, or omit both for a market-wide request, which from and to must bound."
                                                            },
                                                            "instrument_ids": {
                                                                "oneOf": [
                                                                    {
                                                                        "type": "array",
                                                                        "minItems": 1,
                                                                        "maxItems": 100,
                                                                        "uniqueItems": true,
                                                                        "items": {
                                                                            "type": "string",
                                                                            "minLength": 1,
                                                                            "maxLength": 128,
                                                                            "pattern": "^[A-Za-z0-9][A-Za-z0-9_.:-]{0,127}$"
                                                                        }
                                                                    },
                                                                    {
                                                                        "type": "string",
                                                                        "description": "Comma-separated list."
                                                                    }
                                                                ],
                                                                "description": "Comma-separated stable instrument IDs (the instrument_id of each row, and of the research endpoints) instead of symbols; each selects its listing at any date, including history from before its earliest recorded ticker and listings that no longer trade. Rows carry the symbol the listing had at symbol_at, or where it had none then, its symbol at as_of, else the last one it carried by as_of, else its first. At most 100. Cannot be combined with symbols."
                                                            },
                                                            "exchanges": {
                                                                "oneOf": [
                                                                    {
                                                                        "type": "array",
                                                                        "minItems": 1,
                                                                        "maxItems": 100,
                                                                        "uniqueItems": true,
                                                                        "items": {
                                                                            "type": "string",
                                                                            "pattern": "^(?:[A-Z0-9]{4}|CRYPTO|FOREX|INDEX)$"
                                                                        }
                                                                    },
                                                                    {
                                                                        "type": "string",
                                                                        "description": "Comma-separated list."
                                                                    }
                                                                ],
                                                                "description": "Market-wide requests only (no symbols or instrument_ids): comma-separated ISO MIC codes, at most 100. Defaults to every exchange of the entitled markets. A malformed or repeated code returns 422 invalid-exchanges, a MIC the API does not serve 404 exchange-not-found, and one outside the key's markets 403 market-not-entitled."
                                                            },
                                                            "symbol_at": {
                                                                "type": "string",
                                                                "format": "date",
                                                                "description": "Resolve symbols as they were assigned at the end of this UTC date (YYYY-MM-DD); defaults to as_of. Only listings the security master holds resolve: it was built in September 2026 and records delistings from then on, so most issuers delisted earlier, such as TWTR or SIVB, resolve at no date. A ticker names the listing that carries it at symbol_at, and every row of a from/to range carries that symbol, rows from before the listing took the ticker included: a ticker reused after its earlier holder delisted returns the new holder's older rows, so set symbol_at inside the range to name the listing that traded under the ticker then. Tickers are recorded only where there is evidence for them (for many listings from 2003, though prices start earlier), and none is asserted earlier. As a lookup convenience, a date before a listing's earliest recorded ticker still finds the listing by that ticker when no record contradicts it (no listing is recorded under the ticker by that date, and the listing has no earlier ticker): its rows carry the symbol as a label and meta.unrecorded_symbols lists it. A date before the listing's first row returns 200 with no-data, as a to before it does. A ticker another listing held, or one the listing was renamed from or to, returns 404 naming the date and the listing; instrument_ids select a listing at any date."
                                                            },
                                                            "as_of": {
                                                                "type": "string",
                                                                "format": "date",
                                                                "description": "Knowledge cutoff as a UTC date (YYYY-MM-DD): the response reflects what was known by the end of that day. Defaults to now; cannot be in the future. A date from before the dataset's knowledge history returns 422 point-in-time-unavailable naming the earliest one, which GET /v1/datasets lists as earliest_as_of."
                                                            },
                                                            "from": {
                                                                "type": "string",
                                                                "format": "date",
                                                                "description": "First execution_date to include (YYYY-MM-DD). Required without symbols or instrument_ids."
                                                            },
                                                            "to": {
                                                                "type": "string",
                                                                "format": "date",
                                                                "description": "Last execution_date to include (YYYY-MM-DD); on or after from, so from equal to to selects one day. Required without symbols or instrument_ids, at most 365 days after from."
                                                            },
                                                            "known_from": {
                                                                "type": "string",
                                                                "format": "date",
                                                                "description": "First UTC date (YYYY-MM-DD, inclusive) on which a revision became known. Filters eligible revisions; not a change feed or deletion log."
                                                            },
                                                            "known_to": {
                                                                "type": "string",
                                                                "format": "date",
                                                                "description": "Last UTC date (YYYY-MM-DD, inclusive) on which a revision became known; on or after known_from."
                                                            },
                                                            "order": {
                                                                "type": "string",
                                                                "enum": [
                                                                    "asc",
                                                                    "desc"
                                                                ],
                                                                "default": "asc",
                                                                "description": "Direction on execution_date, asc (default) or desc; ties keep their internal order in the same direction. The cursor is bound to it."
                                                            }
                                                        }
                                                    }
                                                }
                                            },
                                            {
                                                "type": "object",
                                                "required": [
                                                    "endpoint",
                                                    "parameters"
                                                ],
                                                "additionalProperties": false,
                                                "properties": {
                                                    "endpoint": {
                                                        "type": "string",
                                                        "const": "filings"
                                                    },
                                                    "parameters": {
                                                        "type": "object",
                                                        "required": [],
                                                        "additionalProperties": false,
                                                        "properties": {
                                                            "symbols": {
                                                                "oneOf": [
                                                                    {
                                                                        "type": "array",
                                                                        "minItems": 1,
                                                                        "maxItems": 100,
                                                                        "uniqueItems": true,
                                                                        "items": {
                                                                            "type": "string",
                                                                            "pattern": "^(?:(?:[A-Za-z0-9]{4}|[Cc][Rr][Yy][Pp][Tt][Oo]|[Ff][Oo][Rr][Ee][Xx]|[Ii][Nn][Dd][Ee][Xx]):|\\^)?[A-Za-z0-9][A-Za-z0-9./_^= -]{0,63}$"
                                                                        }
                                                                    },
                                                                    {
                                                                        "type": "string",
                                                                        "description": "Comma-separated list."
                                                                    }
                                                                ],
                                                                "description": "Comma-separated MIC:TICKER symbols (crypto pairs are CRYPTO:BTC-USD, currency pairs FOREX:EUR-USD, indices INDEX:GSPC, bonds BOND and the ISIN, such as BOND:US00037BAF94) or bare tickers, which resolve to the exchange listing that ticker; neither part is case-sensitive, and two spellings of one listing count as a repeated value. A bare ticker that names no listing as written is also read in the common vendor spellings: with an exchange suffix (RY.TO, SHEL.L, VOD.LSE, BHP.AX), ^GSPC for INDEX:GSPC, and EURUSD=X or EURUSD for FOREX:EUR-USD. At most 100, further limited by the effective plan and key scope. A symbol names the listing recorded under it at symbol_at; at a date before any ticker is recorded for a listing, the earliest ticker recorded for it selects it as well (see symbol_at). Supply symbols or instrument_ids."
                                                            },
                                                            "instrument_ids": {
                                                                "oneOf": [
                                                                    {
                                                                        "type": "array",
                                                                        "minItems": 1,
                                                                        "maxItems": 100,
                                                                        "uniqueItems": true,
                                                                        "items": {
                                                                            "type": "string",
                                                                            "minLength": 1,
                                                                            "maxLength": 128,
                                                                            "pattern": "^[A-Za-z0-9][A-Za-z0-9_.:-]{0,127}$"
                                                                        }
                                                                    },
                                                                    {
                                                                        "type": "string",
                                                                        "description": "Comma-separated list."
                                                                    }
                                                                ],
                                                                "description": "Comma-separated stable instrument IDs (the instrument_id of each row, and of the research endpoints) instead of symbols; each selects its listing at any date, including history from before its earliest recorded ticker and listings that no longer trade. Rows carry the symbol the listing had at symbol_at, or where it had none then, its symbol at as_of, else the last one it carried by as_of, else its first. At most 100. Cannot be combined with symbols."
                                                            },
                                                            "symbol_at": {
                                                                "type": "string",
                                                                "format": "date",
                                                                "description": "Resolve symbols as they were assigned at the end of this UTC date (YYYY-MM-DD); defaults to as_of. Only listings the security master holds resolve: it was built in September 2026 and records delistings from then on, so most issuers delisted earlier, such as TWTR or SIVB, resolve at no date. A ticker names the listing that carries it at symbol_at, and every row of a from/to range carries that symbol, rows from before the listing took the ticker included: a ticker reused after its earlier holder delisted returns the new holder's older rows, so set symbol_at inside the range to name the listing that traded under the ticker then. Tickers are recorded only where there is evidence for them (for many listings from 2003, though prices start earlier), and none is asserted earlier. As a lookup convenience, a date before a listing's earliest recorded ticker still finds the listing by that ticker when no record contradicts it (no listing is recorded under the ticker by that date, and the listing has no earlier ticker): its rows carry the symbol as a label and meta.unrecorded_symbols lists it. A date before the listing's first row returns 200 with no-data, as a to before it does. A ticker another listing held, or one the listing was renamed from or to, returns 404 naming the date and the listing; instrument_ids select a listing at any date."
                                                            },
                                                            "as_of": {
                                                                "type": "string",
                                                                "format": "date",
                                                                "description": "Knowledge cutoff as a UTC date (YYYY-MM-DD): the response reflects what was known by the end of that day. Defaults to now; cannot be in the future. A date from before the dataset's knowledge history returns 422 point-in-time-unavailable naming the earliest one, which GET /v1/datasets lists as earliest_as_of."
                                                            },
                                                            "from": {
                                                                "type": "string",
                                                                "format": "date",
                                                                "description": "First filed_on to include (YYYY-MM-DD)."
                                                            },
                                                            "to": {
                                                                "type": "string",
                                                                "format": "date",
                                                                "description": "Last filed_on to include (YYYY-MM-DD); on or after from, so from equal to to selects one day."
                                                            },
                                                            "known_from": {
                                                                "type": "string",
                                                                "format": "date",
                                                                "description": "First UTC date (YYYY-MM-DD, inclusive) on which a revision became known. Filters eligible revisions; not a change feed or deletion log."
                                                            },
                                                            "known_to": {
                                                                "type": "string",
                                                                "format": "date",
                                                                "description": "Last UTC date (YYYY-MM-DD, inclusive) on which a revision became known; on or after known_from."
                                                            },
                                                            "order": {
                                                                "type": "string",
                                                                "enum": [
                                                                    "asc",
                                                                    "desc"
                                                                ],
                                                                "default": "asc",
                                                                "description": "Direction on filed_on, asc (default) or desc; ties keep their internal order in the same direction. The cursor is bound to it."
                                                            },
                                                            "forms": {
                                                                "oneOf": [
                                                                    {
                                                                        "type": "array",
                                                                        "minItems": 1,
                                                                        "maxItems": 100,
                                                                        "uniqueItems": true,
                                                                        "items": {
                                                                            "type": "string",
                                                                            "minLength": 1,
                                                                            "maxLength": 256
                                                                        }
                                                                    },
                                                                    {
                                                                        "type": "string",
                                                                        "description": "Comma-separated list."
                                                                    }
                                                                ],
                                                                "description": "Exact regulatory form types, such as 8-K, 10-K or 10-Q."
                                                            },
                                                            "period_from": {
                                                                "type": "string",
                                                                "format": "date",
                                                                "description": "Inclusive lower bound on period_end (YYYY-MM-DD)."
                                                            },
                                                            "period_to": {
                                                                "type": "string",
                                                                "format": "date",
                                                                "description": "Inclusive upper bound on period_end (YYYY-MM-DD); must be on or after period_from."
                                                            }
                                                        }
                                                    }
                                                }
                                            },
                                            {
                                                "type": "object",
                                                "required": [
                                                    "endpoint",
                                                    "parameters"
                                                ],
                                                "additionalProperties": false,
                                                "properties": {
                                                    "endpoint": {
                                                        "type": "string",
                                                        "const": "securities"
                                                    },
                                                    "parameters": {
                                                        "type": "object",
                                                        "required": [],
                                                        "additionalProperties": false,
                                                        "properties": {
                                                            "symbols": {
                                                                "oneOf": [
                                                                    {
                                                                        "type": "array",
                                                                        "minItems": 1,
                                                                        "maxItems": 100,
                                                                        "uniqueItems": true,
                                                                        "items": {
                                                                            "type": "string",
                                                                            "pattern": "^(?:(?:[A-Za-z0-9]{4}|[Cc][Rr][Yy][Pp][Tt][Oo]|[Ff][Oo][Rr][Ee][Xx]|[Ii][Nn][Dd][Ee][Xx]):|\\^)?[A-Za-z0-9][A-Za-z0-9./_^= -]{0,63}$"
                                                                        }
                                                                    },
                                                                    {
                                                                        "type": "string",
                                                                        "description": "Comma-separated list."
                                                                    }
                                                                ],
                                                                "description": "Comma-separated MIC:TICKER symbols (crypto pairs are CRYPTO:BTC-USD, currency pairs FOREX:EUR-USD, indices INDEX:GSPC, bonds BOND and the ISIN, such as BOND:US00037BAF94) or bare tickers, which resolve to the exchange listing that ticker; neither part is case-sensitive, and two spellings of one listing count as a repeated value. A bare ticker that names no listing as written is also read in the common vendor spellings: with an exchange suffix (RY.TO, SHEL.L, VOD.LSE, BHP.AX), ^GSPC for INDEX:GSPC, and EURUSD=X or EURUSD for FOREX:EUR-USD. At most 100, further limited by the effective plan and key scope. A symbol names the listing recorded under it at symbol_at; at a date before any ticker is recorded for a listing, the earliest ticker recorded for it selects it as well (see symbol_at). Supply symbols or instrument_ids."
                                                            },
                                                            "instrument_ids": {
                                                                "oneOf": [
                                                                    {
                                                                        "type": "array",
                                                                        "minItems": 1,
                                                                        "maxItems": 100,
                                                                        "uniqueItems": true,
                                                                        "items": {
                                                                            "type": "string",
                                                                            "minLength": 1,
                                                                            "maxLength": 128,
                                                                            "pattern": "^[A-Za-z0-9][A-Za-z0-9_.:-]{0,127}$"
                                                                        }
                                                                    },
                                                                    {
                                                                        "type": "string",
                                                                        "description": "Comma-separated list."
                                                                    }
                                                                ],
                                                                "description": "Comma-separated stable instrument IDs (the instrument_id of each row, and of the research endpoints) instead of symbols; each selects its listing at any date, including history from before its earliest recorded ticker and listings that no longer trade. Rows carry the symbol the listing had at symbol_at, or where it had none then, its symbol at as_of, else the last one it carried by as_of, else its first. At most 100. Cannot be combined with symbols."
                                                            },
                                                            "symbol_at": {
                                                                "type": "string",
                                                                "format": "date",
                                                                "description": "Resolve symbols as they were assigned at the end of this UTC date (YYYY-MM-DD); defaults to as_of. Only listings the security master holds resolve: it was built in September 2026 and records delistings from then on, so most issuers delisted earlier, such as TWTR or SIVB, resolve at no date. A ticker names the listing that carries it at symbol_at, and every row of a from/to range carries that symbol, rows from before the listing took the ticker included: a ticker reused after its earlier holder delisted returns the new holder's older rows, so set symbol_at inside the range to name the listing that traded under the ticker then. Tickers are recorded only where there is evidence for them (for many listings from 2003, though prices start earlier), and none is asserted earlier. As a lookup convenience, a date before a listing's earliest recorded ticker still finds the listing by that ticker when no record contradicts it (no listing is recorded under the ticker by that date, and the listing has no earlier ticker): its rows carry the symbol as a label and meta.unrecorded_symbols lists it. A date before the listing's first row returns 200 with no-data, as a to before it does. A ticker another listing held, or one the listing was renamed from or to, returns 404 naming the date and the listing; instrument_ids select a listing at any date."
                                                            },
                                                            "as_of": {
                                                                "type": "string",
                                                                "format": "date",
                                                                "description": "Knowledge cutoff as a UTC date (YYYY-MM-DD): the response reflects what was known by the end of that day. Defaults to now; cannot be in the future. A date from before the dataset's knowledge history returns 422 point-in-time-unavailable naming the earliest one, which GET /v1/datasets lists as earliest_as_of."
                                                            }
                                                        }
                                                    }
                                                }
                                            }
                                        ]
                                    },
                                    {
                                        "$ref": "#/components/schemas/ResourceExportRequest"
                                    }
                                ]
                            },
                            "example": {
                                "endpoint": "eod",
                                "parameters": {
                                    "symbols": [
                                        "XNAS:AAPL"
                                    ],
                                    "from": "2026-09-01",
                                    "to": "2026-09-25"
                                }
                            }
                        }
                    }
                },
                "responses": {
                    "202": {
                        "description": "Private export queued after query and authorization preflight.",
                        "headers": {
                            "X-RateLimit-Limit": {
                                "$ref": "#/components/headers/X-RateLimit-Limit"
                            },
                            "X-RateLimit-Remaining": {
                                "$ref": "#/components/headers/X-RateLimit-Remaining"
                            },
                            "X-RateLimit-Reset": {
                                "$ref": "#/components/headers/X-RateLimit-Reset"
                            },
                            "X-Request-ID": {
                                "$ref": "#/components/headers/X-Request-ID"
                            },
                            "Cache-Control": {
                                "$ref": "#/components/headers/Cache-Control"
                            },
                            "X-Credits-Limit": {
                                "$ref": "#/components/headers/X-Credits-Limit"
                            },
                            "X-Credits-Remaining": {
                                "$ref": "#/components/headers/X-Credits-Remaining"
                            },
                            "X-Credits-Cost": {
                                "$ref": "#/components/headers/X-Credits-Cost"
                            },
                            "X-Concurrency-Limit": {
                                "$ref": "#/components/headers/X-Concurrency-Limit"
                            },
                            "X-Concurrency-Remaining": {
                                "$ref": "#/components/headers/X-Concurrency-Remaining"
                            }
                        },
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/ExportCreated"
                                }
                            }
                        }
                    },
                    "400": {
                        "$ref": "#/components/responses/BadRequest"
                    },
                    "401": {
                        "$ref": "#/components/responses/Unauthorized"
                    },
                    "403": {
                        "$ref": "#/components/responses/Forbidden"
                    },
                    "404": {
                        "$ref": "#/components/responses/NotFound"
                    },
                    "405": {
                        "$ref": "#/components/responses/MethodNotAllowed"
                    },
                    "406": {
                        "$ref": "#/components/responses/NotAcceptable"
                    },
                    "409": {
                        "$ref": "#/components/responses/Conflict"
                    },
                    "413": {
                        "$ref": "#/components/responses/ContentTooLarge"
                    },
                    "414": {
                        "$ref": "#/components/responses/URITooLong"
                    },
                    "415": {
                        "$ref": "#/components/responses/UnsupportedMediaType"
                    },
                    "422": {
                        "$ref": "#/components/responses/UnprocessableContent"
                    },
                    "429": {
                        "$ref": "#/components/responses/TooManyRequests"
                    },
                    "431": {
                        "$ref": "#/components/responses/RequestHeaderFieldsTooLarge"
                    },
                    "500": {
                        "$ref": "#/components/responses/InternalServerError"
                    },
                    "503": {
                        "description": "RFC 9457 problem.",
                        "headers": {
                            "X-RateLimit-Limit": {
                                "$ref": "#/components/headers/X-RateLimit-Limit"
                            },
                            "X-RateLimit-Remaining": {
                                "$ref": "#/components/headers/X-RateLimit-Remaining"
                            },
                            "X-RateLimit-Reset": {
                                "$ref": "#/components/headers/X-RateLimit-Reset"
                            },
                            "Retry-After": {
                                "$ref": "#/components/headers/Retry-After"
                            },
                            "X-Request-ID": {
                                "$ref": "#/components/headers/X-Request-ID"
                            },
                            "Cache-Control": {
                                "$ref": "#/components/headers/Cache-Control"
                            },
                            "X-Credits-Limit": {
                                "$ref": "#/components/headers/X-Credits-Limit"
                            },
                            "X-Credits-Remaining": {
                                "$ref": "#/components/headers/X-Credits-Remaining"
                            },
                            "X-Credits-Cost": {
                                "$ref": "#/components/headers/X-Credits-Cost"
                            },
                            "X-Concurrency-Limit": {
                                "$ref": "#/components/headers/X-Concurrency-Limit"
                            },
                            "X-Concurrency-Remaining": {
                                "$ref": "#/components/headers/X-Concurrency-Remaining"
                            }
                        },
                        "content": {
                            "application/problem+json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Problem"
                                }
                            }
                        }
                    }
                },
                "summary": "Create export",
                "tags": [
                    "Delivery"
                ],
                "description": "Queue a private NDJSON export. Requires bulk.download and the selected dataset capability. parameters uses the selected security endpoint query contract. An export holds at most 1,000,000 rows and 256 MiB; a larger one ends with status failed, so split the range. Endpoint exports read the data as of when the export is built unless parameters set as_of. Alternatively use resource (collection path template) and parameters for research collections. Path IDs belong in parameters. Research exports pin as_of at creation. Neither kind takes limit or cursor in parameters: an export reads every page of the result.",
                "x-credit-cost": "500 credits per request.",
                "x-availability": "available"
            }
        },
        "/v1/exports/{id}": {
            "get": {
                "operationId": "get_export",
                "x-required-capability": "bulk.download",
                "parameters": [
                    {
                        "name": "id",
                        "in": "path",
                        "required": true,
                        "description": "Export ID returned by POST /v1/exports.",
                        "schema": {
                            "type": "string",
                            "format": "uuid"
                        },
                        "example": "00000000-0000-4000-8000-000000000001"
                    },
                    {
                        "name": "download",
                        "in": "query",
                        "description": "Set true to download the NDJSON file instead of the JSON status.",
                        "schema": {
                            "type": "boolean",
                            "default": false
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Export state, or authorized NDJSON stream. Authorization is checked during streaming; revocation can truncate a download. Verify X-Content-SHA256.",
                        "headers": {
                            "X-RateLimit-Limit": {
                                "$ref": "#/components/headers/X-RateLimit-Limit"
                            },
                            "X-RateLimit-Remaining": {
                                "$ref": "#/components/headers/X-RateLimit-Remaining"
                            },
                            "X-RateLimit-Reset": {
                                "$ref": "#/components/headers/X-RateLimit-Reset"
                            },
                            "X-Content-SHA256": {
                                "schema": {
                                    "type": "string"
                                },
                                "description": "SHA-256 digest of the complete NDJSON file, present only on downloads."
                            },
                            "X-Timezone": {
                                "schema": {
                                    "type": "string",
                                    "const": "UTC"
                                },
                                "description": "Present for NDJSON downloads."
                            },
                            "Content-Disposition": {
                                "schema": {
                                    "type": "string"
                                },
                                "description": "Attachment filename for NDJSON downloads."
                            },
                            "X-Request-ID": {
                                "$ref": "#/components/headers/X-Request-ID"
                            },
                            "Cache-Control": {
                                "$ref": "#/components/headers/Cache-Control"
                            },
                            "X-Credits-Limit": {
                                "$ref": "#/components/headers/X-Credits-Limit"
                            },
                            "X-Credits-Remaining": {
                                "$ref": "#/components/headers/X-Credits-Remaining"
                            },
                            "X-Credits-Cost": {
                                "$ref": "#/components/headers/X-Credits-Cost"
                            },
                            "X-Concurrency-Limit": {
                                "$ref": "#/components/headers/X-Concurrency-Limit"
                            },
                            "X-Concurrency-Remaining": {
                                "$ref": "#/components/headers/X-Concurrency-Remaining"
                            }
                        },
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/ExportStatus"
                                }
                            },
                            "application/x-ndjson": {
                                "schema": {
                                    "type": "string"
                                }
                            }
                        }
                    },
                    "400": {
                        "$ref": "#/components/responses/BadRequest"
                    },
                    "401": {
                        "$ref": "#/components/responses/Unauthorized"
                    },
                    "403": {
                        "$ref": "#/components/responses/Forbidden"
                    },
                    "404": {
                        "$ref": "#/components/responses/NotFound"
                    },
                    "405": {
                        "$ref": "#/components/responses/MethodNotAllowed"
                    },
                    "406": {
                        "$ref": "#/components/responses/NotAcceptable"
                    },
                    "409": {
                        "$ref": "#/components/responses/Conflict"
                    },
                    "413": {
                        "$ref": "#/components/responses/ContentTooLarge"
                    },
                    "414": {
                        "$ref": "#/components/responses/URITooLong"
                    },
                    "415": {
                        "$ref": "#/components/responses/UnsupportedMediaType"
                    },
                    "422": {
                        "$ref": "#/components/responses/UnprocessableContent"
                    },
                    "429": {
                        "$ref": "#/components/responses/TooManyRequests"
                    },
                    "431": {
                        "$ref": "#/components/responses/RequestHeaderFieldsTooLarge"
                    },
                    "500": {
                        "$ref": "#/components/responses/InternalServerError"
                    },
                    "503": {
                        "description": "RFC 9457 problem.",
                        "headers": {
                            "X-RateLimit-Limit": {
                                "$ref": "#/components/headers/X-RateLimit-Limit"
                            },
                            "X-RateLimit-Remaining": {
                                "$ref": "#/components/headers/X-RateLimit-Remaining"
                            },
                            "X-RateLimit-Reset": {
                                "$ref": "#/components/headers/X-RateLimit-Reset"
                            },
                            "Retry-After": {
                                "$ref": "#/components/headers/Retry-After"
                            },
                            "X-Request-ID": {
                                "$ref": "#/components/headers/X-Request-ID"
                            },
                            "Cache-Control": {
                                "$ref": "#/components/headers/Cache-Control"
                            },
                            "X-Credits-Limit": {
                                "$ref": "#/components/headers/X-Credits-Limit"
                            },
                            "X-Credits-Remaining": {
                                "$ref": "#/components/headers/X-Credits-Remaining"
                            },
                            "X-Credits-Cost": {
                                "$ref": "#/components/headers/X-Credits-Cost"
                            },
                            "X-Concurrency-Limit": {
                                "$ref": "#/components/headers/X-Concurrency-Limit"
                            },
                            "X-Concurrency-Remaining": {
                                "$ref": "#/components/headers/X-Concurrency-Remaining"
                            }
                        },
                        "content": {
                            "application/problem+json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Problem"
                                }
                            }
                        }
                    }
                },
                "summary": "Export status and download",
                "tags": [
                    "Delivery"
                ],
                "description": "Only the creating account and API key can access the export. download=true returns NDJSON when ready; before the export is ready it returns 409 export-not-ready. Status requests return JSON until the export expires; after that every request, status or download, returns 409 export-expired. Downloads contain one dataset row per NDJSON line, without the REST envelope, and expire one day after generation. Current authorization is rechecked throughout downloads.",
                "x-credit-cost": "Free.",
                "x-availability": "available",
                "x-example-query": {
                    "id": "00000000-0000-4000-8000-000000000001"
                }
            }
        },
        "/v1/flat-files": {
            "get": {
                "operationId": "list_flat_files",
                "summary": "List flat files",
                "tags": [
                    "Delivery"
                ],
                "x-required-capability": "flat-files.read",
                "description": "Per-trading-date gzipped CSV files for the US market, newest date first: eod (daily bars) and corporate-actions (dividends and splits that take effect that day). Files hold the rows GET /v1/eod and /v1/corporate-actions return for that New York trading date, except mutual funds (NMFQ), which only plans with mutual-funds.read may read and which /v1/eod and exports serve; files are published by the nightly build after the date and rebuilt for five trading days (the latest two hourly) so corrections republish changed files; the sha256 and generated_at change with each republication. Daily-bar and corporate-action files are kept; they exist from the first trading date the nightly build published (the oldest file listed), and earlier history is read from /v1/eod or an export. There are no intraday files: US listings are collected as five-minute bars, which /v1/intraday serves for 30 days. Requires flat-files.read (Pro, Commercial and Scale) and each listed dataset capability; without dataset only entitled datasets are listed. Dates before the plan history depth are omitted.",
                "parameters": [
                    {
                        "name": "dataset",
                        "in": "query",
                        "description": "Only this dataset.",
                        "schema": {
                            "type": "string",
                            "enum": [
                                "eod",
                                "corporate-actions"
                            ]
                        }
                    },
                    {
                        "name": "from",
                        "in": "query",
                        "description": "Inclusive first trading date (YYYY-MM-DD).",
                        "schema": {
                            "type": "string",
                            "format": "date"
                        }
                    },
                    {
                        "name": "to",
                        "in": "query",
                        "description": "Inclusive last trading date (YYYY-MM-DD); must be on or after from, so from equal to to selects one day.",
                        "schema": {
                            "type": "string",
                            "format": "date"
                        }
                    },
                    {
                        "name": "limit",
                        "in": "query",
                        "description": "Maximum files per page, from 1 to 500; default 100.",
                        "schema": {
                            "type": "integer",
                            "minimum": 1,
                            "maximum": 500,
                            "default": 100
                        }
                    },
                    {
                        "name": "cursor",
                        "in": "query",
                        "description": "Opaque cursor, expires after one hour. Keep all query parameters unchanged.",
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Published files.",
                        "headers": {
                            "X-RateLimit-Limit": {
                                "$ref": "#/components/headers/X-RateLimit-Limit"
                            },
                            "X-RateLimit-Remaining": {
                                "$ref": "#/components/headers/X-RateLimit-Remaining"
                            },
                            "X-RateLimit-Reset": {
                                "$ref": "#/components/headers/X-RateLimit-Reset"
                            },
                            "X-Request-ID": {
                                "$ref": "#/components/headers/X-Request-ID"
                            },
                            "Cache-Control": {
                                "$ref": "#/components/headers/Cache-Control"
                            },
                            "X-Credits-Limit": {
                                "$ref": "#/components/headers/X-Credits-Limit"
                            },
                            "X-Credits-Remaining": {
                                "$ref": "#/components/headers/X-Credits-Remaining"
                            },
                            "X-Credits-Cost": {
                                "$ref": "#/components/headers/X-Credits-Cost"
                            },
                            "X-Concurrency-Limit": {
                                "$ref": "#/components/headers/X-Concurrency-Limit"
                            },
                            "X-Concurrency-Remaining": {
                                "$ref": "#/components/headers/X-Concurrency-Remaining"
                            }
                        },
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "object",
                                    "required": [
                                        "data",
                                        "meta"
                                    ],
                                    "properties": {
                                        "data": {
                                            "type": "array",
                                            "items": {
                                                "$ref": "#/components/schemas/FlatFile"
                                            }
                                        },
                                        "meta": {
                                            "type": "object",
                                            "required": [
                                                "timezone",
                                                "next_cursor"
                                            ],
                                            "properties": {
                                                "timezone": {
                                                    "type": "string",
                                                    "const": "UTC"
                                                },
                                                "next_cursor": {
                                                    "type": [
                                                        "string",
                                                        "null"
                                                    ]
                                                }
                                            }
                                        }
                                    }
                                }
                            }
                        }
                    },
                    "400": {
                        "$ref": "#/components/responses/BadRequest"
                    },
                    "401": {
                        "$ref": "#/components/responses/Unauthorized"
                    },
                    "403": {
                        "$ref": "#/components/responses/Forbidden"
                    },
                    "404": {
                        "$ref": "#/components/responses/NotFound"
                    },
                    "405": {
                        "$ref": "#/components/responses/MethodNotAllowed"
                    },
                    "406": {
                        "$ref": "#/components/responses/NotAcceptable"
                    },
                    "409": {
                        "$ref": "#/components/responses/Conflict"
                    },
                    "413": {
                        "$ref": "#/components/responses/ContentTooLarge"
                    },
                    "414": {
                        "$ref": "#/components/responses/URITooLong"
                    },
                    "415": {
                        "$ref": "#/components/responses/UnsupportedMediaType"
                    },
                    "422": {
                        "$ref": "#/components/responses/UnprocessableContent"
                    },
                    "429": {
                        "$ref": "#/components/responses/TooManyRequests"
                    },
                    "431": {
                        "$ref": "#/components/responses/RequestHeaderFieldsTooLarge"
                    },
                    "500": {
                        "$ref": "#/components/responses/InternalServerError"
                    },
                    "503": {
                        "description": "RFC 9457 problem.",
                        "headers": {
                            "X-RateLimit-Limit": {
                                "$ref": "#/components/headers/X-RateLimit-Limit"
                            },
                            "X-RateLimit-Remaining": {
                                "$ref": "#/components/headers/X-RateLimit-Remaining"
                            },
                            "X-RateLimit-Reset": {
                                "$ref": "#/components/headers/X-RateLimit-Reset"
                            },
                            "Retry-After": {
                                "$ref": "#/components/headers/Retry-After"
                            },
                            "X-Request-ID": {
                                "$ref": "#/components/headers/X-Request-ID"
                            },
                            "Cache-Control": {
                                "$ref": "#/components/headers/Cache-Control"
                            },
                            "X-Credits-Limit": {
                                "$ref": "#/components/headers/X-Credits-Limit"
                            },
                            "X-Credits-Remaining": {
                                "$ref": "#/components/headers/X-Credits-Remaining"
                            },
                            "X-Credits-Cost": {
                                "$ref": "#/components/headers/X-Credits-Cost"
                            },
                            "X-Concurrency-Limit": {
                                "$ref": "#/components/headers/X-Concurrency-Limit"
                            },
                            "X-Concurrency-Remaining": {
                                "$ref": "#/components/headers/X-Concurrency-Remaining"
                            }
                        },
                        "content": {
                            "application/problem+json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Problem"
                                }
                            }
                        }
                    }
                },
                "x-credit-cost": "5 credits per request.",
                "x-availability": "available",
                "x-example-query": []
            }
        },
        "/v1/flat-files/{dataset}/{date}": {
            "get": {
                "operationId": "get_flat_file",
                "summary": "Flat file metadata and download",
                "tags": [
                    "Delivery"
                ],
                "x-required-capability": "flat-files.read",
                "description": "Metadata for one file, or with download=true the file itself: usually a 302 redirect to a presigned URL that is valid for five minutes and needs no API key, otherwise the gzip stream. Verify X-Content-SHA256. Requires flat-files.read (Pro, Commercial and Scale), the dataset capability (eod.read or corporate-actions.read), the US market and a date within the plan history depth. CSV files are UTF-8 with a header row; empty fields are null, instants are UTC RFC 3339 with microseconds, prices and volumes are exact decimal strings, booleans are true or false, and corporate-action legs are a JSON array. Each row carries instrument_id, the stable ID the REST endpoints return, as its last column; security_id holds the same value and is deprecated.",
                "parameters": [
                    {
                        "name": "dataset",
                        "in": "path",
                        "required": true,
                        "description": "eod or corporate-actions.",
                        "schema": {
                            "type": "string",
                            "enum": [
                                "eod",
                                "corporate-actions"
                            ]
                        },
                        "example": "eod"
                    },
                    {
                        "name": "date",
                        "in": "path",
                        "required": true,
                        "description": "New York trading date (YYYY-MM-DD).",
                        "schema": {
                            "type": "string",
                            "format": "date"
                        },
                        "example": "2026-09-25"
                    },
                    {
                        "name": "download",
                        "in": "query",
                        "description": "Set true to download the .csv.gz file instead of its JSON metadata.",
                        "schema": {
                            "type": "boolean",
                            "default": false
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "File metadata, or the gzip file when download=true and the deployment streams downloads.",
                        "headers": {
                            "X-RateLimit-Limit": {
                                "$ref": "#/components/headers/X-RateLimit-Limit"
                            },
                            "X-RateLimit-Remaining": {
                                "$ref": "#/components/headers/X-RateLimit-Remaining"
                            },
                            "X-RateLimit-Reset": {
                                "$ref": "#/components/headers/X-RateLimit-Reset"
                            },
                            "X-Content-SHA256": {
                                "schema": {
                                    "type": "string"
                                },
                                "description": "SHA-256 of the .csv.gz file, present on downloads."
                            },
                            "X-Request-ID": {
                                "$ref": "#/components/headers/X-Request-ID"
                            },
                            "Cache-Control": {
                                "$ref": "#/components/headers/Cache-Control"
                            },
                            "X-Credits-Limit": {
                                "$ref": "#/components/headers/X-Credits-Limit"
                            },
                            "X-Credits-Remaining": {
                                "$ref": "#/components/headers/X-Credits-Remaining"
                            },
                            "X-Credits-Cost": {
                                "$ref": "#/components/headers/X-Credits-Cost"
                            },
                            "X-Concurrency-Limit": {
                                "$ref": "#/components/headers/X-Concurrency-Limit"
                            },
                            "X-Concurrency-Remaining": {
                                "$ref": "#/components/headers/X-Concurrency-Remaining"
                            }
                        },
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "object",
                                    "required": [
                                        "data",
                                        "meta"
                                    ],
                                    "properties": {
                                        "data": {
                                            "$ref": "#/components/schemas/FlatFile"
                                        },
                                        "meta": {
                                            "type": "object",
                                            "required": [
                                                "timezone"
                                            ],
                                            "properties": {
                                                "timezone": {
                                                    "type": "string",
                                                    "const": "UTC"
                                                }
                                            }
                                        }
                                    }
                                }
                            },
                            "application/gzip": {
                                "schema": {
                                    "type": "string",
                                    "contentMediaType": "application/gzip"
                                }
                            }
                        }
                    },
                    "302": {
                        "description": "download=true: redirect to a presigned URL valid for five minutes. Do not send the API key to the storage host.",
                        "headers": {
                            "X-RateLimit-Limit": {
                                "$ref": "#/components/headers/X-RateLimit-Limit"
                            },
                            "X-RateLimit-Remaining": {
                                "$ref": "#/components/headers/X-RateLimit-Remaining"
                            },
                            "X-RateLimit-Reset": {
                                "$ref": "#/components/headers/X-RateLimit-Reset"
                            },
                            "Location": {
                                "schema": {
                                    "type": "string",
                                    "format": "uri"
                                },
                                "description": "Presigned file URL."
                            },
                            "X-Content-SHA256": {
                                "schema": {
                                    "type": "string"
                                },
                                "description": "SHA-256 of the .csv.gz file."
                            },
                            "X-Request-ID": {
                                "$ref": "#/components/headers/X-Request-ID"
                            },
                            "Cache-Control": {
                                "$ref": "#/components/headers/Cache-Control"
                            },
                            "X-Credits-Limit": {
                                "$ref": "#/components/headers/X-Credits-Limit"
                            },
                            "X-Credits-Remaining": {
                                "$ref": "#/components/headers/X-Credits-Remaining"
                            },
                            "X-Credits-Cost": {
                                "$ref": "#/components/headers/X-Credits-Cost"
                            },
                            "X-Concurrency-Limit": {
                                "$ref": "#/components/headers/X-Concurrency-Limit"
                            },
                            "X-Concurrency-Remaining": {
                                "$ref": "#/components/headers/X-Concurrency-Remaining"
                            }
                        }
                    },
                    "400": {
                        "$ref": "#/components/responses/BadRequest"
                    },
                    "401": {
                        "$ref": "#/components/responses/Unauthorized"
                    },
                    "403": {
                        "$ref": "#/components/responses/Forbidden"
                    },
                    "404": {
                        "$ref": "#/components/responses/NotFound"
                    },
                    "405": {
                        "$ref": "#/components/responses/MethodNotAllowed"
                    },
                    "406": {
                        "$ref": "#/components/responses/NotAcceptable"
                    },
                    "409": {
                        "$ref": "#/components/responses/Conflict"
                    },
                    "413": {
                        "$ref": "#/components/responses/ContentTooLarge"
                    },
                    "414": {
                        "$ref": "#/components/responses/URITooLong"
                    },
                    "415": {
                        "$ref": "#/components/responses/UnsupportedMediaType"
                    },
                    "422": {
                        "$ref": "#/components/responses/UnprocessableContent"
                    },
                    "429": {
                        "$ref": "#/components/responses/TooManyRequests"
                    },
                    "431": {
                        "$ref": "#/components/responses/RequestHeaderFieldsTooLarge"
                    },
                    "500": {
                        "$ref": "#/components/responses/InternalServerError"
                    },
                    "503": {
                        "description": "RFC 9457 problem.",
                        "headers": {
                            "X-RateLimit-Limit": {
                                "$ref": "#/components/headers/X-RateLimit-Limit"
                            },
                            "X-RateLimit-Remaining": {
                                "$ref": "#/components/headers/X-RateLimit-Remaining"
                            },
                            "X-RateLimit-Reset": {
                                "$ref": "#/components/headers/X-RateLimit-Reset"
                            },
                            "Retry-After": {
                                "$ref": "#/components/headers/Retry-After"
                            },
                            "X-Request-ID": {
                                "$ref": "#/components/headers/X-Request-ID"
                            },
                            "Cache-Control": {
                                "$ref": "#/components/headers/Cache-Control"
                            },
                            "X-Credits-Limit": {
                                "$ref": "#/components/headers/X-Credits-Limit"
                            },
                            "X-Credits-Remaining": {
                                "$ref": "#/components/headers/X-Credits-Remaining"
                            },
                            "X-Credits-Cost": {
                                "$ref": "#/components/headers/X-Credits-Cost"
                            },
                            "X-Concurrency-Limit": {
                                "$ref": "#/components/headers/X-Concurrency-Limit"
                            },
                            "X-Concurrency-Remaining": {
                                "$ref": "#/components/headers/X-Concurrency-Remaining"
                            }
                        },
                        "content": {
                            "application/problem+json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Problem"
                                }
                            }
                        }
                    }
                },
                "x-credit-cost": "5 credits per request; 500 credits to download the file.",
                "x-availability": "available",
                "x-example-query": {
                    "dataset": "eod",
                    "date": "2026-09-25"
                }
            }
        },
        "/v1/health": {
            "get": {
                "operationId": "data_health",
                "responses": {
                    "200": {
                        "description": "Freshness by configured dataset, market and exchange; a venue without a coverage snapshot has coverage.status unknown.",
                        "headers": {
                            "X-RateLimit-Limit": {
                                "$ref": "#/components/headers/X-RateLimit-Limit"
                            },
                            "X-RateLimit-Remaining": {
                                "$ref": "#/components/headers/X-RateLimit-Remaining"
                            },
                            "X-RateLimit-Reset": {
                                "$ref": "#/components/headers/X-RateLimit-Reset"
                            },
                            "X-Request-ID": {
                                "$ref": "#/components/headers/X-Request-ID"
                            },
                            "Cache-Control": {
                                "$ref": "#/components/headers/Cache-Control"
                            },
                            "X-Credits-Limit": {
                                "$ref": "#/components/headers/X-Credits-Limit"
                            },
                            "X-Credits-Remaining": {
                                "$ref": "#/components/headers/X-Credits-Remaining"
                            },
                            "X-Credits-Cost": {
                                "$ref": "#/components/headers/X-Credits-Cost"
                            },
                            "X-Concurrency-Limit": {
                                "$ref": "#/components/headers/X-Concurrency-Limit"
                            },
                            "X-Concurrency-Remaining": {
                                "$ref": "#/components/headers/X-Concurrency-Remaining"
                            }
                        },
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "object",
                                    "properties": {
                                        "data": {
                                            "type": "array",
                                            "items": {
                                                "$ref": "#/components/schemas/Health"
                                            }
                                        },
                                        "meta": {
                                            "type": "object",
                                            "properties": {
                                                "timezone": {
                                                    "type": "string",
                                                    "const": "UTC"
                                                },
                                                "coverage_configured": {
                                                    "type": "boolean"
                                                }
                                            },
                                            "required": [
                                                "timezone",
                                                "coverage_configured"
                                            ]
                                        }
                                    },
                                    "required": [
                                        "data",
                                        "meta"
                                    ]
                                }
                            }
                        }
                    },
                    "400": {
                        "$ref": "#/components/responses/BadRequest"
                    },
                    "401": {
                        "$ref": "#/components/responses/Unauthorized"
                    },
                    "403": {
                        "$ref": "#/components/responses/Forbidden"
                    },
                    "404": {
                        "$ref": "#/components/responses/NotFound"
                    },
                    "405": {
                        "$ref": "#/components/responses/MethodNotAllowed"
                    },
                    "406": {
                        "$ref": "#/components/responses/NotAcceptable"
                    },
                    "409": {
                        "$ref": "#/components/responses/Conflict"
                    },
                    "413": {
                        "$ref": "#/components/responses/ContentTooLarge"
                    },
                    "414": {
                        "$ref": "#/components/responses/URITooLong"
                    },
                    "415": {
                        "$ref": "#/components/responses/UnsupportedMediaType"
                    },
                    "422": {
                        "$ref": "#/components/responses/UnprocessableContent"
                    },
                    "429": {
                        "$ref": "#/components/responses/TooManyRequests"
                    },
                    "431": {
                        "$ref": "#/components/responses/RequestHeaderFieldsTooLarge"
                    },
                    "500": {
                        "$ref": "#/components/responses/InternalServerError"
                    },
                    "503": {
                        "description": "RFC 9457 problem.",
                        "headers": {
                            "X-RateLimit-Limit": {
                                "$ref": "#/components/headers/X-RateLimit-Limit"
                            },
                            "X-RateLimit-Remaining": {
                                "$ref": "#/components/headers/X-RateLimit-Remaining"
                            },
                            "X-RateLimit-Reset": {
                                "$ref": "#/components/headers/X-RateLimit-Reset"
                            },
                            "Retry-After": {
                                "$ref": "#/components/headers/Retry-After"
                            },
                            "X-Request-ID": {
                                "$ref": "#/components/headers/X-Request-ID"
                            },
                            "Cache-Control": {
                                "$ref": "#/components/headers/Cache-Control"
                            },
                            "X-Credits-Limit": {
                                "$ref": "#/components/headers/X-Credits-Limit"
                            },
                            "X-Credits-Remaining": {
                                "$ref": "#/components/headers/X-Credits-Remaining"
                            },
                            "X-Credits-Cost": {
                                "$ref": "#/components/headers/X-Credits-Cost"
                            },
                            "X-Concurrency-Limit": {
                                "$ref": "#/components/headers/X-Concurrency-Limit"
                            },
                            "X-Concurrency-Remaining": {
                                "$ref": "#/components/headers/X-Concurrency-Remaining"
                            }
                        },
                        "content": {
                            "application/problem+json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Problem"
                                }
                            }
                        }
                    }
                },
                "summary": "Data health",
                "tags": [
                    "Delivery"
                ],
                "description": "Freshness and coverage in entitled markets, one row per dataset, market and exchange: where several sources deliver a venue, the row is as fresh as the freshest of them that has delivered there. freshness_status describes ingestion timing and, for daily and intraday bars, how many listings have the newest closed session (coverage.latest_session); status remains partial, unverified or unknown when completeness is not established. coverage.asset_types says which kinds of listing a price dataset covers on the venue. Symbols without rows may legitimately have no corporate actions. Coverage counts are operational observations, not entitlement-filtered data delivery. Missing observations have status unavailable. Research datasets no source is connected to yet (x-availability unavailable in this contract) are listed with their /v1/datasets id, a null exchange and status unavailable; their endpoints return 501 dataset-unavailable. coverage_configured is false when no ingestion coverage is configured for the markets of this key; no pagination.",
                "x-credit-cost": "Free.",
                "x-availability": "available",
                "x-example-query": []
            }
        },
        "/v1/usage": {
            "get": {
                "operationId": "get_usage",
                "summary": "Credit usage",
                "tags": [
                    "Delivery"
                ],
                "description": "The account's daily credit allowance, credits spent since 00:00 UTC and credits remaining, shared by REST and MCP across every API key on the account, and the request limits that apply to it: requests_per_minute and concurrent_requests are account-wide, like the credits. Reading it costs no credits. limit and remaining are null for accounts without a daily limit; remaining also counts the account's unexpired welcome credits, so it can exceed limit minus used. concurrent_requests is the simultaneous-request limit that X-Concurrency-Limit reports (per key for unlimited entitlements); requests_per_minute is null when no rate limit applies.",
                "responses": {
                    "200": {
                        "description": "Credit balance and request limits.",
                        "headers": {
                            "X-RateLimit-Limit": {
                                "$ref": "#/components/headers/X-RateLimit-Limit"
                            },
                            "X-RateLimit-Remaining": {
                                "$ref": "#/components/headers/X-RateLimit-Remaining"
                            },
                            "X-RateLimit-Reset": {
                                "$ref": "#/components/headers/X-RateLimit-Reset"
                            },
                            "X-Request-ID": {
                                "$ref": "#/components/headers/X-Request-ID"
                            },
                            "Cache-Control": {
                                "$ref": "#/components/headers/Cache-Control"
                            },
                            "X-Credits-Limit": {
                                "$ref": "#/components/headers/X-Credits-Limit"
                            },
                            "X-Credits-Remaining": {
                                "$ref": "#/components/headers/X-Credits-Remaining"
                            },
                            "X-Credits-Cost": {
                                "$ref": "#/components/headers/X-Credits-Cost"
                            },
                            "X-Concurrency-Limit": {
                                "$ref": "#/components/headers/X-Concurrency-Limit"
                            },
                            "X-Concurrency-Remaining": {
                                "$ref": "#/components/headers/X-Concurrency-Remaining"
                            }
                        },
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "object",
                                    "properties": {
                                        "data": {
                                            "type": "object",
                                            "properties": {
                                                "plan": {
                                                    "type": [
                                                        "string",
                                                        "null"
                                                    ]
                                                },
                                                "credits": {
                                                    "type": "object",
                                                    "properties": {
                                                        "limit": {
                                                            "type": [
                                                                "integer",
                                                                "null"
                                                            ]
                                                        },
                                                        "used": {
                                                            "type": "integer"
                                                        },
                                                        "remaining": {
                                                            "type": [
                                                                "integer",
                                                                "null"
                                                            ]
                                                        },
                                                        "resets_at": {
                                                            "type": "string",
                                                            "format": "date-time"
                                                        }
                                                    },
                                                    "required": [
                                                        "limit",
                                                        "used",
                                                        "remaining",
                                                        "resets_at"
                                                    ]
                                                },
                                                "requests_per_minute": {
                                                    "type": [
                                                        "integer",
                                                        "null"
                                                    ]
                                                },
                                                "concurrent_requests": {
                                                    "type": [
                                                        "integer",
                                                        "null"
                                                    ]
                                                }
                                            },
                                            "required": [
                                                "plan",
                                                "credits",
                                                "requests_per_minute",
                                                "concurrent_requests"
                                            ]
                                        },
                                        "meta": {
                                            "type": "object",
                                            "properties": {
                                                "timezone": {
                                                    "type": "string",
                                                    "const": "UTC"
                                                }
                                            },
                                            "required": [
                                                "timezone"
                                            ]
                                        }
                                    },
                                    "required": [
                                        "data",
                                        "meta"
                                    ]
                                }
                            }
                        }
                    },
                    "400": {
                        "$ref": "#/components/responses/BadRequest"
                    },
                    "401": {
                        "$ref": "#/components/responses/Unauthorized"
                    },
                    "403": {
                        "$ref": "#/components/responses/Forbidden"
                    },
                    "404": {
                        "$ref": "#/components/responses/NotFound"
                    },
                    "405": {
                        "$ref": "#/components/responses/MethodNotAllowed"
                    },
                    "406": {
                        "$ref": "#/components/responses/NotAcceptable"
                    },
                    "409": {
                        "$ref": "#/components/responses/Conflict"
                    },
                    "413": {
                        "$ref": "#/components/responses/ContentTooLarge"
                    },
                    "414": {
                        "$ref": "#/components/responses/URITooLong"
                    },
                    "415": {
                        "$ref": "#/components/responses/UnsupportedMediaType"
                    },
                    "422": {
                        "$ref": "#/components/responses/UnprocessableContent"
                    },
                    "429": {
                        "$ref": "#/components/responses/TooManyRequests"
                    },
                    "431": {
                        "$ref": "#/components/responses/RequestHeaderFieldsTooLarge"
                    },
                    "500": {
                        "$ref": "#/components/responses/InternalServerError"
                    },
                    "503": {
                        "description": "RFC 9457 problem.",
                        "headers": {
                            "X-RateLimit-Limit": {
                                "$ref": "#/components/headers/X-RateLimit-Limit"
                            },
                            "X-RateLimit-Remaining": {
                                "$ref": "#/components/headers/X-RateLimit-Remaining"
                            },
                            "X-RateLimit-Reset": {
                                "$ref": "#/components/headers/X-RateLimit-Reset"
                            },
                            "Retry-After": {
                                "$ref": "#/components/headers/Retry-After"
                            },
                            "X-Request-ID": {
                                "$ref": "#/components/headers/X-Request-ID"
                            },
                            "Cache-Control": {
                                "$ref": "#/components/headers/Cache-Control"
                            },
                            "X-Credits-Limit": {
                                "$ref": "#/components/headers/X-Credits-Limit"
                            },
                            "X-Credits-Remaining": {
                                "$ref": "#/components/headers/X-Credits-Remaining"
                            },
                            "X-Credits-Cost": {
                                "$ref": "#/components/headers/X-Credits-Cost"
                            },
                            "X-Concurrency-Limit": {
                                "$ref": "#/components/headers/X-Concurrency-Limit"
                            },
                            "X-Concurrency-Remaining": {
                                "$ref": "#/components/headers/X-Concurrency-Remaining"
                            }
                        },
                        "content": {
                            "application/problem+json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Problem"
                                }
                            }
                        }
                    }
                },
                "x-credit-cost": "Free.",
                "x-availability": "available",
                "x-example-query": []
            }
        },
        "/v1/snapshot": {
            "get": {
                "operationId": "get_snapshot",
                "summary": "Snapshot",
                "tags": [
                    "Market prices"
                ],
                "x-required-capability": "quotes.read",
                "description": "One row per requested listing: the latest eligible quote, the latest and previous session daily bars, and the change of the latest price from the previous close. Quotes are snapshots, never real-time: delayed at least 15 minutes for exchange listings and about 15 minutes for indices, and up to about 10 minutes old for the leading crypto pairs and for currency pairs while the forex market is open (a crypto quote older than the close of the pair's latest daily bar gives way to that close); price_source says whether price is a delayed quote or an official session close, and updated_at when it was observed. previous_close is split-adjusted to the price's session, and withheld with the change when that session is on another share basis than the close with no split on record yet. Requires quotes.read, eod.read and an entitled market. Supply exactly one of symbols or instrument_ids. Every requested symbol is either a row of data or an entry of meta.errors: unresolved symbols and instrument IDs are reported there (when none of them resolves the response is 404 instead, whatever the size of the list), and so is a listing with neither a quote nor a session in the last 31 days, with code no-data. Error entries carry the instrument_id of the listing: the requested one, or the one a symbol resolved to; null when a symbol resolved to nothing.",
                "x-query-constraints": [
                    {
                        "rule": "exactly_one",
                        "parameters": [
                            "instrument_ids",
                            "symbols"
                        ]
                    }
                ],
                "parameters": [
                    {
                        "name": "symbols",
                        "in": "query",
                        "description": "Comma-separated MIC:TICKER symbols (crypto pairs are CRYPTO:BTC-USD, currency pairs FOREX:EUR-USD, indices INDEX:GSPC, bonds BOND and the ISIN, such as BOND:US00037BAF94) or bare tickers, which resolve to the exchange listing that ticker, or else to the listing a common vendor spelling names (RY.TO, SHEL.L, BHP.AX, ^GSPC, EURUSD=X); at most 100, further limited by the effective plan and key scope.",
                        "style": "form",
                        "explode": false,
                        "schema": {
                            "type": "array",
                            "minItems": 1,
                            "maxItems": 100,
                            "uniqueItems": true,
                            "items": {
                                "type": "string",
                                "pattern": "^(?:(?:[A-Za-z0-9]{4}|[Cc][Rr][Yy][Pp][Tt][Oo]|[Ff][Oo][Rr][Ee][Xx]|[Ii][Nn][Dd][Ee][Xx]):|\\^)?[A-Za-z0-9][A-Za-z0-9./_^= -]{0,63}$"
                            }
                        },
                        "example": [
                            "XNAS:AAPL"
                        ]
                    },
                    {
                        "name": "instrument_ids",
                        "in": "query",
                        "description": "Comma-separated stable instrument IDs; cannot be combined with symbols.",
                        "style": "form",
                        "explode": false,
                        "schema": {
                            "type": "array",
                            "minItems": 1,
                            "maxItems": 100,
                            "items": {
                                "type": "string",
                                "minLength": 1,
                                "maxLength": 128,
                                "pattern": "^[A-Za-z0-9][A-Za-z0-9_.:-]{0,127}$"
                            }
                        }
                    },
                    {
                        "name": "symbol_at",
                        "in": "query",
                        "description": "Resolve symbols as they were assigned at the end of this UTC date (YYYY-MM-DD); defaults to as_of. Only listings the security master holds resolve: it was built in September 2026 and records delistings from then on, so most issuers delisted earlier, such as TWTR or SIVB, resolve at no date.",
                        "schema": {
                            "type": "string",
                            "format": "date"
                        }
                    },
                    {
                        "name": "as_of",
                        "in": "query",
                        "description": "Knowledge cutoff as a UTC date (YYYY-MM-DD): the response reflects what was known by the end of that day. Defaults to now; cannot be in the future. A date from before the dataset's knowledge history returns 422 point-in-time-unavailable naming the earliest one, which GET /v1/datasets lists as earliest_as_of.",
                        "schema": {
                            "type": "string",
                            "format": "date"
                        }
                    },
                    {
                        "name": "If-None-Match",
                        "in": "header",
                        "description": "ETag from a previous response. Authorization is rechecked before returning 304, and a 304 costs no credits.",
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "format",
                        "in": "query",
                        "description": "Response format. csv returns the data rows with a header row, for spreadsheet functions such as IMPORTDATA; nested fields become dotted columns and lists one JSON array cell, the next page cursor is returned in X-Next-Cursor and meta.errors in X-Meta-Errors. A result without rows is the header row alone, listing the documented fields of a row. Default json, or csv when format is omitted and the Accept header ranks text/csv above JSON; a format the Accept header does not admit returns 406 not-acceptable.",
                        "schema": {
                            "type": "string",
                            "enum": [
                                "json",
                                "csv"
                            ]
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Authorized snapshots in requested order. Monetary and price values are decimal strings with currency_code.",
                        "headers": {
                            "X-RateLimit-Limit": {
                                "$ref": "#/components/headers/X-RateLimit-Limit"
                            },
                            "X-RateLimit-Remaining": {
                                "$ref": "#/components/headers/X-RateLimit-Remaining"
                            },
                            "X-RateLimit-Reset": {
                                "$ref": "#/components/headers/X-RateLimit-Reset"
                            },
                            "ETag": {
                                "$ref": "#/components/headers/ETag"
                            },
                            "Cache-Control": {
                                "schema": {
                                    "type": "string",
                                    "const": "must-revalidate, no-cache, private"
                                },
                                "description": "Responses of this endpoint carry an ETag: a client may keep one, and revalidates it with If-None-Match before reuse."
                            },
                            "X-Request-ID": {
                                "$ref": "#/components/headers/X-Request-ID"
                            },
                            "X-Next-Cursor": {
                                "$ref": "#/components/headers/X-Next-Cursor"
                            },
                            "X-Meta-Errors": {
                                "$ref": "#/components/headers/X-Meta-Errors"
                            },
                            "X-Credits-Limit": {
                                "$ref": "#/components/headers/X-Credits-Limit"
                            },
                            "X-Credits-Remaining": {
                                "$ref": "#/components/headers/X-Credits-Remaining"
                            },
                            "X-Credits-Cost": {
                                "$ref": "#/components/headers/X-Credits-Cost"
                            },
                            "X-Concurrency-Limit": {
                                "$ref": "#/components/headers/X-Concurrency-Limit"
                            },
                            "X-Concurrency-Remaining": {
                                "$ref": "#/components/headers/X-Concurrency-Remaining"
                            }
                        },
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "object",
                                    "required": [
                                        "data",
                                        "meta"
                                    ],
                                    "properties": {
                                        "data": {
                                            "type": "array",
                                            "items": {
                                                "$ref": "#/components/schemas/Snapshot"
                                            }
                                        },
                                        "meta": {
                                            "type": "object",
                                            "required": [
                                                "timezone",
                                                "as_of",
                                                "next_cursor"
                                            ],
                                            "properties": {
                                                "timezone": {
                                                    "type": "string",
                                                    "const": "UTC"
                                                },
                                                "as_of": {
                                                    "type": "string",
                                                    "format": "date-time"
                                                },
                                                "next_cursor": {
                                                    "type": "null",
                                                    "description": "Always null; every result fits one response."
                                                },
                                                "errors": {
                                                    "type": "array",
                                                    "items": {
                                                        "type": "object",
                                                        "properties": {
                                                            "symbol": {
                                                                "type": [
                                                                    "string",
                                                                    "null"
                                                                ],
                                                                "description": "Requested symbol, or the symbol a requested instrument ID resolved to; null when the instrument ID has no unique symbol."
                                                            },
                                                            "instrument_id": {
                                                                "type": [
                                                                    "string",
                                                                    "null"
                                                                ],
                                                                "description": "Instrument ID of the listing: the requested one, or the one a requested symbol resolved to; null when a symbol resolved to no listing."
                                                            },
                                                            "code": {
                                                                "type": "string",
                                                                "description": "symbol-not-resolved or identifier-not-found when the member names no listing; no-data when it resolved but has no rows for this request, such as a listing without a quote or a date it did not trade."
                                                            },
                                                            "status": {
                                                                "type": "integer"
                                                            },
                                                            "detail": {
                                                                "type": "string"
                                                            }
                                                        },
                                                        "required": [
                                                            "symbol",
                                                            "instrument_id",
                                                            "code",
                                                            "status",
                                                            "detail"
                                                        ]
                                                    },
                                                    "description": "Requested members of a batch that return no rows: every requested symbol or instrument ID appears in data or here. A member that names no listing is reported on the first page, and one that resolved but has no rows on the page that reaches it, so a paginated request reports each one once. Valid members are still returned; entitlement failures reject the request, and a request in which no member resolves is a 404. CSV responses carry these entries in the X-Meta-Errors header."
                                                }
                                            }
                                        }
                                    }
                                }
                            },
                            "text/csv": {
                                "schema": {
                                    "type": "string"
                                }
                            }
                        }
                    },
                    "304": {
                        "$ref": "#/components/responses/NotModified"
                    },
                    "400": {
                        "$ref": "#/components/responses/BadRequest"
                    },
                    "401": {
                        "$ref": "#/components/responses/Unauthorized"
                    },
                    "403": {
                        "$ref": "#/components/responses/Forbidden"
                    },
                    "404": {
                        "$ref": "#/components/responses/NotFound"
                    },
                    "405": {
                        "$ref": "#/components/responses/MethodNotAllowed"
                    },
                    "406": {
                        "$ref": "#/components/responses/NotAcceptable"
                    },
                    "409": {
                        "$ref": "#/components/responses/Conflict"
                    },
                    "413": {
                        "$ref": "#/components/responses/ContentTooLarge"
                    },
                    "414": {
                        "$ref": "#/components/responses/URITooLong"
                    },
                    "415": {
                        "$ref": "#/components/responses/UnsupportedMediaType"
                    },
                    "422": {
                        "$ref": "#/components/responses/UnprocessableContent"
                    },
                    "429": {
                        "$ref": "#/components/responses/TooManyRequests"
                    },
                    "431": {
                        "$ref": "#/components/responses/RequestHeaderFieldsTooLarge"
                    },
                    "500": {
                        "$ref": "#/components/responses/InternalServerError"
                    },
                    "503": {
                        "description": "RFC 9457 problem.",
                        "headers": {
                            "X-RateLimit-Limit": {
                                "$ref": "#/components/headers/X-RateLimit-Limit"
                            },
                            "X-RateLimit-Remaining": {
                                "$ref": "#/components/headers/X-RateLimit-Remaining"
                            },
                            "X-RateLimit-Reset": {
                                "$ref": "#/components/headers/X-RateLimit-Reset"
                            },
                            "Retry-After": {
                                "$ref": "#/components/headers/Retry-After"
                            },
                            "X-Request-ID": {
                                "$ref": "#/components/headers/X-Request-ID"
                            },
                            "Cache-Control": {
                                "$ref": "#/components/headers/Cache-Control"
                            },
                            "X-Credits-Limit": {
                                "$ref": "#/components/headers/X-Credits-Limit"
                            },
                            "X-Credits-Remaining": {
                                "$ref": "#/components/headers/X-Credits-Remaining"
                            },
                            "X-Credits-Cost": {
                                "$ref": "#/components/headers/X-Credits-Cost"
                            },
                            "X-Concurrency-Limit": {
                                "$ref": "#/components/headers/X-Concurrency-Limit"
                            },
                            "X-Concurrency-Remaining": {
                                "$ref": "#/components/headers/X-Concurrency-Remaining"
                            }
                        },
                        "content": {
                            "application/problem+json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Problem"
                                }
                            }
                        }
                    }
                },
                "x-credit-cost": "5 credits per symbol.",
                "x-availability": "available",
                "x-example-query": {
                    "symbols": [
                        "XNAS:AAPL"
                    ]
                }
            }
        },
        "/v1/movers": {
            "get": {
                "operationId": "get_movers",
                "summary": "Top movers",
                "tags": [
                    "Market prices"
                ],
                "x-required-capability": "eod.read",
                "description": "Listings with the largest percent change from the previous session close to a session close, from reconciled end-of-day prices across the entitled markets (each market's latest complete session by default). Gainers rank the largest rises first and include only rises; losers rank the largest falls first and include only falls; ties break by listing. previous_close is split-adjusted, so a split is not a move. A listing whose session opened at least 90% away from its split-adjusted previous close is withheld from the ranking: a split can reach the feed up to a day after it takes effect, and until its record arrives such a session cannot be told from a gain or fall, so it is left out rather than ranked, and appears once the split is recorded. Listings without a bar on both sessions are not ranked. Requires eod.read and an entitled market; a key limited to a symbol list ranks only those symbols. Rankings of recent sessions are rebuilt within minutes of a change to their end-of-day bars.",
                "parameters": [
                    {
                        "name": "direction",
                        "in": "query",
                        "description": "gainers (default) or losers.",
                        "schema": {
                            "type": "string",
                            "enum": [
                                "gainers",
                                "losers"
                            ],
                            "default": "gainers"
                        },
                        "example": "gainers"
                    },
                    {
                        "name": "limit",
                        "in": "query",
                        "description": "Rows to return, from 1 to 50; default 20.",
                        "schema": {
                            "type": "integer",
                            "minimum": 1,
                            "maximum": 50,
                            "default": 20
                        }
                    },
                    {
                        "name": "exchanges",
                        "in": "query",
                        "description": "Comma-separated ISO MIC codes, at most 100, each listed once. Defaults to every entitled exchange; mutual funds are ranked only for keys whose plan includes mutual-funds.read. A malformed or repeated code returns 422 invalid-exchanges, a MIC the API does not serve 404 exchange-not-found, and one outside the key's markets 403 market-not-entitled. A mutual fund venue (NMFQ, FSRV) without mutual-funds.read returns 403 mutual-funds-not-entitled.",
                        "style": "form",
                        "explode": false,
                        "schema": {
                            "type": "array",
                            "minItems": 1,
                            "maxItems": 100,
                            "uniqueItems": true,
                            "items": {
                                "type": "string",
                                "pattern": "^(?:[A-Z0-9]{4}|CRYPTO|FOREX|INDEX)$"
                            }
                        }
                    },
                    {
                        "name": "min_price",
                        "in": "query",
                        "description": "Minimum session close in the listing currency; default 1. Set 0 to include every price.",
                        "schema": {
                            "type": "string",
                            "pattern": "^[0-9]{1,20}(?:\\.[0-9]{1,18})?$",
                            "default": "1"
                        }
                    },
                    {
                        "name": "min_volume",
                        "in": "query",
                        "description": "Minimum session volume; default 100000. For exchange listings it is in shares, for crypto pairs in the quote currency. Currency pairs, indices and bonds have no volume, so they are ranked only with min_volume=0.",
                        "schema": {
                            "type": "string",
                            "pattern": "^[0-9]{1,20}(?:\\.[0-9]{1,18})?$",
                            "default": "100000"
                        }
                    },
                    {
                        "name": "date",
                        "in": "query",
                        "description": "Trading date (YYYY-MM-DD) of the session to rank, compared with each market's session before it; defaults to each market's latest complete session. Must be within the plan history depth. Only the session on this date is ranked, never an earlier one: a market with no session on it (a weekend or holiday of its exchanges, or a date before its history) contributes no rows, and a date on which none of the requested markets traded returns an empty list. A session with no ranking yet (recent ones are kept ranked) is ranked by the first request for it; when that does not fit the request time budget, the response is 503 query-timeout with Retry-After, the ranking continues in the background, and a retry after the Retry-After interval is served from it.",
                        "schema": {
                            "type": "string",
                            "format": "date"
                        }
                    },
                    {
                        "name": "If-None-Match",
                        "in": "header",
                        "description": "ETag from a previous response. Authorization is rechecked before returning 304, and a 304 costs no credits.",
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "format",
                        "in": "query",
                        "description": "Response format. csv returns the data rows with a header row, for spreadsheet functions such as IMPORTDATA; nested fields become dotted columns and lists one JSON array cell, the next page cursor is returned in X-Next-Cursor and meta.errors in X-Meta-Errors. A result without rows is the header row alone, listing the documented fields of a row. Default json, or csv when format is omitted and the Accept header ranks text/csv above JSON; a format the Accept header does not admit returns 406 not-acceptable.",
                        "schema": {
                            "type": "string",
                            "enum": [
                                "json",
                                "csv"
                            ]
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Ranked movers. Prices are decimal strings with currency_code.",
                        "headers": {
                            "X-RateLimit-Limit": {
                                "$ref": "#/components/headers/X-RateLimit-Limit"
                            },
                            "X-RateLimit-Remaining": {
                                "$ref": "#/components/headers/X-RateLimit-Remaining"
                            },
                            "X-RateLimit-Reset": {
                                "$ref": "#/components/headers/X-RateLimit-Reset"
                            },
                            "ETag": {
                                "$ref": "#/components/headers/ETag"
                            },
                            "Cache-Control": {
                                "schema": {
                                    "type": "string",
                                    "const": "must-revalidate, no-cache, private"
                                },
                                "description": "Responses of this endpoint carry an ETag: a client may keep one, and revalidates it with If-None-Match before reuse."
                            },
                            "X-Request-ID": {
                                "$ref": "#/components/headers/X-Request-ID"
                            },
                            "X-Next-Cursor": {
                                "$ref": "#/components/headers/X-Next-Cursor"
                            },
                            "X-Meta-Errors": {
                                "$ref": "#/components/headers/X-Meta-Errors"
                            },
                            "X-Credits-Limit": {
                                "$ref": "#/components/headers/X-Credits-Limit"
                            },
                            "X-Credits-Remaining": {
                                "$ref": "#/components/headers/X-Credits-Remaining"
                            },
                            "X-Credits-Cost": {
                                "$ref": "#/components/headers/X-Credits-Cost"
                            },
                            "X-Concurrency-Limit": {
                                "$ref": "#/components/headers/X-Concurrency-Limit"
                            },
                            "X-Concurrency-Remaining": {
                                "$ref": "#/components/headers/X-Concurrency-Remaining"
                            }
                        },
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "object",
                                    "required": [
                                        "data",
                                        "meta"
                                    ],
                                    "properties": {
                                        "data": {
                                            "type": "array",
                                            "items": {
                                                "$ref": "#/components/schemas/Mover"
                                            }
                                        },
                                        "meta": {
                                            "type": "object",
                                            "required": [
                                                "timezone",
                                                "as_of",
                                                "next_cursor"
                                            ],
                                            "properties": {
                                                "timezone": {
                                                    "type": "string",
                                                    "const": "UTC"
                                                },
                                                "as_of": {
                                                    "type": "string",
                                                    "format": "date-time"
                                                },
                                                "next_cursor": {
                                                    "type": "null",
                                                    "description": "Always null; every result fits one response."
                                                },
                                                "errors": {
                                                    "type": "array",
                                                    "items": {
                                                        "type": "object",
                                                        "properties": {
                                                            "symbol": {
                                                                "type": [
                                                                    "string",
                                                                    "null"
                                                                ],
                                                                "description": "Requested symbol, or the symbol a requested instrument ID resolved to; null when the instrument ID has no unique symbol."
                                                            },
                                                            "instrument_id": {
                                                                "type": [
                                                                    "string",
                                                                    "null"
                                                                ],
                                                                "description": "Instrument ID of the listing: the requested one, or the one a requested symbol resolved to; null when a symbol resolved to no listing."
                                                            },
                                                            "code": {
                                                                "type": "string",
                                                                "description": "symbol-not-resolved or identifier-not-found when the member names no listing; no-data when it resolved but has no rows for this request, such as a listing without a quote or a date it did not trade."
                                                            },
                                                            "status": {
                                                                "type": "integer"
                                                            },
                                                            "detail": {
                                                                "type": "string"
                                                            }
                                                        },
                                                        "required": [
                                                            "symbol",
                                                            "instrument_id",
                                                            "code",
                                                            "status",
                                                            "detail"
                                                        ]
                                                    },
                                                    "description": "Requested members of a batch that return no rows: every requested symbol or instrument ID appears in data or here. A member that names no listing is reported on the first page, and one that resolved but has no rows on the page that reaches it, so a paginated request reports each one once. Valid members are still returned; entitlement failures reject the request, and a request in which no member resolves is a 404. CSV responses carry these entries in the X-Meta-Errors header."
                                                }
                                            }
                                        }
                                    }
                                }
                            },
                            "text/csv": {
                                "schema": {
                                    "type": "string"
                                }
                            }
                        }
                    },
                    "304": {
                        "$ref": "#/components/responses/NotModified"
                    },
                    "400": {
                        "$ref": "#/components/responses/BadRequest"
                    },
                    "401": {
                        "$ref": "#/components/responses/Unauthorized"
                    },
                    "403": {
                        "$ref": "#/components/responses/Forbidden"
                    },
                    "404": {
                        "$ref": "#/components/responses/NotFound"
                    },
                    "405": {
                        "$ref": "#/components/responses/MethodNotAllowed"
                    },
                    "406": {
                        "$ref": "#/components/responses/NotAcceptable"
                    },
                    "409": {
                        "$ref": "#/components/responses/Conflict"
                    },
                    "413": {
                        "$ref": "#/components/responses/ContentTooLarge"
                    },
                    "414": {
                        "$ref": "#/components/responses/URITooLong"
                    },
                    "415": {
                        "$ref": "#/components/responses/UnsupportedMediaType"
                    },
                    "422": {
                        "$ref": "#/components/responses/UnprocessableContent"
                    },
                    "429": {
                        "$ref": "#/components/responses/TooManyRequests"
                    },
                    "431": {
                        "$ref": "#/components/responses/RequestHeaderFieldsTooLarge"
                    },
                    "500": {
                        "$ref": "#/components/responses/InternalServerError"
                    },
                    "503": {
                        "description": "RFC 9457 problem.",
                        "headers": {
                            "X-RateLimit-Limit": {
                                "$ref": "#/components/headers/X-RateLimit-Limit"
                            },
                            "X-RateLimit-Remaining": {
                                "$ref": "#/components/headers/X-RateLimit-Remaining"
                            },
                            "X-RateLimit-Reset": {
                                "$ref": "#/components/headers/X-RateLimit-Reset"
                            },
                            "Retry-After": {
                                "$ref": "#/components/headers/Retry-After"
                            },
                            "X-Request-ID": {
                                "$ref": "#/components/headers/X-Request-ID"
                            },
                            "Cache-Control": {
                                "$ref": "#/components/headers/Cache-Control"
                            },
                            "X-Credits-Limit": {
                                "$ref": "#/components/headers/X-Credits-Limit"
                            },
                            "X-Credits-Remaining": {
                                "$ref": "#/components/headers/X-Credits-Remaining"
                            },
                            "X-Credits-Cost": {
                                "$ref": "#/components/headers/X-Credits-Cost"
                            },
                            "X-Concurrency-Limit": {
                                "$ref": "#/components/headers/X-Concurrency-Limit"
                            },
                            "X-Concurrency-Remaining": {
                                "$ref": "#/components/headers/X-Concurrency-Remaining"
                            }
                        },
                        "content": {
                            "application/problem+json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Problem"
                                }
                            }
                        }
                    }
                },
                "x-credit-cost": "25 credits per request.",
                "x-availability": "available",
                "x-example-query": {
                    "direction": "gainers"
                }
            }
        },
        "/v1/instruments": {
            "get": {
                "operationId": "list_instruments",
                "summary": "Instruments",
                "tags": [
                    "Reference data"
                ],
                "description": "Cross-asset discovery, listing lifecycle and issuer links. Default status=active. identifier and identifier_type must be supplied together. Default order: id ascending. Omitting entity selectors returns the entitled universe; explicit unauthorized selectors return 403. Data is delivered from validated canonical batches; a connected dataset with nothing published for the key's markets yet returns 503. Access requires the operation capability on the API key.",
                "x-implementation-status": "implemented",
                "x-required-capability": "instruments.read",
                "x-time-field": "id",
                "x-exportable": true,
                "parameters": [
                    {
                        "name": "instrument_ids",
                        "in": "query",
                        "required": false,
                        "description": "Filter by stable instrument IDs. IDs and symbols may not be combined.",
                        "schema": {
                            "type": "array",
                            "minItems": 1,
                            "maxItems": 100,
                            "uniqueItems": true,
                            "items": {
                                "type": "string",
                                "description": "Opaque stable public identifier; never an internal database key.",
                                "minLength": 1,
                                "maxLength": 128,
                                "pattern": "^[A-Za-z0-9][A-Za-z0-9_.:-]{0,127}$"
                            }
                        },
                        "style": "form",
                        "explode": false
                    },
                    {
                        "name": "symbols",
                        "in": "query",
                        "required": false,
                        "description": "Convenience lookup for exchange-listed instruments as MIC:TICKER or a bare ticker, which resolves to the exchange listing that ticker; resolves at symbol_at. The MIC and the ticker are case-insensitive, and two spellings of one listing (AAPL and XNAS:AAPL) count as a repeated value. A bare ticker that names no listing as written is also read in the common vendor spellings: with an exchange suffix (RY.TO, SHEL.L, VOD.LSE, BHP.AX), ^GSPC for INDEX:GSPC, and EURUSD=X or EURUSD for FOREX:EUR-USD. A ticker may contain a space (BAC PRL) but not start or end with one. A request in which no symbol resolves returns 404 symbol-not-resolved; otherwise each symbol that does not resolve, or resolves to a listing with no rows for the request (no-data), is an entry of meta.errors. IDs and symbols may not be combined.",
                        "schema": {
                            "type": "array",
                            "minItems": 1,
                            "maxItems": 100,
                            "uniqueItems": true,
                            "items": {
                                "type": "string",
                                "pattern": "^(?:(?:[A-Za-z0-9]{4}|[Cc][Rr][Yy][Pp][Tt][Oo]|[Ff][Oo][Rr][Ee][Xx]|[Ii][Nn][Dd][Ee][Xx]):|\\^)?[A-Za-z0-9](?:[A-Za-z0-9./_^= -]{0,62}[A-Za-z0-9./_^=-])?$"
                            }
                        },
                        "style": "form",
                        "explode": false,
                        "example": [
                            "XNAS:AAPL"
                        ]
                    },
                    {
                        "name": "symbol_at",
                        "in": "query",
                        "required": false,
                        "description": "Resolve symbols as they were assigned at the end of this UTC date (YYYY-MM-DD); defaults to as_of. Only listings the security master holds resolve: it was built in September 2026 and records delistings from then on, so most issuers delisted earlier, such as TWTR or SIVB, resolve at no date. Only valid with symbols.",
                        "schema": {
                            "type": "string",
                            "format": "date"
                        }
                    },
                    {
                        "name": "asset_type",
                        "in": "query",
                        "required": false,
                        "description": "Asset class.",
                        "schema": {
                            "type": "string",
                            "enum": [
                                "equity",
                                "etf",
                                "mutual_fund",
                                "crypto",
                                "forex",
                                "index",
                                "bond"
                            ],
                            "description": "Asset class."
                        }
                    },
                    {
                        "name": "status",
                        "in": "query",
                        "required": false,
                        "description": "Default active. The security master was built in September 2026 from the listings its sources still carried and records delistings from then on, so nearly every delisted listing it holds stopped trading in 2026, and most issuers delisted earlier, such as TWTR or SIVB, are not held. all is therefore not a survivorship-free historical universe.",
                        "schema": {
                            "type": "string",
                            "enum": [
                                "active",
                                "delisted",
                                "expired",
                                "inactive",
                                "all"
                            ],
                            "description": "Default active. The security master was built in September 2026 from the listings its sources still carried and records delistings from then on, so nearly every delisted listing it holds stopped trading in 2026, and most issuers delisted earlier, such as TWTR or SIVB, are not held. all is therefore not a survivorship-free historical universe."
                        }
                    },
                    {
                        "name": "countries",
                        "in": "query",
                        "required": false,
                        "description": "ISO 3166-1 alpha-2 country codes of the listing's exchange; with exchanges, the exchanges in these countries. The CRYPTO, FOREX, INDEX and BOND venues have no country (ZZ).",
                        "schema": {
                            "type": "array",
                            "minItems": 1,
                            "maxItems": 100,
                            "uniqueItems": true,
                            "items": {
                                "type": "string",
                                "pattern": "^[A-Z]{2}$"
                            }
                        },
                        "style": "form",
                        "explode": false
                    },
                    {
                        "name": "exchanges",
                        "in": "query",
                        "required": false,
                        "description": "Listing MICs. A malformed or repeated code returns 422 invalid-exchanges, a MIC the API does not serve 404 exchange-not-found, and one outside the key's markets 403 market-not-entitled.",
                        "schema": {
                            "type": "array",
                            "minItems": 1,
                            "maxItems": 100,
                            "uniqueItems": true,
                            "items": {
                                "type": "string",
                                "pattern": "^(?:[A-Z0-9]{4}|CRYPTO|FOREX|INDEX)$"
                            }
                        },
                        "style": "form",
                        "explode": false
                    },
                    {
                        "name": "q",
                        "in": "query",
                        "required": false,
                        "description": "Case-insensitive name or symbol search. Without order, the best matches come first: an exact ticker, then an exact name, then names that start with the text, then other matches, the most traded first within each. A value that is empty or only whitespace returns 422.",
                        "schema": {
                            "type": "string",
                            "minLength": 1,
                            "maxLength": 200,
                            "pattern": "\\S"
                        }
                    },
                    {
                        "name": "identifier_type",
                        "in": "query",
                        "required": false,
                        "description": "Must be supplied together with identifier.",
                        "schema": {
                            "type": "string",
                            "enum": [
                                "isin",
                                "cusip",
                                "figi",
                                "cik",
                                "lei"
                            ],
                            "description": "Must be supplied together with identifier."
                        }
                    },
                    {
                        "name": "identifier",
                        "in": "query",
                        "required": false,
                        "description": "Exact identifier; requires identifier_type. May return multiple related listings. A CIK's leading zeroes are optional. Only listings with a provider profile match, so OTC listings, crypto and currency pairs, indices and bonds are not found this way (a bond is BOND:<ISIN> in symbols).",
                        "schema": {
                            "type": "string",
                            "minLength": 1,
                            "maxLength": 64
                        }
                    },
                    {
                        "name": "effective_date",
                        "in": "query",
                        "required": false,
                        "description": "Effective date, defaults to the UTC date of as_of. Returns the latest eligible snapshot on or before this date; response retains its actual snapshot date.",
                        "schema": {
                            "type": "string",
                            "format": "date"
                        }
                    },
                    {
                        "name": "as_of",
                        "in": "query",
                        "required": false,
                        "description": "Knowledge cutoff as a UTC date (YYYY-MM-DD): the response reflects what was known by the end of that day. Defaults to now; cannot be in the future. A date from before the dataset's knowledge history returns 422 point-in-time-unavailable naming the earliest one, which GET /v1/datasets lists as earliest_as_of.",
                        "schema": {
                            "type": "string",
                            "format": "date"
                        }
                    },
                    {
                        "name": "known_from",
                        "in": "query",
                        "required": false,
                        "description": "First UTC date (YYYY-MM-DD, inclusive) on which a revision became known.",
                        "schema": {
                            "type": "string",
                            "format": "date"
                        }
                    },
                    {
                        "name": "known_to",
                        "in": "query",
                        "required": false,
                        "description": "Last UTC date (YYYY-MM-DD, inclusive) on which a revision became known; on or after known_from.",
                        "schema": {
                            "type": "string",
                            "format": "date"
                        }
                    },
                    {
                        "name": "order",
                        "in": "query",
                        "required": false,
                        "description": "Direction on id; ties use ID ascending.",
                        "schema": {
                            "type": "string",
                            "enum": [
                                "asc",
                                "desc"
                            ],
                            "description": "Direction on id; ties use ID ascending.",
                            "default": "asc"
                        }
                    },
                    {
                        "name": "limit",
                        "in": "query",
                        "required": false,
                        "description": "Maximum records per page.",
                        "schema": {
                            "type": "integer",
                            "minimum": 1,
                            "maximum": 500,
                            "default": 100
                        }
                    },
                    {
                        "name": "cursor",
                        "in": "query",
                        "required": false,
                        "description": "Opaque cursor, expires after one hour; binds filters, order, resolved as_of, account/key and entitlement. Repeat the original query unchanged.",
                        "schema": {
                            "type": "string",
                            "maxLength": 4096
                        }
                    },
                    {
                        "name": "format",
                        "in": "query",
                        "description": "Response format. csv returns the data rows with a header row, for spreadsheet functions such as IMPORTDATA; nested fields become dotted columns and lists one JSON array cell, the next page cursor is returned in X-Next-Cursor and meta.errors in X-Meta-Errors. A result without rows is the header row alone, listing the documented fields of a row. Default json, or csv when format is omitted and the Accept header ranks text/csv above JSON; a format the Accept header does not admit returns 406 not-acceptable.",
                        "schema": {
                            "type": "string",
                            "enum": [
                                "json",
                                "csv"
                            ]
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Authorized records. An empty collection is a valid result; a dataset with no connected source returns 501, and one with nothing published for your markets 503.",
                        "headers": {
                            "X-RateLimit-Limit": {
                                "$ref": "#/components/headers/X-RateLimit-Limit"
                            },
                            "X-RateLimit-Remaining": {
                                "$ref": "#/components/headers/X-RateLimit-Remaining"
                            },
                            "X-RateLimit-Reset": {
                                "$ref": "#/components/headers/X-RateLimit-Reset"
                            },
                            "Cache-Control": {
                                "description": "Always no-store, private: responses of this endpoint carry no ETag and must not be stored or reused.",
                                "schema": {
                                    "type": "string",
                                    "const": "no-store, private"
                                }
                            },
                            "X-Request-ID": {
                                "$ref": "#/components/headers/X-Request-ID"
                            },
                            "X-Next-Cursor": {
                                "$ref": "#/components/headers/X-Next-Cursor"
                            },
                            "X-Meta-Errors": {
                                "$ref": "#/components/headers/X-Meta-Errors"
                            },
                            "X-Credits-Limit": {
                                "$ref": "#/components/headers/X-Credits-Limit"
                            },
                            "X-Credits-Remaining": {
                                "$ref": "#/components/headers/X-Credits-Remaining"
                            },
                            "X-Credits-Cost": {
                                "$ref": "#/components/headers/X-Credits-Cost"
                            },
                            "X-Concurrency-Limit": {
                                "$ref": "#/components/headers/X-Concurrency-Limit"
                            },
                            "X-Concurrency-Remaining": {
                                "$ref": "#/components/headers/X-Concurrency-Remaining"
                            }
                        },
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "object",
                                    "additionalProperties": false,
                                    "properties": {
                                        "data": {
                                            "type": "array",
                                            "items": {
                                                "$ref": "#/components/schemas/Instrument"
                                            }
                                        },
                                        "meta": {
                                            "$ref": "#/components/schemas/ResponseMeta"
                                        }
                                    },
                                    "required": [
                                        "data",
                                        "meta"
                                    ]
                                },
                                "examples": {
                                    "synthetic": {
                                        "summary": "Synthetic contract example; not production data",
                                        "value": {
                                            "data": [
                                                {
                                                    "id": "inst_example_aapl",
                                                    "security_id": "inst_example_aapl",
                                                    "name": "Example Corporation common stock",
                                                    "asset_type": "equity",
                                                    "company_id": "company_example_apple",
                                                    "symbol": "XNAS:AAPL",
                                                    "exchange_mic": "XNAS",
                                                    "currency_code": "USD",
                                                    "status": "active",
                                                    "listed_on": "2026-09-18",
                                                    "delisted_on": null,
                                                    "base_instrument_id": null,
                                                    "quote_instrument_id": null,
                                                    "bond": null
                                                }
                                            ],
                                            "meta": {
                                                "timezone": "UTC",
                                                "as_of": "2026-11-01T00:00:00Z",
                                                "next_cursor": null,
                                                "coverage": {
                                                    "status": "complete",
                                                    "reason": null
                                                }
                                            }
                                        }
                                    }
                                }
                            },
                            "text/csv": {
                                "schema": {
                                    "type": "string"
                                }
                            }
                        }
                    },
                    "400": {
                        "$ref": "#/components/responses/BadRequest"
                    },
                    "401": {
                        "$ref": "#/components/responses/Unauthorized"
                    },
                    "403": {
                        "$ref": "#/components/responses/Forbidden"
                    },
                    "404": {
                        "$ref": "#/components/responses/NotFound"
                    },
                    "405": {
                        "$ref": "#/components/responses/MethodNotAllowed"
                    },
                    "406": {
                        "$ref": "#/components/responses/NotAcceptable"
                    },
                    "409": {
                        "$ref": "#/components/responses/Conflict"
                    },
                    "413": {
                        "$ref": "#/components/responses/ContentTooLarge"
                    },
                    "414": {
                        "$ref": "#/components/responses/URITooLong"
                    },
                    "415": {
                        "$ref": "#/components/responses/UnsupportedMediaType"
                    },
                    "422": {
                        "$ref": "#/components/responses/UnprocessableContent"
                    },
                    "429": {
                        "$ref": "#/components/responses/TooManyRequests"
                    },
                    "431": {
                        "$ref": "#/components/responses/RequestHeaderFieldsTooLarge"
                    },
                    "500": {
                        "$ref": "#/components/responses/InternalServerError"
                    },
                    "503": {
                        "$ref": "#/components/responses/ServiceUnavailable"
                    }
                },
                "x-query-constraints": [
                    {
                        "rule": "mutually_exclusive",
                        "parameters": [
                            "instrument_ids",
                            "symbols"
                        ]
                    },
                    {
                        "rule": "requires",
                        "parameter": "symbol_at",
                        "required": [
                            "symbols"
                        ]
                    },
                    {
                        "rule": "all_or_none",
                        "parameters": [
                            "identifier",
                            "identifier_type"
                        ]
                    },
                    {
                        "rule": "less_than",
                        "lower": "known_from",
                        "upper": "known_to"
                    }
                ],
                "x-example-query": {
                    "symbols": [
                        "XNAS:AAPL"
                    ]
                },
                "x-contract-family": "research",
                "x-credit-cost": "5 credits per request.",
                "x-availability": "available"
            }
        },
        "/v1/instruments/{instrument_id}/symbols": {
            "get": {
                "operationId": "list_instruments_instrument_id_symbols",
                "summary": "Symbol history",
                "tags": [
                    "Reference data"
                ],
                "description": "Effective-dated aliases, including retired tickers. Default order: valid_from ascending, id ascending. Results are limited to the entitled scope. Served from the OHLC security master, exchange calendars and reference tables. Access requires the operation capability on the API key.",
                "x-implementation-status": "implemented",
                "x-required-capability": "instruments.read",
                "x-time-field": "valid_from",
                "x-exportable": true,
                "parameters": [
                    {
                        "name": "instrument_id",
                        "in": "path",
                        "required": true,
                        "description": "Stable public identifier.",
                        "schema": {
                            "type": "string",
                            "description": "Opaque stable public identifier; never an internal database key.",
                            "minLength": 1,
                            "maxLength": 128,
                            "pattern": "^[A-Za-z0-9][A-Za-z0-9_.:-]{0,127}$"
                        },
                        "example": "01M35H2KE2ZJHXFY5C3E7FPC66"
                    },
                    {
                        "name": "from",
                        "in": "query",
                        "required": false,
                        "description": "First date (YYYY-MM-DD, inclusive) on which a symbol took effect, on the exchange's local calendar.",
                        "schema": {
                            "type": "string",
                            "format": "date"
                        }
                    },
                    {
                        "name": "to",
                        "in": "query",
                        "required": false,
                        "description": "Last date (YYYY-MM-DD, inclusive) on which a symbol took effect; on or after from.",
                        "schema": {
                            "type": "string",
                            "format": "date"
                        }
                    },
                    {
                        "name": "as_of",
                        "in": "query",
                        "required": false,
                        "description": "Knowledge cutoff as a UTC date (YYYY-MM-DD): the response reflects what was known by the end of that day. Defaults to now; cannot be in the future. A date from before the dataset's knowledge history returns 422 point-in-time-unavailable naming the earliest one, which GET /v1/datasets lists as earliest_as_of.",
                        "schema": {
                            "type": "string",
                            "format": "date"
                        }
                    },
                    {
                        "name": "known_from",
                        "in": "query",
                        "required": false,
                        "description": "First UTC date (YYYY-MM-DD, inclusive) on which a revision became known.",
                        "schema": {
                            "type": "string",
                            "format": "date"
                        }
                    },
                    {
                        "name": "known_to",
                        "in": "query",
                        "required": false,
                        "description": "Last UTC date (YYYY-MM-DD, inclusive) on which a revision became known; on or after known_from.",
                        "schema": {
                            "type": "string",
                            "format": "date"
                        }
                    },
                    {
                        "name": "order",
                        "in": "query",
                        "required": false,
                        "description": "Direction on valid_from; ties use ID ascending.",
                        "schema": {
                            "type": "string",
                            "enum": [
                                "asc",
                                "desc"
                            ],
                            "description": "Direction on valid_from; ties use ID ascending.",
                            "default": "asc"
                        }
                    },
                    {
                        "name": "limit",
                        "in": "query",
                        "required": false,
                        "description": "Maximum records per page.",
                        "schema": {
                            "type": "integer",
                            "minimum": 1,
                            "maximum": 500,
                            "default": 100
                        }
                    },
                    {
                        "name": "cursor",
                        "in": "query",
                        "required": false,
                        "description": "Opaque cursor, expires after one hour; binds filters, order, resolved as_of, account/key and entitlement. Repeat the original query unchanged.",
                        "schema": {
                            "type": "string",
                            "maxLength": 4096
                        }
                    },
                    {
                        "name": "format",
                        "in": "query",
                        "description": "Response format. csv returns the data rows with a header row, for spreadsheet functions such as IMPORTDATA; nested fields become dotted columns and lists one JSON array cell, the next page cursor is returned in X-Next-Cursor and meta.errors in X-Meta-Errors. A result without rows is the header row alone, listing the documented fields of a row. Default json, or csv when format is omitted and the Accept header ranks text/csv above JSON; a format the Accept header does not admit returns 406 not-acceptable.",
                        "schema": {
                            "type": "string",
                            "enum": [
                                "json",
                                "csv"
                            ]
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Authorized records. An empty collection is a valid result; a dataset with no connected source returns 501, and one with nothing published for your markets 503.",
                        "headers": {
                            "X-RateLimit-Limit": {
                                "$ref": "#/components/headers/X-RateLimit-Limit"
                            },
                            "X-RateLimit-Remaining": {
                                "$ref": "#/components/headers/X-RateLimit-Remaining"
                            },
                            "X-RateLimit-Reset": {
                                "$ref": "#/components/headers/X-RateLimit-Reset"
                            },
                            "Cache-Control": {
                                "description": "Always no-store, private: responses of this endpoint carry no ETag and must not be stored or reused.",
                                "schema": {
                                    "type": "string",
                                    "const": "no-store, private"
                                }
                            },
                            "X-Request-ID": {
                                "$ref": "#/components/headers/X-Request-ID"
                            },
                            "X-Next-Cursor": {
                                "$ref": "#/components/headers/X-Next-Cursor"
                            },
                            "X-Meta-Errors": {
                                "$ref": "#/components/headers/X-Meta-Errors"
                            },
                            "X-Credits-Limit": {
                                "$ref": "#/components/headers/X-Credits-Limit"
                            },
                            "X-Credits-Remaining": {
                                "$ref": "#/components/headers/X-Credits-Remaining"
                            },
                            "X-Credits-Cost": {
                                "$ref": "#/components/headers/X-Credits-Cost"
                            },
                            "X-Concurrency-Limit": {
                                "$ref": "#/components/headers/X-Concurrency-Limit"
                            },
                            "X-Concurrency-Remaining": {
                                "$ref": "#/components/headers/X-Concurrency-Remaining"
                            }
                        },
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "object",
                                    "additionalProperties": false,
                                    "properties": {
                                        "data": {
                                            "type": "array",
                                            "items": {
                                                "$ref": "#/components/schemas/InstrumentSymbol"
                                            }
                                        },
                                        "meta": {
                                            "$ref": "#/components/schemas/ResponseMeta"
                                        }
                                    },
                                    "required": [
                                        "data",
                                        "meta"
                                    ]
                                },
                                "examples": {
                                    "synthetic": {
                                        "summary": "Synthetic contract example; not production data",
                                        "value": {
                                            "data": [
                                                {
                                                    "id": "record_example_1",
                                                    "instrument_id": "inst_example_aapl",
                                                    "symbol": "XNAS:AAPL",
                                                    "valid_from": "2026-09-18T20:00:00Z",
                                                    "valid_to": null
                                                }
                                            ],
                                            "meta": {
                                                "timezone": "UTC",
                                                "as_of": "2026-11-01T00:00:00Z",
                                                "next_cursor": null,
                                                "coverage": {
                                                    "status": "complete",
                                                    "reason": null
                                                }
                                            }
                                        }
                                    }
                                }
                            },
                            "text/csv": {
                                "schema": {
                                    "type": "string"
                                }
                            }
                        }
                    },
                    "400": {
                        "$ref": "#/components/responses/BadRequest"
                    },
                    "401": {
                        "$ref": "#/components/responses/Unauthorized"
                    },
                    "403": {
                        "$ref": "#/components/responses/Forbidden"
                    },
                    "404": {
                        "$ref": "#/components/responses/NotFound"
                    },
                    "405": {
                        "$ref": "#/components/responses/MethodNotAllowed"
                    },
                    "406": {
                        "$ref": "#/components/responses/NotAcceptable"
                    },
                    "409": {
                        "$ref": "#/components/responses/Conflict"
                    },
                    "413": {
                        "$ref": "#/components/responses/ContentTooLarge"
                    },
                    "414": {
                        "$ref": "#/components/responses/URITooLong"
                    },
                    "415": {
                        "$ref": "#/components/responses/UnsupportedMediaType"
                    },
                    "422": {
                        "$ref": "#/components/responses/UnprocessableContent"
                    },
                    "429": {
                        "$ref": "#/components/responses/TooManyRequests"
                    },
                    "431": {
                        "$ref": "#/components/responses/RequestHeaderFieldsTooLarge"
                    },
                    "500": {
                        "$ref": "#/components/responses/InternalServerError"
                    },
                    "503": {
                        "$ref": "#/components/responses/ServiceUnavailable"
                    }
                },
                "x-query-constraints": [
                    {
                        "rule": "less_than",
                        "lower": "from",
                        "upper": "to"
                    },
                    {
                        "rule": "less_than",
                        "lower": "known_from",
                        "upper": "known_to"
                    }
                ],
                "x-example-query": {
                    "instrument_id": "01M35H2KE2ZJHXFY5C3E7FPC66"
                },
                "x-contract-family": "research",
                "x-credit-cost": "5 credits per request.",
                "x-availability": "available"
            }
        },
        "/v1/instruments/{instrument_id}/identifiers": {
            "get": {
                "operationId": "list_instruments_instrument_id_identifiers",
                "summary": "Instrument identifiers",
                "tags": [
                    "Reference data"
                ],
                "description": "External identifiers of a listing as its provider profile states them: ISIN, CUSIP and FIGI identify the listing, CIK and LEI its issuer. valid_from and valid_to are null, since the source does not date them, and effective_date does not narrow the list; as_of bounds when an identifier became known. The security master's CIK and FIGI links are in /v1/tickers. Default order: id ascending. Results are limited to the entitled scope. Data is delivered from validated canonical batches; a connected dataset with nothing published for the key's markets yet returns 503. Access requires the operation capability on the API key.",
                "x-implementation-status": "implemented",
                "x-required-capability": "instruments.read",
                "x-time-field": "id",
                "x-exportable": true,
                "parameters": [
                    {
                        "name": "instrument_id",
                        "in": "path",
                        "required": true,
                        "description": "Stable public identifier.",
                        "schema": {
                            "type": "string",
                            "description": "Opaque stable public identifier; never an internal database key.",
                            "minLength": 1,
                            "maxLength": 128,
                            "pattern": "^[A-Za-z0-9][A-Za-z0-9_.:-]{0,127}$"
                        },
                        "example": "01M35H2KE2ZJHXFY5C3E7FPC66"
                    },
                    {
                        "name": "effective_date",
                        "in": "query",
                        "required": false,
                        "description": "Effective date, defaults to the UTC date of as_of. Returns the latest eligible snapshot on or before this date; response retains its actual snapshot date.",
                        "schema": {
                            "type": "string",
                            "format": "date"
                        }
                    },
                    {
                        "name": "as_of",
                        "in": "query",
                        "required": false,
                        "description": "Knowledge cutoff as a UTC date (YYYY-MM-DD): the response reflects what was known by the end of that day. Defaults to now; cannot be in the future. A date from before the dataset's knowledge history returns 422 point-in-time-unavailable naming the earliest one, which GET /v1/datasets lists as earliest_as_of.",
                        "schema": {
                            "type": "string",
                            "format": "date"
                        }
                    },
                    {
                        "name": "known_from",
                        "in": "query",
                        "required": false,
                        "description": "First UTC date (YYYY-MM-DD, inclusive) on which a revision became known.",
                        "schema": {
                            "type": "string",
                            "format": "date"
                        }
                    },
                    {
                        "name": "known_to",
                        "in": "query",
                        "required": false,
                        "description": "Last UTC date (YYYY-MM-DD, inclusive) on which a revision became known; on or after known_from.",
                        "schema": {
                            "type": "string",
                            "format": "date"
                        }
                    },
                    {
                        "name": "order",
                        "in": "query",
                        "required": false,
                        "description": "Direction on id; ties use ID ascending.",
                        "schema": {
                            "type": "string",
                            "enum": [
                                "asc",
                                "desc"
                            ],
                            "description": "Direction on id; ties use ID ascending.",
                            "default": "asc"
                        }
                    },
                    {
                        "name": "limit",
                        "in": "query",
                        "required": false,
                        "description": "Maximum records per page.",
                        "schema": {
                            "type": "integer",
                            "minimum": 1,
                            "maximum": 500,
                            "default": 100
                        }
                    },
                    {
                        "name": "cursor",
                        "in": "query",
                        "required": false,
                        "description": "Opaque cursor, expires after one hour; binds filters, order, resolved as_of, account/key and entitlement. Repeat the original query unchanged.",
                        "schema": {
                            "type": "string",
                            "maxLength": 4096
                        }
                    },
                    {
                        "name": "format",
                        "in": "query",
                        "description": "Response format. csv returns the data rows with a header row, for spreadsheet functions such as IMPORTDATA; nested fields become dotted columns and lists one JSON array cell, the next page cursor is returned in X-Next-Cursor and meta.errors in X-Meta-Errors. A result without rows is the header row alone, listing the documented fields of a row. Default json, or csv when format is omitted and the Accept header ranks text/csv above JSON; a format the Accept header does not admit returns 406 not-acceptable.",
                        "schema": {
                            "type": "string",
                            "enum": [
                                "json",
                                "csv"
                            ]
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Authorized records. An empty collection is a valid result; a dataset with no connected source returns 501, and one with nothing published for your markets 503.",
                        "headers": {
                            "X-RateLimit-Limit": {
                                "$ref": "#/components/headers/X-RateLimit-Limit"
                            },
                            "X-RateLimit-Remaining": {
                                "$ref": "#/components/headers/X-RateLimit-Remaining"
                            },
                            "X-RateLimit-Reset": {
                                "$ref": "#/components/headers/X-RateLimit-Reset"
                            },
                            "Cache-Control": {
                                "description": "Always no-store, private: responses of this endpoint carry no ETag and must not be stored or reused.",
                                "schema": {
                                    "type": "string",
                                    "const": "no-store, private"
                                }
                            },
                            "X-Request-ID": {
                                "$ref": "#/components/headers/X-Request-ID"
                            },
                            "X-Next-Cursor": {
                                "$ref": "#/components/headers/X-Next-Cursor"
                            },
                            "X-Meta-Errors": {
                                "$ref": "#/components/headers/X-Meta-Errors"
                            },
                            "X-Credits-Limit": {
                                "$ref": "#/components/headers/X-Credits-Limit"
                            },
                            "X-Credits-Remaining": {
                                "$ref": "#/components/headers/X-Credits-Remaining"
                            },
                            "X-Credits-Cost": {
                                "$ref": "#/components/headers/X-Credits-Cost"
                            },
                            "X-Concurrency-Limit": {
                                "$ref": "#/components/headers/X-Concurrency-Limit"
                            },
                            "X-Concurrency-Remaining": {
                                "$ref": "#/components/headers/X-Concurrency-Remaining"
                            }
                        },
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "object",
                                    "additionalProperties": false,
                                    "properties": {
                                        "data": {
                                            "type": "array",
                                            "items": {
                                                "$ref": "#/components/schemas/InstrumentIdentifier"
                                            }
                                        },
                                        "meta": {
                                            "$ref": "#/components/schemas/ResponseMeta"
                                        }
                                    },
                                    "required": [
                                        "data",
                                        "meta"
                                    ]
                                },
                                "examples": {
                                    "synthetic": {
                                        "summary": "Synthetic contract example; not production data",
                                        "value": {
                                            "data": [
                                                {
                                                    "id": "record_example_1",
                                                    "instrument_id": "inst_example_aapl",
                                                    "type": "isin",
                                                    "value": "US0378331005",
                                                    "entity_type": "instrument",
                                                    "company_id": "company_example_apple",
                                                    "valid_from": "2026-09-18",
                                                    "valid_to": null
                                                }
                                            ],
                                            "meta": {
                                                "timezone": "UTC",
                                                "as_of": "2026-11-01T00:00:00Z",
                                                "next_cursor": null,
                                                "coverage": {
                                                    "status": "complete",
                                                    "reason": null
                                                }
                                            }
                                        }
                                    }
                                }
                            },
                            "text/csv": {
                                "schema": {
                                    "type": "string"
                                }
                            }
                        }
                    },
                    "400": {
                        "$ref": "#/components/responses/BadRequest"
                    },
                    "401": {
                        "$ref": "#/components/responses/Unauthorized"
                    },
                    "403": {
                        "$ref": "#/components/responses/Forbidden"
                    },
                    "404": {
                        "$ref": "#/components/responses/NotFound"
                    },
                    "405": {
                        "$ref": "#/components/responses/MethodNotAllowed"
                    },
                    "406": {
                        "$ref": "#/components/responses/NotAcceptable"
                    },
                    "409": {
                        "$ref": "#/components/responses/Conflict"
                    },
                    "413": {
                        "$ref": "#/components/responses/ContentTooLarge"
                    },
                    "414": {
                        "$ref": "#/components/responses/URITooLong"
                    },
                    "415": {
                        "$ref": "#/components/responses/UnsupportedMediaType"
                    },
                    "422": {
                        "$ref": "#/components/responses/UnprocessableContent"
                    },
                    "429": {
                        "$ref": "#/components/responses/TooManyRequests"
                    },
                    "431": {
                        "$ref": "#/components/responses/RequestHeaderFieldsTooLarge"
                    },
                    "500": {
                        "$ref": "#/components/responses/InternalServerError"
                    },
                    "503": {
                        "$ref": "#/components/responses/ServiceUnavailable"
                    }
                },
                "x-query-constraints": [
                    {
                        "rule": "less_than",
                        "lower": "known_from",
                        "upper": "known_to"
                    }
                ],
                "x-example-query": {
                    "instrument_id": "01M35H2KE2ZJHXFY5C3E7FPC66"
                },
                "x-contract-family": "research",
                "x-credit-cost": "5 credits per request.",
                "x-availability": "available"
            }
        },
        "/v1/companies": {
            "get": {
                "operationId": "list_companies",
                "summary": "Companies",
                "tags": [
                    "Company data"
                ],
                "description": "Issuer profiles, sector and industry, officers, branding and listings. There is one profile per listed security's issuer: an ETF or mutual fund is profiled as itself, and a preferred series or a second share class has its own profile and company_id next to the common stock's. Issuer-level datasets (statements, segments, earnings, estimates, insider transactions, news) resolve any share class to the company's records. classifications is empty until a coded scheme is connected. Default order: id ascending. Omitting entity selectors returns the entitled universe; explicit unauthorized selectors return 403. Data is delivered from validated canonical batches; a connected dataset with nothing published for the key's markets yet returns 503. Access requires the operation capability on the API key.",
                "x-implementation-status": "implemented",
                "x-required-capability": "companies.read",
                "x-time-field": "id",
                "x-exportable": true,
                "parameters": [
                    {
                        "name": "company_ids",
                        "in": "query",
                        "required": false,
                        "description": "Filter by issuer IDs. May be combined with instrument selectors; filters intersect, except on issuer-level datasets (statements, segments, estimates, earnings, insider transactions), where an instrument selector is read as its company and takes the place of company_ids, so results cover every share class.",
                        "schema": {
                            "type": "array",
                            "minItems": 1,
                            "maxItems": 100,
                            "uniqueItems": true,
                            "items": {
                                "type": "string",
                                "description": "Opaque stable public identifier; never an internal database key.",
                                "minLength": 1,
                                "maxLength": 128,
                                "pattern": "^[A-Za-z0-9][A-Za-z0-9_.:-]{0,127}$"
                            }
                        },
                        "style": "form",
                        "explode": false
                    },
                    {
                        "name": "instrument_ids",
                        "in": "query",
                        "required": false,
                        "description": "Filter by stable instrument IDs. IDs and symbols may not be combined.",
                        "schema": {
                            "type": "array",
                            "minItems": 1,
                            "maxItems": 100,
                            "uniqueItems": true,
                            "items": {
                                "type": "string",
                                "description": "Opaque stable public identifier; never an internal database key.",
                                "minLength": 1,
                                "maxLength": 128,
                                "pattern": "^[A-Za-z0-9][A-Za-z0-9_.:-]{0,127}$"
                            }
                        },
                        "style": "form",
                        "explode": false
                    },
                    {
                        "name": "symbols",
                        "in": "query",
                        "required": false,
                        "description": "Convenience lookup for exchange-listed instruments as MIC:TICKER or a bare ticker, which resolves to the exchange listing that ticker; resolves at symbol_at. The MIC and the ticker are case-insensitive, and two spellings of one listing (AAPL and XNAS:AAPL) count as a repeated value. A bare ticker that names no listing as written is also read in the common vendor spellings: with an exchange suffix (RY.TO, SHEL.L, VOD.LSE, BHP.AX), ^GSPC for INDEX:GSPC, and EURUSD=X or EURUSD for FOREX:EUR-USD. A ticker may contain a space (BAC PRL) but not start or end with one. A request in which no symbol resolves returns 404 symbol-not-resolved; otherwise each symbol that does not resolve, or resolves to a listing with no rows for the request (no-data), is an entry of meta.errors. IDs and symbols may not be combined.",
                        "schema": {
                            "type": "array",
                            "minItems": 1,
                            "maxItems": 100,
                            "uniqueItems": true,
                            "items": {
                                "type": "string",
                                "pattern": "^(?:(?:[A-Za-z0-9]{4}|[Cc][Rr][Yy][Pp][Tt][Oo]|[Ff][Oo][Rr][Ee][Xx]|[Ii][Nn][Dd][Ee][Xx]):|\\^)?[A-Za-z0-9](?:[A-Za-z0-9./_^= -]{0,62}[A-Za-z0-9./_^=-])?$"
                            }
                        },
                        "style": "form",
                        "explode": false,
                        "example": [
                            "XNAS:AAPL"
                        ]
                    },
                    {
                        "name": "symbol_at",
                        "in": "query",
                        "required": false,
                        "description": "Resolve symbols as they were assigned at the end of this UTC date (YYYY-MM-DD); defaults to as_of. Only listings the security master holds resolve: it was built in September 2026 and records delistings from then on, so most issuers delisted earlier, such as TWTR or SIVB, resolve at no date. Only valid with symbols.",
                        "schema": {
                            "type": "string",
                            "format": "date"
                        }
                    },
                    {
                        "name": "countries",
                        "in": "query",
                        "required": false,
                        "description": "ISO 3166-1 alpha-2 country codes.",
                        "schema": {
                            "type": "array",
                            "minItems": 1,
                            "maxItems": 100,
                            "uniqueItems": true,
                            "items": {
                                "type": "string",
                                "pattern": "^[A-Z]{2}$"
                            }
                        },
                        "style": "form",
                        "explode": false
                    },
                    {
                        "name": "q",
                        "in": "query",
                        "required": false,
                        "description": "Case-insensitive company name search. Without order, the best matches come first: an exact name, then names that start with the text, then other matches, the company with the most traded listing first within each. A value that is empty or only whitespace returns 422.",
                        "schema": {
                            "type": "string",
                            "minLength": 1,
                            "maxLength": 200,
                            "pattern": "\\S"
                        }
                    },
                    {
                        "name": "effective_date",
                        "in": "query",
                        "required": false,
                        "description": "Effective date, defaults to the UTC date of as_of. Returns the latest eligible snapshot on or before this date; response retains its actual snapshot date.",
                        "schema": {
                            "type": "string",
                            "format": "date"
                        }
                    },
                    {
                        "name": "as_of",
                        "in": "query",
                        "required": false,
                        "description": "Knowledge cutoff as a UTC date (YYYY-MM-DD): the response reflects what was known by the end of that day. Defaults to now; cannot be in the future. A date from before the dataset's knowledge history returns 422 point-in-time-unavailable naming the earliest one, which GET /v1/datasets lists as earliest_as_of.",
                        "schema": {
                            "type": "string",
                            "format": "date"
                        }
                    },
                    {
                        "name": "known_from",
                        "in": "query",
                        "required": false,
                        "description": "First UTC date (YYYY-MM-DD, inclusive) on which a revision became known.",
                        "schema": {
                            "type": "string",
                            "format": "date"
                        }
                    },
                    {
                        "name": "known_to",
                        "in": "query",
                        "required": false,
                        "description": "Last UTC date (YYYY-MM-DD, inclusive) on which a revision became known; on or after known_from.",
                        "schema": {
                            "type": "string",
                            "format": "date"
                        }
                    },
                    {
                        "name": "order",
                        "in": "query",
                        "required": false,
                        "description": "Direction on id; ties use ID ascending.",
                        "schema": {
                            "type": "string",
                            "enum": [
                                "asc",
                                "desc"
                            ],
                            "description": "Direction on id; ties use ID ascending.",
                            "default": "asc"
                        }
                    },
                    {
                        "name": "limit",
                        "in": "query",
                        "required": false,
                        "description": "Maximum records per page.",
                        "schema": {
                            "type": "integer",
                            "minimum": 1,
                            "maximum": 500,
                            "default": 100
                        }
                    },
                    {
                        "name": "cursor",
                        "in": "query",
                        "required": false,
                        "description": "Opaque cursor, expires after one hour; binds filters, order, resolved as_of, account/key and entitlement. Repeat the original query unchanged.",
                        "schema": {
                            "type": "string",
                            "maxLength": 4096
                        }
                    },
                    {
                        "name": "format",
                        "in": "query",
                        "description": "Response format. csv returns the data rows with a header row, for spreadsheet functions such as IMPORTDATA; nested fields become dotted columns and lists one JSON array cell, the next page cursor is returned in X-Next-Cursor and meta.errors in X-Meta-Errors. A result without rows is the header row alone, listing the documented fields of a row. Default json, or csv when format is omitted and the Accept header ranks text/csv above JSON; a format the Accept header does not admit returns 406 not-acceptable.",
                        "schema": {
                            "type": "string",
                            "enum": [
                                "json",
                                "csv"
                            ]
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Authorized records. An empty collection is a valid result; a dataset with no connected source returns 501, and one with nothing published for your markets 503.",
                        "headers": {
                            "X-RateLimit-Limit": {
                                "$ref": "#/components/headers/X-RateLimit-Limit"
                            },
                            "X-RateLimit-Remaining": {
                                "$ref": "#/components/headers/X-RateLimit-Remaining"
                            },
                            "X-RateLimit-Reset": {
                                "$ref": "#/components/headers/X-RateLimit-Reset"
                            },
                            "Cache-Control": {
                                "description": "Always no-store, private: responses of this endpoint carry no ETag and must not be stored or reused.",
                                "schema": {
                                    "type": "string",
                                    "const": "no-store, private"
                                }
                            },
                            "X-Request-ID": {
                                "$ref": "#/components/headers/X-Request-ID"
                            },
                            "X-Next-Cursor": {
                                "$ref": "#/components/headers/X-Next-Cursor"
                            },
                            "X-Meta-Errors": {
                                "$ref": "#/components/headers/X-Meta-Errors"
                            },
                            "X-Credits-Limit": {
                                "$ref": "#/components/headers/X-Credits-Limit"
                            },
                            "X-Credits-Remaining": {
                                "$ref": "#/components/headers/X-Credits-Remaining"
                            },
                            "X-Credits-Cost": {
                                "$ref": "#/components/headers/X-Credits-Cost"
                            },
                            "X-Concurrency-Limit": {
                                "$ref": "#/components/headers/X-Concurrency-Limit"
                            },
                            "X-Concurrency-Remaining": {
                                "$ref": "#/components/headers/X-Concurrency-Remaining"
                            }
                        },
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "object",
                                    "additionalProperties": false,
                                    "properties": {
                                        "data": {
                                            "type": "array",
                                            "items": {
                                                "$ref": "#/components/schemas/Company"
                                            }
                                        },
                                        "meta": {
                                            "$ref": "#/components/schemas/ResponseMeta"
                                        }
                                    },
                                    "required": [
                                        "data",
                                        "meta"
                                    ]
                                },
                                "examples": {
                                    "synthetic": {
                                        "summary": "Synthetic contract example; not production data",
                                        "value": {
                                            "data": [
                                                {
                                                    "id": "company_example_apple",
                                                    "name": "Example Corporation",
                                                    "description": "Manufactures consumer products.",
                                                    "country_code": "US",
                                                    "sector": "Technology",
                                                    "industry": "Consumer electronics",
                                                    "classifications": [],
                                                    "website_url": "https://example.com",
                                                    "logo_url": "https://api.ohlc.io/logos/01J8Z3Q4R5S6T7V8W9X0Y1Z2A3/9b1e4d2c6a7f3e80.svg",
                                                    "employees": 10000,
                                                    "address": null,
                                                    "officers": [],
                                                    "instruments": []
                                                }
                                            ],
                                            "meta": {
                                                "timezone": "UTC",
                                                "as_of": "2026-11-01T00:00:00Z",
                                                "next_cursor": null,
                                                "coverage": {
                                                    "status": "complete",
                                                    "reason": null
                                                }
                                            }
                                        }
                                    }
                                }
                            },
                            "text/csv": {
                                "schema": {
                                    "type": "string"
                                }
                            }
                        }
                    },
                    "400": {
                        "$ref": "#/components/responses/BadRequest"
                    },
                    "401": {
                        "$ref": "#/components/responses/Unauthorized"
                    },
                    "403": {
                        "$ref": "#/components/responses/Forbidden"
                    },
                    "404": {
                        "$ref": "#/components/responses/NotFound"
                    },
                    "405": {
                        "$ref": "#/components/responses/MethodNotAllowed"
                    },
                    "406": {
                        "$ref": "#/components/responses/NotAcceptable"
                    },
                    "409": {
                        "$ref": "#/components/responses/Conflict"
                    },
                    "413": {
                        "$ref": "#/components/responses/ContentTooLarge"
                    },
                    "414": {
                        "$ref": "#/components/responses/URITooLong"
                    },
                    "415": {
                        "$ref": "#/components/responses/UnsupportedMediaType"
                    },
                    "422": {
                        "$ref": "#/components/responses/UnprocessableContent"
                    },
                    "429": {
                        "$ref": "#/components/responses/TooManyRequests"
                    },
                    "431": {
                        "$ref": "#/components/responses/RequestHeaderFieldsTooLarge"
                    },
                    "500": {
                        "$ref": "#/components/responses/InternalServerError"
                    },
                    "503": {
                        "$ref": "#/components/responses/ServiceUnavailable"
                    }
                },
                "x-query-constraints": [
                    {
                        "rule": "mutually_exclusive",
                        "parameters": [
                            "instrument_ids",
                            "symbols"
                        ]
                    },
                    {
                        "rule": "requires",
                        "parameter": "symbol_at",
                        "required": [
                            "symbols"
                        ]
                    },
                    {
                        "rule": "less_than",
                        "lower": "known_from",
                        "upper": "known_to"
                    }
                ],
                "x-example-query": {
                    "symbols": [
                        "XNAS:AAPL"
                    ]
                },
                "x-contract-family": "research",
                "x-credit-cost": "5 credits per request.",
                "x-availability": "available"
            }
        },
        "/v1/news": {
            "get": {
                "operationId": "list_news",
                "summary": "News",
                "tags": [
                    "News and sentiment"
                ],
                "description": "Financial articles with security associations and licensed text. Unassociated market news is included when no instrument filter is supplied. Default order: published_at descending, id ascending. Omitting entity selectors returns the entitled universe; explicit unauthorized selectors return 403. Data is delivered from validated canonical batches; a connected dataset with nothing published for the key's markets yet returns 503. Access requires the operation capability on the API key.",
                "x-implementation-status": "implemented",
                "x-required-capability": "news.read",
                "x-time-field": "published_at",
                "x-exportable": true,
                "parameters": [
                    {
                        "name": "instrument_ids",
                        "in": "query",
                        "required": false,
                        "description": "Filter by stable instrument IDs. IDs and symbols may not be combined.",
                        "schema": {
                            "type": "array",
                            "minItems": 1,
                            "maxItems": 100,
                            "uniqueItems": true,
                            "items": {
                                "type": "string",
                                "description": "Opaque stable public identifier; never an internal database key.",
                                "minLength": 1,
                                "maxLength": 128,
                                "pattern": "^[A-Za-z0-9][A-Za-z0-9_.:-]{0,127}$"
                            }
                        },
                        "style": "form",
                        "explode": false
                    },
                    {
                        "name": "symbols",
                        "in": "query",
                        "required": false,
                        "description": "Convenience lookup for exchange-listed instruments as MIC:TICKER or a bare ticker, which resolves to the exchange listing that ticker; resolves at symbol_at. The MIC and the ticker are case-insensitive, and two spellings of one listing (AAPL and XNAS:AAPL) count as a repeated value. A bare ticker that names no listing as written is also read in the common vendor spellings: with an exchange suffix (RY.TO, SHEL.L, VOD.LSE, BHP.AX), ^GSPC for INDEX:GSPC, and EURUSD=X or EURUSD for FOREX:EUR-USD. A ticker may contain a space (BAC PRL) but not start or end with one. A request in which no symbol resolves returns 404 symbol-not-resolved; otherwise each symbol that does not resolve, or resolves to a listing with no rows for the request (no-data), is an entry of meta.errors. IDs and symbols may not be combined.",
                        "schema": {
                            "type": "array",
                            "minItems": 1,
                            "maxItems": 100,
                            "uniqueItems": true,
                            "items": {
                                "type": "string",
                                "pattern": "^(?:(?:[A-Za-z0-9]{4}|[Cc][Rr][Yy][Pp][Tt][Oo]|[Ff][Oo][Rr][Ee][Xx]|[Ii][Nn][Dd][Ee][Xx]):|\\^)?[A-Za-z0-9](?:[A-Za-z0-9./_^= -]{0,62}[A-Za-z0-9./_^=-])?$"
                            }
                        },
                        "style": "form",
                        "explode": false,
                        "example": [
                            "XNAS:AAPL"
                        ]
                    },
                    {
                        "name": "symbol_at",
                        "in": "query",
                        "required": false,
                        "description": "Resolve symbols as they were assigned at the end of this UTC date (YYYY-MM-DD); defaults to as_of. Only listings the security master holds resolve: it was built in September 2026 and records delistings from then on, so most issuers delisted earlier, such as TWTR or SIVB, resolve at no date. Only valid with symbols.",
                        "schema": {
                            "type": "string",
                            "format": "date"
                        }
                    },
                    {
                        "name": "from",
                        "in": "query",
                        "required": false,
                        "description": "First UTC date (YYYY-MM-DD, inclusive) of published_at.",
                        "schema": {
                            "type": "string",
                            "format": "date"
                        },
                        "example": "2026-09-01"
                    },
                    {
                        "name": "to",
                        "in": "query",
                        "required": false,
                        "description": "Last UTC date (YYYY-MM-DD, inclusive) of published_at; on or after from.",
                        "schema": {
                            "type": "string",
                            "format": "date"
                        },
                        "example": "2026-09-25"
                    },
                    {
                        "name": "q",
                        "in": "query",
                        "required": false,
                        "description": "Indexed word-prefix search across title and summary: 1 to 10 whitespace-separated words of at least 3 letters or digits each, at most 256 characters in all. Punctuation, shorter words and more than 10 words return 422. Every word must match. No provider query language.",
                        "schema": {
                            "type": "string",
                            "minLength": 3,
                            "maxLength": 256,
                            "pattern": "^\\s*[\\p{L}\\p{N}]{3,}(?:\\s+[\\p{L}\\p{N}]{3,}){0,9}\\s*$"
                        }
                    },
                    {
                        "name": "topics",
                        "in": "query",
                        "required": false,
                        "description": "Topics, matched exactly and case-sensitively against each article's topics, which are the publisher's own tags (an open set, such as earnings). Each is 1 to 100 characters without leading or trailing whitespace; anything else returns 422.",
                        "schema": {
                            "type": "array",
                            "minItems": 1,
                            "maxItems": 100,
                            "uniqueItems": true,
                            "items": {
                                "type": "string",
                                "minLength": 1,
                                "maxLength": 100,
                                "pattern": "^\\S(?:.*\\S)?$",
                                "description": "Topic."
                            }
                        },
                        "style": "form",
                        "explode": false
                    },
                    {
                        "name": "languages",
                        "in": "query",
                        "required": false,
                        "description": "Article languages as ISO 639-1 two-letter codes, such as en; case-insensitive. und selects articles whose language was not determined, which is most articles published before early July 2026, so add it to include them (languages=en,und). A value that is not an ISO 639-1 code or und returns 422.",
                        "schema": {
                            "type": "array",
                            "minItems": 1,
                            "maxItems": 100,
                            "uniqueItems": true,
                            "items": {
                                "type": "string",
                                "pattern": "^(?:[A-Za-z]{2}|[Uu][Nn][Dd])$",
                                "description": "Language."
                            }
                        },
                        "style": "form",
                        "explode": false
                    },
                    {
                        "name": "as_of",
                        "in": "query",
                        "required": false,
                        "description": "Knowledge cutoff as a UTC date (YYYY-MM-DD): the response reflects what was known by the end of that day. Defaults to now; cannot be in the future. A date from before the dataset's knowledge history returns 422 point-in-time-unavailable naming the earliest one, which GET /v1/datasets lists as earliest_as_of.",
                        "schema": {
                            "type": "string",
                            "format": "date"
                        }
                    },
                    {
                        "name": "known_from",
                        "in": "query",
                        "required": false,
                        "description": "First UTC date (YYYY-MM-DD, inclusive) on which a revision became known.",
                        "schema": {
                            "type": "string",
                            "format": "date"
                        }
                    },
                    {
                        "name": "known_to",
                        "in": "query",
                        "required": false,
                        "description": "Last UTC date (YYYY-MM-DD, inclusive) on which a revision became known; on or after known_from.",
                        "schema": {
                            "type": "string",
                            "format": "date"
                        }
                    },
                    {
                        "name": "order",
                        "in": "query",
                        "required": false,
                        "description": "Direction on published_at; ties use ID ascending.",
                        "schema": {
                            "type": "string",
                            "enum": [
                                "asc",
                                "desc"
                            ],
                            "description": "Direction on published_at; ties use ID ascending.",
                            "default": "desc"
                        }
                    },
                    {
                        "name": "limit",
                        "in": "query",
                        "required": false,
                        "description": "Maximum records per page.",
                        "schema": {
                            "type": "integer",
                            "minimum": 1,
                            "maximum": 500,
                            "default": 100
                        }
                    },
                    {
                        "name": "cursor",
                        "in": "query",
                        "required": false,
                        "description": "Opaque cursor, expires after one hour; binds filters, order, resolved as_of, account/key and entitlement. Repeat the original query unchanged.",
                        "schema": {
                            "type": "string",
                            "maxLength": 4096
                        }
                    },
                    {
                        "name": "format",
                        "in": "query",
                        "description": "Response format. csv returns the data rows with a header row, for spreadsheet functions such as IMPORTDATA; nested fields become dotted columns and lists one JSON array cell, the next page cursor is returned in X-Next-Cursor and meta.errors in X-Meta-Errors. A result without rows is the header row alone, listing the documented fields of a row. Default json, or csv when format is omitted and the Accept header ranks text/csv above JSON; a format the Accept header does not admit returns 406 not-acceptable.",
                        "schema": {
                            "type": "string",
                            "enum": [
                                "json",
                                "csv"
                            ]
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Authorized records. An empty collection is a valid result; a dataset with no connected source returns 501, and one with nothing published for your markets 503.",
                        "headers": {
                            "X-RateLimit-Limit": {
                                "$ref": "#/components/headers/X-RateLimit-Limit"
                            },
                            "X-RateLimit-Remaining": {
                                "$ref": "#/components/headers/X-RateLimit-Remaining"
                            },
                            "X-RateLimit-Reset": {
                                "$ref": "#/components/headers/X-RateLimit-Reset"
                            },
                            "Cache-Control": {
                                "description": "Always no-store, private: responses of this endpoint carry no ETag and must not be stored or reused.",
                                "schema": {
                                    "type": "string",
                                    "const": "no-store, private"
                                }
                            },
                            "X-Request-ID": {
                                "$ref": "#/components/headers/X-Request-ID"
                            },
                            "X-Next-Cursor": {
                                "$ref": "#/components/headers/X-Next-Cursor"
                            },
                            "X-Meta-Errors": {
                                "$ref": "#/components/headers/X-Meta-Errors"
                            },
                            "X-Credits-Limit": {
                                "$ref": "#/components/headers/X-Credits-Limit"
                            },
                            "X-Credits-Remaining": {
                                "$ref": "#/components/headers/X-Credits-Remaining"
                            },
                            "X-Credits-Cost": {
                                "$ref": "#/components/headers/X-Credits-Cost"
                            },
                            "X-Concurrency-Limit": {
                                "$ref": "#/components/headers/X-Concurrency-Limit"
                            },
                            "X-Concurrency-Remaining": {
                                "$ref": "#/components/headers/X-Concurrency-Remaining"
                            }
                        },
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "object",
                                    "additionalProperties": false,
                                    "properties": {
                                        "data": {
                                            "type": "array",
                                            "items": {
                                                "$ref": "#/components/schemas/NewsArticle"
                                            }
                                        },
                                        "meta": {
                                            "$ref": "#/components/schemas/ResponseMeta"
                                        }
                                    },
                                    "required": [
                                        "data",
                                        "meta"
                                    ]
                                },
                                "examples": {
                                    "synthetic": {
                                        "summary": "Synthetic contract example; not production data",
                                        "value": {
                                            "data": [
                                                {
                                                    "id": "record_example_1",
                                                    "title": "Example Corporation announces quarterly results",
                                                    "summary": "Quarterly results were announced today.",
                                                    "content": null,
                                                    "is_paywalled": false,
                                                    "url": "https://finance.yahoo.com/news/example-corporation-results.html",
                                                    "publisher": {
                                                        "name": "Yahoo Finance",
                                                        "domain": "finance.yahoo.com"
                                                    },
                                                    "published_at": "2026-09-18T20:00:00Z",
                                                    "updated_at": null,
                                                    "language": "en",
                                                    "authors": [],
                                                    "topics": [],
                                                    "instruments": [
                                                        {
                                                            "instrument_id": "inst_example_aapl",
                                                            "symbol": "XNAS:AAPL",
                                                            "name": "Example Corporation"
                                                        }
                                                    ],
                                                    "sentiment": {
                                                        "score": "0.35",
                                                        "label": "positive"
                                                    }
                                                }
                                            ],
                                            "meta": {
                                                "timezone": "UTC",
                                                "as_of": "2026-11-01T00:00:00Z",
                                                "next_cursor": null,
                                                "coverage": {
                                                    "status": "complete",
                                                    "reason": null
                                                }
                                            }
                                        }
                                    }
                                }
                            },
                            "text/csv": {
                                "schema": {
                                    "type": "string"
                                }
                            }
                        }
                    },
                    "400": {
                        "$ref": "#/components/responses/BadRequest"
                    },
                    "401": {
                        "$ref": "#/components/responses/Unauthorized"
                    },
                    "403": {
                        "$ref": "#/components/responses/Forbidden"
                    },
                    "404": {
                        "$ref": "#/components/responses/NotFound"
                    },
                    "405": {
                        "$ref": "#/components/responses/MethodNotAllowed"
                    },
                    "406": {
                        "$ref": "#/components/responses/NotAcceptable"
                    },
                    "409": {
                        "$ref": "#/components/responses/Conflict"
                    },
                    "413": {
                        "$ref": "#/components/responses/ContentTooLarge"
                    },
                    "414": {
                        "$ref": "#/components/responses/URITooLong"
                    },
                    "415": {
                        "$ref": "#/components/responses/UnsupportedMediaType"
                    },
                    "422": {
                        "$ref": "#/components/responses/UnprocessableContent"
                    },
                    "429": {
                        "$ref": "#/components/responses/TooManyRequests"
                    },
                    "431": {
                        "$ref": "#/components/responses/RequestHeaderFieldsTooLarge"
                    },
                    "500": {
                        "$ref": "#/components/responses/InternalServerError"
                    },
                    "503": {
                        "$ref": "#/components/responses/ServiceUnavailable"
                    }
                },
                "x-query-constraints": [
                    {
                        "rule": "mutually_exclusive",
                        "parameters": [
                            "instrument_ids",
                            "symbols"
                        ]
                    },
                    {
                        "rule": "requires",
                        "parameter": "symbol_at",
                        "required": [
                            "symbols"
                        ]
                    },
                    {
                        "rule": "less_than",
                        "lower": "from",
                        "upper": "to"
                    },
                    {
                        "rule": "less_than",
                        "lower": "known_from",
                        "upper": "known_to"
                    }
                ],
                "x-example-query": {
                    "symbols": [
                        "XNAS:AAPL"
                    ],
                    "from": "2026-09-01",
                    "to": "2026-09-25"
                },
                "x-contract-family": "research",
                "x-credit-cost": "25 credits per request.",
                "x-availability": "available"
            }
        },
        "/v1/news/sentiment": {
            "get": {
                "operationId": "list_news_sentiment",
                "summary": "News sentiment",
                "tags": [
                    "News and sentiment"
                ],
                "description": "Per-instrument mean of the article sentiment scores /v1/news carries, one row per UTC day or Monday-starting UTC week. Each row averages the scores (-1 to 1, the same word-list tone measure as an article's sentiment.score, so most means are positive and close to 1) of the scored articles tagged to the listing and published in the bucket, each article counted once; articles without a score are left out of the mean and of article_count. A bucket is published shortly after its UTC day or week ends and recomputed over the next three days as late articles arrive, so a recent row can be revised. History reaches back as far as the stored articles. No scored article returns no row, not a neutral score. Default order: date ascending, id ascending. Omitting entity selectors returns the entitled universe; explicit unauthorized selectors return 403. Data is delivered from validated canonical batches; a connected dataset with nothing published for the key's markets yet returns 503. Access requires the operation capability on the API key.",
                "x-implementation-status": "implemented",
                "x-required-capability": "news.read",
                "x-time-field": "date",
                "x-exportable": true,
                "parameters": [
                    {
                        "name": "instrument_ids",
                        "in": "query",
                        "required": false,
                        "description": "Filter by stable instrument IDs. IDs and symbols may not be combined.",
                        "schema": {
                            "type": "array",
                            "minItems": 1,
                            "maxItems": 100,
                            "uniqueItems": true,
                            "items": {
                                "type": "string",
                                "description": "Opaque stable public identifier; never an internal database key.",
                                "minLength": 1,
                                "maxLength": 128,
                                "pattern": "^[A-Za-z0-9][A-Za-z0-9_.:-]{0,127}$"
                            }
                        },
                        "style": "form",
                        "explode": false
                    },
                    {
                        "name": "symbols",
                        "in": "query",
                        "required": false,
                        "description": "Convenience lookup for exchange-listed instruments as MIC:TICKER or a bare ticker, which resolves to the exchange listing that ticker; resolves at symbol_at. The MIC and the ticker are case-insensitive, and two spellings of one listing (AAPL and XNAS:AAPL) count as a repeated value. A bare ticker that names no listing as written is also read in the common vendor spellings: with an exchange suffix (RY.TO, SHEL.L, VOD.LSE, BHP.AX), ^GSPC for INDEX:GSPC, and EURUSD=X or EURUSD for FOREX:EUR-USD. A ticker may contain a space (BAC PRL) but not start or end with one. A request in which no symbol resolves returns 404 symbol-not-resolved; otherwise each symbol that does not resolve, or resolves to a listing with no rows for the request (no-data), is an entry of meta.errors. IDs and symbols may not be combined.",
                        "schema": {
                            "type": "array",
                            "minItems": 1,
                            "maxItems": 100,
                            "uniqueItems": true,
                            "items": {
                                "type": "string",
                                "pattern": "^(?:(?:[A-Za-z0-9]{4}|[Cc][Rr][Yy][Pp][Tt][Oo]|[Ff][Oo][Rr][Ee][Xx]|[Ii][Nn][Dd][Ee][Xx]):|\\^)?[A-Za-z0-9](?:[A-Za-z0-9./_^= -]{0,62}[A-Za-z0-9./_^=-])?$"
                            }
                        },
                        "style": "form",
                        "explode": false,
                        "example": [
                            "XNAS:AAPL"
                        ]
                    },
                    {
                        "name": "symbol_at",
                        "in": "query",
                        "required": false,
                        "description": "Resolve symbols as they were assigned at the end of this UTC date (YYYY-MM-DD); defaults to as_of. Only listings the security master holds resolve: it was built in September 2026 and records delistings from then on, so most issuers delisted earlier, such as TWTR or SIVB, resolve at no date. Only valid with symbols.",
                        "schema": {
                            "type": "string",
                            "format": "date"
                        }
                    },
                    {
                        "name": "from",
                        "in": "query",
                        "required": false,
                        "description": "Inclusive lower bound on date.",
                        "schema": {
                            "type": "string",
                            "format": "date"
                        },
                        "example": "2026-09-01"
                    },
                    {
                        "name": "to",
                        "in": "query",
                        "required": false,
                        "description": "Inclusive upper bound on date; must be on or after from, so from equal to to selects one day.",
                        "schema": {
                            "type": "string",
                            "format": "date"
                        },
                        "example": "2026-09-25"
                    },
                    {
                        "name": "interval",
                        "in": "query",
                        "required": false,
                        "description": "UTC buckets; default 1d.",
                        "schema": {
                            "type": "string",
                            "enum": [
                                "1d",
                                "1w"
                            ],
                            "description": "UTC buckets; default 1d."
                        }
                    },
                    {
                        "name": "as_of",
                        "in": "query",
                        "required": false,
                        "description": "Knowledge cutoff as a UTC date (YYYY-MM-DD): the response reflects what was known by the end of that day. Defaults to now; cannot be in the future. A date from before the dataset's knowledge history returns 422 point-in-time-unavailable naming the earliest one, which GET /v1/datasets lists as earliest_as_of.",
                        "schema": {
                            "type": "string",
                            "format": "date"
                        }
                    },
                    {
                        "name": "known_from",
                        "in": "query",
                        "required": false,
                        "description": "First UTC date (YYYY-MM-DD, inclusive) on which a revision became known.",
                        "schema": {
                            "type": "string",
                            "format": "date"
                        }
                    },
                    {
                        "name": "known_to",
                        "in": "query",
                        "required": false,
                        "description": "Last UTC date (YYYY-MM-DD, inclusive) on which a revision became known; on or after known_from.",
                        "schema": {
                            "type": "string",
                            "format": "date"
                        }
                    },
                    {
                        "name": "order",
                        "in": "query",
                        "required": false,
                        "description": "Direction on date; ties use ID ascending.",
                        "schema": {
                            "type": "string",
                            "enum": [
                                "asc",
                                "desc"
                            ],
                            "description": "Direction on date; ties use ID ascending.",
                            "default": "asc"
                        }
                    },
                    {
                        "name": "limit",
                        "in": "query",
                        "required": false,
                        "description": "Maximum records per page.",
                        "schema": {
                            "type": "integer",
                            "minimum": 1,
                            "maximum": 500,
                            "default": 100
                        }
                    },
                    {
                        "name": "cursor",
                        "in": "query",
                        "required": false,
                        "description": "Opaque cursor, expires after one hour; binds filters, order, resolved as_of, account/key and entitlement. Repeat the original query unchanged.",
                        "schema": {
                            "type": "string",
                            "maxLength": 4096
                        }
                    },
                    {
                        "name": "format",
                        "in": "query",
                        "description": "Response format. csv returns the data rows with a header row, for spreadsheet functions such as IMPORTDATA; nested fields become dotted columns and lists one JSON array cell, the next page cursor is returned in X-Next-Cursor and meta.errors in X-Meta-Errors. A result without rows is the header row alone, listing the documented fields of a row. Default json, or csv when format is omitted and the Accept header ranks text/csv above JSON; a format the Accept header does not admit returns 406 not-acceptable.",
                        "schema": {
                            "type": "string",
                            "enum": [
                                "json",
                                "csv"
                            ]
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Authorized records. An empty collection is a valid result; a dataset with no connected source returns 501, and one with nothing published for your markets 503.",
                        "headers": {
                            "X-RateLimit-Limit": {
                                "$ref": "#/components/headers/X-RateLimit-Limit"
                            },
                            "X-RateLimit-Remaining": {
                                "$ref": "#/components/headers/X-RateLimit-Remaining"
                            },
                            "X-RateLimit-Reset": {
                                "$ref": "#/components/headers/X-RateLimit-Reset"
                            },
                            "Cache-Control": {
                                "description": "Always no-store, private: responses of this endpoint carry no ETag and must not be stored or reused.",
                                "schema": {
                                    "type": "string",
                                    "const": "no-store, private"
                                }
                            },
                            "X-Request-ID": {
                                "$ref": "#/components/headers/X-Request-ID"
                            },
                            "X-Next-Cursor": {
                                "$ref": "#/components/headers/X-Next-Cursor"
                            },
                            "X-Meta-Errors": {
                                "$ref": "#/components/headers/X-Meta-Errors"
                            },
                            "X-Credits-Limit": {
                                "$ref": "#/components/headers/X-Credits-Limit"
                            },
                            "X-Credits-Remaining": {
                                "$ref": "#/components/headers/X-Credits-Remaining"
                            },
                            "X-Credits-Cost": {
                                "$ref": "#/components/headers/X-Credits-Cost"
                            },
                            "X-Concurrency-Limit": {
                                "$ref": "#/components/headers/X-Concurrency-Limit"
                            },
                            "X-Concurrency-Remaining": {
                                "$ref": "#/components/headers/X-Concurrency-Remaining"
                            }
                        },
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "object",
                                    "additionalProperties": false,
                                    "properties": {
                                        "data": {
                                            "type": "array",
                                            "items": {
                                                "$ref": "#/components/schemas/NewsSentiment"
                                            }
                                        },
                                        "meta": {
                                            "$ref": "#/components/schemas/ResponseMeta"
                                        }
                                    },
                                    "required": [
                                        "data",
                                        "meta"
                                    ]
                                },
                                "examples": {
                                    "synthetic": {
                                        "summary": "Synthetic contract example; not production data",
                                        "value": {
                                            "data": [
                                                {
                                                    "id": "record_example_1",
                                                    "instrument_id": "inst_example_aapl",
                                                    "date": "2026-09-18",
                                                    "interval": "1d",
                                                    "article_count": 12,
                                                    "sentiment": {
                                                        "score": "0.35",
                                                        "label": "positive"
                                                    },
                                                    "aggregation": "mean"
                                                }
                                            ],
                                            "meta": {
                                                "timezone": "UTC",
                                                "as_of": "2026-11-01T00:00:00Z",
                                                "next_cursor": null,
                                                "coverage": {
                                                    "status": "complete",
                                                    "reason": null
                                                }
                                            }
                                        }
                                    }
                                }
                            },
                            "text/csv": {
                                "schema": {
                                    "type": "string"
                                }
                            }
                        }
                    },
                    "400": {
                        "$ref": "#/components/responses/BadRequest"
                    },
                    "401": {
                        "$ref": "#/components/responses/Unauthorized"
                    },
                    "403": {
                        "$ref": "#/components/responses/Forbidden"
                    },
                    "404": {
                        "$ref": "#/components/responses/NotFound"
                    },
                    "405": {
                        "$ref": "#/components/responses/MethodNotAllowed"
                    },
                    "406": {
                        "$ref": "#/components/responses/NotAcceptable"
                    },
                    "409": {
                        "$ref": "#/components/responses/Conflict"
                    },
                    "413": {
                        "$ref": "#/components/responses/ContentTooLarge"
                    },
                    "414": {
                        "$ref": "#/components/responses/URITooLong"
                    },
                    "415": {
                        "$ref": "#/components/responses/UnsupportedMediaType"
                    },
                    "422": {
                        "$ref": "#/components/responses/UnprocessableContent"
                    },
                    "429": {
                        "$ref": "#/components/responses/TooManyRequests"
                    },
                    "431": {
                        "$ref": "#/components/responses/RequestHeaderFieldsTooLarge"
                    },
                    "500": {
                        "$ref": "#/components/responses/InternalServerError"
                    },
                    "503": {
                        "$ref": "#/components/responses/ServiceUnavailable"
                    }
                },
                "x-query-constraints": [
                    {
                        "rule": "mutually_exclusive",
                        "parameters": [
                            "instrument_ids",
                            "symbols"
                        ]
                    },
                    {
                        "rule": "requires",
                        "parameter": "symbol_at",
                        "required": [
                            "symbols"
                        ]
                    },
                    {
                        "rule": "less_than",
                        "lower": "from",
                        "upper": "to"
                    },
                    {
                        "rule": "less_than",
                        "lower": "known_from",
                        "upper": "known_to"
                    }
                ],
                "x-example-query": {
                    "symbols": [
                        "XNAS:AAPL"
                    ],
                    "from": "2026-09-01",
                    "to": "2026-09-25"
                },
                "x-contract-family": "research",
                "x-credit-cost": "25 credits per symbol; 500 credits without symbols (whole market).",
                "x-availability": "available"
            }
        },
        "/v1/financials/concepts": {
            "get": {
                "operationId": "list_financials_concepts",
                "summary": "Financial concepts",
                "tags": [
                    "Financials"
                ],
                "description": "Discover the normalized concepts that /v1/financials/statements lines use: label, description, statement family, unit and whether each measures a period or an instant. Source taxonomy tags are not served; /v1/financials/facts has the as-filed facts. Default order: id ascending. Results are limited to the entitled scope. Data is delivered from validated canonical batches; a connected dataset with nothing published for the key's markets yet returns 503. Access requires the operation capability on the API key.",
                "x-implementation-status": "implemented",
                "x-required-capability": "financials.read",
                "x-time-field": "id",
                "x-exportable": true,
                "parameters": [
                    {
                        "name": "statement",
                        "in": "query",
                        "required": false,
                        "description": "Statement family.",
                        "schema": {
                            "type": "string",
                            "enum": [
                                "income",
                                "balance_sheet",
                                "cash_flow"
                            ],
                            "description": "Statement family."
                        }
                    },
                    {
                        "name": "as_of",
                        "in": "query",
                        "required": false,
                        "description": "Knowledge cutoff as a UTC date (YYYY-MM-DD): the response reflects what was known by the end of that day. Defaults to now; cannot be in the future. A date from before the dataset's knowledge history returns 422 point-in-time-unavailable naming the earliest one, which GET /v1/datasets lists as earliest_as_of.",
                        "schema": {
                            "type": "string",
                            "format": "date"
                        }
                    },
                    {
                        "name": "known_from",
                        "in": "query",
                        "required": false,
                        "description": "First UTC date (YYYY-MM-DD, inclusive) on which a revision became known.",
                        "schema": {
                            "type": "string",
                            "format": "date"
                        }
                    },
                    {
                        "name": "known_to",
                        "in": "query",
                        "required": false,
                        "description": "Last UTC date (YYYY-MM-DD, inclusive) on which a revision became known; on or after known_from.",
                        "schema": {
                            "type": "string",
                            "format": "date"
                        }
                    },
                    {
                        "name": "order",
                        "in": "query",
                        "required": false,
                        "description": "Direction on id; ties use ID ascending.",
                        "schema": {
                            "type": "string",
                            "enum": [
                                "asc",
                                "desc"
                            ],
                            "description": "Direction on id; ties use ID ascending.",
                            "default": "asc"
                        }
                    },
                    {
                        "name": "limit",
                        "in": "query",
                        "required": false,
                        "description": "Maximum records per page.",
                        "schema": {
                            "type": "integer",
                            "minimum": 1,
                            "maximum": 500,
                            "default": 100
                        }
                    },
                    {
                        "name": "cursor",
                        "in": "query",
                        "required": false,
                        "description": "Opaque cursor, expires after one hour; binds filters, order, resolved as_of, account/key and entitlement. Repeat the original query unchanged.",
                        "schema": {
                            "type": "string",
                            "maxLength": 4096
                        }
                    },
                    {
                        "name": "format",
                        "in": "query",
                        "description": "Response format. csv returns the data rows with a header row, for spreadsheet functions such as IMPORTDATA; nested fields become dotted columns and lists one JSON array cell, the next page cursor is returned in X-Next-Cursor and meta.errors in X-Meta-Errors. A result without rows is the header row alone, listing the documented fields of a row. Default json, or csv when format is omitted and the Accept header ranks text/csv above JSON; a format the Accept header does not admit returns 406 not-acceptable.",
                        "schema": {
                            "type": "string",
                            "enum": [
                                "json",
                                "csv"
                            ]
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Authorized records. An empty collection is a valid result; a dataset with no connected source returns 501, and one with nothing published for your markets 503.",
                        "headers": {
                            "X-RateLimit-Limit": {
                                "$ref": "#/components/headers/X-RateLimit-Limit"
                            },
                            "X-RateLimit-Remaining": {
                                "$ref": "#/components/headers/X-RateLimit-Remaining"
                            },
                            "X-RateLimit-Reset": {
                                "$ref": "#/components/headers/X-RateLimit-Reset"
                            },
                            "Cache-Control": {
                                "description": "Always no-store, private: responses of this endpoint carry no ETag and must not be stored or reused.",
                                "schema": {
                                    "type": "string",
                                    "const": "no-store, private"
                                }
                            },
                            "X-Request-ID": {
                                "$ref": "#/components/headers/X-Request-ID"
                            },
                            "X-Next-Cursor": {
                                "$ref": "#/components/headers/X-Next-Cursor"
                            },
                            "X-Meta-Errors": {
                                "$ref": "#/components/headers/X-Meta-Errors"
                            },
                            "X-Credits-Limit": {
                                "$ref": "#/components/headers/X-Credits-Limit"
                            },
                            "X-Credits-Remaining": {
                                "$ref": "#/components/headers/X-Credits-Remaining"
                            },
                            "X-Credits-Cost": {
                                "$ref": "#/components/headers/X-Credits-Cost"
                            },
                            "X-Concurrency-Limit": {
                                "$ref": "#/components/headers/X-Concurrency-Limit"
                            },
                            "X-Concurrency-Remaining": {
                                "$ref": "#/components/headers/X-Concurrency-Remaining"
                            }
                        },
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "object",
                                    "additionalProperties": false,
                                    "properties": {
                                        "data": {
                                            "type": "array",
                                            "items": {
                                                "$ref": "#/components/schemas/FinancialConcept"
                                            }
                                        },
                                        "meta": {
                                            "$ref": "#/components/schemas/ResponseMeta"
                                        }
                                    },
                                    "required": [
                                        "data",
                                        "meta"
                                    ]
                                },
                                "examples": {
                                    "synthetic": {
                                        "summary": "Synthetic contract example; not production data",
                                        "value": {
                                            "data": [
                                                {
                                                    "id": "revenue",
                                                    "label": "Revenue",
                                                    "description": "Revenue recognized during the fiscal period.",
                                                    "statement": "income",
                                                    "unit": "currency",
                                                    "period_type": "duration"
                                                }
                                            ],
                                            "meta": {
                                                "timezone": "UTC",
                                                "as_of": "2026-11-01T00:00:00Z",
                                                "next_cursor": null,
                                                "coverage": {
                                                    "status": "complete",
                                                    "reason": null
                                                }
                                            }
                                        }
                                    }
                                }
                            },
                            "text/csv": {
                                "schema": {
                                    "type": "string"
                                }
                            }
                        }
                    },
                    "400": {
                        "$ref": "#/components/responses/BadRequest"
                    },
                    "401": {
                        "$ref": "#/components/responses/Unauthorized"
                    },
                    "403": {
                        "$ref": "#/components/responses/Forbidden"
                    },
                    "404": {
                        "$ref": "#/components/responses/NotFound"
                    },
                    "405": {
                        "$ref": "#/components/responses/MethodNotAllowed"
                    },
                    "406": {
                        "$ref": "#/components/responses/NotAcceptable"
                    },
                    "409": {
                        "$ref": "#/components/responses/Conflict"
                    },
                    "413": {
                        "$ref": "#/components/responses/ContentTooLarge"
                    },
                    "414": {
                        "$ref": "#/components/responses/URITooLong"
                    },
                    "415": {
                        "$ref": "#/components/responses/UnsupportedMediaType"
                    },
                    "422": {
                        "$ref": "#/components/responses/UnprocessableContent"
                    },
                    "429": {
                        "$ref": "#/components/responses/TooManyRequests"
                    },
                    "431": {
                        "$ref": "#/components/responses/RequestHeaderFieldsTooLarge"
                    },
                    "500": {
                        "$ref": "#/components/responses/InternalServerError"
                    },
                    "503": {
                        "$ref": "#/components/responses/ServiceUnavailable"
                    }
                },
                "x-query-constraints": [
                    {
                        "rule": "less_than",
                        "lower": "known_from",
                        "upper": "known_to"
                    }
                ],
                "x-example-query": [],
                "x-contract-family": "research",
                "x-credit-cost": "5 credits per request.",
                "x-availability": "available"
            }
        },
        "/v1/financials/statements": {
            "get": {
                "operationId": "list_financials_statements",
                "summary": "Financial statements",
                "tags": [
                    "Financials"
                ],
                "description": "Normalized quarterly and annual statements with a restatement-aware knowledge cutoff. Trailing-twelve-month statements are not offered: four quarters of the connected source do not reliably add up to its annual statement (cash-flow lines in particular), so sum quarters yourself only where they reconcile to the annual figure. period_start, fiscal_year and fiscal_quarter are not supplied by the connected source and are null; period_end is the source's date for the period: the calendar month end for a company on a 52-week year (a quarter ending June 27 is dated 2026-06-30). filing_ids names the issuer's original SEC 10-Q, 10-K, 10-KT, 20-F or 40-F, known at as_of, whose reported period ends within 10 days of period_end (a fourth quarter's is the annual report), and reported_period_end is that filing's own period end; both are empty or null where no stored filing matches, such as an issuer outside EDGAR or a period before it. Each statement is checked for internal consistency before it is published: a line that repeats, negates or doubles another line (income tax equal to income before tax, a profit equal to revenue while net income is not), or a total that cannot be negative, is withheld; a wide miss of an accounting identity, or a part that exceeds its whole (gross profit over revenue, current over total assets), is flagged; and quality_issues lists both, along with any line OHLC withheld or corrected on review; check it before relying on a statement's lines. Default order: period_end ascending, id ascending. Omitting entity selectors returns the entitled universe; explicit unauthorized selectors return 403. Data is delivered from validated canonical batches; a connected dataset with nothing published for the key's markets yet returns 503. Access requires the operation capability on the API key.",
                "x-implementation-status": "implemented",
                "x-required-capability": "financials.read",
                "x-time-field": "period_end",
                "x-exportable": true,
                "parameters": [
                    {
                        "name": "company_ids",
                        "in": "query",
                        "required": false,
                        "description": "Filter by issuer IDs. May be combined with instrument selectors; filters intersect, except on issuer-level datasets (statements, segments, estimates, earnings, insider transactions), where an instrument selector is read as its company and takes the place of company_ids, so results cover every share class.",
                        "schema": {
                            "type": "array",
                            "minItems": 1,
                            "maxItems": 100,
                            "uniqueItems": true,
                            "items": {
                                "type": "string",
                                "description": "Opaque stable public identifier; never an internal database key.",
                                "minLength": 1,
                                "maxLength": 128,
                                "pattern": "^[A-Za-z0-9][A-Za-z0-9_.:-]{0,127}$"
                            }
                        },
                        "style": "form",
                        "explode": false
                    },
                    {
                        "name": "instrument_ids",
                        "in": "query",
                        "required": false,
                        "description": "Filter by stable instrument IDs. IDs and symbols may not be combined.",
                        "schema": {
                            "type": "array",
                            "minItems": 1,
                            "maxItems": 100,
                            "uniqueItems": true,
                            "items": {
                                "type": "string",
                                "description": "Opaque stable public identifier; never an internal database key.",
                                "minLength": 1,
                                "maxLength": 128,
                                "pattern": "^[A-Za-z0-9][A-Za-z0-9_.:-]{0,127}$"
                            }
                        },
                        "style": "form",
                        "explode": false
                    },
                    {
                        "name": "symbols",
                        "in": "query",
                        "required": false,
                        "description": "Convenience lookup for exchange-listed instruments as MIC:TICKER or a bare ticker, which resolves to the exchange listing that ticker; resolves at symbol_at. The MIC and the ticker are case-insensitive, and two spellings of one listing (AAPL and XNAS:AAPL) count as a repeated value. A bare ticker that names no listing as written is also read in the common vendor spellings: with an exchange suffix (RY.TO, SHEL.L, VOD.LSE, BHP.AX), ^GSPC for INDEX:GSPC, and EURUSD=X or EURUSD for FOREX:EUR-USD. A ticker may contain a space (BAC PRL) but not start or end with one. A request in which no symbol resolves returns 404 symbol-not-resolved; otherwise each symbol that does not resolve, or resolves to a listing with no rows for the request (no-data), is an entry of meta.errors. IDs and symbols may not be combined.",
                        "schema": {
                            "type": "array",
                            "minItems": 1,
                            "maxItems": 100,
                            "uniqueItems": true,
                            "items": {
                                "type": "string",
                                "pattern": "^(?:(?:[A-Za-z0-9]{4}|[Cc][Rr][Yy][Pp][Tt][Oo]|[Ff][Oo][Rr][Ee][Xx]|[Ii][Nn][Dd][Ee][Xx]):|\\^)?[A-Za-z0-9](?:[A-Za-z0-9./_^= -]{0,62}[A-Za-z0-9./_^=-])?$"
                            }
                        },
                        "style": "form",
                        "explode": false,
                        "example": [
                            "XNAS:AAPL"
                        ]
                    },
                    {
                        "name": "symbol_at",
                        "in": "query",
                        "required": false,
                        "description": "Resolve symbols as they were assigned at the end of this UTC date (YYYY-MM-DD); defaults to as_of. Only listings the security master holds resolve: it was built in September 2026 and records delistings from then on, so most issuers delisted earlier, such as TWTR or SIVB, resolve at no date. Only valid with symbols.",
                        "schema": {
                            "type": "string",
                            "format": "date"
                        }
                    },
                    {
                        "name": "statement",
                        "in": "query",
                        "required": false,
                        "description": "Statement family.",
                        "schema": {
                            "type": "string",
                            "enum": [
                                "income",
                                "balance_sheet",
                                "cash_flow"
                            ],
                            "description": "Statement family."
                        }
                    },
                    {
                        "name": "period",
                        "in": "query",
                        "required": false,
                        "description": "Fiscal period; defaults to quarterly.",
                        "schema": {
                            "type": "string",
                            "enum": [
                                "quarterly",
                                "annual"
                            ],
                            "description": "Fiscal period; defaults to quarterly."
                        }
                    },
                    {
                        "name": "from",
                        "in": "query",
                        "required": false,
                        "description": "Inclusive lower bound on period_end.",
                        "schema": {
                            "type": "string",
                            "format": "date"
                        },
                        "example": "2025-01-01"
                    },
                    {
                        "name": "to",
                        "in": "query",
                        "required": false,
                        "description": "Inclusive upper bound on period_end; must be on or after from, so from equal to to selects one day.",
                        "schema": {
                            "type": "string",
                            "format": "date"
                        },
                        "example": "2026-12-31"
                    },
                    {
                        "name": "as_of",
                        "in": "query",
                        "required": false,
                        "description": "Knowledge cutoff as a UTC date (YYYY-MM-DD): the response reflects what was known by the end of that day. Defaults to now; cannot be in the future. A date from before the dataset's knowledge history returns 422 point-in-time-unavailable naming the earliest one, which GET /v1/datasets lists as earliest_as_of.",
                        "schema": {
                            "type": "string",
                            "format": "date"
                        }
                    },
                    {
                        "name": "known_from",
                        "in": "query",
                        "required": false,
                        "description": "First UTC date (YYYY-MM-DD, inclusive) on which a revision became known.",
                        "schema": {
                            "type": "string",
                            "format": "date"
                        }
                    },
                    {
                        "name": "known_to",
                        "in": "query",
                        "required": false,
                        "description": "Last UTC date (YYYY-MM-DD, inclusive) on which a revision became known; on or after known_from.",
                        "schema": {
                            "type": "string",
                            "format": "date"
                        }
                    },
                    {
                        "name": "order",
                        "in": "query",
                        "required": false,
                        "description": "Direction on period_end; ties use ID ascending.",
                        "schema": {
                            "type": "string",
                            "enum": [
                                "asc",
                                "desc"
                            ],
                            "description": "Direction on period_end; ties use ID ascending.",
                            "default": "asc"
                        }
                    },
                    {
                        "name": "limit",
                        "in": "query",
                        "required": false,
                        "description": "Maximum records per page.",
                        "schema": {
                            "type": "integer",
                            "minimum": 1,
                            "maximum": 500,
                            "default": 100
                        }
                    },
                    {
                        "name": "cursor",
                        "in": "query",
                        "required": false,
                        "description": "Opaque cursor, expires after one hour; binds filters, order, resolved as_of, account/key and entitlement. Repeat the original query unchanged.",
                        "schema": {
                            "type": "string",
                            "maxLength": 4096
                        }
                    },
                    {
                        "name": "format",
                        "in": "query",
                        "description": "Response format. csv returns the data rows with a header row, for spreadsheet functions such as IMPORTDATA; nested fields become dotted columns and lists one JSON array cell, the next page cursor is returned in X-Next-Cursor and meta.errors in X-Meta-Errors. A result without rows is the header row alone, listing the documented fields of a row. Default json, or csv when format is omitted and the Accept header ranks text/csv above JSON; a format the Accept header does not admit returns 406 not-acceptable.",
                        "schema": {
                            "type": "string",
                            "enum": [
                                "json",
                                "csv"
                            ]
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Authorized records. An empty collection is a valid result; a dataset with no connected source returns 501, and one with nothing published for your markets 503.",
                        "headers": {
                            "X-RateLimit-Limit": {
                                "$ref": "#/components/headers/X-RateLimit-Limit"
                            },
                            "X-RateLimit-Remaining": {
                                "$ref": "#/components/headers/X-RateLimit-Remaining"
                            },
                            "X-RateLimit-Reset": {
                                "$ref": "#/components/headers/X-RateLimit-Reset"
                            },
                            "Cache-Control": {
                                "description": "Always no-store, private: responses of this endpoint carry no ETag and must not be stored or reused.",
                                "schema": {
                                    "type": "string",
                                    "const": "no-store, private"
                                }
                            },
                            "X-Request-ID": {
                                "$ref": "#/components/headers/X-Request-ID"
                            },
                            "X-Next-Cursor": {
                                "$ref": "#/components/headers/X-Next-Cursor"
                            },
                            "X-Meta-Errors": {
                                "$ref": "#/components/headers/X-Meta-Errors"
                            },
                            "X-Credits-Limit": {
                                "$ref": "#/components/headers/X-Credits-Limit"
                            },
                            "X-Credits-Remaining": {
                                "$ref": "#/components/headers/X-Credits-Remaining"
                            },
                            "X-Credits-Cost": {
                                "$ref": "#/components/headers/X-Credits-Cost"
                            },
                            "X-Concurrency-Limit": {
                                "$ref": "#/components/headers/X-Concurrency-Limit"
                            },
                            "X-Concurrency-Remaining": {
                                "$ref": "#/components/headers/X-Concurrency-Remaining"
                            }
                        },
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "object",
                                    "additionalProperties": false,
                                    "properties": {
                                        "data": {
                                            "type": "array",
                                            "items": {
                                                "$ref": "#/components/schemas/FinancialStatement"
                                            }
                                        },
                                        "meta": {
                                            "$ref": "#/components/schemas/ResponseMeta"
                                        }
                                    },
                                    "required": [
                                        "data",
                                        "meta"
                                    ]
                                },
                                "examples": {
                                    "synthetic": {
                                        "summary": "Synthetic contract example; not production data",
                                        "value": {
                                            "data": [
                                                {
                                                    "id": "record_example_1",
                                                    "company_id": "company_example_apple",
                                                    "period_start": null,
                                                    "period_end": "2026-09-30",
                                                    "fiscal_year": null,
                                                    "fiscal_quarter": null,
                                                    "period": "quarterly",
                                                    "statement": "income",
                                                    "currency_code": "USD",
                                                    "filing_ids": [],
                                                    "lines": [
                                                        {
                                                            "concept": "revenue",
                                                            "value": {
                                                                "value": "1000000",
                                                                "unit": "currency",
                                                                "currency_code": "USD"
                                                            }
                                                        }
                                                    ],
                                                    "restated": null
                                                }
                                            ],
                                            "meta": {
                                                "timezone": "UTC",
                                                "as_of": "2026-11-01T00:00:00Z",
                                                "next_cursor": null,
                                                "coverage": {
                                                    "status": "complete",
                                                    "reason": null
                                                }
                                            }
                                        }
                                    }
                                }
                            },
                            "text/csv": {
                                "schema": {
                                    "type": "string"
                                }
                            }
                        }
                    },
                    "400": {
                        "$ref": "#/components/responses/BadRequest"
                    },
                    "401": {
                        "$ref": "#/components/responses/Unauthorized"
                    },
                    "403": {
                        "$ref": "#/components/responses/Forbidden"
                    },
                    "404": {
                        "$ref": "#/components/responses/NotFound"
                    },
                    "405": {
                        "$ref": "#/components/responses/MethodNotAllowed"
                    },
                    "406": {
                        "$ref": "#/components/responses/NotAcceptable"
                    },
                    "409": {
                        "$ref": "#/components/responses/Conflict"
                    },
                    "413": {
                        "$ref": "#/components/responses/ContentTooLarge"
                    },
                    "414": {
                        "$ref": "#/components/responses/URITooLong"
                    },
                    "415": {
                        "$ref": "#/components/responses/UnsupportedMediaType"
                    },
                    "422": {
                        "$ref": "#/components/responses/UnprocessableContent"
                    },
                    "429": {
                        "$ref": "#/components/responses/TooManyRequests"
                    },
                    "431": {
                        "$ref": "#/components/responses/RequestHeaderFieldsTooLarge"
                    },
                    "500": {
                        "$ref": "#/components/responses/InternalServerError"
                    },
                    "503": {
                        "$ref": "#/components/responses/ServiceUnavailable"
                    }
                },
                "x-query-constraints": [
                    {
                        "rule": "mutually_exclusive",
                        "parameters": [
                            "instrument_ids",
                            "symbols"
                        ]
                    },
                    {
                        "rule": "requires",
                        "parameter": "symbol_at",
                        "required": [
                            "symbols"
                        ]
                    },
                    {
                        "rule": "less_than",
                        "lower": "from",
                        "upper": "to"
                    },
                    {
                        "rule": "less_than",
                        "lower": "known_from",
                        "upper": "known_to"
                    }
                ],
                "x-example-query": {
                    "symbols": [
                        "XNAS:AAPL"
                    ],
                    "from": "2025-01-01",
                    "to": "2026-12-31"
                },
                "x-contract-family": "research",
                "x-credit-cost": "50 credits per symbol; 500 credits without symbols (whole market).",
                "x-availability": "available"
            }
        },
        "/v1/financials/metric-definitions": {
            "get": {
                "operationId": "list_financials_metric_definitions",
                "summary": "Metric definitions",
                "tags": [
                    "Financials"
                ],
                "description": "Discover the formulas, units and input concepts of valuation, profitability, growth, dividend and historical market capitalization metrics. Default order: id ascending. Results are limited to the entitled scope. Data is delivered from validated canonical batches; a connected dataset with nothing published for the key's markets yet returns 503. Access requires the operation capability on the API key.",
                "x-implementation-status": "implemented",
                "x-required-capability": "financials.read",
                "x-time-field": "id",
                "x-exportable": true,
                "parameters": [
                    {
                        "name": "as_of",
                        "in": "query",
                        "required": false,
                        "description": "Knowledge cutoff as a UTC date (YYYY-MM-DD): the response reflects what was known by the end of that day. Defaults to now; cannot be in the future. A date from before the dataset's knowledge history returns 422 point-in-time-unavailable naming the earliest one, which GET /v1/datasets lists as earliest_as_of.",
                        "schema": {
                            "type": "string",
                            "format": "date"
                        }
                    },
                    {
                        "name": "known_from",
                        "in": "query",
                        "required": false,
                        "description": "First UTC date (YYYY-MM-DD, inclusive) on which a revision became known.",
                        "schema": {
                            "type": "string",
                            "format": "date"
                        }
                    },
                    {
                        "name": "known_to",
                        "in": "query",
                        "required": false,
                        "description": "Last UTC date (YYYY-MM-DD, inclusive) on which a revision became known; on or after known_from.",
                        "schema": {
                            "type": "string",
                            "format": "date"
                        }
                    },
                    {
                        "name": "order",
                        "in": "query",
                        "required": false,
                        "description": "Direction on id; ties use ID ascending.",
                        "schema": {
                            "type": "string",
                            "enum": [
                                "asc",
                                "desc"
                            ],
                            "description": "Direction on id; ties use ID ascending.",
                            "default": "asc"
                        }
                    },
                    {
                        "name": "limit",
                        "in": "query",
                        "required": false,
                        "description": "Maximum records per page.",
                        "schema": {
                            "type": "integer",
                            "minimum": 1,
                            "maximum": 500,
                            "default": 100
                        }
                    },
                    {
                        "name": "cursor",
                        "in": "query",
                        "required": false,
                        "description": "Opaque cursor, expires after one hour; binds filters, order, resolved as_of, account/key and entitlement. Repeat the original query unchanged.",
                        "schema": {
                            "type": "string",
                            "maxLength": 4096
                        }
                    },
                    {
                        "name": "format",
                        "in": "query",
                        "description": "Response format. csv returns the data rows with a header row, for spreadsheet functions such as IMPORTDATA; nested fields become dotted columns and lists one JSON array cell, the next page cursor is returned in X-Next-Cursor and meta.errors in X-Meta-Errors. A result without rows is the header row alone, listing the documented fields of a row. Default json, or csv when format is omitted and the Accept header ranks text/csv above JSON; a format the Accept header does not admit returns 406 not-acceptable.",
                        "schema": {
                            "type": "string",
                            "enum": [
                                "json",
                                "csv"
                            ]
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Authorized records. An empty collection is a valid result; a dataset with no connected source returns 501, and one with nothing published for your markets 503.",
                        "headers": {
                            "X-RateLimit-Limit": {
                                "$ref": "#/components/headers/X-RateLimit-Limit"
                            },
                            "X-RateLimit-Remaining": {
                                "$ref": "#/components/headers/X-RateLimit-Remaining"
                            },
                            "X-RateLimit-Reset": {
                                "$ref": "#/components/headers/X-RateLimit-Reset"
                            },
                            "Cache-Control": {
                                "description": "Always no-store, private: responses of this endpoint carry no ETag and must not be stored or reused.",
                                "schema": {
                                    "type": "string",
                                    "const": "no-store, private"
                                }
                            },
                            "X-Request-ID": {
                                "$ref": "#/components/headers/X-Request-ID"
                            },
                            "X-Next-Cursor": {
                                "$ref": "#/components/headers/X-Next-Cursor"
                            },
                            "X-Meta-Errors": {
                                "$ref": "#/components/headers/X-Meta-Errors"
                            },
                            "X-Credits-Limit": {
                                "$ref": "#/components/headers/X-Credits-Limit"
                            },
                            "X-Credits-Remaining": {
                                "$ref": "#/components/headers/X-Credits-Remaining"
                            },
                            "X-Credits-Cost": {
                                "$ref": "#/components/headers/X-Credits-Cost"
                            },
                            "X-Concurrency-Limit": {
                                "$ref": "#/components/headers/X-Concurrency-Limit"
                            },
                            "X-Concurrency-Remaining": {
                                "$ref": "#/components/headers/X-Concurrency-Remaining"
                            }
                        },
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "object",
                                    "additionalProperties": false,
                                    "properties": {
                                        "data": {
                                            "type": "array",
                                            "items": {
                                                "$ref": "#/components/schemas/MetricDefinition"
                                            }
                                        },
                                        "meta": {
                                            "$ref": "#/components/schemas/ResponseMeta"
                                        }
                                    },
                                    "required": [
                                        "data",
                                        "meta"
                                    ]
                                },
                                "examples": {
                                    "synthetic": {
                                        "summary": "Synthetic contract example; not production data",
                                        "value": {
                                            "data": [
                                                {
                                                    "id": "market_capitalization",
                                                    "name": "Market capitalization",
                                                    "description": "Closing price multiplied by the eligible shares outstanding.",
                                                    "unit": "currency",
                                                    "input_concepts": []
                                                }
                                            ],
                                            "meta": {
                                                "timezone": "UTC",
                                                "as_of": "2026-11-01T00:00:00Z",
                                                "next_cursor": null,
                                                "coverage": {
                                                    "status": "complete",
                                                    "reason": null
                                                }
                                            }
                                        }
                                    }
                                }
                            },
                            "text/csv": {
                                "schema": {
                                    "type": "string"
                                }
                            }
                        }
                    },
                    "400": {
                        "$ref": "#/components/responses/BadRequest"
                    },
                    "401": {
                        "$ref": "#/components/responses/Unauthorized"
                    },
                    "403": {
                        "$ref": "#/components/responses/Forbidden"
                    },
                    "404": {
                        "$ref": "#/components/responses/NotFound"
                    },
                    "405": {
                        "$ref": "#/components/responses/MethodNotAllowed"
                    },
                    "406": {
                        "$ref": "#/components/responses/NotAcceptable"
                    },
                    "409": {
                        "$ref": "#/components/responses/Conflict"
                    },
                    "413": {
                        "$ref": "#/components/responses/ContentTooLarge"
                    },
                    "414": {
                        "$ref": "#/components/responses/URITooLong"
                    },
                    "415": {
                        "$ref": "#/components/responses/UnsupportedMediaType"
                    },
                    "422": {
                        "$ref": "#/components/responses/UnprocessableContent"
                    },
                    "429": {
                        "$ref": "#/components/responses/TooManyRequests"
                    },
                    "431": {
                        "$ref": "#/components/responses/RequestHeaderFieldsTooLarge"
                    },
                    "500": {
                        "$ref": "#/components/responses/InternalServerError"
                    },
                    "503": {
                        "$ref": "#/components/responses/ServiceUnavailable"
                    }
                },
                "x-query-constraints": [
                    {
                        "rule": "less_than",
                        "lower": "known_from",
                        "upper": "known_to"
                    }
                ],
                "x-example-query": [],
                "x-contract-family": "research",
                "x-credit-cost": "5 credits per request.",
                "x-availability": "available"
            }
        },
        "/v1/financials/metrics": {
            "get": {
                "operationId": "list_financials_metrics",
                "summary": "Financial metrics",
                "tags": [
                    "Financials"
                ],
                "description": "Historical valuations, market capitalization, growth, dividend and financial ratios, with input lineage. Each value is the listing's (instrument_id) and names its company (company_id); /v1/financials/metric-definitions describes how each metric is calculated. A calculated value lists the records it was calculated from in input_record_ids; enterprise_value converts a balance sheet in another currency than the market capitalization at the exchange rate of observed_on, and is left out without one. Preferred shares carry no issuer-level metrics (market capitalization, enterprise value, valuation ratios); their dividend metrics come from their own dividend history. dividend_yield is OHLC's, calculated from the dividends the listing itself paid over the trailing 365 days and its latest reconciled close (trailing_dividend_yield is the same value under its first name); the provider's payout_ratio is left out for listings whose statements or earnings are reported in another currency than they trade in (most ADRs). forward_dividend_yield annualises only a payment cadence the dividend history establishes, and dividends paid in another currency than the listing trades in are converted at the exchange rate of the day they detach. Default order: observed_on ascending, id ascending. Omitting entity selectors returns the entitled universe; explicit unauthorized selectors return 403. Data is delivered from validated canonical batches; a connected dataset with nothing published for the key's markets yet returns 503. Access requires the operation capability on the API key.",
                "x-implementation-status": "implemented",
                "x-required-capability": "financials.read",
                "x-time-field": "observed_on",
                "x-exportable": true,
                "parameters": [
                    {
                        "name": "company_ids",
                        "in": "query",
                        "required": false,
                        "description": "Filter by issuer IDs. May be combined with instrument selectors; filters intersect, except on issuer-level datasets (statements, segments, estimates, earnings, insider transactions), where an instrument selector is read as its company and takes the place of company_ids, so results cover every share class.",
                        "schema": {
                            "type": "array",
                            "minItems": 1,
                            "maxItems": 100,
                            "uniqueItems": true,
                            "items": {
                                "type": "string",
                                "description": "Opaque stable public identifier; never an internal database key.",
                                "minLength": 1,
                                "maxLength": 128,
                                "pattern": "^[A-Za-z0-9][A-Za-z0-9_.:-]{0,127}$"
                            }
                        },
                        "style": "form",
                        "explode": false
                    },
                    {
                        "name": "instrument_ids",
                        "in": "query",
                        "required": false,
                        "description": "Filter by stable instrument IDs. IDs and symbols may not be combined.",
                        "schema": {
                            "type": "array",
                            "minItems": 1,
                            "maxItems": 100,
                            "uniqueItems": true,
                            "items": {
                                "type": "string",
                                "description": "Opaque stable public identifier; never an internal database key.",
                                "minLength": 1,
                                "maxLength": 128,
                                "pattern": "^[A-Za-z0-9][A-Za-z0-9_.:-]{0,127}$"
                            }
                        },
                        "style": "form",
                        "explode": false
                    },
                    {
                        "name": "symbols",
                        "in": "query",
                        "required": false,
                        "description": "Convenience lookup for exchange-listed instruments as MIC:TICKER or a bare ticker, which resolves to the exchange listing that ticker; resolves at symbol_at. The MIC and the ticker are case-insensitive, and two spellings of one listing (AAPL and XNAS:AAPL) count as a repeated value. A bare ticker that names no listing as written is also read in the common vendor spellings: with an exchange suffix (RY.TO, SHEL.L, VOD.LSE, BHP.AX), ^GSPC for INDEX:GSPC, and EURUSD=X or EURUSD for FOREX:EUR-USD. A ticker may contain a space (BAC PRL) but not start or end with one. A request in which no symbol resolves returns 404 symbol-not-resolved; otherwise each symbol that does not resolve, or resolves to a listing with no rows for the request (no-data), is an entry of meta.errors. IDs and symbols may not be combined.",
                        "schema": {
                            "type": "array",
                            "minItems": 1,
                            "maxItems": 100,
                            "uniqueItems": true,
                            "items": {
                                "type": "string",
                                "pattern": "^(?:(?:[A-Za-z0-9]{4}|[Cc][Rr][Yy][Pp][Tt][Oo]|[Ff][Oo][Rr][Ee][Xx]|[Ii][Nn][Dd][Ee][Xx]):|\\^)?[A-Za-z0-9](?:[A-Za-z0-9./_^= -]{0,62}[A-Za-z0-9./_^=-])?$"
                            }
                        },
                        "style": "form",
                        "explode": false,
                        "example": [
                            "XNAS:AAPL"
                        ]
                    },
                    {
                        "name": "symbol_at",
                        "in": "query",
                        "required": false,
                        "description": "Resolve symbols as they were assigned at the end of this UTC date (YYYY-MM-DD); defaults to as_of. Only listings the security master holds resolve: it was built in September 2026 and records delistings from then on, so most issuers delisted earlier, such as TWTR or SIVB, resolve at no date. Only valid with symbols.",
                        "schema": {
                            "type": "string",
                            "format": "date"
                        }
                    },
                    {
                        "name": "metrics",
                        "in": "query",
                        "required": false,
                        "description": "IDs from financials/metric-definitions.",
                        "schema": {
                            "type": "array",
                            "minItems": 1,
                            "maxItems": 100,
                            "uniqueItems": true,
                            "items": {
                                "minLength": 1,
                                "maxLength": 128,
                                "type": "string",
                                "description": "Metric."
                            }
                        },
                        "style": "form",
                        "explode": false
                    },
                    {
                        "name": "from",
                        "in": "query",
                        "required": false,
                        "description": "Inclusive lower bound on observed_on.",
                        "schema": {
                            "type": "string",
                            "format": "date"
                        },
                        "example": "2026-09-01"
                    },
                    {
                        "name": "to",
                        "in": "query",
                        "required": false,
                        "description": "Inclusive upper bound on observed_on; must be on or after from, so from equal to to selects one day.",
                        "schema": {
                            "type": "string",
                            "format": "date"
                        },
                        "example": "2026-09-25"
                    },
                    {
                        "name": "as_of",
                        "in": "query",
                        "required": false,
                        "description": "Knowledge cutoff as a UTC date (YYYY-MM-DD): the response reflects what was known by the end of that day. Defaults to now; cannot be in the future. A date from before the dataset's knowledge history returns 422 point-in-time-unavailable naming the earliest one, which GET /v1/datasets lists as earliest_as_of.",
                        "schema": {
                            "type": "string",
                            "format": "date"
                        }
                    },
                    {
                        "name": "known_from",
                        "in": "query",
                        "required": false,
                        "description": "First UTC date (YYYY-MM-DD, inclusive) on which a revision became known.",
                        "schema": {
                            "type": "string",
                            "format": "date"
                        }
                    },
                    {
                        "name": "known_to",
                        "in": "query",
                        "required": false,
                        "description": "Last UTC date (YYYY-MM-DD, inclusive) on which a revision became known; on or after known_from.",
                        "schema": {
                            "type": "string",
                            "format": "date"
                        }
                    },
                    {
                        "name": "order",
                        "in": "query",
                        "required": false,
                        "description": "Direction on observed_on; ties use ID ascending.",
                        "schema": {
                            "type": "string",
                            "enum": [
                                "asc",
                                "desc"
                            ],
                            "description": "Direction on observed_on; ties use ID ascending.",
                            "default": "asc"
                        }
                    },
                    {
                        "name": "limit",
                        "in": "query",
                        "required": false,
                        "description": "Maximum records per page.",
                        "schema": {
                            "type": "integer",
                            "minimum": 1,
                            "maximum": 500,
                            "default": 100
                        }
                    },
                    {
                        "name": "cursor",
                        "in": "query",
                        "required": false,
                        "description": "Opaque cursor, expires after one hour; binds filters, order, resolved as_of, account/key and entitlement. Repeat the original query unchanged.",
                        "schema": {
                            "type": "string",
                            "maxLength": 4096
                        }
                    },
                    {
                        "name": "format",
                        "in": "query",
                        "description": "Response format. csv returns the data rows with a header row, for spreadsheet functions such as IMPORTDATA; nested fields become dotted columns and lists one JSON array cell, the next page cursor is returned in X-Next-Cursor and meta.errors in X-Meta-Errors. A result without rows is the header row alone, listing the documented fields of a row. Default json, or csv when format is omitted and the Accept header ranks text/csv above JSON; a format the Accept header does not admit returns 406 not-acceptable.",
                        "schema": {
                            "type": "string",
                            "enum": [
                                "json",
                                "csv"
                            ]
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Authorized records. An empty collection is a valid result; a dataset with no connected source returns 501, and one with nothing published for your markets 503.",
                        "headers": {
                            "X-RateLimit-Limit": {
                                "$ref": "#/components/headers/X-RateLimit-Limit"
                            },
                            "X-RateLimit-Remaining": {
                                "$ref": "#/components/headers/X-RateLimit-Remaining"
                            },
                            "X-RateLimit-Reset": {
                                "$ref": "#/components/headers/X-RateLimit-Reset"
                            },
                            "Cache-Control": {
                                "description": "Always no-store, private: responses of this endpoint carry no ETag and must not be stored or reused.",
                                "schema": {
                                    "type": "string",
                                    "const": "no-store, private"
                                }
                            },
                            "X-Request-ID": {
                                "$ref": "#/components/headers/X-Request-ID"
                            },
                            "X-Next-Cursor": {
                                "$ref": "#/components/headers/X-Next-Cursor"
                            },
                            "X-Meta-Errors": {
                                "$ref": "#/components/headers/X-Meta-Errors"
                            },
                            "X-Credits-Limit": {
                                "$ref": "#/components/headers/X-Credits-Limit"
                            },
                            "X-Credits-Remaining": {
                                "$ref": "#/components/headers/X-Credits-Remaining"
                            },
                            "X-Credits-Cost": {
                                "$ref": "#/components/headers/X-Credits-Cost"
                            },
                            "X-Concurrency-Limit": {
                                "$ref": "#/components/headers/X-Concurrency-Limit"
                            },
                            "X-Concurrency-Remaining": {
                                "$ref": "#/components/headers/X-Concurrency-Remaining"
                            }
                        },
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "object",
                                    "additionalProperties": false,
                                    "properties": {
                                        "data": {
                                            "type": "array",
                                            "items": {
                                                "$ref": "#/components/schemas/FinancialMetric"
                                            }
                                        },
                                        "meta": {
                                            "$ref": "#/components/schemas/ResponseMeta"
                                        }
                                    },
                                    "required": [
                                        "data",
                                        "meta"
                                    ]
                                },
                                "examples": {
                                    "synthetic": {
                                        "summary": "Synthetic contract example; not production data",
                                        "value": {
                                            "data": [
                                                {
                                                    "id": "record_example_1",
                                                    "company_id": "company_example_apple",
                                                    "instrument_id": "inst_example_aapl",
                                                    "metric": "market_capitalization",
                                                    "observed_on": "2026-09-18",
                                                    "period_start": null,
                                                    "period_end": null,
                                                    "value": {
                                                        "value": "1000000000",
                                                        "unit": "currency",
                                                        "currency_code": "USD"
                                                    },
                                                    "input_record_ids": []
                                                }
                                            ],
                                            "meta": {
                                                "timezone": "UTC",
                                                "as_of": "2026-11-01T00:00:00Z",
                                                "next_cursor": null,
                                                "coverage": {
                                                    "status": "complete",
                                                    "reason": null
                                                }
                                            }
                                        }
                                    }
                                }
                            },
                            "text/csv": {
                                "schema": {
                                    "type": "string"
                                }
                            }
                        }
                    },
                    "400": {
                        "$ref": "#/components/responses/BadRequest"
                    },
                    "401": {
                        "$ref": "#/components/responses/Unauthorized"
                    },
                    "403": {
                        "$ref": "#/components/responses/Forbidden"
                    },
                    "404": {
                        "$ref": "#/components/responses/NotFound"
                    },
                    "405": {
                        "$ref": "#/components/responses/MethodNotAllowed"
                    },
                    "406": {
                        "$ref": "#/components/responses/NotAcceptable"
                    },
                    "409": {
                        "$ref": "#/components/responses/Conflict"
                    },
                    "413": {
                        "$ref": "#/components/responses/ContentTooLarge"
                    },
                    "414": {
                        "$ref": "#/components/responses/URITooLong"
                    },
                    "415": {
                        "$ref": "#/components/responses/UnsupportedMediaType"
                    },
                    "422": {
                        "$ref": "#/components/responses/UnprocessableContent"
                    },
                    "429": {
                        "$ref": "#/components/responses/TooManyRequests"
                    },
                    "431": {
                        "$ref": "#/components/responses/RequestHeaderFieldsTooLarge"
                    },
                    "500": {
                        "$ref": "#/components/responses/InternalServerError"
                    },
                    "503": {
                        "$ref": "#/components/responses/ServiceUnavailable"
                    }
                },
                "x-query-constraints": [
                    {
                        "rule": "mutually_exclusive",
                        "parameters": [
                            "instrument_ids",
                            "symbols"
                        ]
                    },
                    {
                        "rule": "requires",
                        "parameter": "symbol_at",
                        "required": [
                            "symbols"
                        ]
                    },
                    {
                        "rule": "less_than",
                        "lower": "from",
                        "upper": "to"
                    },
                    {
                        "rule": "less_than",
                        "lower": "known_from",
                        "upper": "known_to"
                    }
                ],
                "x-example-query": {
                    "symbols": [
                        "XNAS:AAPL"
                    ],
                    "from": "2026-09-01",
                    "to": "2026-09-25"
                },
                "x-contract-family": "research",
                "x-credit-cost": "50 credits per symbol; 500 credits without symbols (whole market).",
                "x-availability": "available"
            }
        },
        "/v1/financials/segments": {
            "get": {
                "operationId": "list_financials_segments",
                "summary": "Revenue segments",
                "tags": [
                    "Financials"
                ],
                "description": "Issuer-reported revenue by operating segment, product or service line and geographic area, with segment operating income where the issuer reports it, from the XBRL of each company's annual report filed with the SEC (10-K or 10-KT, or its amendment when no original is held). One record per company, fiscal year end, breakdown and segment; the figures are the fiscal year's, and a company's history starts with the annual report OHLC first read. Segment names are the issuer's own and are not comparable across companies, and a breakdown may hold totals beside their parts, so do not add a company's segments up. Companies that report a single segment have no records. Default order: period_end ascending, id ascending. Omitting entity selectors returns the entitled universe; explicit unauthorized selectors return 403. Data is delivered from validated canonical batches; a connected dataset with nothing published for the key's markets yet returns 503. Access requires the operation capability on the API key.",
                "x-implementation-status": "implemented",
                "x-required-capability": "financials.read",
                "x-time-field": "period_end",
                "x-exportable": true,
                "parameters": [
                    {
                        "name": "company_ids",
                        "in": "query",
                        "required": false,
                        "description": "Filter by issuer IDs. May be combined with instrument selectors; filters intersect, except on issuer-level datasets (statements, segments, estimates, earnings, insider transactions), where an instrument selector is read as its company and takes the place of company_ids, so results cover every share class.",
                        "schema": {
                            "type": "array",
                            "minItems": 1,
                            "maxItems": 100,
                            "uniqueItems": true,
                            "items": {
                                "type": "string",
                                "description": "Opaque stable public identifier; never an internal database key.",
                                "minLength": 1,
                                "maxLength": 128,
                                "pattern": "^[A-Za-z0-9][A-Za-z0-9_.:-]{0,127}$"
                            }
                        },
                        "style": "form",
                        "explode": false
                    },
                    {
                        "name": "instrument_ids",
                        "in": "query",
                        "required": false,
                        "description": "Filter by stable instrument IDs. IDs and symbols may not be combined.",
                        "schema": {
                            "type": "array",
                            "minItems": 1,
                            "maxItems": 100,
                            "uniqueItems": true,
                            "items": {
                                "type": "string",
                                "description": "Opaque stable public identifier; never an internal database key.",
                                "minLength": 1,
                                "maxLength": 128,
                                "pattern": "^[A-Za-z0-9][A-Za-z0-9_.:-]{0,127}$"
                            }
                        },
                        "style": "form",
                        "explode": false
                    },
                    {
                        "name": "symbols",
                        "in": "query",
                        "required": false,
                        "description": "Convenience lookup for exchange-listed instruments as MIC:TICKER or a bare ticker, which resolves to the exchange listing that ticker; resolves at symbol_at. The MIC and the ticker are case-insensitive, and two spellings of one listing (AAPL and XNAS:AAPL) count as a repeated value. A bare ticker that names no listing as written is also read in the common vendor spellings: with an exchange suffix (RY.TO, SHEL.L, VOD.LSE, BHP.AX), ^GSPC for INDEX:GSPC, and EURUSD=X or EURUSD for FOREX:EUR-USD. A ticker may contain a space (BAC PRL) but not start or end with one. A request in which no symbol resolves returns 404 symbol-not-resolved; otherwise each symbol that does not resolve, or resolves to a listing with no rows for the request (no-data), is an entry of meta.errors. IDs and symbols may not be combined.",
                        "schema": {
                            "type": "array",
                            "minItems": 1,
                            "maxItems": 100,
                            "uniqueItems": true,
                            "items": {
                                "type": "string",
                                "pattern": "^(?:(?:[A-Za-z0-9]{4}|[Cc][Rr][Yy][Pp][Tt][Oo]|[Ff][Oo][Rr][Ee][Xx]|[Ii][Nn][Dd][Ee][Xx]):|\\^)?[A-Za-z0-9](?:[A-Za-z0-9./_^= -]{0,62}[A-Za-z0-9./_^=-])?$"
                            }
                        },
                        "style": "form",
                        "explode": false,
                        "example": [
                            "XNAS:AAPL"
                        ]
                    },
                    {
                        "name": "symbol_at",
                        "in": "query",
                        "required": false,
                        "description": "Resolve symbols as they were assigned at the end of this UTC date (YYYY-MM-DD); defaults to as_of. Only listings the security master holds resolve: it was built in September 2026 and records delistings from then on, so most issuers delisted earlier, such as TWTR or SIVB, resolve at no date. Only valid with symbols.",
                        "schema": {
                            "type": "string",
                            "format": "date"
                        }
                    },
                    {
                        "name": "dimension",
                        "in": "query",
                        "required": false,
                        "description": "Segment axis.",
                        "schema": {
                            "type": "string",
                            "enum": [
                                "business",
                                "geography"
                            ],
                            "description": "Segment axis."
                        }
                    },
                    {
                        "name": "from",
                        "in": "query",
                        "required": false,
                        "description": "Inclusive lower bound on period_end.",
                        "schema": {
                            "type": "string",
                            "format": "date"
                        }
                    },
                    {
                        "name": "to",
                        "in": "query",
                        "required": false,
                        "description": "Inclusive upper bound on period_end; must be on or after from, so from equal to to selects one day.",
                        "schema": {
                            "type": "string",
                            "format": "date"
                        }
                    },
                    {
                        "name": "as_of",
                        "in": "query",
                        "required": false,
                        "description": "Knowledge cutoff as a UTC date (YYYY-MM-DD): the response reflects what was known by the end of that day. Defaults to now; cannot be in the future. A date from before the dataset's knowledge history returns 422 point-in-time-unavailable naming the earliest one, which GET /v1/datasets lists as earliest_as_of.",
                        "schema": {
                            "type": "string",
                            "format": "date"
                        }
                    },
                    {
                        "name": "known_from",
                        "in": "query",
                        "required": false,
                        "description": "First UTC date (YYYY-MM-DD, inclusive) on which a revision became known.",
                        "schema": {
                            "type": "string",
                            "format": "date"
                        }
                    },
                    {
                        "name": "known_to",
                        "in": "query",
                        "required": false,
                        "description": "Last UTC date (YYYY-MM-DD, inclusive) on which a revision became known; on or after known_from.",
                        "schema": {
                            "type": "string",
                            "format": "date"
                        }
                    },
                    {
                        "name": "order",
                        "in": "query",
                        "required": false,
                        "description": "Direction on period_end; ties use ID ascending.",
                        "schema": {
                            "type": "string",
                            "enum": [
                                "asc",
                                "desc"
                            ],
                            "description": "Direction on period_end; ties use ID ascending.",
                            "default": "asc"
                        }
                    },
                    {
                        "name": "limit",
                        "in": "query",
                        "required": false,
                        "description": "Maximum records per page.",
                        "schema": {
                            "type": "integer",
                            "minimum": 1,
                            "maximum": 500,
                            "default": 100
                        }
                    },
                    {
                        "name": "cursor",
                        "in": "query",
                        "required": false,
                        "description": "Opaque cursor, expires after one hour; binds filters, order, resolved as_of, account/key and entitlement. Repeat the original query unchanged.",
                        "schema": {
                            "type": "string",
                            "maxLength": 4096
                        }
                    },
                    {
                        "name": "format",
                        "in": "query",
                        "description": "Response format. csv returns the data rows with a header row, for spreadsheet functions such as IMPORTDATA; nested fields become dotted columns and lists one JSON array cell, the next page cursor is returned in X-Next-Cursor and meta.errors in X-Meta-Errors. A result without rows is the header row alone, listing the documented fields of a row. Default json, or csv when format is omitted and the Accept header ranks text/csv above JSON; a format the Accept header does not admit returns 406 not-acceptable.",
                        "schema": {
                            "type": "string",
                            "enum": [
                                "json",
                                "csv"
                            ]
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Authorized records. An empty collection is a valid result; a dataset with no connected source returns 501, and one with nothing published for your markets 503.",
                        "headers": {
                            "X-RateLimit-Limit": {
                                "$ref": "#/components/headers/X-RateLimit-Limit"
                            },
                            "X-RateLimit-Remaining": {
                                "$ref": "#/components/headers/X-RateLimit-Remaining"
                            },
                            "X-RateLimit-Reset": {
                                "$ref": "#/components/headers/X-RateLimit-Reset"
                            },
                            "Cache-Control": {
                                "description": "Always no-store, private: responses of this endpoint carry no ETag and must not be stored or reused.",
                                "schema": {
                                    "type": "string",
                                    "const": "no-store, private"
                                }
                            },
                            "X-Request-ID": {
                                "$ref": "#/components/headers/X-Request-ID"
                            },
                            "X-Next-Cursor": {
                                "$ref": "#/components/headers/X-Next-Cursor"
                            },
                            "X-Meta-Errors": {
                                "$ref": "#/components/headers/X-Meta-Errors"
                            },
                            "X-Credits-Limit": {
                                "$ref": "#/components/headers/X-Credits-Limit"
                            },
                            "X-Credits-Remaining": {
                                "$ref": "#/components/headers/X-Credits-Remaining"
                            },
                            "X-Credits-Cost": {
                                "$ref": "#/components/headers/X-Credits-Cost"
                            },
                            "X-Concurrency-Limit": {
                                "$ref": "#/components/headers/X-Concurrency-Limit"
                            },
                            "X-Concurrency-Remaining": {
                                "$ref": "#/components/headers/X-Concurrency-Remaining"
                            }
                        },
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "object",
                                    "additionalProperties": false,
                                    "properties": {
                                        "data": {
                                            "type": "array",
                                            "items": {
                                                "$ref": "#/components/schemas/RevenueSegment"
                                            }
                                        },
                                        "meta": {
                                            "$ref": "#/components/schemas/ResponseMeta"
                                        }
                                    },
                                    "required": [
                                        "data",
                                        "meta"
                                    ]
                                },
                                "examples": {
                                    "synthetic": {
                                        "summary": "Synthetic contract example; not production data",
                                        "value": {
                                            "data": [
                                                {
                                                    "id": "record_example_1",
                                                    "company_id": "company_example_apple",
                                                    "period_start": "2024-09-29",
                                                    "period_end": "2025-09-27",
                                                    "fiscal_year": 2025,
                                                    "fiscal_quarter": null,
                                                    "period": "annual",
                                                    "dimension": "geography",
                                                    "breakdown": "geographic_area",
                                                    "segment": "Americas",
                                                    "segment_key": "americas",
                                                    "revenue": {
                                                        "amount": "178353000000",
                                                        "currency_code": "USD"
                                                    },
                                                    "operating_income": {
                                                        "amount": "71136000000",
                                                        "currency_code": "USD"
                                                    },
                                                    "xbrl_concepts": [
                                                        "us-gaap:RevenueFromContractWithCustomerExcludingAssessedTax",
                                                        "us-gaap:OperatingIncomeLoss"
                                                    ],
                                                    "filing_id": "0000320193-25-000079"
                                                }
                                            ],
                                            "meta": {
                                                "timezone": "UTC",
                                                "as_of": "2026-11-01T00:00:00Z",
                                                "next_cursor": null,
                                                "coverage": {
                                                    "status": "complete",
                                                    "reason": null
                                                }
                                            }
                                        }
                                    }
                                }
                            },
                            "text/csv": {
                                "schema": {
                                    "type": "string"
                                }
                            }
                        }
                    },
                    "400": {
                        "$ref": "#/components/responses/BadRequest"
                    },
                    "401": {
                        "$ref": "#/components/responses/Unauthorized"
                    },
                    "403": {
                        "$ref": "#/components/responses/Forbidden"
                    },
                    "404": {
                        "$ref": "#/components/responses/NotFound"
                    },
                    "405": {
                        "$ref": "#/components/responses/MethodNotAllowed"
                    },
                    "406": {
                        "$ref": "#/components/responses/NotAcceptable"
                    },
                    "409": {
                        "$ref": "#/components/responses/Conflict"
                    },
                    "413": {
                        "$ref": "#/components/responses/ContentTooLarge"
                    },
                    "414": {
                        "$ref": "#/components/responses/URITooLong"
                    },
                    "415": {
                        "$ref": "#/components/responses/UnsupportedMediaType"
                    },
                    "422": {
                        "$ref": "#/components/responses/UnprocessableContent"
                    },
                    "429": {
                        "$ref": "#/components/responses/TooManyRequests"
                    },
                    "431": {
                        "$ref": "#/components/responses/RequestHeaderFieldsTooLarge"
                    },
                    "500": {
                        "$ref": "#/components/responses/InternalServerError"
                    },
                    "503": {
                        "$ref": "#/components/responses/ServiceUnavailable"
                    }
                },
                "x-query-constraints": [
                    {
                        "rule": "mutually_exclusive",
                        "parameters": [
                            "instrument_ids",
                            "symbols"
                        ]
                    },
                    {
                        "rule": "requires",
                        "parameter": "symbol_at",
                        "required": [
                            "symbols"
                        ]
                    },
                    {
                        "rule": "less_than",
                        "lower": "from",
                        "upper": "to"
                    },
                    {
                        "rule": "less_than",
                        "lower": "known_from",
                        "upper": "known_to"
                    }
                ],
                "x-example-query": {
                    "symbols": [
                        "XNAS:AAPL"
                    ]
                },
                "x-contract-family": "research",
                "x-credit-cost": "50 credits per symbol; 500 credits without symbols (whole market).",
                "x-availability": "available"
            }
        },
        "/v1/earnings": {
            "get": {
                "operationId": "list_earnings",
                "summary": "Earnings",
                "tags": [
                    "Company events"
                ],
                "description": "Upcoming and historical earnings announcements, actuals, estimates and surprises. The sources give the release date and session, not the instant, so report_at is always null. report_date is the source's release date, except where the source dates a reported quarter on or before its period end or with a later quarter's date: it is then the date of the company's first Form 8-K under Item 2.02 (results of operations) within 100 days after period_end, or null where there is none. Where report_date is null, from, to and ordering use period_end. eps_surprise and eps_surprise_ratio are the source's surprise and surprise percentage, the latter as a ratio. Revenue, fiscal year and fiscal quarter come from the company's statements and consensus for the same quarter, so an event known only from the earnings calendar carries none of them; period_start is not available. Default order: report_date descending (newest first), id ascending. Omitting entity selectors returns the entitled universe; explicit unauthorized selectors return 403. Data is delivered from validated canonical batches; a connected dataset with nothing published for the key's markets yet returns 503. Access requires the operation capability on the API key.",
                "x-implementation-status": "implemented",
                "x-required-capability": "earnings.read",
                "x-time-field": "report_date",
                "x-exportable": true,
                "parameters": [
                    {
                        "name": "company_ids",
                        "in": "query",
                        "required": false,
                        "description": "Filter by issuer IDs. May be combined with instrument selectors; filters intersect, except on issuer-level datasets (statements, segments, estimates, earnings, insider transactions), where an instrument selector is read as its company and takes the place of company_ids, so results cover every share class.",
                        "schema": {
                            "type": "array",
                            "minItems": 1,
                            "maxItems": 100,
                            "uniqueItems": true,
                            "items": {
                                "type": "string",
                                "description": "Opaque stable public identifier; never an internal database key.",
                                "minLength": 1,
                                "maxLength": 128,
                                "pattern": "^[A-Za-z0-9][A-Za-z0-9_.:-]{0,127}$"
                            }
                        },
                        "style": "form",
                        "explode": false
                    },
                    {
                        "name": "instrument_ids",
                        "in": "query",
                        "required": false,
                        "description": "Filter by stable instrument IDs. IDs and symbols may not be combined.",
                        "schema": {
                            "type": "array",
                            "minItems": 1,
                            "maxItems": 100,
                            "uniqueItems": true,
                            "items": {
                                "type": "string",
                                "description": "Opaque stable public identifier; never an internal database key.",
                                "minLength": 1,
                                "maxLength": 128,
                                "pattern": "^[A-Za-z0-9][A-Za-z0-9_.:-]{0,127}$"
                            }
                        },
                        "style": "form",
                        "explode": false
                    },
                    {
                        "name": "symbols",
                        "in": "query",
                        "required": false,
                        "description": "Convenience lookup for exchange-listed instruments as MIC:TICKER or a bare ticker, which resolves to the exchange listing that ticker; resolves at symbol_at. The MIC and the ticker are case-insensitive, and two spellings of one listing (AAPL and XNAS:AAPL) count as a repeated value. A bare ticker that names no listing as written is also read in the common vendor spellings: with an exchange suffix (RY.TO, SHEL.L, VOD.LSE, BHP.AX), ^GSPC for INDEX:GSPC, and EURUSD=X or EURUSD for FOREX:EUR-USD. A ticker may contain a space (BAC PRL) but not start or end with one. A request in which no symbol resolves returns 404 symbol-not-resolved; otherwise each symbol that does not resolve, or resolves to a listing with no rows for the request (no-data), is an entry of meta.errors. IDs and symbols may not be combined.",
                        "schema": {
                            "type": "array",
                            "minItems": 1,
                            "maxItems": 100,
                            "uniqueItems": true,
                            "items": {
                                "type": "string",
                                "pattern": "^(?:(?:[A-Za-z0-9]{4}|[Cc][Rr][Yy][Pp][Tt][Oo]|[Ff][Oo][Rr][Ee][Xx]|[Ii][Nn][Dd][Ee][Xx]):|\\^)?[A-Za-z0-9](?:[A-Za-z0-9./_^= -]{0,62}[A-Za-z0-9./_^=-])?$"
                            }
                        },
                        "style": "form",
                        "explode": false,
                        "example": [
                            "XNAS:AAPL"
                        ]
                    },
                    {
                        "name": "symbol_at",
                        "in": "query",
                        "required": false,
                        "description": "Resolve symbols as they were assigned at the end of this UTC date (YYYY-MM-DD); defaults to as_of. Only listings the security master holds resolve: it was built in September 2026 and records delistings from then on, so most issuers delisted earlier, such as TWTR or SIVB, resolve at no date. Only valid with symbols.",
                        "schema": {
                            "type": "string",
                            "format": "date"
                        }
                    },
                    {
                        "name": "from",
                        "in": "query",
                        "required": false,
                        "description": "Inclusive lower bound on report_date.",
                        "schema": {
                            "type": "string",
                            "format": "date"
                        },
                        "example": "2025-01-01"
                    },
                    {
                        "name": "to",
                        "in": "query",
                        "required": false,
                        "description": "Inclusive upper bound on report_date; must be on or after from, so from equal to to selects one day.",
                        "schema": {
                            "type": "string",
                            "format": "date"
                        },
                        "example": "2026-12-31"
                    },
                    {
                        "name": "status",
                        "in": "query",
                        "required": false,
                        "description": "Announcement status: estimated (results not yet reported) or reported. The connected source reports neither confirmed nor cancelled announcements, so those match nothing.",
                        "schema": {
                            "type": "string",
                            "enum": [
                                "estimated",
                                "confirmed",
                                "reported",
                                "cancelled"
                            ],
                            "description": "Announcement status: estimated (results not yet reported) or reported. The connected source reports neither confirmed nor cancelled announcements, so those match nothing."
                        }
                    },
                    {
                        "name": "as_of",
                        "in": "query",
                        "required": false,
                        "description": "Knowledge cutoff as a UTC date (YYYY-MM-DD): the response reflects what was known by the end of that day. Defaults to now; cannot be in the future. A date from before the dataset's knowledge history returns 422 point-in-time-unavailable naming the earliest one, which GET /v1/datasets lists as earliest_as_of.",
                        "schema": {
                            "type": "string",
                            "format": "date"
                        }
                    },
                    {
                        "name": "known_from",
                        "in": "query",
                        "required": false,
                        "description": "First UTC date (YYYY-MM-DD, inclusive) on which a revision became known.",
                        "schema": {
                            "type": "string",
                            "format": "date"
                        }
                    },
                    {
                        "name": "known_to",
                        "in": "query",
                        "required": false,
                        "description": "Last UTC date (YYYY-MM-DD, inclusive) on which a revision became known; on or after known_from.",
                        "schema": {
                            "type": "string",
                            "format": "date"
                        }
                    },
                    {
                        "name": "order",
                        "in": "query",
                        "required": false,
                        "description": "Direction on report_date; ties use ID ascending.",
                        "schema": {
                            "type": "string",
                            "enum": [
                                "asc",
                                "desc"
                            ],
                            "description": "Direction on report_date; ties use ID ascending.",
                            "default": "desc"
                        }
                    },
                    {
                        "name": "limit",
                        "in": "query",
                        "required": false,
                        "description": "Maximum records per page.",
                        "schema": {
                            "type": "integer",
                            "minimum": 1,
                            "maximum": 500,
                            "default": 100
                        }
                    },
                    {
                        "name": "cursor",
                        "in": "query",
                        "required": false,
                        "description": "Opaque cursor, expires after one hour; binds filters, order, resolved as_of, account/key and entitlement. Repeat the original query unchanged.",
                        "schema": {
                            "type": "string",
                            "maxLength": 4096
                        }
                    },
                    {
                        "name": "format",
                        "in": "query",
                        "description": "Response format. csv returns the data rows with a header row, for spreadsheet functions such as IMPORTDATA; nested fields become dotted columns and lists one JSON array cell, the next page cursor is returned in X-Next-Cursor and meta.errors in X-Meta-Errors. A result without rows is the header row alone, listing the documented fields of a row. Default json, or csv when format is omitted and the Accept header ranks text/csv above JSON; a format the Accept header does not admit returns 406 not-acceptable.",
                        "schema": {
                            "type": "string",
                            "enum": [
                                "json",
                                "csv"
                            ]
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Authorized records. An empty collection is a valid result; a dataset with no connected source returns 501, and one with nothing published for your markets 503.",
                        "headers": {
                            "X-RateLimit-Limit": {
                                "$ref": "#/components/headers/X-RateLimit-Limit"
                            },
                            "X-RateLimit-Remaining": {
                                "$ref": "#/components/headers/X-RateLimit-Remaining"
                            },
                            "X-RateLimit-Reset": {
                                "$ref": "#/components/headers/X-RateLimit-Reset"
                            },
                            "Cache-Control": {
                                "description": "Always no-store, private: responses of this endpoint carry no ETag and must not be stored or reused.",
                                "schema": {
                                    "type": "string",
                                    "const": "no-store, private"
                                }
                            },
                            "X-Request-ID": {
                                "$ref": "#/components/headers/X-Request-ID"
                            },
                            "X-Next-Cursor": {
                                "$ref": "#/components/headers/X-Next-Cursor"
                            },
                            "X-Meta-Errors": {
                                "$ref": "#/components/headers/X-Meta-Errors"
                            },
                            "X-Credits-Limit": {
                                "$ref": "#/components/headers/X-Credits-Limit"
                            },
                            "X-Credits-Remaining": {
                                "$ref": "#/components/headers/X-Credits-Remaining"
                            },
                            "X-Credits-Cost": {
                                "$ref": "#/components/headers/X-Credits-Cost"
                            },
                            "X-Concurrency-Limit": {
                                "$ref": "#/components/headers/X-Concurrency-Limit"
                            },
                            "X-Concurrency-Remaining": {
                                "$ref": "#/components/headers/X-Concurrency-Remaining"
                            }
                        },
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "object",
                                    "additionalProperties": false,
                                    "properties": {
                                        "data": {
                                            "type": "array",
                                            "items": {
                                                "$ref": "#/components/schemas/EarningsEvent"
                                            }
                                        },
                                        "meta": {
                                            "$ref": "#/components/schemas/ResponseMeta"
                                        }
                                    },
                                    "required": [
                                        "data",
                                        "meta"
                                    ]
                                },
                                "examples": {
                                    "synthetic": {
                                        "summary": "Synthetic contract example; not production data",
                                        "value": {
                                            "data": [
                                                {
                                                    "id": "record_example_1",
                                                    "company_id": "company_example_apple",
                                                    "instruments": [],
                                                    "period_start": null,
                                                    "period_end": "2026-06-30",
                                                    "fiscal_year": 2026,
                                                    "fiscal_quarter": 2,
                                                    "period": "quarterly",
                                                    "report_date": "2026-09-18",
                                                    "report_at": null,
                                                    "timing": "after_market",
                                                    "status": "reported",
                                                    "eps_actual": {
                                                        "amount": "1.25",
                                                        "currency_code": "USD"
                                                    },
                                                    "eps_estimate": {
                                                        "amount": "1.2",
                                                        "currency_code": "USD"
                                                    },
                                                    "eps_surprise": {
                                                        "amount": "0.05",
                                                        "currency_code": "USD"
                                                    },
                                                    "eps_surprise_ratio": "0.0416666667",
                                                    "revenue_actual": {
                                                        "amount": "227.63",
                                                        "currency_code": "USD"
                                                    },
                                                    "revenue_estimate": {
                                                        "amount": "227.63",
                                                        "currency_code": "USD"
                                                    }
                                                }
                                            ],
                                            "meta": {
                                                "timezone": "UTC",
                                                "as_of": "2026-11-01T00:00:00Z",
                                                "next_cursor": null,
                                                "coverage": {
                                                    "status": "complete",
                                                    "reason": null
                                                }
                                            }
                                        }
                                    }
                                }
                            },
                            "text/csv": {
                                "schema": {
                                    "type": "string"
                                }
                            }
                        }
                    },
                    "400": {
                        "$ref": "#/components/responses/BadRequest"
                    },
                    "401": {
                        "$ref": "#/components/responses/Unauthorized"
                    },
                    "403": {
                        "$ref": "#/components/responses/Forbidden"
                    },
                    "404": {
                        "$ref": "#/components/responses/NotFound"
                    },
                    "405": {
                        "$ref": "#/components/responses/MethodNotAllowed"
                    },
                    "406": {
                        "$ref": "#/components/responses/NotAcceptable"
                    },
                    "409": {
                        "$ref": "#/components/responses/Conflict"
                    },
                    "413": {
                        "$ref": "#/components/responses/ContentTooLarge"
                    },
                    "414": {
                        "$ref": "#/components/responses/URITooLong"
                    },
                    "415": {
                        "$ref": "#/components/responses/UnsupportedMediaType"
                    },
                    "422": {
                        "$ref": "#/components/responses/UnprocessableContent"
                    },
                    "429": {
                        "$ref": "#/components/responses/TooManyRequests"
                    },
                    "431": {
                        "$ref": "#/components/responses/RequestHeaderFieldsTooLarge"
                    },
                    "500": {
                        "$ref": "#/components/responses/InternalServerError"
                    },
                    "503": {
                        "$ref": "#/components/responses/ServiceUnavailable"
                    }
                },
                "x-query-constraints": [
                    {
                        "rule": "mutually_exclusive",
                        "parameters": [
                            "instrument_ids",
                            "symbols"
                        ]
                    },
                    {
                        "rule": "requires",
                        "parameter": "symbol_at",
                        "required": [
                            "symbols"
                        ]
                    },
                    {
                        "rule": "less_than",
                        "lower": "from",
                        "upper": "to"
                    },
                    {
                        "rule": "less_than",
                        "lower": "known_from",
                        "upper": "known_to"
                    }
                ],
                "x-example-query": {
                    "symbols": [
                        "XNAS:AAPL"
                    ],
                    "from": "2025-01-01",
                    "to": "2026-12-31"
                },
                "x-contract-family": "research",
                "x-credit-cost": "5 credits per request.",
                "x-availability": "available"
            }
        },
        "/v1/estimates": {
            "get": {
                "operationId": "list_estimates",
                "summary": "Analyst estimates",
                "tags": [
                    "Company data"
                ],
                "description": "Latest consensus estimate snapshot at or before effective_date for each issuer, metric and fiscal period: EPS and revenue, as the mean, low and high estimate with the number of analysts, in the company's reporting currency. The connected source gives no median (median.value is always null), period_start or fiscal_year (both null); fiscal_quarter is the quarter the source names. EPS estimates carry the upward and downward revisions of the last 30 days; revenue estimates carry none. as_of prevents later revisions entering historical queries. Default order: period_end ascending, id ascending. Omitting entity selectors returns the entitled universe; explicit unauthorized selectors return 403. Data is delivered from validated canonical batches; a connected dataset with nothing published for the key's markets yet returns 503. Access requires the operation capability on the API key.",
                "x-implementation-status": "implemented",
                "x-required-capability": "estimates.read",
                "x-time-field": "period_end",
                "x-exportable": true,
                "parameters": [
                    {
                        "name": "company_ids",
                        "in": "query",
                        "required": false,
                        "description": "Filter by issuer IDs. May be combined with instrument selectors; filters intersect, except on issuer-level datasets (statements, segments, estimates, earnings, insider transactions), where an instrument selector is read as its company and takes the place of company_ids, so results cover every share class.",
                        "schema": {
                            "type": "array",
                            "minItems": 1,
                            "maxItems": 100,
                            "uniqueItems": true,
                            "items": {
                                "type": "string",
                                "description": "Opaque stable public identifier; never an internal database key.",
                                "minLength": 1,
                                "maxLength": 128,
                                "pattern": "^[A-Za-z0-9][A-Za-z0-9_.:-]{0,127}$"
                            }
                        },
                        "style": "form",
                        "explode": false
                    },
                    {
                        "name": "instrument_ids",
                        "in": "query",
                        "required": false,
                        "description": "Filter by stable instrument IDs. IDs and symbols may not be combined.",
                        "schema": {
                            "type": "array",
                            "minItems": 1,
                            "maxItems": 100,
                            "uniqueItems": true,
                            "items": {
                                "type": "string",
                                "description": "Opaque stable public identifier; never an internal database key.",
                                "minLength": 1,
                                "maxLength": 128,
                                "pattern": "^[A-Za-z0-9][A-Za-z0-9_.:-]{0,127}$"
                            }
                        },
                        "style": "form",
                        "explode": false
                    },
                    {
                        "name": "symbols",
                        "in": "query",
                        "required": false,
                        "description": "Convenience lookup for exchange-listed instruments as MIC:TICKER or a bare ticker, which resolves to the exchange listing that ticker; resolves at symbol_at. The MIC and the ticker are case-insensitive, and two spellings of one listing (AAPL and XNAS:AAPL) count as a repeated value. A bare ticker that names no listing as written is also read in the common vendor spellings: with an exchange suffix (RY.TO, SHEL.L, VOD.LSE, BHP.AX), ^GSPC for INDEX:GSPC, and EURUSD=X or EURUSD for FOREX:EUR-USD. A ticker may contain a space (BAC PRL) but not start or end with one. A request in which no symbol resolves returns 404 symbol-not-resolved; otherwise each symbol that does not resolve, or resolves to a listing with no rows for the request (no-data), is an entry of meta.errors. IDs and symbols may not be combined.",
                        "schema": {
                            "type": "array",
                            "minItems": 1,
                            "maxItems": 100,
                            "uniqueItems": true,
                            "items": {
                                "type": "string",
                                "pattern": "^(?:(?:[A-Za-z0-9]{4}|[Cc][Rr][Yy][Pp][Tt][Oo]|[Ff][Oo][Rr][Ee][Xx]|[Ii][Nn][Dd][Ee][Xx]):|\\^)?[A-Za-z0-9](?:[A-Za-z0-9./_^= -]{0,62}[A-Za-z0-9./_^=-])?$"
                            }
                        },
                        "style": "form",
                        "explode": false,
                        "example": [
                            "XNAS:AAPL"
                        ]
                    },
                    {
                        "name": "symbol_at",
                        "in": "query",
                        "required": false,
                        "description": "Resolve symbols as they were assigned at the end of this UTC date (YYYY-MM-DD); defaults to as_of. Only listings the security master holds resolve: it was built in September 2026 and records delistings from then on, so most issuers delisted earlier, such as TWTR or SIVB, resolve at no date. Only valid with symbols.",
                        "schema": {
                            "type": "string",
                            "format": "date"
                        }
                    },
                    {
                        "name": "metric",
                        "in": "query",
                        "required": false,
                        "description": "Estimated metric: eps or revenue; ebitda matches nothing, as the connected source gives no EBITDA consensus.",
                        "schema": {
                            "type": "string",
                            "enum": [
                                "eps",
                                "revenue",
                                "ebitda"
                            ],
                            "description": "Estimated metric: eps or revenue; ebitda matches nothing, as the connected source gives no EBITDA consensus."
                        }
                    },
                    {
                        "name": "period",
                        "in": "query",
                        "required": false,
                        "description": "Forecast fiscal period.",
                        "schema": {
                            "type": "string",
                            "enum": [
                                "quarterly",
                                "annual"
                            ],
                            "description": "Forecast fiscal period."
                        }
                    },
                    {
                        "name": "from",
                        "in": "query",
                        "required": false,
                        "description": "Inclusive lower bound on period_end.",
                        "schema": {
                            "type": "string",
                            "format": "date"
                        }
                    },
                    {
                        "name": "to",
                        "in": "query",
                        "required": false,
                        "description": "Inclusive upper bound on period_end; must be on or after from, so from equal to to selects one day.",
                        "schema": {
                            "type": "string",
                            "format": "date"
                        }
                    },
                    {
                        "name": "effective_date",
                        "in": "query",
                        "required": false,
                        "description": "Effective date, defaults to the UTC date of as_of. Returns the latest eligible snapshot on or before this date; response retains its actual snapshot date.",
                        "schema": {
                            "type": "string",
                            "format": "date"
                        }
                    },
                    {
                        "name": "as_of",
                        "in": "query",
                        "required": false,
                        "description": "Knowledge cutoff as a UTC date (YYYY-MM-DD): the response reflects what was known by the end of that day. Defaults to now; cannot be in the future. A date from before the dataset's knowledge history returns 422 point-in-time-unavailable naming the earliest one, which GET /v1/datasets lists as earliest_as_of.",
                        "schema": {
                            "type": "string",
                            "format": "date"
                        }
                    },
                    {
                        "name": "known_from",
                        "in": "query",
                        "required": false,
                        "description": "First UTC date (YYYY-MM-DD, inclusive) on which a revision became known.",
                        "schema": {
                            "type": "string",
                            "format": "date"
                        }
                    },
                    {
                        "name": "known_to",
                        "in": "query",
                        "required": false,
                        "description": "Last UTC date (YYYY-MM-DD, inclusive) on which a revision became known; on or after known_from.",
                        "schema": {
                            "type": "string",
                            "format": "date"
                        }
                    },
                    {
                        "name": "order",
                        "in": "query",
                        "required": false,
                        "description": "Direction on period_end; ties use ID ascending.",
                        "schema": {
                            "type": "string",
                            "enum": [
                                "asc",
                                "desc"
                            ],
                            "description": "Direction on period_end; ties use ID ascending.",
                            "default": "asc"
                        }
                    },
                    {
                        "name": "limit",
                        "in": "query",
                        "required": false,
                        "description": "Maximum records per page.",
                        "schema": {
                            "type": "integer",
                            "minimum": 1,
                            "maximum": 500,
                            "default": 100
                        }
                    },
                    {
                        "name": "cursor",
                        "in": "query",
                        "required": false,
                        "description": "Opaque cursor, expires after one hour; binds filters, order, resolved as_of, account/key and entitlement. Repeat the original query unchanged.",
                        "schema": {
                            "type": "string",
                            "maxLength": 4096
                        }
                    },
                    {
                        "name": "format",
                        "in": "query",
                        "description": "Response format. csv returns the data rows with a header row, for spreadsheet functions such as IMPORTDATA; nested fields become dotted columns and lists one JSON array cell, the next page cursor is returned in X-Next-Cursor and meta.errors in X-Meta-Errors. A result without rows is the header row alone, listing the documented fields of a row. Default json, or csv when format is omitted and the Accept header ranks text/csv above JSON; a format the Accept header does not admit returns 406 not-acceptable.",
                        "schema": {
                            "type": "string",
                            "enum": [
                                "json",
                                "csv"
                            ]
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Authorized records. An empty collection is a valid result; a dataset with no connected source returns 501, and one with nothing published for your markets 503.",
                        "headers": {
                            "X-RateLimit-Limit": {
                                "$ref": "#/components/headers/X-RateLimit-Limit"
                            },
                            "X-RateLimit-Remaining": {
                                "$ref": "#/components/headers/X-RateLimit-Remaining"
                            },
                            "X-RateLimit-Reset": {
                                "$ref": "#/components/headers/X-RateLimit-Reset"
                            },
                            "Cache-Control": {
                                "description": "Always no-store, private: responses of this endpoint carry no ETag and must not be stored or reused.",
                                "schema": {
                                    "type": "string",
                                    "const": "no-store, private"
                                }
                            },
                            "X-Request-ID": {
                                "$ref": "#/components/headers/X-Request-ID"
                            },
                            "X-Next-Cursor": {
                                "$ref": "#/components/headers/X-Next-Cursor"
                            },
                            "X-Meta-Errors": {
                                "$ref": "#/components/headers/X-Meta-Errors"
                            },
                            "X-Credits-Limit": {
                                "$ref": "#/components/headers/X-Credits-Limit"
                            },
                            "X-Credits-Remaining": {
                                "$ref": "#/components/headers/X-Credits-Remaining"
                            },
                            "X-Credits-Cost": {
                                "$ref": "#/components/headers/X-Credits-Cost"
                            },
                            "X-Concurrency-Limit": {
                                "$ref": "#/components/headers/X-Concurrency-Limit"
                            },
                            "X-Concurrency-Remaining": {
                                "$ref": "#/components/headers/X-Concurrency-Remaining"
                            }
                        },
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "object",
                                    "additionalProperties": false,
                                    "properties": {
                                        "data": {
                                            "type": "array",
                                            "items": {
                                                "$ref": "#/components/schemas/AnalystEstimate"
                                            }
                                        },
                                        "meta": {
                                            "$ref": "#/components/schemas/ResponseMeta"
                                        }
                                    },
                                    "required": [
                                        "data",
                                        "meta"
                                    ]
                                },
                                "examples": {
                                    "synthetic": {
                                        "summary": "Synthetic contract example; not production data",
                                        "value": {
                                            "data": [
                                                {
                                                    "id": "record_example_1",
                                                    "company_id": "company_example_apple",
                                                    "period_start": null,
                                                    "period_end": "2026-06-30",
                                                    "fiscal_year": null,
                                                    "fiscal_quarter": 2,
                                                    "period": "quarterly",
                                                    "metric": "eps",
                                                    "observed_on": "2026-09-18",
                                                    "analyst_count": 15,
                                                    "mean": {
                                                        "value": "1.25",
                                                        "unit": "currency",
                                                        "currency_code": "USD"
                                                    },
                                                    "low": {
                                                        "value": "1.25",
                                                        "unit": "currency",
                                                        "currency_code": "USD"
                                                    },
                                                    "high": {
                                                        "value": "1.25",
                                                        "unit": "currency",
                                                        "currency_code": "USD"
                                                    },
                                                    "median": {
                                                        "value": null,
                                                        "unit": "currency",
                                                        "currency_code": "USD"
                                                    },
                                                    "revisions_up": 1,
                                                    "revisions_down": 1,
                                                    "revision_window_days": 30
                                                }
                                            ],
                                            "meta": {
                                                "timezone": "UTC",
                                                "as_of": "2026-11-01T00:00:00Z",
                                                "next_cursor": null,
                                                "coverage": {
                                                    "status": "complete",
                                                    "reason": null
                                                }
                                            }
                                        }
                                    }
                                }
                            },
                            "text/csv": {
                                "schema": {
                                    "type": "string"
                                }
                            }
                        }
                    },
                    "400": {
                        "$ref": "#/components/responses/BadRequest"
                    },
                    "401": {
                        "$ref": "#/components/responses/Unauthorized"
                    },
                    "403": {
                        "$ref": "#/components/responses/Forbidden"
                    },
                    "404": {
                        "$ref": "#/components/responses/NotFound"
                    },
                    "405": {
                        "$ref": "#/components/responses/MethodNotAllowed"
                    },
                    "406": {
                        "$ref": "#/components/responses/NotAcceptable"
                    },
                    "409": {
                        "$ref": "#/components/responses/Conflict"
                    },
                    "413": {
                        "$ref": "#/components/responses/ContentTooLarge"
                    },
                    "414": {
                        "$ref": "#/components/responses/URITooLong"
                    },
                    "415": {
                        "$ref": "#/components/responses/UnsupportedMediaType"
                    },
                    "422": {
                        "$ref": "#/components/responses/UnprocessableContent"
                    },
                    "429": {
                        "$ref": "#/components/responses/TooManyRequests"
                    },
                    "431": {
                        "$ref": "#/components/responses/RequestHeaderFieldsTooLarge"
                    },
                    "500": {
                        "$ref": "#/components/responses/InternalServerError"
                    },
                    "503": {
                        "$ref": "#/components/responses/ServiceUnavailable"
                    }
                },
                "x-query-constraints": [
                    {
                        "rule": "mutually_exclusive",
                        "parameters": [
                            "instrument_ids",
                            "symbols"
                        ]
                    },
                    {
                        "rule": "requires",
                        "parameter": "symbol_at",
                        "required": [
                            "symbols"
                        ]
                    },
                    {
                        "rule": "less_than",
                        "lower": "from",
                        "upper": "to"
                    },
                    {
                        "rule": "less_than",
                        "lower": "known_from",
                        "upper": "known_to"
                    }
                ],
                "x-example-query": {
                    "symbols": [
                        "XNAS:AAPL"
                    ]
                },
                "x-contract-family": "research",
                "x-credit-cost": "50 credits per symbol; 500 credits without symbols (whole market).",
                "x-availability": "available"
            }
        },
        "/v1/analyst-ratings": {
            "get": {
                "operationId": "list_analyst_ratings",
                "summary": "Analyst ratings",
                "tags": [
                    "Company data"
                ],
                "description": "Analyst consensus snapshots: the consensus score from 1 (strong sell) to 5 (strong buy), the number of analysts at each recommendation and the mean price target, one record per listing each time its profile is refreshed (about monthly), with the price target in the listing's trading currency. Individual analyst actions are not available from the connected source, so every record is rating_type consensus and firm, analyst, previous_rating and previous_target_price are null; normalized_rating is unrated for numeric consensus scores. History begins on 2026-09-26, when OHLC began recording the consensus; the source keeps no earlier snapshots. Default order: published_at ascending, id ascending. Omitting entity selectors returns the entitled universe; explicit unauthorized selectors return 403. Data is delivered from validated canonical batches; a connected dataset with nothing published for the key's markets yet returns 503. Access requires the operation capability on the API key.",
                "x-implementation-status": "implemented",
                "x-required-capability": "analyst-ratings.read",
                "x-time-field": "published_at",
                "x-exportable": true,
                "parameters": [
                    {
                        "name": "company_ids",
                        "in": "query",
                        "required": false,
                        "description": "Filter by issuer IDs. May be combined with instrument selectors; filters intersect, except on issuer-level datasets (statements, segments, estimates, earnings, insider transactions), where an instrument selector is read as its company and takes the place of company_ids, so results cover every share class.",
                        "schema": {
                            "type": "array",
                            "minItems": 1,
                            "maxItems": 100,
                            "uniqueItems": true,
                            "items": {
                                "type": "string",
                                "description": "Opaque stable public identifier; never an internal database key.",
                                "minLength": 1,
                                "maxLength": 128,
                                "pattern": "^[A-Za-z0-9][A-Za-z0-9_.:-]{0,127}$"
                            }
                        },
                        "style": "form",
                        "explode": false
                    },
                    {
                        "name": "instrument_ids",
                        "in": "query",
                        "required": false,
                        "description": "Filter by stable instrument IDs. IDs and symbols may not be combined.",
                        "schema": {
                            "type": "array",
                            "minItems": 1,
                            "maxItems": 100,
                            "uniqueItems": true,
                            "items": {
                                "type": "string",
                                "description": "Opaque stable public identifier; never an internal database key.",
                                "minLength": 1,
                                "maxLength": 128,
                                "pattern": "^[A-Za-z0-9][A-Za-z0-9_.:-]{0,127}$"
                            }
                        },
                        "style": "form",
                        "explode": false
                    },
                    {
                        "name": "symbols",
                        "in": "query",
                        "required": false,
                        "description": "Convenience lookup for exchange-listed instruments as MIC:TICKER or a bare ticker, which resolves to the exchange listing that ticker; resolves at symbol_at. The MIC and the ticker are case-insensitive, and two spellings of one listing (AAPL and XNAS:AAPL) count as a repeated value. A bare ticker that names no listing as written is also read in the common vendor spellings: with an exchange suffix (RY.TO, SHEL.L, VOD.LSE, BHP.AX), ^GSPC for INDEX:GSPC, and EURUSD=X or EURUSD for FOREX:EUR-USD. A ticker may contain a space (BAC PRL) but not start or end with one. A request in which no symbol resolves returns 404 symbol-not-resolved; otherwise each symbol that does not resolve, or resolves to a listing with no rows for the request (no-data), is an entry of meta.errors. IDs and symbols may not be combined.",
                        "schema": {
                            "type": "array",
                            "minItems": 1,
                            "maxItems": 100,
                            "uniqueItems": true,
                            "items": {
                                "type": "string",
                                "pattern": "^(?:(?:[A-Za-z0-9]{4}|[Cc][Rr][Yy][Pp][Tt][Oo]|[Ff][Oo][Rr][Ee][Xx]|[Ii][Nn][Dd][Ee][Xx]):|\\^)?[A-Za-z0-9](?:[A-Za-z0-9./_^= -]{0,62}[A-Za-z0-9./_^=-])?$"
                            }
                        },
                        "style": "form",
                        "explode": false,
                        "example": [
                            "XNAS:AAPL"
                        ]
                    },
                    {
                        "name": "symbol_at",
                        "in": "query",
                        "required": false,
                        "description": "Resolve symbols as they were assigned at the end of this UTC date (YYYY-MM-DD); defaults to as_of. Only listings the security master holds resolve: it was built in September 2026 and records delistings from then on, so most issuers delisted earlier, such as TWTR or SIVB, resolve at no date. Only valid with symbols.",
                        "schema": {
                            "type": "string",
                            "format": "date"
                        }
                    },
                    {
                        "name": "from",
                        "in": "query",
                        "required": false,
                        "description": "First UTC date (YYYY-MM-DD, inclusive) of published_at.",
                        "schema": {
                            "type": "string",
                            "format": "date"
                        }
                    },
                    {
                        "name": "to",
                        "in": "query",
                        "required": false,
                        "description": "Last UTC date (YYYY-MM-DD, inclusive) of published_at; on or after from.",
                        "schema": {
                            "type": "string",
                            "format": "date"
                        }
                    },
                    {
                        "name": "as_of",
                        "in": "query",
                        "required": false,
                        "description": "Knowledge cutoff as a UTC date (YYYY-MM-DD): the response reflects what was known by the end of that day. Defaults to now; cannot be in the future. A date from before the dataset's knowledge history returns 422 point-in-time-unavailable naming the earliest one, which GET /v1/datasets lists as earliest_as_of.",
                        "schema": {
                            "type": "string",
                            "format": "date"
                        }
                    },
                    {
                        "name": "known_from",
                        "in": "query",
                        "required": false,
                        "description": "First UTC date (YYYY-MM-DD, inclusive) on which a revision became known.",
                        "schema": {
                            "type": "string",
                            "format": "date"
                        }
                    },
                    {
                        "name": "known_to",
                        "in": "query",
                        "required": false,
                        "description": "Last UTC date (YYYY-MM-DD, inclusive) on which a revision became known; on or after known_from.",
                        "schema": {
                            "type": "string",
                            "format": "date"
                        }
                    },
                    {
                        "name": "order",
                        "in": "query",
                        "required": false,
                        "description": "Direction on published_at; ties use ID ascending.",
                        "schema": {
                            "type": "string",
                            "enum": [
                                "asc",
                                "desc"
                            ],
                            "description": "Direction on published_at; ties use ID ascending.",
                            "default": "asc"
                        }
                    },
                    {
                        "name": "limit",
                        "in": "query",
                        "required": false,
                        "description": "Maximum records per page.",
                        "schema": {
                            "type": "integer",
                            "minimum": 1,
                            "maximum": 500,
                            "default": 100
                        }
                    },
                    {
                        "name": "cursor",
                        "in": "query",
                        "required": false,
                        "description": "Opaque cursor, expires after one hour; binds filters, order, resolved as_of, account/key and entitlement. Repeat the original query unchanged.",
                        "schema": {
                            "type": "string",
                            "maxLength": 4096
                        }
                    },
                    {
                        "name": "format",
                        "in": "query",
                        "description": "Response format. csv returns the data rows with a header row, for spreadsheet functions such as IMPORTDATA; nested fields become dotted columns and lists one JSON array cell, the next page cursor is returned in X-Next-Cursor and meta.errors in X-Meta-Errors. A result without rows is the header row alone, listing the documented fields of a row. Default json, or csv when format is omitted and the Accept header ranks text/csv above JSON; a format the Accept header does not admit returns 406 not-acceptable.",
                        "schema": {
                            "type": "string",
                            "enum": [
                                "json",
                                "csv"
                            ]
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Authorized records. An empty collection is a valid result; a dataset with no connected source returns 501, and one with nothing published for your markets 503.",
                        "headers": {
                            "X-RateLimit-Limit": {
                                "$ref": "#/components/headers/X-RateLimit-Limit"
                            },
                            "X-RateLimit-Remaining": {
                                "$ref": "#/components/headers/X-RateLimit-Remaining"
                            },
                            "X-RateLimit-Reset": {
                                "$ref": "#/components/headers/X-RateLimit-Reset"
                            },
                            "Cache-Control": {
                                "description": "Always no-store, private: responses of this endpoint carry no ETag and must not be stored or reused.",
                                "schema": {
                                    "type": "string",
                                    "const": "no-store, private"
                                }
                            },
                            "X-Request-ID": {
                                "$ref": "#/components/headers/X-Request-ID"
                            },
                            "X-Next-Cursor": {
                                "$ref": "#/components/headers/X-Next-Cursor"
                            },
                            "X-Meta-Errors": {
                                "$ref": "#/components/headers/X-Meta-Errors"
                            },
                            "X-Credits-Limit": {
                                "$ref": "#/components/headers/X-Credits-Limit"
                            },
                            "X-Credits-Remaining": {
                                "$ref": "#/components/headers/X-Credits-Remaining"
                            },
                            "X-Credits-Cost": {
                                "$ref": "#/components/headers/X-Credits-Cost"
                            },
                            "X-Concurrency-Limit": {
                                "$ref": "#/components/headers/X-Concurrency-Limit"
                            },
                            "X-Concurrency-Remaining": {
                                "$ref": "#/components/headers/X-Concurrency-Remaining"
                            }
                        },
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "object",
                                    "additionalProperties": false,
                                    "properties": {
                                        "data": {
                                            "type": "array",
                                            "items": {
                                                "$ref": "#/components/schemas/AnalystRating"
                                            }
                                        },
                                        "meta": {
                                            "$ref": "#/components/schemas/ResponseMeta"
                                        }
                                    },
                                    "required": [
                                        "data",
                                        "meta"
                                    ]
                                },
                                "examples": {
                                    "synthetic": {
                                        "summary": "Synthetic contract example; not production data",
                                        "value": {
                                            "data": [
                                                {
                                                    "id": "record_example_1",
                                                    "company_id": "company_example_apple",
                                                    "instrument_id": "inst_example_aapl",
                                                    "published_at": "2026-09-18T20:00:00Z",
                                                    "firm": null,
                                                    "analyst": null,
                                                    "rating": "4.0417",
                                                    "previous_rating": null,
                                                    "normalized_rating": "unrated",
                                                    "target_price": {
                                                        "amount": "227.63",
                                                        "currency_code": "USD"
                                                    },
                                                    "previous_target_price": null,
                                                    "rating_type": "consensus",
                                                    "observed_on": "2026-09-18",
                                                    "consensus_score": "4.0417",
                                                    "rating_counts": {
                                                        "strong_buy": 13,
                                                        "buy": 7,
                                                        "hold": 4,
                                                        "sell": 0,
                                                        "strong_sell": 0
                                                    }
                                                }
                                            ],
                                            "meta": {
                                                "timezone": "UTC",
                                                "as_of": "2026-11-01T00:00:00Z",
                                                "next_cursor": null,
                                                "coverage": {
                                                    "status": "complete",
                                                    "reason": null
                                                }
                                            }
                                        }
                                    }
                                }
                            },
                            "text/csv": {
                                "schema": {
                                    "type": "string"
                                }
                            }
                        }
                    },
                    "400": {
                        "$ref": "#/components/responses/BadRequest"
                    },
                    "401": {
                        "$ref": "#/components/responses/Unauthorized"
                    },
                    "403": {
                        "$ref": "#/components/responses/Forbidden"
                    },
                    "404": {
                        "$ref": "#/components/responses/NotFound"
                    },
                    "405": {
                        "$ref": "#/components/responses/MethodNotAllowed"
                    },
                    "406": {
                        "$ref": "#/components/responses/NotAcceptable"
                    },
                    "409": {
                        "$ref": "#/components/responses/Conflict"
                    },
                    "413": {
                        "$ref": "#/components/responses/ContentTooLarge"
                    },
                    "414": {
                        "$ref": "#/components/responses/URITooLong"
                    },
                    "415": {
                        "$ref": "#/components/responses/UnsupportedMediaType"
                    },
                    "422": {
                        "$ref": "#/components/responses/UnprocessableContent"
                    },
                    "429": {
                        "$ref": "#/components/responses/TooManyRequests"
                    },
                    "431": {
                        "$ref": "#/components/responses/RequestHeaderFieldsTooLarge"
                    },
                    "500": {
                        "$ref": "#/components/responses/InternalServerError"
                    },
                    "503": {
                        "$ref": "#/components/responses/ServiceUnavailable"
                    }
                },
                "x-query-constraints": [
                    {
                        "rule": "mutually_exclusive",
                        "parameters": [
                            "instrument_ids",
                            "symbols"
                        ]
                    },
                    {
                        "rule": "requires",
                        "parameter": "symbol_at",
                        "required": [
                            "symbols"
                        ]
                    },
                    {
                        "rule": "less_than",
                        "lower": "from",
                        "upper": "to"
                    },
                    {
                        "rule": "less_than",
                        "lower": "known_from",
                        "upper": "known_to"
                    }
                ],
                "x-example-query": {
                    "symbols": [
                        "XNAS:AAPL"
                    ]
                },
                "x-contract-family": "research",
                "x-credit-cost": "50 credits per symbol; 500 credits without symbols (whole market).",
                "x-availability": "available"
            }
        },
        "/v1/ownership": {
            "get": {
                "operationId": "list_ownership",
                "summary": "Ownership",
                "tags": [
                    "Ownership and trading"
                ],
                "description": "Latest reported position per instrument/holder on or before effective_date. The connected source lists each listing's 20 largest institutional holders and 10 largest fund holders as of their latest reports, not every holder, and keeps no earlier positions: history builds forward from September 2026, when OHLC began recording, and a holder that drops out of the largest keeps its last reported position. This is a position view, not a complete historical portfolio snapshot; absence is not proof of zero ownership. Default order: reported_on ascending, id ascending. Omitting entity selectors returns the entitled universe; explicit unauthorized selectors return 403. Data is delivered from validated canonical batches; a connected dataset with nothing published for the key's markets yet returns 503. Access requires the operation capability on the API key.",
                "x-implementation-status": "implemented",
                "x-required-capability": "ownership.read",
                "x-time-field": "reported_on",
                "x-exportable": true,
                "parameters": [
                    {
                        "name": "instrument_ids",
                        "in": "query",
                        "required": false,
                        "description": "Filter by stable instrument IDs. IDs and symbols may not be combined.",
                        "schema": {
                            "type": "array",
                            "minItems": 1,
                            "maxItems": 100,
                            "uniqueItems": true,
                            "items": {
                                "type": "string",
                                "description": "Opaque stable public identifier; never an internal database key.",
                                "minLength": 1,
                                "maxLength": 128,
                                "pattern": "^[A-Za-z0-9][A-Za-z0-9_.:-]{0,127}$"
                            }
                        },
                        "style": "form",
                        "explode": false
                    },
                    {
                        "name": "symbols",
                        "in": "query",
                        "required": false,
                        "description": "Convenience lookup for exchange-listed instruments as MIC:TICKER or a bare ticker, which resolves to the exchange listing that ticker; resolves at symbol_at. The MIC and the ticker are case-insensitive, and two spellings of one listing (AAPL and XNAS:AAPL) count as a repeated value. A bare ticker that names no listing as written is also read in the common vendor spellings: with an exchange suffix (RY.TO, SHEL.L, VOD.LSE, BHP.AX), ^GSPC for INDEX:GSPC, and EURUSD=X or EURUSD for FOREX:EUR-USD. A ticker may contain a space (BAC PRL) but not start or end with one. A request in which no symbol resolves returns 404 symbol-not-resolved; otherwise each symbol that does not resolve, or resolves to a listing with no rows for the request (no-data), is an entry of meta.errors. IDs and symbols may not be combined.",
                        "schema": {
                            "type": "array",
                            "minItems": 1,
                            "maxItems": 100,
                            "uniqueItems": true,
                            "items": {
                                "type": "string",
                                "pattern": "^(?:(?:[A-Za-z0-9]{4}|[Cc][Rr][Yy][Pp][Tt][Oo]|[Ff][Oo][Rr][Ee][Xx]|[Ii][Nn][Dd][Ee][Xx]):|\\^)?[A-Za-z0-9](?:[A-Za-z0-9./_^= -]{0,62}[A-Za-z0-9./_^=-])?$"
                            }
                        },
                        "style": "form",
                        "explode": false,
                        "example": [
                            "XNAS:AAPL"
                        ]
                    },
                    {
                        "name": "symbol_at",
                        "in": "query",
                        "required": false,
                        "description": "Resolve symbols as they were assigned at the end of this UTC date (YYYY-MM-DD); defaults to as_of. Only listings the security master holds resolve: it was built in September 2026 and records delistings from then on, so most issuers delisted earlier, such as TWTR or SIVB, resolve at no date. Only valid with symbols.",
                        "schema": {
                            "type": "string",
                            "format": "date"
                        }
                    },
                    {
                        "name": "holder_ids",
                        "in": "query",
                        "required": false,
                        "description": "Holder IDs.",
                        "schema": {
                            "type": "array",
                            "minItems": 1,
                            "maxItems": 100,
                            "uniqueItems": true,
                            "items": {
                                "type": "string",
                                "description": "Opaque stable public identifier; never an internal database key.",
                                "minLength": 1,
                                "maxLength": 128,
                                "pattern": "^[A-Za-z0-9][A-Za-z0-9_.:-]{0,127}$"
                            }
                        },
                        "style": "form",
                        "explode": false
                    },
                    {
                        "name": "holder_type",
                        "in": "query",
                        "required": false,
                        "description": "Holder category.",
                        "schema": {
                            "type": "string",
                            "enum": [
                                "institution",
                                "fund"
                            ],
                            "description": "Holder category."
                        }
                    },
                    {
                        "name": "effective_date",
                        "in": "query",
                        "required": false,
                        "description": "Effective date, defaults to the UTC date of as_of. Returns the latest eligible snapshot on or before this date; response retains its actual snapshot date.",
                        "schema": {
                            "type": "string",
                            "format": "date"
                        }
                    },
                    {
                        "name": "as_of",
                        "in": "query",
                        "required": false,
                        "description": "Knowledge cutoff as a UTC date (YYYY-MM-DD): the response reflects what was known by the end of that day. Defaults to now; cannot be in the future. A date from before the dataset's knowledge history returns 422 point-in-time-unavailable naming the earliest one, which GET /v1/datasets lists as earliest_as_of.",
                        "schema": {
                            "type": "string",
                            "format": "date"
                        }
                    },
                    {
                        "name": "known_from",
                        "in": "query",
                        "required": false,
                        "description": "First UTC date (YYYY-MM-DD, inclusive) on which a revision became known.",
                        "schema": {
                            "type": "string",
                            "format": "date"
                        }
                    },
                    {
                        "name": "known_to",
                        "in": "query",
                        "required": false,
                        "description": "Last UTC date (YYYY-MM-DD, inclusive) on which a revision became known; on or after known_from.",
                        "schema": {
                            "type": "string",
                            "format": "date"
                        }
                    },
                    {
                        "name": "order",
                        "in": "query",
                        "required": false,
                        "description": "Direction on reported_on; ties use ID ascending.",
                        "schema": {
                            "type": "string",
                            "enum": [
                                "asc",
                                "desc"
                            ],
                            "description": "Direction on reported_on; ties use ID ascending.",
                            "default": "asc"
                        }
                    },
                    {
                        "name": "limit",
                        "in": "query",
                        "required": false,
                        "description": "Maximum records per page.",
                        "schema": {
                            "type": "integer",
                            "minimum": 1,
                            "maximum": 500,
                            "default": 100
                        }
                    },
                    {
                        "name": "cursor",
                        "in": "query",
                        "required": false,
                        "description": "Opaque cursor, expires after one hour; binds filters, order, resolved as_of, account/key and entitlement. Repeat the original query unchanged.",
                        "schema": {
                            "type": "string",
                            "maxLength": 4096
                        }
                    },
                    {
                        "name": "format",
                        "in": "query",
                        "description": "Response format. csv returns the data rows with a header row, for spreadsheet functions such as IMPORTDATA; nested fields become dotted columns and lists one JSON array cell, the next page cursor is returned in X-Next-Cursor and meta.errors in X-Meta-Errors. A result without rows is the header row alone, listing the documented fields of a row. Default json, or csv when format is omitted and the Accept header ranks text/csv above JSON; a format the Accept header does not admit returns 406 not-acceptable.",
                        "schema": {
                            "type": "string",
                            "enum": [
                                "json",
                                "csv"
                            ]
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Authorized records. An empty collection is a valid result; a dataset with no connected source returns 501, and one with nothing published for your markets 503.",
                        "headers": {
                            "X-RateLimit-Limit": {
                                "$ref": "#/components/headers/X-RateLimit-Limit"
                            },
                            "X-RateLimit-Remaining": {
                                "$ref": "#/components/headers/X-RateLimit-Remaining"
                            },
                            "X-RateLimit-Reset": {
                                "$ref": "#/components/headers/X-RateLimit-Reset"
                            },
                            "Cache-Control": {
                                "description": "Always no-store, private: responses of this endpoint carry no ETag and must not be stored or reused.",
                                "schema": {
                                    "type": "string",
                                    "const": "no-store, private"
                                }
                            },
                            "X-Request-ID": {
                                "$ref": "#/components/headers/X-Request-ID"
                            },
                            "X-Next-Cursor": {
                                "$ref": "#/components/headers/X-Next-Cursor"
                            },
                            "X-Meta-Errors": {
                                "$ref": "#/components/headers/X-Meta-Errors"
                            },
                            "X-Credits-Limit": {
                                "$ref": "#/components/headers/X-Credits-Limit"
                            },
                            "X-Credits-Remaining": {
                                "$ref": "#/components/headers/X-Credits-Remaining"
                            },
                            "X-Credits-Cost": {
                                "$ref": "#/components/headers/X-Credits-Cost"
                            },
                            "X-Concurrency-Limit": {
                                "$ref": "#/components/headers/X-Concurrency-Limit"
                            },
                            "X-Concurrency-Remaining": {
                                "$ref": "#/components/headers/X-Concurrency-Remaining"
                            }
                        },
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "object",
                                    "additionalProperties": false,
                                    "properties": {
                                        "data": {
                                            "type": "array",
                                            "items": {
                                                "$ref": "#/components/schemas/OwnershipPosition"
                                            }
                                        },
                                        "meta": {
                                            "$ref": "#/components/schemas/ResponseMeta"
                                        }
                                    },
                                    "required": [
                                        "data",
                                        "meta"
                                    ]
                                },
                                "examples": {
                                    "synthetic": {
                                        "summary": "Synthetic contract example; not production data",
                                        "value": {
                                            "data": [
                                                {
                                                    "id": "record_example_1",
                                                    "instrument_id": "inst_example_aapl",
                                                    "holder_id": "holder_example",
                                                    "holder_name": "Example Asset Management",
                                                    "holder_type": "institution",
                                                    "reported_on": "2026-09-18",
                                                    "shares": "1000000",
                                                    "ownership_ratio": "0.05",
                                                    "change_in_shares": "10000",
                                                    "filing_id": null
                                                }
                                            ],
                                            "meta": {
                                                "timezone": "UTC",
                                                "as_of": "2026-11-01T00:00:00Z",
                                                "next_cursor": null,
                                                "coverage": {
                                                    "status": "complete",
                                                    "reason": null
                                                }
                                            }
                                        }
                                    }
                                }
                            },
                            "text/csv": {
                                "schema": {
                                    "type": "string"
                                }
                            }
                        }
                    },
                    "400": {
                        "$ref": "#/components/responses/BadRequest"
                    },
                    "401": {
                        "$ref": "#/components/responses/Unauthorized"
                    },
                    "403": {
                        "$ref": "#/components/responses/Forbidden"
                    },
                    "404": {
                        "$ref": "#/components/responses/NotFound"
                    },
                    "405": {
                        "$ref": "#/components/responses/MethodNotAllowed"
                    },
                    "406": {
                        "$ref": "#/components/responses/NotAcceptable"
                    },
                    "409": {
                        "$ref": "#/components/responses/Conflict"
                    },
                    "413": {
                        "$ref": "#/components/responses/ContentTooLarge"
                    },
                    "414": {
                        "$ref": "#/components/responses/URITooLong"
                    },
                    "415": {
                        "$ref": "#/components/responses/UnsupportedMediaType"
                    },
                    "422": {
                        "$ref": "#/components/responses/UnprocessableContent"
                    },
                    "429": {
                        "$ref": "#/components/responses/TooManyRequests"
                    },
                    "431": {
                        "$ref": "#/components/responses/RequestHeaderFieldsTooLarge"
                    },
                    "500": {
                        "$ref": "#/components/responses/InternalServerError"
                    },
                    "503": {
                        "$ref": "#/components/responses/ServiceUnavailable"
                    }
                },
                "x-query-constraints": [
                    {
                        "rule": "mutually_exclusive",
                        "parameters": [
                            "instrument_ids",
                            "symbols"
                        ]
                    },
                    {
                        "rule": "requires",
                        "parameter": "symbol_at",
                        "required": [
                            "symbols"
                        ]
                    },
                    {
                        "rule": "less_than",
                        "lower": "known_from",
                        "upper": "known_to"
                    }
                ],
                "x-example-query": {
                    "symbols": [
                        "XNAS:AAPL"
                    ]
                },
                "x-contract-family": "research",
                "x-credit-cost": "50 credits per symbol; 500 credits without symbols (whole market).",
                "x-availability": "available"
            }
        },
        "/v1/insider-transactions": {
            "get": {
                "operationId": "list_insider_transactions",
                "summary": "Insider transactions",
                "tags": [
                    "Ownership and trading"
                ],
                "description": "Structured insider disclosures from SEC Forms 4 and 5, one row per non-derivative transaction, preserving source transaction codes. Initial statements of holdings (Form 3) and derivative transactions (options and awards that convert) are not included. filing_id is the SEC accession number; filed_at and ownership_type are not available from the connected source. Default order: transaction_date ascending, id ascending. Omitting entity selectors returns the entitled universe; explicit unauthorized selectors return 403. Data is delivered from validated canonical batches; a connected dataset with nothing published for the key's markets yet returns 503. Access requires the operation capability on the API key.",
                "x-implementation-status": "implemented",
                "x-required-capability": "insider-transactions.read",
                "x-time-field": "transaction_date",
                "x-exportable": true,
                "parameters": [
                    {
                        "name": "company_ids",
                        "in": "query",
                        "required": false,
                        "description": "Filter by issuer IDs. May be combined with instrument selectors; filters intersect, except on issuer-level datasets (statements, segments, estimates, earnings, insider transactions), where an instrument selector is read as its company and takes the place of company_ids, so results cover every share class.",
                        "schema": {
                            "type": "array",
                            "minItems": 1,
                            "maxItems": 100,
                            "uniqueItems": true,
                            "items": {
                                "type": "string",
                                "description": "Opaque stable public identifier; never an internal database key.",
                                "minLength": 1,
                                "maxLength": 128,
                                "pattern": "^[A-Za-z0-9][A-Za-z0-9_.:-]{0,127}$"
                            }
                        },
                        "style": "form",
                        "explode": false
                    },
                    {
                        "name": "instrument_ids",
                        "in": "query",
                        "required": false,
                        "description": "Filter by stable instrument IDs. IDs and symbols may not be combined.",
                        "schema": {
                            "type": "array",
                            "minItems": 1,
                            "maxItems": 100,
                            "uniqueItems": true,
                            "items": {
                                "type": "string",
                                "description": "Opaque stable public identifier; never an internal database key.",
                                "minLength": 1,
                                "maxLength": 128,
                                "pattern": "^[A-Za-z0-9][A-Za-z0-9_.:-]{0,127}$"
                            }
                        },
                        "style": "form",
                        "explode": false
                    },
                    {
                        "name": "symbols",
                        "in": "query",
                        "required": false,
                        "description": "Convenience lookup for exchange-listed instruments as MIC:TICKER or a bare ticker, which resolves to the exchange listing that ticker; resolves at symbol_at. The MIC and the ticker are case-insensitive, and two spellings of one listing (AAPL and XNAS:AAPL) count as a repeated value. A bare ticker that names no listing as written is also read in the common vendor spellings: with an exchange suffix (RY.TO, SHEL.L, VOD.LSE, BHP.AX), ^GSPC for INDEX:GSPC, and EURUSD=X or EURUSD for FOREX:EUR-USD. A ticker may contain a space (BAC PRL) but not start or end with one. A request in which no symbol resolves returns 404 symbol-not-resolved; otherwise each symbol that does not resolve, or resolves to a listing with no rows for the request (no-data), is an entry of meta.errors. IDs and symbols may not be combined.",
                        "schema": {
                            "type": "array",
                            "minItems": 1,
                            "maxItems": 100,
                            "uniqueItems": true,
                            "items": {
                                "type": "string",
                                "pattern": "^(?:(?:[A-Za-z0-9]{4}|[Cc][Rr][Yy][Pp][Tt][Oo]|[Ff][Oo][Rr][Ee][Xx]|[Ii][Nn][Dd][Ee][Xx]):|\\^)?[A-Za-z0-9](?:[A-Za-z0-9./_^= -]{0,62}[A-Za-z0-9./_^=-])?$"
                            }
                        },
                        "style": "form",
                        "explode": false
                    },
                    {
                        "name": "symbol_at",
                        "in": "query",
                        "required": false,
                        "description": "Resolve symbols as they were assigned at the end of this UTC date (YYYY-MM-DD); defaults to as_of. Only listings the security master holds resolve: it was built in September 2026 and records delistings from then on, so most issuers delisted earlier, such as TWTR or SIVB, resolve at no date. Only valid with symbols.",
                        "schema": {
                            "type": "string",
                            "format": "date"
                        }
                    },
                    {
                        "name": "from",
                        "in": "query",
                        "required": false,
                        "description": "Inclusive lower bound on transaction_date.",
                        "schema": {
                            "type": "string",
                            "format": "date"
                        },
                        "example": "2026-09-01"
                    },
                    {
                        "name": "to",
                        "in": "query",
                        "required": false,
                        "description": "Inclusive upper bound on transaction_date; must be on or after from, so from equal to to selects one day.",
                        "schema": {
                            "type": "string",
                            "format": "date"
                        },
                        "example": "2026-09-25"
                    },
                    {
                        "name": "side",
                        "in": "query",
                        "required": false,
                        "description": "Transaction direction.",
                        "schema": {
                            "type": "string",
                            "enum": [
                                "acquisition",
                                "disposition"
                            ],
                            "description": "Transaction direction."
                        }
                    },
                    {
                        "name": "as_of",
                        "in": "query",
                        "required": false,
                        "description": "Knowledge cutoff as a UTC date (YYYY-MM-DD): the response reflects what was known by the end of that day. Defaults to now; cannot be in the future. A date from before the dataset's knowledge history returns 422 point-in-time-unavailable naming the earliest one, which GET /v1/datasets lists as earliest_as_of.",
                        "schema": {
                            "type": "string",
                            "format": "date"
                        }
                    },
                    {
                        "name": "known_from",
                        "in": "query",
                        "required": false,
                        "description": "First UTC date (YYYY-MM-DD, inclusive) on which a revision became known.",
                        "schema": {
                            "type": "string",
                            "format": "date"
                        }
                    },
                    {
                        "name": "known_to",
                        "in": "query",
                        "required": false,
                        "description": "Last UTC date (YYYY-MM-DD, inclusive) on which a revision became known; on or after known_from.",
                        "schema": {
                            "type": "string",
                            "format": "date"
                        }
                    },
                    {
                        "name": "order",
                        "in": "query",
                        "required": false,
                        "description": "Direction on transaction_date; ties use ID ascending.",
                        "schema": {
                            "type": "string",
                            "enum": [
                                "asc",
                                "desc"
                            ],
                            "description": "Direction on transaction_date; ties use ID ascending.",
                            "default": "asc"
                        }
                    },
                    {
                        "name": "limit",
                        "in": "query",
                        "required": false,
                        "description": "Maximum records per page.",
                        "schema": {
                            "type": "integer",
                            "minimum": 1,
                            "maximum": 500,
                            "default": 100
                        }
                    },
                    {
                        "name": "cursor",
                        "in": "query",
                        "required": false,
                        "description": "Opaque cursor, expires after one hour; binds filters, order, resolved as_of, account/key and entitlement. Repeat the original query unchanged.",
                        "schema": {
                            "type": "string",
                            "maxLength": 4096
                        }
                    },
                    {
                        "name": "format",
                        "in": "query",
                        "description": "Response format. csv returns the data rows with a header row, for spreadsheet functions such as IMPORTDATA; nested fields become dotted columns and lists one JSON array cell, the next page cursor is returned in X-Next-Cursor and meta.errors in X-Meta-Errors. A result without rows is the header row alone, listing the documented fields of a row. Default json, or csv when format is omitted and the Accept header ranks text/csv above JSON; a format the Accept header does not admit returns 406 not-acceptable.",
                        "schema": {
                            "type": "string",
                            "enum": [
                                "json",
                                "csv"
                            ]
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Authorized records. An empty collection is a valid result; a dataset with no connected source returns 501, and one with nothing published for your markets 503.",
                        "headers": {
                            "X-RateLimit-Limit": {
                                "$ref": "#/components/headers/X-RateLimit-Limit"
                            },
                            "X-RateLimit-Remaining": {
                                "$ref": "#/components/headers/X-RateLimit-Remaining"
                            },
                            "X-RateLimit-Reset": {
                                "$ref": "#/components/headers/X-RateLimit-Reset"
                            },
                            "Cache-Control": {
                                "description": "Always no-store, private: responses of this endpoint carry no ETag and must not be stored or reused.",
                                "schema": {
                                    "type": "string",
                                    "const": "no-store, private"
                                }
                            },
                            "X-Request-ID": {
                                "$ref": "#/components/headers/X-Request-ID"
                            },
                            "X-Next-Cursor": {
                                "$ref": "#/components/headers/X-Next-Cursor"
                            },
                            "X-Meta-Errors": {
                                "$ref": "#/components/headers/X-Meta-Errors"
                            },
                            "X-Credits-Limit": {
                                "$ref": "#/components/headers/X-Credits-Limit"
                            },
                            "X-Credits-Remaining": {
                                "$ref": "#/components/headers/X-Credits-Remaining"
                            },
                            "X-Credits-Cost": {
                                "$ref": "#/components/headers/X-Credits-Cost"
                            },
                            "X-Concurrency-Limit": {
                                "$ref": "#/components/headers/X-Concurrency-Limit"
                            },
                            "X-Concurrency-Remaining": {
                                "$ref": "#/components/headers/X-Concurrency-Remaining"
                            }
                        },
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "object",
                                    "additionalProperties": false,
                                    "properties": {
                                        "data": {
                                            "type": "array",
                                            "items": {
                                                "$ref": "#/components/schemas/InsiderTransaction"
                                            }
                                        },
                                        "meta": {
                                            "$ref": "#/components/schemas/ResponseMeta"
                                        }
                                    },
                                    "required": [
                                        "data",
                                        "meta"
                                    ]
                                },
                                "examples": {
                                    "synthetic": {
                                        "summary": "Synthetic contract example; not production data",
                                        "value": {
                                            "data": [
                                                {
                                                    "id": "record_example_1",
                                                    "company_id": "company_example_apple",
                                                    "instrument_id": "inst_example_aapl",
                                                    "security_title": "example",
                                                    "owner_id": "owner_example",
                                                    "owner_name": "example",
                                                    "relationship": "Director",
                                                    "transaction_date": "2026-09-18",
                                                    "filed_at": null,
                                                    "filed_on": "2026-09-18",
                                                    "transaction_code": "P",
                                                    "side": "acquisition",
                                                    "shares": "100",
                                                    "price": {
                                                        "amount": "227.63",
                                                        "currency_code": "USD"
                                                    },
                                                    "shares_after": "1100",
                                                    "ownership_type": "unknown",
                                                    "filing_id": "0001193125-26-405351"
                                                }
                                            ],
                                            "meta": {
                                                "timezone": "UTC",
                                                "as_of": "2026-11-01T00:00:00Z",
                                                "next_cursor": null,
                                                "coverage": {
                                                    "status": "complete",
                                                    "reason": null
                                                }
                                            }
                                        }
                                    }
                                }
                            },
                            "text/csv": {
                                "schema": {
                                    "type": "string"
                                }
                            }
                        }
                    },
                    "400": {
                        "$ref": "#/components/responses/BadRequest"
                    },
                    "401": {
                        "$ref": "#/components/responses/Unauthorized"
                    },
                    "403": {
                        "$ref": "#/components/responses/Forbidden"
                    },
                    "404": {
                        "$ref": "#/components/responses/NotFound"
                    },
                    "405": {
                        "$ref": "#/components/responses/MethodNotAllowed"
                    },
                    "406": {
                        "$ref": "#/components/responses/NotAcceptable"
                    },
                    "409": {
                        "$ref": "#/components/responses/Conflict"
                    },
                    "413": {
                        "$ref": "#/components/responses/ContentTooLarge"
                    },
                    "414": {
                        "$ref": "#/components/responses/URITooLong"
                    },
                    "415": {
                        "$ref": "#/components/responses/UnsupportedMediaType"
                    },
                    "422": {
                        "$ref": "#/components/responses/UnprocessableContent"
                    },
                    "429": {
                        "$ref": "#/components/responses/TooManyRequests"
                    },
                    "431": {
                        "$ref": "#/components/responses/RequestHeaderFieldsTooLarge"
                    },
                    "500": {
                        "$ref": "#/components/responses/InternalServerError"
                    },
                    "503": {
                        "$ref": "#/components/responses/ServiceUnavailable"
                    }
                },
                "x-query-constraints": [
                    {
                        "rule": "mutually_exclusive",
                        "parameters": [
                            "instrument_ids",
                            "symbols"
                        ]
                    },
                    {
                        "rule": "requires",
                        "parameter": "symbol_at",
                        "required": [
                            "symbols"
                        ]
                    },
                    {
                        "rule": "less_than",
                        "lower": "from",
                        "upper": "to"
                    },
                    {
                        "rule": "less_than",
                        "lower": "known_from",
                        "upper": "known_to"
                    }
                ],
                "x-example-query": {
                    "from": "2026-09-01",
                    "to": "2026-09-25"
                },
                "x-contract-family": "research",
                "x-credit-cost": "50 credits per symbol; 500 credits without symbols (whole market).",
                "x-availability": "available"
            }
        },
        "/v1/share-statistics": {
            "get": {
                "operationId": "list_share_statistics",
                "summary": "Share statistics",
                "tags": [
                    "Ownership and trading"
                ],
                "description": "Shares outstanding, free float and ownership ratios over time, each of the listing's own share class. Not published for preferred shares, whose source figures are the issuer's common share counts. Rows at quarter ends before OHLC's first observation of a listing (September 2026) are the company's share counts from its statements, every class together, so a company with more than one class of common stock (GOOGL and GOOG, BRK.A and BRK.B, or META beside its unlisted Class B) has none and its series starts at that first observation. float_shares is null for a listing that is one of several listed classes, whose source states one float for the whole company, and where the stated float exceeds the listing's shares outstanding (an ADR whose float is counted in ordinary shares). Default order: observed_on ascending, id ascending. Omitting entity selectors returns the entitled universe; explicit unauthorized selectors return 403. Data is delivered from validated canonical batches; a connected dataset with nothing published for the key's markets yet returns 503. Access requires the operation capability on the API key.",
                "x-implementation-status": "implemented",
                "x-required-capability": "share-statistics.read",
                "x-time-field": "observed_on",
                "x-exportable": true,
                "parameters": [
                    {
                        "name": "instrument_ids",
                        "in": "query",
                        "required": false,
                        "description": "Filter by stable instrument IDs. IDs and symbols may not be combined.",
                        "schema": {
                            "type": "array",
                            "minItems": 1,
                            "maxItems": 100,
                            "uniqueItems": true,
                            "items": {
                                "type": "string",
                                "description": "Opaque stable public identifier; never an internal database key.",
                                "minLength": 1,
                                "maxLength": 128,
                                "pattern": "^[A-Za-z0-9][A-Za-z0-9_.:-]{0,127}$"
                            }
                        },
                        "style": "form",
                        "explode": false
                    },
                    {
                        "name": "symbols",
                        "in": "query",
                        "required": false,
                        "description": "Convenience lookup for exchange-listed instruments as MIC:TICKER or a bare ticker, which resolves to the exchange listing that ticker; resolves at symbol_at. The MIC and the ticker are case-insensitive, and two spellings of one listing (AAPL and XNAS:AAPL) count as a repeated value. A bare ticker that names no listing as written is also read in the common vendor spellings: with an exchange suffix (RY.TO, SHEL.L, VOD.LSE, BHP.AX), ^GSPC for INDEX:GSPC, and EURUSD=X or EURUSD for FOREX:EUR-USD. A ticker may contain a space (BAC PRL) but not start or end with one. A request in which no symbol resolves returns 404 symbol-not-resolved; otherwise each symbol that does not resolve, or resolves to a listing with no rows for the request (no-data), is an entry of meta.errors. IDs and symbols may not be combined.",
                        "schema": {
                            "type": "array",
                            "minItems": 1,
                            "maxItems": 100,
                            "uniqueItems": true,
                            "items": {
                                "type": "string",
                                "pattern": "^(?:(?:[A-Za-z0-9]{4}|[Cc][Rr][Yy][Pp][Tt][Oo]|[Ff][Oo][Rr][Ee][Xx]|[Ii][Nn][Dd][Ee][Xx]):|\\^)?[A-Za-z0-9](?:[A-Za-z0-9./_^= -]{0,62}[A-Za-z0-9./_^=-])?$"
                            }
                        },
                        "style": "form",
                        "explode": false,
                        "example": [
                            "XNAS:AAPL"
                        ]
                    },
                    {
                        "name": "symbol_at",
                        "in": "query",
                        "required": false,
                        "description": "Resolve symbols as they were assigned at the end of this UTC date (YYYY-MM-DD); defaults to as_of. Only listings the security master holds resolve: it was built in September 2026 and records delistings from then on, so most issuers delisted earlier, such as TWTR or SIVB, resolve at no date. Only valid with symbols.",
                        "schema": {
                            "type": "string",
                            "format": "date"
                        }
                    },
                    {
                        "name": "from",
                        "in": "query",
                        "required": false,
                        "description": "Inclusive lower bound on observed_on.",
                        "schema": {
                            "type": "string",
                            "format": "date"
                        }
                    },
                    {
                        "name": "to",
                        "in": "query",
                        "required": false,
                        "description": "Inclusive upper bound on observed_on; must be on or after from, so from equal to to selects one day.",
                        "schema": {
                            "type": "string",
                            "format": "date"
                        }
                    },
                    {
                        "name": "as_of",
                        "in": "query",
                        "required": false,
                        "description": "Knowledge cutoff as a UTC date (YYYY-MM-DD): the response reflects what was known by the end of that day. Defaults to now; cannot be in the future. A date from before the dataset's knowledge history returns 422 point-in-time-unavailable naming the earliest one, which GET /v1/datasets lists as earliest_as_of.",
                        "schema": {
                            "type": "string",
                            "format": "date"
                        }
                    },
                    {
                        "name": "known_from",
                        "in": "query",
                        "required": false,
                        "description": "First UTC date (YYYY-MM-DD, inclusive) on which a revision became known.",
                        "schema": {
                            "type": "string",
                            "format": "date"
                        }
                    },
                    {
                        "name": "known_to",
                        "in": "query",
                        "required": false,
                        "description": "Last UTC date (YYYY-MM-DD, inclusive) on which a revision became known; on or after known_from.",
                        "schema": {
                            "type": "string",
                            "format": "date"
                        }
                    },
                    {
                        "name": "order",
                        "in": "query",
                        "required": false,
                        "description": "Direction on observed_on; ties use ID ascending.",
                        "schema": {
                            "type": "string",
                            "enum": [
                                "asc",
                                "desc"
                            ],
                            "description": "Direction on observed_on; ties use ID ascending.",
                            "default": "asc"
                        }
                    },
                    {
                        "name": "limit",
                        "in": "query",
                        "required": false,
                        "description": "Maximum records per page.",
                        "schema": {
                            "type": "integer",
                            "minimum": 1,
                            "maximum": 500,
                            "default": 100
                        }
                    },
                    {
                        "name": "cursor",
                        "in": "query",
                        "required": false,
                        "description": "Opaque cursor, expires after one hour; binds filters, order, resolved as_of, account/key and entitlement. Repeat the original query unchanged.",
                        "schema": {
                            "type": "string",
                            "maxLength": 4096
                        }
                    },
                    {
                        "name": "format",
                        "in": "query",
                        "description": "Response format. csv returns the data rows with a header row, for spreadsheet functions such as IMPORTDATA; nested fields become dotted columns and lists one JSON array cell, the next page cursor is returned in X-Next-Cursor and meta.errors in X-Meta-Errors. A result without rows is the header row alone, listing the documented fields of a row. Default json, or csv when format is omitted and the Accept header ranks text/csv above JSON; a format the Accept header does not admit returns 406 not-acceptable.",
                        "schema": {
                            "type": "string",
                            "enum": [
                                "json",
                                "csv"
                            ]
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Authorized records. An empty collection is a valid result; a dataset with no connected source returns 501, and one with nothing published for your markets 503.",
                        "headers": {
                            "X-RateLimit-Limit": {
                                "$ref": "#/components/headers/X-RateLimit-Limit"
                            },
                            "X-RateLimit-Remaining": {
                                "$ref": "#/components/headers/X-RateLimit-Remaining"
                            },
                            "X-RateLimit-Reset": {
                                "$ref": "#/components/headers/X-RateLimit-Reset"
                            },
                            "Cache-Control": {
                                "description": "Always no-store, private: responses of this endpoint carry no ETag and must not be stored or reused.",
                                "schema": {
                                    "type": "string",
                                    "const": "no-store, private"
                                }
                            },
                            "X-Request-ID": {
                                "$ref": "#/components/headers/X-Request-ID"
                            },
                            "X-Next-Cursor": {
                                "$ref": "#/components/headers/X-Next-Cursor"
                            },
                            "X-Meta-Errors": {
                                "$ref": "#/components/headers/X-Meta-Errors"
                            },
                            "X-Credits-Limit": {
                                "$ref": "#/components/headers/X-Credits-Limit"
                            },
                            "X-Credits-Remaining": {
                                "$ref": "#/components/headers/X-Credits-Remaining"
                            },
                            "X-Credits-Cost": {
                                "$ref": "#/components/headers/X-Credits-Cost"
                            },
                            "X-Concurrency-Limit": {
                                "$ref": "#/components/headers/X-Concurrency-Limit"
                            },
                            "X-Concurrency-Remaining": {
                                "$ref": "#/components/headers/X-Concurrency-Remaining"
                            }
                        },
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "object",
                                    "additionalProperties": false,
                                    "properties": {
                                        "data": {
                                            "type": "array",
                                            "items": {
                                                "$ref": "#/components/schemas/ShareStatistics"
                                            }
                                        },
                                        "meta": {
                                            "$ref": "#/components/schemas/ResponseMeta"
                                        }
                                    },
                                    "required": [
                                        "data",
                                        "meta"
                                    ]
                                },
                                "examples": {
                                    "synthetic": {
                                        "summary": "Synthetic contract example; not production data",
                                        "value": {
                                            "data": [
                                                {
                                                    "id": "record_example_1",
                                                    "instrument_id": "inst_example_aapl",
                                                    "observed_on": "2026-09-18",
                                                    "shares_outstanding": "1000000",
                                                    "float_shares": "800000",
                                                    "insider_ownership_ratio": "0.05",
                                                    "institutional_ownership_ratio": "0.05"
                                                }
                                            ],
                                            "meta": {
                                                "timezone": "UTC",
                                                "as_of": "2026-11-01T00:00:00Z",
                                                "next_cursor": null,
                                                "coverage": {
                                                    "status": "complete",
                                                    "reason": null
                                                }
                                            }
                                        }
                                    }
                                }
                            },
                            "text/csv": {
                                "schema": {
                                    "type": "string"
                                }
                            }
                        }
                    },
                    "400": {
                        "$ref": "#/components/responses/BadRequest"
                    },
                    "401": {
                        "$ref": "#/components/responses/Unauthorized"
                    },
                    "403": {
                        "$ref": "#/components/responses/Forbidden"
                    },
                    "404": {
                        "$ref": "#/components/responses/NotFound"
                    },
                    "405": {
                        "$ref": "#/components/responses/MethodNotAllowed"
                    },
                    "406": {
                        "$ref": "#/components/responses/NotAcceptable"
                    },
                    "409": {
                        "$ref": "#/components/responses/Conflict"
                    },
                    "413": {
                        "$ref": "#/components/responses/ContentTooLarge"
                    },
                    "414": {
                        "$ref": "#/components/responses/URITooLong"
                    },
                    "415": {
                        "$ref": "#/components/responses/UnsupportedMediaType"
                    },
                    "422": {
                        "$ref": "#/components/responses/UnprocessableContent"
                    },
                    "429": {
                        "$ref": "#/components/responses/TooManyRequests"
                    },
                    "431": {
                        "$ref": "#/components/responses/RequestHeaderFieldsTooLarge"
                    },
                    "500": {
                        "$ref": "#/components/responses/InternalServerError"
                    },
                    "503": {
                        "$ref": "#/components/responses/ServiceUnavailable"
                    }
                },
                "x-query-constraints": [
                    {
                        "rule": "mutually_exclusive",
                        "parameters": [
                            "instrument_ids",
                            "symbols"
                        ]
                    },
                    {
                        "rule": "requires",
                        "parameter": "symbol_at",
                        "required": [
                            "symbols"
                        ]
                    },
                    {
                        "rule": "less_than",
                        "lower": "from",
                        "upper": "to"
                    },
                    {
                        "rule": "less_than",
                        "lower": "known_from",
                        "upper": "known_to"
                    }
                ],
                "x-example-query": {
                    "symbols": [
                        "XNAS:AAPL"
                    ]
                },
                "x-contract-family": "research",
                "x-credit-cost": "50 credits per symbol; 500 credits without symbols (whole market).",
                "x-availability": "available"
            }
        },
        "/v1/short-interest": {
            "get": {
                "operationId": "list_short_interest",
                "summary": "Short interest",
                "tags": [
                    "Ownership and trading"
                ],
                "description": "Short positions as exchanges report them twice a month, one row per report OHLC observed. The connected source carries the latest report with each company profile refresh (about monthly, sooner after a filing) and does not date it, so observed_on is the day OHLC first saw the report, settlement_date and published_at are null, and a report published between two refreshes can be missed. Not published for preferred shares, whose source figures are the issuer's common stock's. History begins in September 2026. short_float_ratio is shares short over the free float, as a ratio (0.0088 means 0.88%). Default order: observed_on ascending, id ascending. Omitting entity selectors returns the entitled universe; explicit unauthorized selectors return 403. Data is delivered from validated canonical batches; a connected dataset with nothing published for the key's markets yet returns 503. Access requires the operation capability on the API key.",
                "x-implementation-status": "implemented",
                "x-required-capability": "short-interest.read",
                "x-time-field": "observed_on",
                "x-exportable": true,
                "parameters": [
                    {
                        "name": "instrument_ids",
                        "in": "query",
                        "required": false,
                        "description": "Filter by stable instrument IDs. IDs and symbols may not be combined.",
                        "schema": {
                            "type": "array",
                            "minItems": 1,
                            "maxItems": 100,
                            "uniqueItems": true,
                            "items": {
                                "type": "string",
                                "description": "Opaque stable public identifier; never an internal database key.",
                                "minLength": 1,
                                "maxLength": 128,
                                "pattern": "^[A-Za-z0-9][A-Za-z0-9_.:-]{0,127}$"
                            }
                        },
                        "style": "form",
                        "explode": false
                    },
                    {
                        "name": "symbols",
                        "in": "query",
                        "required": false,
                        "description": "Convenience lookup for exchange-listed instruments as MIC:TICKER or a bare ticker, which resolves to the exchange listing that ticker; resolves at symbol_at. The MIC and the ticker are case-insensitive, and two spellings of one listing (AAPL and XNAS:AAPL) count as a repeated value. A bare ticker that names no listing as written is also read in the common vendor spellings: with an exchange suffix (RY.TO, SHEL.L, VOD.LSE, BHP.AX), ^GSPC for INDEX:GSPC, and EURUSD=X or EURUSD for FOREX:EUR-USD. A ticker may contain a space (BAC PRL) but not start or end with one. A request in which no symbol resolves returns 404 symbol-not-resolved; otherwise each symbol that does not resolve, or resolves to a listing with no rows for the request (no-data), is an entry of meta.errors. IDs and symbols may not be combined.",
                        "schema": {
                            "type": "array",
                            "minItems": 1,
                            "maxItems": 100,
                            "uniqueItems": true,
                            "items": {
                                "type": "string",
                                "pattern": "^(?:(?:[A-Za-z0-9]{4}|[Cc][Rr][Yy][Pp][Tt][Oo]|[Ff][Oo][Rr][Ee][Xx]|[Ii][Nn][Dd][Ee][Xx]):|\\^)?[A-Za-z0-9](?:[A-Za-z0-9./_^= -]{0,62}[A-Za-z0-9./_^=-])?$"
                            }
                        },
                        "style": "form",
                        "explode": false,
                        "example": [
                            "XNAS:AAPL"
                        ]
                    },
                    {
                        "name": "symbol_at",
                        "in": "query",
                        "required": false,
                        "description": "Resolve symbols as they were assigned at the end of this UTC date (YYYY-MM-DD); defaults to as_of. Only listings the security master holds resolve: it was built in September 2026 and records delistings from then on, so most issuers delisted earlier, such as TWTR or SIVB, resolve at no date. Only valid with symbols.",
                        "schema": {
                            "type": "string",
                            "format": "date"
                        }
                    },
                    {
                        "name": "from",
                        "in": "query",
                        "required": false,
                        "description": "Inclusive lower bound on observed_on.",
                        "schema": {
                            "type": "string",
                            "format": "date"
                        }
                    },
                    {
                        "name": "to",
                        "in": "query",
                        "required": false,
                        "description": "Inclusive upper bound on observed_on; must be on or after from, so from equal to to selects one day.",
                        "schema": {
                            "type": "string",
                            "format": "date"
                        }
                    },
                    {
                        "name": "as_of",
                        "in": "query",
                        "required": false,
                        "description": "Knowledge cutoff as a UTC date (YYYY-MM-DD): the response reflects what was known by the end of that day. Defaults to now; cannot be in the future. A date from before the dataset's knowledge history returns 422 point-in-time-unavailable naming the earliest one, which GET /v1/datasets lists as earliest_as_of.",
                        "schema": {
                            "type": "string",
                            "format": "date"
                        }
                    },
                    {
                        "name": "known_from",
                        "in": "query",
                        "required": false,
                        "description": "First UTC date (YYYY-MM-DD, inclusive) on which a revision became known.",
                        "schema": {
                            "type": "string",
                            "format": "date"
                        }
                    },
                    {
                        "name": "known_to",
                        "in": "query",
                        "required": false,
                        "description": "Last UTC date (YYYY-MM-DD, inclusive) on which a revision became known; on or after known_from.",
                        "schema": {
                            "type": "string",
                            "format": "date"
                        }
                    },
                    {
                        "name": "order",
                        "in": "query",
                        "required": false,
                        "description": "Direction on observed_on; ties use ID ascending.",
                        "schema": {
                            "type": "string",
                            "enum": [
                                "asc",
                                "desc"
                            ],
                            "description": "Direction on observed_on; ties use ID ascending.",
                            "default": "asc"
                        }
                    },
                    {
                        "name": "limit",
                        "in": "query",
                        "required": false,
                        "description": "Maximum records per page.",
                        "schema": {
                            "type": "integer",
                            "minimum": 1,
                            "maximum": 500,
                            "default": 100
                        }
                    },
                    {
                        "name": "cursor",
                        "in": "query",
                        "required": false,
                        "description": "Opaque cursor, expires after one hour; binds filters, order, resolved as_of, account/key and entitlement. Repeat the original query unchanged.",
                        "schema": {
                            "type": "string",
                            "maxLength": 4096
                        }
                    },
                    {
                        "name": "format",
                        "in": "query",
                        "description": "Response format. csv returns the data rows with a header row, for spreadsheet functions such as IMPORTDATA; nested fields become dotted columns and lists one JSON array cell, the next page cursor is returned in X-Next-Cursor and meta.errors in X-Meta-Errors. A result without rows is the header row alone, listing the documented fields of a row. Default json, or csv when format is omitted and the Accept header ranks text/csv above JSON; a format the Accept header does not admit returns 406 not-acceptable.",
                        "schema": {
                            "type": "string",
                            "enum": [
                                "json",
                                "csv"
                            ]
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Authorized records. An empty collection is a valid result; a dataset with no connected source returns 501, and one with nothing published for your markets 503.",
                        "headers": {
                            "X-RateLimit-Limit": {
                                "$ref": "#/components/headers/X-RateLimit-Limit"
                            },
                            "X-RateLimit-Remaining": {
                                "$ref": "#/components/headers/X-RateLimit-Remaining"
                            },
                            "X-RateLimit-Reset": {
                                "$ref": "#/components/headers/X-RateLimit-Reset"
                            },
                            "Cache-Control": {
                                "description": "Always no-store, private: responses of this endpoint carry no ETag and must not be stored or reused.",
                                "schema": {
                                    "type": "string",
                                    "const": "no-store, private"
                                }
                            },
                            "X-Request-ID": {
                                "$ref": "#/components/headers/X-Request-ID"
                            },
                            "X-Next-Cursor": {
                                "$ref": "#/components/headers/X-Next-Cursor"
                            },
                            "X-Meta-Errors": {
                                "$ref": "#/components/headers/X-Meta-Errors"
                            },
                            "X-Credits-Limit": {
                                "$ref": "#/components/headers/X-Credits-Limit"
                            },
                            "X-Credits-Remaining": {
                                "$ref": "#/components/headers/X-Credits-Remaining"
                            },
                            "X-Credits-Cost": {
                                "$ref": "#/components/headers/X-Credits-Cost"
                            },
                            "X-Concurrency-Limit": {
                                "$ref": "#/components/headers/X-Concurrency-Limit"
                            },
                            "X-Concurrency-Remaining": {
                                "$ref": "#/components/headers/X-Concurrency-Remaining"
                            }
                        },
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "object",
                                    "additionalProperties": false,
                                    "properties": {
                                        "data": {
                                            "type": "array",
                                            "items": {
                                                "$ref": "#/components/schemas/ShortInterest"
                                            }
                                        },
                                        "meta": {
                                            "$ref": "#/components/schemas/ResponseMeta"
                                        }
                                    },
                                    "required": [
                                        "data",
                                        "meta"
                                    ]
                                },
                                "examples": {
                                    "synthetic": {
                                        "summary": "Synthetic contract example; not production data",
                                        "value": {
                                            "data": [
                                                {
                                                    "id": "record_example_1",
                                                    "instrument_id": "inst_example_aapl",
                                                    "settlement_date": null,
                                                    "observed_on": "2026-09-18",
                                                    "published_at": null,
                                                    "shares_short": "10000",
                                                    "previous_shares_short": "9000",
                                                    "short_float_ratio": "0.05",
                                                    "days_to_cover": "2.5"
                                                }
                                            ],
                                            "meta": {
                                                "timezone": "UTC",
                                                "as_of": "2026-11-01T00:00:00Z",
                                                "next_cursor": null,
                                                "coverage": {
                                                    "status": "complete",
                                                    "reason": null
                                                }
                                            }
                                        }
                                    }
                                }
                            },
                            "text/csv": {
                                "schema": {
                                    "type": "string"
                                }
                            }
                        }
                    },
                    "400": {
                        "$ref": "#/components/responses/BadRequest"
                    },
                    "401": {
                        "$ref": "#/components/responses/Unauthorized"
                    },
                    "403": {
                        "$ref": "#/components/responses/Forbidden"
                    },
                    "404": {
                        "$ref": "#/components/responses/NotFound"
                    },
                    "405": {
                        "$ref": "#/components/responses/MethodNotAllowed"
                    },
                    "406": {
                        "$ref": "#/components/responses/NotAcceptable"
                    },
                    "409": {
                        "$ref": "#/components/responses/Conflict"
                    },
                    "413": {
                        "$ref": "#/components/responses/ContentTooLarge"
                    },
                    "414": {
                        "$ref": "#/components/responses/URITooLong"
                    },
                    "415": {
                        "$ref": "#/components/responses/UnsupportedMediaType"
                    },
                    "422": {
                        "$ref": "#/components/responses/UnprocessableContent"
                    },
                    "429": {
                        "$ref": "#/components/responses/TooManyRequests"
                    },
                    "431": {
                        "$ref": "#/components/responses/RequestHeaderFieldsTooLarge"
                    },
                    "500": {
                        "$ref": "#/components/responses/InternalServerError"
                    },
                    "503": {
                        "$ref": "#/components/responses/ServiceUnavailable"
                    }
                },
                "x-query-constraints": [
                    {
                        "rule": "mutually_exclusive",
                        "parameters": [
                            "instrument_ids",
                            "symbols"
                        ]
                    },
                    {
                        "rule": "requires",
                        "parameter": "symbol_at",
                        "required": [
                            "symbols"
                        ]
                    },
                    {
                        "rule": "less_than",
                        "lower": "from",
                        "upper": "to"
                    },
                    {
                        "rule": "less_than",
                        "lower": "known_from",
                        "upper": "known_to"
                    }
                ],
                "x-example-query": {
                    "symbols": [
                        "XNAS:AAPL"
                    ]
                },
                "x-contract-family": "research",
                "x-credit-cost": "5 credits per symbol; 500 credits without symbols (whole market).",
                "x-availability": "available"
            }
        },
        "/v1/funds": {
            "get": {
                "operationId": "list_funds",
                "summary": "Funds",
                "tags": [
                    "Funds and indices"
                ],
                "description": "ETF and mutual-fund profiles and reported fund statistics: domicile, inception, expense ratio and assets under management, for mutual funds the net asset value, and for ETFs the benchmark index name, annual turnover and, for bond ETFs, duration, maturity, average coupon and price and yield to maturity. countries filters domicile. Mutual funds are included with plans that grant mutual-funds.read (Commercial and Scale): for other keys a mutual fund named by symbols or instrument_ids returns 403 mutual-funds-not-entitled, and a request without selectors, fund_type=mutual_fund included, leaves them out. Canadian mutual funds (FSRV) have prices and distributions but no profiles, holdings or allocations. Default order: id ascending. Omitting entity selectors returns the entitled universe; explicit unauthorized selectors return 403. Data is delivered from validated canonical batches; a connected dataset with nothing published for the key's markets yet returns 503. Access requires the operation capability on the API key.",
                "x-implementation-status": "implemented",
                "x-required-capability": "funds.read",
                "x-time-field": "id",
                "x-exportable": true,
                "parameters": [
                    {
                        "name": "instrument_ids",
                        "in": "query",
                        "required": false,
                        "description": "Filter by stable instrument IDs. IDs and symbols may not be combined.",
                        "schema": {
                            "type": "array",
                            "minItems": 1,
                            "maxItems": 100,
                            "uniqueItems": true,
                            "items": {
                                "type": "string",
                                "description": "Opaque stable public identifier; never an internal database key.",
                                "minLength": 1,
                                "maxLength": 128,
                                "pattern": "^[A-Za-z0-9][A-Za-z0-9_.:-]{0,127}$"
                            }
                        },
                        "style": "form",
                        "explode": false
                    },
                    {
                        "name": "symbols",
                        "in": "query",
                        "required": false,
                        "description": "Convenience lookup for exchange-listed instruments as MIC:TICKER or a bare ticker, which resolves to the exchange listing that ticker; resolves at symbol_at. The MIC and the ticker are case-insensitive, and two spellings of one listing (AAPL and XNAS:AAPL) count as a repeated value. A bare ticker that names no listing as written is also read in the common vendor spellings: with an exchange suffix (RY.TO, SHEL.L, VOD.LSE, BHP.AX), ^GSPC for INDEX:GSPC, and EURUSD=X or EURUSD for FOREX:EUR-USD. A ticker may contain a space (BAC PRL) but not start or end with one. A request in which no symbol resolves returns 404 symbol-not-resolved; otherwise each symbol that does not resolve, or resolves to a listing with no rows for the request (no-data), is an entry of meta.errors. IDs and symbols may not be combined.",
                        "schema": {
                            "type": "array",
                            "minItems": 1,
                            "maxItems": 100,
                            "uniqueItems": true,
                            "items": {
                                "type": "string",
                                "pattern": "^(?:(?:[A-Za-z0-9]{4}|[Cc][Rr][Yy][Pp][Tt][Oo]|[Ff][Oo][Rr][Ee][Xx]|[Ii][Nn][Dd][Ee][Xx]):|\\^)?[A-Za-z0-9](?:[A-Za-z0-9./_^= -]{0,62}[A-Za-z0-9./_^=-])?$"
                            }
                        },
                        "style": "form",
                        "explode": false,
                        "example": [
                            "ARCX:SPY"
                        ]
                    },
                    {
                        "name": "symbol_at",
                        "in": "query",
                        "required": false,
                        "description": "Resolve symbols as they were assigned at the end of this UTC date (YYYY-MM-DD); defaults to as_of. Only listings the security master holds resolve: it was built in September 2026 and records delistings from then on, so most issuers delisted earlier, such as TWTR or SIVB, resolve at no date. Only valid with symbols.",
                        "schema": {
                            "type": "string",
                            "format": "date"
                        }
                    },
                    {
                        "name": "fund_type",
                        "in": "query",
                        "required": false,
                        "description": "Fund type.",
                        "schema": {
                            "type": "string",
                            "enum": [
                                "etf",
                                "mutual_fund"
                            ],
                            "description": "Fund type."
                        }
                    },
                    {
                        "name": "countries",
                        "in": "query",
                        "required": false,
                        "description": "ISO 3166-1 alpha-2 country codes.",
                        "schema": {
                            "type": "array",
                            "minItems": 1,
                            "maxItems": 100,
                            "uniqueItems": true,
                            "items": {
                                "type": "string",
                                "pattern": "^[A-Z]{2}$"
                            }
                        },
                        "style": "form",
                        "explode": false
                    },
                    {
                        "name": "effective_date",
                        "in": "query",
                        "required": false,
                        "description": "Effective date, defaults to the UTC date of as_of. Returns the latest eligible snapshot on or before this date; response retains its actual snapshot date.",
                        "schema": {
                            "type": "string",
                            "format": "date"
                        }
                    },
                    {
                        "name": "as_of",
                        "in": "query",
                        "required": false,
                        "description": "Knowledge cutoff as a UTC date (YYYY-MM-DD): the response reflects what was known by the end of that day. Defaults to now; cannot be in the future. A date from before the dataset's knowledge history returns 422 point-in-time-unavailable naming the earliest one, which GET /v1/datasets lists as earliest_as_of.",
                        "schema": {
                            "type": "string",
                            "format": "date"
                        }
                    },
                    {
                        "name": "known_from",
                        "in": "query",
                        "required": false,
                        "description": "First UTC date (YYYY-MM-DD, inclusive) on which a revision became known.",
                        "schema": {
                            "type": "string",
                            "format": "date"
                        }
                    },
                    {
                        "name": "known_to",
                        "in": "query",
                        "required": false,
                        "description": "Last UTC date (YYYY-MM-DD, inclusive) on which a revision became known; on or after known_from.",
                        "schema": {
                            "type": "string",
                            "format": "date"
                        }
                    },
                    {
                        "name": "order",
                        "in": "query",
                        "required": false,
                        "description": "Direction on id; ties use ID ascending.",
                        "schema": {
                            "type": "string",
                            "enum": [
                                "asc",
                                "desc"
                            ],
                            "description": "Direction on id; ties use ID ascending.",
                            "default": "asc"
                        }
                    },
                    {
                        "name": "limit",
                        "in": "query",
                        "required": false,
                        "description": "Maximum records per page.",
                        "schema": {
                            "type": "integer",
                            "minimum": 1,
                            "maximum": 500,
                            "default": 100
                        }
                    },
                    {
                        "name": "cursor",
                        "in": "query",
                        "required": false,
                        "description": "Opaque cursor, expires after one hour; binds filters, order, resolved as_of, account/key and entitlement. Repeat the original query unchanged.",
                        "schema": {
                            "type": "string",
                            "maxLength": 4096
                        }
                    },
                    {
                        "name": "format",
                        "in": "query",
                        "description": "Response format. csv returns the data rows with a header row, for spreadsheet functions such as IMPORTDATA; nested fields become dotted columns and lists one JSON array cell, the next page cursor is returned in X-Next-Cursor and meta.errors in X-Meta-Errors. A result without rows is the header row alone, listing the documented fields of a row. Default json, or csv when format is omitted and the Accept header ranks text/csv above JSON; a format the Accept header does not admit returns 406 not-acceptable.",
                        "schema": {
                            "type": "string",
                            "enum": [
                                "json",
                                "csv"
                            ]
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Authorized records. An empty collection is a valid result; a dataset with no connected source returns 501, and one with nothing published for your markets 503.",
                        "headers": {
                            "X-RateLimit-Limit": {
                                "$ref": "#/components/headers/X-RateLimit-Limit"
                            },
                            "X-RateLimit-Remaining": {
                                "$ref": "#/components/headers/X-RateLimit-Remaining"
                            },
                            "X-RateLimit-Reset": {
                                "$ref": "#/components/headers/X-RateLimit-Reset"
                            },
                            "Cache-Control": {
                                "description": "Always no-store, private: responses of this endpoint carry no ETag and must not be stored or reused.",
                                "schema": {
                                    "type": "string",
                                    "const": "no-store, private"
                                }
                            },
                            "X-Request-ID": {
                                "$ref": "#/components/headers/X-Request-ID"
                            },
                            "X-Next-Cursor": {
                                "$ref": "#/components/headers/X-Next-Cursor"
                            },
                            "X-Meta-Errors": {
                                "$ref": "#/components/headers/X-Meta-Errors"
                            },
                            "X-Credits-Limit": {
                                "$ref": "#/components/headers/X-Credits-Limit"
                            },
                            "X-Credits-Remaining": {
                                "$ref": "#/components/headers/X-Credits-Remaining"
                            },
                            "X-Credits-Cost": {
                                "$ref": "#/components/headers/X-Credits-Cost"
                            },
                            "X-Concurrency-Limit": {
                                "$ref": "#/components/headers/X-Concurrency-Limit"
                            },
                            "X-Concurrency-Remaining": {
                                "$ref": "#/components/headers/X-Concurrency-Remaining"
                            }
                        },
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "object",
                                    "additionalProperties": false,
                                    "properties": {
                                        "data": {
                                            "type": "array",
                                            "items": {
                                                "$ref": "#/components/schemas/Fund"
                                            }
                                        },
                                        "meta": {
                                            "$ref": "#/components/schemas/ResponseMeta"
                                        }
                                    },
                                    "required": [
                                        "data",
                                        "meta"
                                    ]
                                },
                                "examples": {
                                    "synthetic": {
                                        "summary": "Synthetic contract example; not production data",
                                        "value": {
                                            "data": [
                                                {
                                                    "id": "record_example_1",
                                                    "instrument_id": "inst_example_spy",
                                                    "name": "SPDR S&P 500 ETF Trust",
                                                    "fund_type": "etf",
                                                    "domicile": "US",
                                                    "inception_date": "1993-01-22",
                                                    "benchmark_instrument_id": null,
                                                    "benchmark_name": "S&P 500 Index",
                                                    "expense_ratio": "0.000945",
                                                    "turnover_ratio": "0.0205",
                                                    "assets_under_management": {
                                                        "amount": "650000000000",
                                                        "currency_code": "USD"
                                                    },
                                                    "net_asset_value": null,
                                                    "fixed_income": null,
                                                    "observed_on": "2026-09-18"
                                                }
                                            ],
                                            "meta": {
                                                "timezone": "UTC",
                                                "as_of": "2026-11-01T00:00:00Z",
                                                "next_cursor": null,
                                                "coverage": {
                                                    "status": "complete",
                                                    "reason": null
                                                }
                                            }
                                        }
                                    }
                                }
                            },
                            "text/csv": {
                                "schema": {
                                    "type": "string"
                                }
                            }
                        }
                    },
                    "400": {
                        "$ref": "#/components/responses/BadRequest"
                    },
                    "401": {
                        "$ref": "#/components/responses/Unauthorized"
                    },
                    "403": {
                        "$ref": "#/components/responses/Forbidden"
                    },
                    "404": {
                        "$ref": "#/components/responses/NotFound"
                    },
                    "405": {
                        "$ref": "#/components/responses/MethodNotAllowed"
                    },
                    "406": {
                        "$ref": "#/components/responses/NotAcceptable"
                    },
                    "409": {
                        "$ref": "#/components/responses/Conflict"
                    },
                    "413": {
                        "$ref": "#/components/responses/ContentTooLarge"
                    },
                    "414": {
                        "$ref": "#/components/responses/URITooLong"
                    },
                    "415": {
                        "$ref": "#/components/responses/UnsupportedMediaType"
                    },
                    "422": {
                        "$ref": "#/components/responses/UnprocessableContent"
                    },
                    "429": {
                        "$ref": "#/components/responses/TooManyRequests"
                    },
                    "431": {
                        "$ref": "#/components/responses/RequestHeaderFieldsTooLarge"
                    },
                    "500": {
                        "$ref": "#/components/responses/InternalServerError"
                    },
                    "503": {
                        "$ref": "#/components/responses/ServiceUnavailable"
                    }
                },
                "x-query-constraints": [
                    {
                        "rule": "mutually_exclusive",
                        "parameters": [
                            "instrument_ids",
                            "symbols"
                        ]
                    },
                    {
                        "rule": "requires",
                        "parameter": "symbol_at",
                        "required": [
                            "symbols"
                        ]
                    },
                    {
                        "rule": "less_than",
                        "lower": "known_from",
                        "upper": "known_to"
                    }
                ],
                "x-example-query": {
                    "symbols": [
                        "ARCX:SPY"
                    ]
                },
                "x-contract-family": "research",
                "x-credit-cost": "50 credits per symbol; 500 credits without symbols (whole market).",
                "x-availability": "available"
            }
        },
        "/v1/funds/{instrument_id}/holdings": {
            "get": {
                "operationId": "list_funds_instrument_id_holdings",
                "summary": "Fund holdings",
                "tags": [
                    "Funds and indices"
                ],
                "description": "The positions of one portfolio snapshot per fund, by weight; every page stays on the same snapshot. The connected source lists most ETFs' every position (SPY's 502), some ETFs' largest positions only and the 10 largest of a mutual fund, with weights only: meta.snapshot gives how many positions the snapshot lists and the share of the fund they cover, and quantity and market_value are null. holding links the listing a position trades as on any market OHLC carries, and provider_symbol keeps the position's own code either way. A new list far shorter than the fund's previous snapshot is not published; the previous snapshot stays. A fund that holds a commodity directly, such as a gold trust, lists no positions; its allocations describe it. Snapshots are monthly and the newest three are kept. An instrument that is not a fund returns 404 identifier-not-found, as an unknown ID does; a fund without a snapshot returns an empty list. A mutual fund's ID returns 403 mutual-funds-not-entitled for keys whose plan does not include mutual funds, and an ETF's positions in mutual funds are left out for those keys. Default order: snapshot_date ascending, id ascending. Results are limited to the entitled scope. Data is delivered from validated canonical batches; a connected dataset with nothing published for the key's markets yet returns 503. Access requires the operation capability on the API key.",
                "x-implementation-status": "implemented",
                "x-required-capability": "funds.read",
                "x-time-field": "snapshot_date",
                "x-exportable": true,
                "parameters": [
                    {
                        "name": "instrument_id",
                        "in": "path",
                        "required": true,
                        "description": "Stable public identifier.",
                        "schema": {
                            "type": "string",
                            "description": "Opaque stable public identifier; never an internal database key.",
                            "minLength": 1,
                            "maxLength": 128,
                            "pattern": "^[A-Za-z0-9][A-Za-z0-9_.:-]{0,127}$"
                        },
                        "example": "01M35ZNRDCZSWM3GGGF5HDGJ80"
                    },
                    {
                        "name": "effective_date",
                        "in": "query",
                        "required": false,
                        "description": "Effective date, defaults to the UTC date of as_of. Returns the latest eligible snapshot on or before this date; response retains its actual snapshot date.",
                        "schema": {
                            "type": "string",
                            "format": "date"
                        }
                    },
                    {
                        "name": "as_of",
                        "in": "query",
                        "required": false,
                        "description": "Knowledge cutoff as a UTC date (YYYY-MM-DD): the response reflects what was known by the end of that day. Defaults to now; cannot be in the future. A date from before the dataset's knowledge history returns 422 point-in-time-unavailable naming the earliest one, which GET /v1/datasets lists as earliest_as_of.",
                        "schema": {
                            "type": "string",
                            "format": "date"
                        }
                    },
                    {
                        "name": "known_from",
                        "in": "query",
                        "required": false,
                        "description": "First UTC date (YYYY-MM-DD, inclusive) on which a revision became known.",
                        "schema": {
                            "type": "string",
                            "format": "date"
                        }
                    },
                    {
                        "name": "known_to",
                        "in": "query",
                        "required": false,
                        "description": "Last UTC date (YYYY-MM-DD, inclusive) on which a revision became known; on or after known_from.",
                        "schema": {
                            "type": "string",
                            "format": "date"
                        }
                    },
                    {
                        "name": "order",
                        "in": "query",
                        "required": false,
                        "description": "Direction on snapshot_date; ties use ID ascending.",
                        "schema": {
                            "type": "string",
                            "enum": [
                                "asc",
                                "desc"
                            ],
                            "description": "Direction on snapshot_date; ties use ID ascending.",
                            "default": "asc"
                        }
                    },
                    {
                        "name": "limit",
                        "in": "query",
                        "required": false,
                        "description": "Maximum records per page.",
                        "schema": {
                            "type": "integer",
                            "minimum": 1,
                            "maximum": 500,
                            "default": 100
                        }
                    },
                    {
                        "name": "cursor",
                        "in": "query",
                        "required": false,
                        "description": "Opaque cursor, expires after one hour; binds filters, order, resolved as_of, account/key and entitlement. Repeat the original query unchanged.",
                        "schema": {
                            "type": "string",
                            "maxLength": 4096
                        }
                    },
                    {
                        "name": "format",
                        "in": "query",
                        "description": "Response format. csv returns the data rows with a header row, for spreadsheet functions such as IMPORTDATA; nested fields become dotted columns and lists one JSON array cell, the next page cursor is returned in X-Next-Cursor and meta.errors in X-Meta-Errors. A result without rows is the header row alone, listing the documented fields of a row. Default json, or csv when format is omitted and the Accept header ranks text/csv above JSON; a format the Accept header does not admit returns 406 not-acceptable.",
                        "schema": {
                            "type": "string",
                            "enum": [
                                "json",
                                "csv"
                            ]
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Authorized records. An empty collection is a valid result; a dataset with no connected source returns 501, and one with nothing published for your markets 503.",
                        "headers": {
                            "X-RateLimit-Limit": {
                                "$ref": "#/components/headers/X-RateLimit-Limit"
                            },
                            "X-RateLimit-Remaining": {
                                "$ref": "#/components/headers/X-RateLimit-Remaining"
                            },
                            "X-RateLimit-Reset": {
                                "$ref": "#/components/headers/X-RateLimit-Reset"
                            },
                            "Cache-Control": {
                                "description": "Always no-store, private: responses of this endpoint carry no ETag and must not be stored or reused.",
                                "schema": {
                                    "type": "string",
                                    "const": "no-store, private"
                                }
                            },
                            "X-Request-ID": {
                                "$ref": "#/components/headers/X-Request-ID"
                            },
                            "X-Next-Cursor": {
                                "$ref": "#/components/headers/X-Next-Cursor"
                            },
                            "X-Meta-Errors": {
                                "$ref": "#/components/headers/X-Meta-Errors"
                            },
                            "X-Credits-Limit": {
                                "$ref": "#/components/headers/X-Credits-Limit"
                            },
                            "X-Credits-Remaining": {
                                "$ref": "#/components/headers/X-Credits-Remaining"
                            },
                            "X-Credits-Cost": {
                                "$ref": "#/components/headers/X-Credits-Cost"
                            },
                            "X-Concurrency-Limit": {
                                "$ref": "#/components/headers/X-Concurrency-Limit"
                            },
                            "X-Concurrency-Remaining": {
                                "$ref": "#/components/headers/X-Concurrency-Remaining"
                            }
                        },
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "object",
                                    "additionalProperties": false,
                                    "properties": {
                                        "data": {
                                            "type": "array",
                                            "items": {
                                                "$ref": "#/components/schemas/FundHolding"
                                            }
                                        },
                                        "meta": {
                                            "$ref": "#/components/schemas/ResponseMeta"
                                        }
                                    },
                                    "required": [
                                        "data",
                                        "meta"
                                    ]
                                },
                                "examples": {
                                    "synthetic": {
                                        "summary": "Synthetic contract example; not production data",
                                        "value": {
                                            "data": [
                                                {
                                                    "id": "record_example_1",
                                                    "fund_id": "inst_example_spy",
                                                    "snapshot_date": "2026-09-18",
                                                    "holding": {
                                                        "instrument_id": "inst_example_aapl",
                                                        "symbol": "XNAS:AAPL",
                                                        "name": "Apple Inc."
                                                    },
                                                    "provider_symbol": "AAPL.US",
                                                    "name": "Apple Inc.",
                                                    "asset_type": "equity",
                                                    "quantity": null,
                                                    "market_value": null,
                                                    "weight": "0.07"
                                                }
                                            ],
                                            "meta": {
                                                "timezone": "UTC",
                                                "as_of": "2026-11-01T00:00:00Z",
                                                "next_cursor": null,
                                                "coverage": {
                                                    "status": "complete",
                                                    "reason": null
                                                }
                                            }
                                        }
                                    }
                                }
                            },
                            "text/csv": {
                                "schema": {
                                    "type": "string"
                                }
                            }
                        }
                    },
                    "400": {
                        "$ref": "#/components/responses/BadRequest"
                    },
                    "401": {
                        "$ref": "#/components/responses/Unauthorized"
                    },
                    "403": {
                        "$ref": "#/components/responses/Forbidden"
                    },
                    "404": {
                        "$ref": "#/components/responses/NotFound"
                    },
                    "405": {
                        "$ref": "#/components/responses/MethodNotAllowed"
                    },
                    "406": {
                        "$ref": "#/components/responses/NotAcceptable"
                    },
                    "409": {
                        "$ref": "#/components/responses/Conflict"
                    },
                    "413": {
                        "$ref": "#/components/responses/ContentTooLarge"
                    },
                    "414": {
                        "$ref": "#/components/responses/URITooLong"
                    },
                    "415": {
                        "$ref": "#/components/responses/UnsupportedMediaType"
                    },
                    "422": {
                        "$ref": "#/components/responses/UnprocessableContent"
                    },
                    "429": {
                        "$ref": "#/components/responses/TooManyRequests"
                    },
                    "431": {
                        "$ref": "#/components/responses/RequestHeaderFieldsTooLarge"
                    },
                    "500": {
                        "$ref": "#/components/responses/InternalServerError"
                    },
                    "503": {
                        "$ref": "#/components/responses/ServiceUnavailable"
                    }
                },
                "x-query-constraints": [
                    {
                        "rule": "less_than",
                        "lower": "known_from",
                        "upper": "known_to"
                    }
                ],
                "x-example-query": {
                    "instrument_id": "01M35ZNRDCZSWM3GGGF5HDGJ80"
                },
                "x-contract-family": "research",
                "x-credit-cost": "50 credits per request.",
                "x-availability": "available"
            }
        },
        "/v1/funds/{instrument_id}/allocations": {
            "get": {
                "operationId": "list_funds_instrument_id_allocations",
                "summary": "Fund allocations",
                "tags": [
                    "Funds and indices"
                ],
                "description": "Reported allocations from one eligible fund snapshot. An instrument that is not a fund returns 404 identifier-not-found, as an unknown ID does; a fund without a snapshot returns an empty list. A mutual fund's ID returns 403 mutual-funds-not-entitled for keys whose plan does not include mutual funds. Default order: snapshot_date ascending, id ascending. Results are limited to the entitled scope. Data is delivered from validated canonical batches; a connected dataset with nothing published for the key's markets yet returns 503. Access requires the operation capability on the API key.",
                "x-implementation-status": "implemented",
                "x-required-capability": "funds.read",
                "x-time-field": "snapshot_date",
                "x-exportable": true,
                "parameters": [
                    {
                        "name": "instrument_id",
                        "in": "path",
                        "required": true,
                        "description": "Stable public identifier.",
                        "schema": {
                            "type": "string",
                            "description": "Opaque stable public identifier; never an internal database key.",
                            "minLength": 1,
                            "maxLength": 128,
                            "pattern": "^[A-Za-z0-9][A-Za-z0-9_.:-]{0,127}$"
                        },
                        "example": "01M35ZNRDCZSWM3GGGF5HDGJ80"
                    },
                    {
                        "name": "effective_date",
                        "in": "query",
                        "required": false,
                        "description": "Effective date, defaults to the UTC date of as_of. Returns the latest eligible snapshot on or before this date; response retains its actual snapshot date.",
                        "schema": {
                            "type": "string",
                            "format": "date"
                        }
                    },
                    {
                        "name": "dimension",
                        "in": "query",
                        "required": false,
                        "description": "Allocation axis. sector, region, asset_class and market_cap are reported for ETFs and mutual funds, country for mutual funds only; the connected source reports no currency allocations, so currency returns an empty list.",
                        "schema": {
                            "type": "string",
                            "enum": [
                                "sector",
                                "country",
                                "region",
                                "asset_class",
                                "market_cap",
                                "currency"
                            ],
                            "description": "Allocation axis. sector, region, asset_class and market_cap are reported for ETFs and mutual funds, country for mutual funds only; the connected source reports no currency allocations, so currency returns an empty list."
                        }
                    },
                    {
                        "name": "as_of",
                        "in": "query",
                        "required": false,
                        "description": "Knowledge cutoff as a UTC date (YYYY-MM-DD): the response reflects what was known by the end of that day. Defaults to now; cannot be in the future. A date from before the dataset's knowledge history returns 422 point-in-time-unavailable naming the earliest one, which GET /v1/datasets lists as earliest_as_of.",
                        "schema": {
                            "type": "string",
                            "format": "date"
                        }
                    },
                    {
                        "name": "known_from",
                        "in": "query",
                        "required": false,
                        "description": "First UTC date (YYYY-MM-DD, inclusive) on which a revision became known.",
                        "schema": {
                            "type": "string",
                            "format": "date"
                        }
                    },
                    {
                        "name": "known_to",
                        "in": "query",
                        "required": false,
                        "description": "Last UTC date (YYYY-MM-DD, inclusive) on which a revision became known; on or after known_from.",
                        "schema": {
                            "type": "string",
                            "format": "date"
                        }
                    },
                    {
                        "name": "order",
                        "in": "query",
                        "required": false,
                        "description": "Direction on snapshot_date; ties use ID ascending.",
                        "schema": {
                            "type": "string",
                            "enum": [
                                "asc",
                                "desc"
                            ],
                            "description": "Direction on snapshot_date; ties use ID ascending.",
                            "default": "asc"
                        }
                    },
                    {
                        "name": "limit",
                        "in": "query",
                        "required": false,
                        "description": "Maximum records per page.",
                        "schema": {
                            "type": "integer",
                            "minimum": 1,
                            "maximum": 500,
                            "default": 100
                        }
                    },
                    {
                        "name": "cursor",
                        "in": "query",
                        "required": false,
                        "description": "Opaque cursor, expires after one hour; binds filters, order, resolved as_of, account/key and entitlement. Repeat the original query unchanged.",
                        "schema": {
                            "type": "string",
                            "maxLength": 4096
                        }
                    },
                    {
                        "name": "format",
                        "in": "query",
                        "description": "Response format. csv returns the data rows with a header row, for spreadsheet functions such as IMPORTDATA; nested fields become dotted columns and lists one JSON array cell, the next page cursor is returned in X-Next-Cursor and meta.errors in X-Meta-Errors. A result without rows is the header row alone, listing the documented fields of a row. Default json, or csv when format is omitted and the Accept header ranks text/csv above JSON; a format the Accept header does not admit returns 406 not-acceptable.",
                        "schema": {
                            "type": "string",
                            "enum": [
                                "json",
                                "csv"
                            ]
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Authorized records. An empty collection is a valid result; a dataset with no connected source returns 501, and one with nothing published for your markets 503.",
                        "headers": {
                            "X-RateLimit-Limit": {
                                "$ref": "#/components/headers/X-RateLimit-Limit"
                            },
                            "X-RateLimit-Remaining": {
                                "$ref": "#/components/headers/X-RateLimit-Remaining"
                            },
                            "X-RateLimit-Reset": {
                                "$ref": "#/components/headers/X-RateLimit-Reset"
                            },
                            "Cache-Control": {
                                "description": "Always no-store, private: responses of this endpoint carry no ETag and must not be stored or reused.",
                                "schema": {
                                    "type": "string",
                                    "const": "no-store, private"
                                }
                            },
                            "X-Request-ID": {
                                "$ref": "#/components/headers/X-Request-ID"
                            },
                            "X-Next-Cursor": {
                                "$ref": "#/components/headers/X-Next-Cursor"
                            },
                            "X-Meta-Errors": {
                                "$ref": "#/components/headers/X-Meta-Errors"
                            },
                            "X-Credits-Limit": {
                                "$ref": "#/components/headers/X-Credits-Limit"
                            },
                            "X-Credits-Remaining": {
                                "$ref": "#/components/headers/X-Credits-Remaining"
                            },
                            "X-Credits-Cost": {
                                "$ref": "#/components/headers/X-Credits-Cost"
                            },
                            "X-Concurrency-Limit": {
                                "$ref": "#/components/headers/X-Concurrency-Limit"
                            },
                            "X-Concurrency-Remaining": {
                                "$ref": "#/components/headers/X-Concurrency-Remaining"
                            }
                        },
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "object",
                                    "additionalProperties": false,
                                    "properties": {
                                        "data": {
                                            "type": "array",
                                            "items": {
                                                "$ref": "#/components/schemas/FundAllocation"
                                            }
                                        },
                                        "meta": {
                                            "$ref": "#/components/schemas/ResponseMeta"
                                        }
                                    },
                                    "required": [
                                        "data",
                                        "meta"
                                    ]
                                },
                                "examples": {
                                    "synthetic": {
                                        "summary": "Synthetic contract example; not production data",
                                        "value": {
                                            "data": [
                                                {
                                                    "id": "record_example_1",
                                                    "fund_id": "inst_example_spy",
                                                    "snapshot_date": "2026-09-18",
                                                    "dimension": "sector",
                                                    "category": "Technology",
                                                    "weight": "0.33"
                                                }
                                            ],
                                            "meta": {
                                                "timezone": "UTC",
                                                "as_of": "2026-11-01T00:00:00Z",
                                                "next_cursor": null,
                                                "coverage": {
                                                    "status": "complete",
                                                    "reason": null
                                                }
                                            }
                                        }
                                    }
                                }
                            },
                            "text/csv": {
                                "schema": {
                                    "type": "string"
                                }
                            }
                        }
                    },
                    "400": {
                        "$ref": "#/components/responses/BadRequest"
                    },
                    "401": {
                        "$ref": "#/components/responses/Unauthorized"
                    },
                    "403": {
                        "$ref": "#/components/responses/Forbidden"
                    },
                    "404": {
                        "$ref": "#/components/responses/NotFound"
                    },
                    "405": {
                        "$ref": "#/components/responses/MethodNotAllowed"
                    },
                    "406": {
                        "$ref": "#/components/responses/NotAcceptable"
                    },
                    "409": {
                        "$ref": "#/components/responses/Conflict"
                    },
                    "413": {
                        "$ref": "#/components/responses/ContentTooLarge"
                    },
                    "414": {
                        "$ref": "#/components/responses/URITooLong"
                    },
                    "415": {
                        "$ref": "#/components/responses/UnsupportedMediaType"
                    },
                    "422": {
                        "$ref": "#/components/responses/UnprocessableContent"
                    },
                    "429": {
                        "$ref": "#/components/responses/TooManyRequests"
                    },
                    "431": {
                        "$ref": "#/components/responses/RequestHeaderFieldsTooLarge"
                    },
                    "500": {
                        "$ref": "#/components/responses/InternalServerError"
                    },
                    "503": {
                        "$ref": "#/components/responses/ServiceUnavailable"
                    }
                },
                "x-query-constraints": [
                    {
                        "rule": "less_than",
                        "lower": "known_from",
                        "upper": "known_to"
                    }
                ],
                "x-example-query": {
                    "instrument_id": "01M35ZNRDCZSWM3GGGF5HDGJ80"
                },
                "x-contract-family": "research",
                "x-credit-cost": "50 credits per request.",
                "x-availability": "available"
            }
        },
        "/v1/indices": {
            "get": {
                "operationId": "list_indices",
                "summary": "Indices",
                "tags": [
                    "Funds and indices"
                ],
                "description": "Equity indices whose constituents are published: the major US indices (the S&P 500, Nasdaq-100, Dow Jones Industrial Average, S&P MidCap 400 and S&P SmallCap 600, and the Russell 1000 and 2000), refreshed Tuesday to Saturday mornings (New York time) after each session, and about 160 other indices of the US, Canada, the United Kingdom, France, the Netherlands and Australia whose members the source lists and mostly trade on listings OHLC carries, such as the S&P 100, the NYSE Composite, the S&P/TSX Composite, the FTSE 100 and 250, the CAC 40, the AEX and the S&P/ASX 200, refreshed weekly. An index is listed for the keys whose plan includes the market most of its members trade in. Each index has an instrument_id of its own, the ID /v1/indices/{instrument_id}/constituents takes. An index is not a tradable listing, but its level is served as one under the INDEX venue, with the same instrument_id: the S&P 500 is INDEX:GSPC in /v1/eod, /v1/bars, /v1/snapshot and /v1/quotes, for keys whose plan includes index levels, alongside about 1,700 other indices worldwide. The Russell 1000 and 2000 and the FTSE UK indices (the FTSE 100, 250, 350, All-Share and AIM All-Share) have no levels: the source lists their members but does not price them. Default order: id ascending. Omitting entity selectors returns the entitled universe; explicit unauthorized selectors return 403. Data is delivered from validated canonical batches; a connected dataset with nothing published for the key's markets yet returns 503. Access requires the operation capability on the API key.",
                "x-implementation-status": "implemented",
                "x-required-capability": "indices.read",
                "x-time-field": "id",
                "x-exportable": true,
                "parameters": [
                    {
                        "name": "instrument_ids",
                        "in": "query",
                        "required": false,
                        "description": "Filter by stable instrument IDs. IDs and symbols may not be combined.",
                        "schema": {
                            "type": "array",
                            "minItems": 1,
                            "maxItems": 100,
                            "uniqueItems": true,
                            "items": {
                                "type": "string",
                                "description": "Opaque stable public identifier; never an internal database key.",
                                "minLength": 1,
                                "maxLength": 128,
                                "pattern": "^[A-Za-z0-9][A-Za-z0-9_.:-]{0,127}$"
                            }
                        },
                        "style": "form",
                        "explode": false
                    },
                    {
                        "name": "symbols",
                        "in": "query",
                        "required": false,
                        "description": "Convenience lookup for exchange-listed instruments as MIC:TICKER or a bare ticker, which resolves to the exchange listing that ticker; resolves at symbol_at. The MIC and the ticker are case-insensitive, and two spellings of one listing (AAPL and XNAS:AAPL) count as a repeated value. A bare ticker that names no listing as written is also read in the common vendor spellings: with an exchange suffix (RY.TO, SHEL.L, VOD.LSE, BHP.AX), ^GSPC for INDEX:GSPC, and EURUSD=X or EURUSD for FOREX:EUR-USD. A ticker may contain a space (BAC PRL) but not start or end with one. A request in which no symbol resolves returns 404 symbol-not-resolved; otherwise each symbol that does not resolve, or resolves to a listing with no rows for the request (no-data), is an entry of meta.errors. IDs and symbols may not be combined.",
                        "schema": {
                            "type": "array",
                            "minItems": 1,
                            "maxItems": 100,
                            "uniqueItems": true,
                            "items": {
                                "type": "string",
                                "pattern": "^(?:(?:[A-Za-z0-9]{4}|[Cc][Rr][Yy][Pp][Tt][Oo]|[Ff][Oo][Rr][Ee][Xx]|[Ii][Nn][Dd][Ee][Xx]):|\\^)?[A-Za-z0-9](?:[A-Za-z0-9./_^= -]{0,62}[A-Za-z0-9./_^=-])?$"
                            }
                        },
                        "style": "form",
                        "explode": false
                    },
                    {
                        "name": "symbol_at",
                        "in": "query",
                        "required": false,
                        "description": "Resolve symbols as they were assigned at the end of this UTC date (YYYY-MM-DD); defaults to as_of. Only listings the security master holds resolve: it was built in September 2026 and records delistings from then on, so most issuers delisted earlier, such as TWTR or SIVB, resolve at no date. Only valid with symbols.",
                        "schema": {
                            "type": "string",
                            "format": "date"
                        }
                    },
                    {
                        "name": "effective_date",
                        "in": "query",
                        "required": false,
                        "description": "Effective date, defaults to the UTC date of as_of. Returns the latest eligible snapshot on or before this date; response retains its actual snapshot date.",
                        "schema": {
                            "type": "string",
                            "format": "date"
                        }
                    },
                    {
                        "name": "as_of",
                        "in": "query",
                        "required": false,
                        "description": "Knowledge cutoff as a UTC date (YYYY-MM-DD): the response reflects what was known by the end of that day. Defaults to now; cannot be in the future. A date from before the dataset's knowledge history returns 422 point-in-time-unavailable naming the earliest one, which GET /v1/datasets lists as earliest_as_of.",
                        "schema": {
                            "type": "string",
                            "format": "date"
                        }
                    },
                    {
                        "name": "known_from",
                        "in": "query",
                        "required": false,
                        "description": "First UTC date (YYYY-MM-DD, inclusive) on which a revision became known.",
                        "schema": {
                            "type": "string",
                            "format": "date"
                        }
                    },
                    {
                        "name": "known_to",
                        "in": "query",
                        "required": false,
                        "description": "Last UTC date (YYYY-MM-DD, inclusive) on which a revision became known; on or after known_from.",
                        "schema": {
                            "type": "string",
                            "format": "date"
                        }
                    },
                    {
                        "name": "order",
                        "in": "query",
                        "required": false,
                        "description": "Direction on id; ties use ID ascending.",
                        "schema": {
                            "type": "string",
                            "enum": [
                                "asc",
                                "desc"
                            ],
                            "description": "Direction on id; ties use ID ascending.",
                            "default": "asc"
                        }
                    },
                    {
                        "name": "limit",
                        "in": "query",
                        "required": false,
                        "description": "Maximum records per page.",
                        "schema": {
                            "type": "integer",
                            "minimum": 1,
                            "maximum": 500,
                            "default": 100
                        }
                    },
                    {
                        "name": "cursor",
                        "in": "query",
                        "required": false,
                        "description": "Opaque cursor, expires after one hour; binds filters, order, resolved as_of, account/key and entitlement. Repeat the original query unchanged.",
                        "schema": {
                            "type": "string",
                            "maxLength": 4096
                        }
                    },
                    {
                        "name": "format",
                        "in": "query",
                        "description": "Response format. csv returns the data rows with a header row, for spreadsheet functions such as IMPORTDATA; nested fields become dotted columns and lists one JSON array cell, the next page cursor is returned in X-Next-Cursor and meta.errors in X-Meta-Errors. A result without rows is the header row alone, listing the documented fields of a row. Default json, or csv when format is omitted and the Accept header ranks text/csv above JSON; a format the Accept header does not admit returns 406 not-acceptable.",
                        "schema": {
                            "type": "string",
                            "enum": [
                                "json",
                                "csv"
                            ]
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Authorized records. An empty collection is a valid result; a dataset with no connected source returns 501, and one with nothing published for your markets 503.",
                        "headers": {
                            "X-RateLimit-Limit": {
                                "$ref": "#/components/headers/X-RateLimit-Limit"
                            },
                            "X-RateLimit-Remaining": {
                                "$ref": "#/components/headers/X-RateLimit-Remaining"
                            },
                            "X-RateLimit-Reset": {
                                "$ref": "#/components/headers/X-RateLimit-Reset"
                            },
                            "Cache-Control": {
                                "description": "Always no-store, private: responses of this endpoint carry no ETag and must not be stored or reused.",
                                "schema": {
                                    "type": "string",
                                    "const": "no-store, private"
                                }
                            },
                            "X-Request-ID": {
                                "$ref": "#/components/headers/X-Request-ID"
                            },
                            "X-Next-Cursor": {
                                "$ref": "#/components/headers/X-Next-Cursor"
                            },
                            "X-Meta-Errors": {
                                "$ref": "#/components/headers/X-Meta-Errors"
                            },
                            "X-Credits-Limit": {
                                "$ref": "#/components/headers/X-Credits-Limit"
                            },
                            "X-Credits-Remaining": {
                                "$ref": "#/components/headers/X-Credits-Remaining"
                            },
                            "X-Credits-Cost": {
                                "$ref": "#/components/headers/X-Credits-Cost"
                            },
                            "X-Concurrency-Limit": {
                                "$ref": "#/components/headers/X-Concurrency-Limit"
                            },
                            "X-Concurrency-Remaining": {
                                "$ref": "#/components/headers/X-Concurrency-Remaining"
                            }
                        },
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "object",
                                    "additionalProperties": false,
                                    "properties": {
                                        "data": {
                                            "type": "array",
                                            "items": {
                                                "$ref": "#/components/schemas/Index"
                                            }
                                        },
                                        "meta": {
                                            "$ref": "#/components/schemas/ResponseMeta"
                                        }
                                    },
                                    "required": [
                                        "data",
                                        "meta"
                                    ]
                                },
                                "examples": {
                                    "synthetic": {
                                        "summary": "Synthetic contract example; not production data",
                                        "value": {
                                            "data": [
                                                {
                                                    "id": "record_example_1",
                                                    "instrument_id": "inst_example_aapl",
                                                    "name": "Example 500",
                                                    "currency_code": "USD"
                                                }
                                            ],
                                            "meta": {
                                                "timezone": "UTC",
                                                "as_of": "2026-11-01T00:00:00Z",
                                                "next_cursor": null,
                                                "coverage": {
                                                    "status": "complete",
                                                    "reason": null
                                                }
                                            }
                                        }
                                    }
                                }
                            },
                            "text/csv": {
                                "schema": {
                                    "type": "string"
                                }
                            }
                        }
                    },
                    "400": {
                        "$ref": "#/components/responses/BadRequest"
                    },
                    "401": {
                        "$ref": "#/components/responses/Unauthorized"
                    },
                    "403": {
                        "$ref": "#/components/responses/Forbidden"
                    },
                    "404": {
                        "$ref": "#/components/responses/NotFound"
                    },
                    "405": {
                        "$ref": "#/components/responses/MethodNotAllowed"
                    },
                    "406": {
                        "$ref": "#/components/responses/NotAcceptable"
                    },
                    "409": {
                        "$ref": "#/components/responses/Conflict"
                    },
                    "413": {
                        "$ref": "#/components/responses/ContentTooLarge"
                    },
                    "414": {
                        "$ref": "#/components/responses/URITooLong"
                    },
                    "415": {
                        "$ref": "#/components/responses/UnsupportedMediaType"
                    },
                    "422": {
                        "$ref": "#/components/responses/UnprocessableContent"
                    },
                    "429": {
                        "$ref": "#/components/responses/TooManyRequests"
                    },
                    "431": {
                        "$ref": "#/components/responses/RequestHeaderFieldsTooLarge"
                    },
                    "500": {
                        "$ref": "#/components/responses/InternalServerError"
                    },
                    "503": {
                        "$ref": "#/components/responses/ServiceUnavailable"
                    }
                },
                "x-query-constraints": [
                    {
                        "rule": "mutually_exclusive",
                        "parameters": [
                            "instrument_ids",
                            "symbols"
                        ]
                    },
                    {
                        "rule": "requires",
                        "parameter": "symbol_at",
                        "required": [
                            "symbols"
                        ]
                    },
                    {
                        "rule": "less_than",
                        "lower": "known_from",
                        "upper": "known_to"
                    }
                ],
                "x-example-query": [],
                "x-contract-family": "research",
                "x-credit-cost": "5 credits per request.",
                "x-availability": "available"
            }
        },
        "/v1/indices/{instrument_id}/constituents": {
            "get": {
                "operationId": "list_indices_instrument_id_constituents",
                "summary": "Index constituents",
                "tags": [
                    "Funds and indices"
                ],
                "description": "Members of one index snapshot with each member's weight, as a ratio, and member_since, the date it last joined the index. Weights are given for the S&P 500, 400 and 600 and the Dow and are null for the Nasdaq-100, the Russell indices and most indices outside the US; member_since is given for most S&P 500 and S&P 400 members and is otherwise null. A snapshot is taken from the connected source's current membership and weights Tuesday to Saturday mornings (New York time) for the major US indices and weekly for the others, and the newest 20 snapshots of each index are kept, so effective_date reaches back about four weeks for the US indices and about twenty for the others; earlier membership is not reconstructed. Every page stays on the same snapshot. Members that do not resolve to a listing OHLC carries are left out, so a snapshot can list slightly fewer members than the index has; an index with fewer than half its members resolved is not published. An instrument that is not an index returns 404 identifier-not-found, as an unknown ID does, and so does an index level of the INDEX venue whose constituents are not published (such as INDEX:N225); /v1/indices lists those that are. Default order: snapshot_date ascending, id ascending. Results are limited to the entitled scope. Data is delivered from validated canonical batches; a connected dataset with nothing published for the key's markets yet returns 503. Access requires the operation capability on the API key.",
                "x-implementation-status": "implemented",
                "x-required-capability": "indices.read",
                "x-time-field": "snapshot_date",
                "x-exportable": true,
                "parameters": [
                    {
                        "name": "instrument_id",
                        "in": "path",
                        "required": true,
                        "description": "Stable public identifier.",
                        "schema": {
                            "type": "string",
                            "description": "Opaque stable public identifier; never an internal database key.",
                            "minLength": 1,
                            "maxLength": 128,
                            "pattern": "^[A-Za-z0-9][A-Za-z0-9_.:-]{0,127}$"
                        },
                        "example": "32JE5160MJ9WHR6YT4Q1B11BBC"
                    },
                    {
                        "name": "effective_date",
                        "in": "query",
                        "required": false,
                        "description": "Effective date, defaults to the UTC date of as_of. Returns the latest eligible snapshot on or before this date; response retains its actual snapshot date.",
                        "schema": {
                            "type": "string",
                            "format": "date"
                        }
                    },
                    {
                        "name": "as_of",
                        "in": "query",
                        "required": false,
                        "description": "Knowledge cutoff as a UTC date (YYYY-MM-DD): the response reflects what was known by the end of that day. Defaults to now; cannot be in the future. A date from before the dataset's knowledge history returns 422 point-in-time-unavailable naming the earliest one, which GET /v1/datasets lists as earliest_as_of.",
                        "schema": {
                            "type": "string",
                            "format": "date"
                        }
                    },
                    {
                        "name": "known_from",
                        "in": "query",
                        "required": false,
                        "description": "First UTC date (YYYY-MM-DD, inclusive) on which a revision became known.",
                        "schema": {
                            "type": "string",
                            "format": "date"
                        }
                    },
                    {
                        "name": "known_to",
                        "in": "query",
                        "required": false,
                        "description": "Last UTC date (YYYY-MM-DD, inclusive) on which a revision became known; on or after known_from.",
                        "schema": {
                            "type": "string",
                            "format": "date"
                        }
                    },
                    {
                        "name": "order",
                        "in": "query",
                        "required": false,
                        "description": "Direction on snapshot_date; ties use ID ascending.",
                        "schema": {
                            "type": "string",
                            "enum": [
                                "asc",
                                "desc"
                            ],
                            "description": "Direction on snapshot_date; ties use ID ascending.",
                            "default": "asc"
                        }
                    },
                    {
                        "name": "limit",
                        "in": "query",
                        "required": false,
                        "description": "Maximum records per page.",
                        "schema": {
                            "type": "integer",
                            "minimum": 1,
                            "maximum": 500,
                            "default": 100
                        }
                    },
                    {
                        "name": "cursor",
                        "in": "query",
                        "required": false,
                        "description": "Opaque cursor, expires after one hour; binds filters, order, resolved as_of, account/key and entitlement. Repeat the original query unchanged.",
                        "schema": {
                            "type": "string",
                            "maxLength": 4096
                        }
                    },
                    {
                        "name": "format",
                        "in": "query",
                        "description": "Response format. csv returns the data rows with a header row, for spreadsheet functions such as IMPORTDATA; nested fields become dotted columns and lists one JSON array cell, the next page cursor is returned in X-Next-Cursor and meta.errors in X-Meta-Errors. A result without rows is the header row alone, listing the documented fields of a row. Default json, or csv when format is omitted and the Accept header ranks text/csv above JSON; a format the Accept header does not admit returns 406 not-acceptable.",
                        "schema": {
                            "type": "string",
                            "enum": [
                                "json",
                                "csv"
                            ]
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Authorized records. An empty collection is a valid result; a dataset with no connected source returns 501, and one with nothing published for your markets 503.",
                        "headers": {
                            "X-RateLimit-Limit": {
                                "$ref": "#/components/headers/X-RateLimit-Limit"
                            },
                            "X-RateLimit-Remaining": {
                                "$ref": "#/components/headers/X-RateLimit-Remaining"
                            },
                            "X-RateLimit-Reset": {
                                "$ref": "#/components/headers/X-RateLimit-Reset"
                            },
                            "Cache-Control": {
                                "description": "Always no-store, private: responses of this endpoint carry no ETag and must not be stored or reused.",
                                "schema": {
                                    "type": "string",
                                    "const": "no-store, private"
                                }
                            },
                            "X-Request-ID": {
                                "$ref": "#/components/headers/X-Request-ID"
                            },
                            "X-Next-Cursor": {
                                "$ref": "#/components/headers/X-Next-Cursor"
                            },
                            "X-Meta-Errors": {
                                "$ref": "#/components/headers/X-Meta-Errors"
                            },
                            "X-Credits-Limit": {
                                "$ref": "#/components/headers/X-Credits-Limit"
                            },
                            "X-Credits-Remaining": {
                                "$ref": "#/components/headers/X-Credits-Remaining"
                            },
                            "X-Credits-Cost": {
                                "$ref": "#/components/headers/X-Credits-Cost"
                            },
                            "X-Concurrency-Limit": {
                                "$ref": "#/components/headers/X-Concurrency-Limit"
                            },
                            "X-Concurrency-Remaining": {
                                "$ref": "#/components/headers/X-Concurrency-Remaining"
                            }
                        },
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "object",
                                    "additionalProperties": false,
                                    "properties": {
                                        "data": {
                                            "type": "array",
                                            "items": {
                                                "$ref": "#/components/schemas/IndexConstituent"
                                            }
                                        },
                                        "meta": {
                                            "$ref": "#/components/schemas/ResponseMeta"
                                        }
                                    },
                                    "required": [
                                        "data",
                                        "meta"
                                    ]
                                },
                                "examples": {
                                    "synthetic": {
                                        "summary": "Synthetic contract example; not production data",
                                        "value": {
                                            "data": [
                                                {
                                                    "id": "record_example_1",
                                                    "index_id": "inst_example_index",
                                                    "snapshot_date": "2026-09-18",
                                                    "constituent": {
                                                        "instrument_id": "inst_example_aapl",
                                                        "symbol": "XNAS:AAPL",
                                                        "name": "Example Corporation"
                                                    },
                                                    "weight": "0.05",
                                                    "member_since": "2026-09-18"
                                                }
                                            ],
                                            "meta": {
                                                "timezone": "UTC",
                                                "as_of": "2026-11-01T00:00:00Z",
                                                "next_cursor": null,
                                                "coverage": {
                                                    "status": "complete",
                                                    "reason": null
                                                }
                                            }
                                        }
                                    }
                                }
                            },
                            "text/csv": {
                                "schema": {
                                    "type": "string"
                                }
                            }
                        }
                    },
                    "400": {
                        "$ref": "#/components/responses/BadRequest"
                    },
                    "401": {
                        "$ref": "#/components/responses/Unauthorized"
                    },
                    "403": {
                        "$ref": "#/components/responses/Forbidden"
                    },
                    "404": {
                        "$ref": "#/components/responses/NotFound"
                    },
                    "405": {
                        "$ref": "#/components/responses/MethodNotAllowed"
                    },
                    "406": {
                        "$ref": "#/components/responses/NotAcceptable"
                    },
                    "409": {
                        "$ref": "#/components/responses/Conflict"
                    },
                    "413": {
                        "$ref": "#/components/responses/ContentTooLarge"
                    },
                    "414": {
                        "$ref": "#/components/responses/URITooLong"
                    },
                    "415": {
                        "$ref": "#/components/responses/UnsupportedMediaType"
                    },
                    "422": {
                        "$ref": "#/components/responses/UnprocessableContent"
                    },
                    "429": {
                        "$ref": "#/components/responses/TooManyRequests"
                    },
                    "431": {
                        "$ref": "#/components/responses/RequestHeaderFieldsTooLarge"
                    },
                    "500": {
                        "$ref": "#/components/responses/InternalServerError"
                    },
                    "503": {
                        "$ref": "#/components/responses/ServiceUnavailable"
                    }
                },
                "x-query-constraints": [
                    {
                        "rule": "less_than",
                        "lower": "known_from",
                        "upper": "known_to"
                    }
                ],
                "x-example-query": {
                    "instrument_id": "32JE5160MJ9WHR6YT4Q1B11BBC"
                },
                "x-contract-family": "research",
                "x-credit-cost": "50 credits per request.",
                "x-availability": "available"
            }
        },
        "/v1/options/contracts": {
            "get": {
                "operationId": "list_options_contracts",
                "summary": "Option contracts",
                "tags": [
                    "Options"
                ],
                "description": "Discover chains by underlying, expiration and strike; expired contracts remain addressable. Status is evaluated at effective_date. Covers equity and ETF options listed in the US, not index options. Contracts are American-style; a standard contract delivers 100 shares of its underlying and settles physically, while one adjusted by a corporate action (its OCC root is not the underlying's ticker) lists no deliverables and settlement unknown. Default order: id ascending. Omitting entity selectors returns the entitled universe; explicit unauthorized selectors return 403. Data is delivered from validated canonical batches; a connected dataset with nothing published for the key's markets yet returns 503. Access requires the operation capability on the API key.",
                "x-implementation-status": "implemented",
                "x-required-capability": "options.read",
                "x-time-field": "id",
                "x-exportable": true,
                "parameters": [
                    {
                        "name": "underlying_ids",
                        "in": "query",
                        "required": false,
                        "description": "Underlying instrument IDs.",
                        "schema": {
                            "type": "array",
                            "minItems": 1,
                            "maxItems": 100,
                            "uniqueItems": true,
                            "items": {
                                "type": "string",
                                "description": "Opaque stable public identifier; never an internal database key.",
                                "minLength": 1,
                                "maxLength": 128,
                                "pattern": "^[A-Za-z0-9][A-Za-z0-9_.:-]{0,127}$"
                            }
                        },
                        "style": "form",
                        "explode": false,
                        "example": [
                            "01M35H2KE2ZJHXFY5C3E7FPC66"
                        ]
                    },
                    {
                        "name": "contract_ids",
                        "in": "query",
                        "required": false,
                        "description": "Option instrument IDs.",
                        "schema": {
                            "type": "array",
                            "minItems": 1,
                            "maxItems": 100,
                            "uniqueItems": true,
                            "items": {
                                "type": "string",
                                "description": "Opaque stable public identifier; never an internal database key.",
                                "minLength": 1,
                                "maxLength": 128,
                                "pattern": "^[A-Za-z0-9][A-Za-z0-9_.:-]{0,127}$"
                            }
                        },
                        "style": "form",
                        "explode": false
                    },
                    {
                        "name": "type",
                        "in": "query",
                        "required": false,
                        "description": "Option right.",
                        "schema": {
                            "type": "string",
                            "enum": [
                                "call",
                                "put"
                            ],
                            "description": "Option right."
                        }
                    },
                    {
                        "name": "expiration_from",
                        "in": "query",
                        "required": false,
                        "description": "Inclusive expiration date.",
                        "schema": {
                            "type": "string",
                            "format": "date"
                        }
                    },
                    {
                        "name": "expiration_to",
                        "in": "query",
                        "required": false,
                        "description": "Inclusive expiration date; must be on or after expiration_from.",
                        "schema": {
                            "type": "string",
                            "format": "date"
                        }
                    },
                    {
                        "name": "strike_min",
                        "in": "query",
                        "required": false,
                        "description": "Inclusive strike in the contract currency.",
                        "schema": {
                            "type": "string",
                            "pattern": "^-?[0-9]+(?:\\.[0-9]+)?$",
                            "description": "Inclusive strike minimum."
                        }
                    },
                    {
                        "name": "strike_max",
                        "in": "query",
                        "required": false,
                        "description": "Inclusive strike; must be >= strike_min.",
                        "schema": {
                            "type": "string",
                            "pattern": "^-?[0-9]+(?:\\.[0-9]+)?$",
                            "description": "Inclusive strike maximum."
                        }
                    },
                    {
                        "name": "status",
                        "in": "query",
                        "required": false,
                        "description": "Defaults to active; all includes expired contracts.",
                        "schema": {
                            "type": "string",
                            "enum": [
                                "active",
                                "expired",
                                "all"
                            ],
                            "description": "Defaults to active; all includes expired contracts."
                        }
                    },
                    {
                        "name": "effective_date",
                        "in": "query",
                        "required": false,
                        "description": "Effective date, defaults to the UTC date of as_of. Returns the latest eligible snapshot on or before this date; response retains its actual snapshot date.",
                        "schema": {
                            "type": "string",
                            "format": "date"
                        }
                    },
                    {
                        "name": "as_of",
                        "in": "query",
                        "required": false,
                        "description": "Knowledge cutoff as a UTC date (YYYY-MM-DD): the response reflects what was known by the end of that day. Defaults to now; cannot be in the future. A date from before the dataset's knowledge history returns 422 point-in-time-unavailable naming the earliest one, which GET /v1/datasets lists as earliest_as_of.",
                        "schema": {
                            "type": "string",
                            "format": "date"
                        }
                    },
                    {
                        "name": "known_from",
                        "in": "query",
                        "required": false,
                        "description": "First UTC date (YYYY-MM-DD, inclusive) on which a revision became known.",
                        "schema": {
                            "type": "string",
                            "format": "date"
                        }
                    },
                    {
                        "name": "known_to",
                        "in": "query",
                        "required": false,
                        "description": "Last UTC date (YYYY-MM-DD, inclusive) on which a revision became known; on or after known_from.",
                        "schema": {
                            "type": "string",
                            "format": "date"
                        }
                    },
                    {
                        "name": "order",
                        "in": "query",
                        "required": false,
                        "description": "Direction on id; ties use ID ascending.",
                        "schema": {
                            "type": "string",
                            "enum": [
                                "asc",
                                "desc"
                            ],
                            "description": "Direction on id; ties use ID ascending.",
                            "default": "asc"
                        }
                    },
                    {
                        "name": "limit",
                        "in": "query",
                        "required": false,
                        "description": "Maximum records per page.",
                        "schema": {
                            "type": "integer",
                            "minimum": 1,
                            "maximum": 500,
                            "default": 100
                        }
                    },
                    {
                        "name": "cursor",
                        "in": "query",
                        "required": false,
                        "description": "Opaque cursor, expires after one hour; binds filters, order, resolved as_of, account/key and entitlement. Repeat the original query unchanged.",
                        "schema": {
                            "type": "string",
                            "maxLength": 4096
                        }
                    },
                    {
                        "name": "format",
                        "in": "query",
                        "description": "Response format. csv returns the data rows with a header row, for spreadsheet functions such as IMPORTDATA; nested fields become dotted columns and lists one JSON array cell, the next page cursor is returned in X-Next-Cursor and meta.errors in X-Meta-Errors. A result without rows is the header row alone, listing the documented fields of a row. Default json, or csv when format is omitted and the Accept header ranks text/csv above JSON; a format the Accept header does not admit returns 406 not-acceptable.",
                        "schema": {
                            "type": "string",
                            "enum": [
                                "json",
                                "csv"
                            ]
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Authorized records. An empty collection is a valid result; a dataset with no connected source returns 501, and one with nothing published for your markets 503.",
                        "headers": {
                            "X-RateLimit-Limit": {
                                "$ref": "#/components/headers/X-RateLimit-Limit"
                            },
                            "X-RateLimit-Remaining": {
                                "$ref": "#/components/headers/X-RateLimit-Remaining"
                            },
                            "X-RateLimit-Reset": {
                                "$ref": "#/components/headers/X-RateLimit-Reset"
                            },
                            "Cache-Control": {
                                "description": "Always no-store, private: responses of this endpoint carry no ETag and must not be stored or reused.",
                                "schema": {
                                    "type": "string",
                                    "const": "no-store, private"
                                }
                            },
                            "X-Request-ID": {
                                "$ref": "#/components/headers/X-Request-ID"
                            },
                            "X-Next-Cursor": {
                                "$ref": "#/components/headers/X-Next-Cursor"
                            },
                            "X-Meta-Errors": {
                                "$ref": "#/components/headers/X-Meta-Errors"
                            },
                            "X-Credits-Limit": {
                                "$ref": "#/components/headers/X-Credits-Limit"
                            },
                            "X-Credits-Remaining": {
                                "$ref": "#/components/headers/X-Credits-Remaining"
                            },
                            "X-Credits-Cost": {
                                "$ref": "#/components/headers/X-Credits-Cost"
                            },
                            "X-Concurrency-Limit": {
                                "$ref": "#/components/headers/X-Concurrency-Limit"
                            },
                            "X-Concurrency-Remaining": {
                                "$ref": "#/components/headers/X-Concurrency-Remaining"
                            }
                        },
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "object",
                                    "additionalProperties": false,
                                    "properties": {
                                        "data": {
                                            "type": "array",
                                            "items": {
                                                "$ref": "#/components/schemas/OptionContract"
                                            }
                                        },
                                        "meta": {
                                            "$ref": "#/components/schemas/ResponseMeta"
                                        }
                                    },
                                    "required": [
                                        "data",
                                        "meta"
                                    ]
                                },
                                "examples": {
                                    "synthetic": {
                                        "summary": "Synthetic contract example; not production data",
                                        "value": {
                                            "data": [
                                                {
                                                    "id": "record_example_1",
                                                    "instrument_id": "inst_example_option",
                                                    "underlying_instrument_id": "inst_example_aapl",
                                                    "contract_symbol": "AAPL261218C00250000",
                                                    "type": "call",
                                                    "strike": {
                                                        "amount": "250",
                                                        "currency_code": "USD"
                                                    },
                                                    "expiration_date": "2026-12-18",
                                                    "exercise_style": "american",
                                                    "settlement": "physical",
                                                    "multiplier": "100",
                                                    "deliverables": [
                                                        {
                                                            "instrument_id": "inst_example_aapl",
                                                            "quantity": "100",
                                                            "cash": null
                                                        }
                                                    ],
                                                    "status": "active"
                                                }
                                            ],
                                            "meta": {
                                                "timezone": "UTC",
                                                "as_of": "2026-11-01T00:00:00Z",
                                                "next_cursor": null,
                                                "coverage": {
                                                    "status": "complete",
                                                    "reason": null
                                                }
                                            }
                                        }
                                    }
                                }
                            },
                            "text/csv": {
                                "schema": {
                                    "type": "string"
                                }
                            }
                        }
                    },
                    "400": {
                        "$ref": "#/components/responses/BadRequest"
                    },
                    "401": {
                        "$ref": "#/components/responses/Unauthorized"
                    },
                    "403": {
                        "$ref": "#/components/responses/Forbidden"
                    },
                    "404": {
                        "$ref": "#/components/responses/NotFound"
                    },
                    "405": {
                        "$ref": "#/components/responses/MethodNotAllowed"
                    },
                    "406": {
                        "$ref": "#/components/responses/NotAcceptable"
                    },
                    "409": {
                        "$ref": "#/components/responses/Conflict"
                    },
                    "413": {
                        "$ref": "#/components/responses/ContentTooLarge"
                    },
                    "414": {
                        "$ref": "#/components/responses/URITooLong"
                    },
                    "415": {
                        "$ref": "#/components/responses/UnsupportedMediaType"
                    },
                    "422": {
                        "$ref": "#/components/responses/UnprocessableContent"
                    },
                    "429": {
                        "$ref": "#/components/responses/TooManyRequests"
                    },
                    "431": {
                        "$ref": "#/components/responses/RequestHeaderFieldsTooLarge"
                    },
                    "500": {
                        "$ref": "#/components/responses/InternalServerError"
                    },
                    "503": {
                        "$ref": "#/components/responses/ServiceUnavailable"
                    }
                },
                "x-query-constraints": [
                    {
                        "rule": "less_than",
                        "lower": "known_from",
                        "upper": "known_to"
                    },
                    {
                        "rule": "less_than",
                        "lower": "expiration_from",
                        "upper": "expiration_to"
                    },
                    {
                        "rule": "less_than_or_equal",
                        "lower": "strike_min",
                        "upper": "strike_max"
                    }
                ],
                "x-example-query": {
                    "underlying_ids": [
                        "01M35H2KE2ZJHXFY5C3E7FPC66"
                    ]
                },
                "x-contract-family": "research",
                "x-credit-cost": "50 credits per request.",
                "x-availability": "available"
            }
        },
        "/v1/options/quotes": {
            "get": {
                "operationId": "list_options_quotes",
                "summary": "Option quotes",
                "tags": [
                    "Options"
                ],
                "description": "Latest eligible observation per option contract at as_of, including open interest and provider Greeks. Requires exactly one of contract_ids or underlying_ids; these collections are subject to batch and chain-size limits. Observations are end-of-day snapshots, timed at the session close and published the next morning; only the two newest daily snapshots are kept, so an earlier as_of returns no quotes. volume is the snapshot session's, 0 when the contract did not trade; implied_volatility and the Greeks are the provider's. Default order: event_at ascending, id ascending. Explicit contract/underlying selection is required. Data is delivered from validated canonical batches; a connected dataset with nothing published for the key's markets yet returns 503. Access requires the operation capability on the API key.",
                "x-implementation-status": "implemented",
                "x-required-capability": "options.read",
                "x-time-field": "event_at",
                "x-exportable": true,
                "parameters": [
                    {
                        "name": "contract_ids",
                        "in": "query",
                        "required": false,
                        "description": "Contract instrument IDs; mutually exclusive with underlying_ids.",
                        "schema": {
                            "type": "array",
                            "minItems": 1,
                            "maxItems": 100,
                            "uniqueItems": true,
                            "items": {
                                "type": "string",
                                "description": "Opaque stable public identifier; never an internal database key.",
                                "minLength": 1,
                                "maxLength": 128,
                                "pattern": "^[A-Za-z0-9][A-Za-z0-9_.:-]{0,127}$"
                            }
                        },
                        "style": "form",
                        "explode": false
                    },
                    {
                        "name": "underlying_ids",
                        "in": "query",
                        "required": false,
                        "description": "Underlying IDs for chain-wide snapshots; mutually exclusive with contract_ids.",
                        "schema": {
                            "type": "array",
                            "minItems": 1,
                            "maxItems": 100,
                            "uniqueItems": true,
                            "items": {
                                "type": "string",
                                "description": "Opaque stable public identifier; never an internal database key.",
                                "minLength": 1,
                                "maxLength": 128,
                                "pattern": "^[A-Za-z0-9][A-Za-z0-9_.:-]{0,127}$"
                            }
                        },
                        "style": "form",
                        "explode": false,
                        "example": [
                            "01M35H2KE2ZJHXFY5C3E7FPC66"
                        ]
                    },
                    {
                        "name": "expiration",
                        "in": "query",
                        "required": false,
                        "description": "Contract expiration date.",
                        "schema": {
                            "type": "string",
                            "format": "date"
                        }
                    },
                    {
                        "name": "as_of",
                        "in": "query",
                        "required": false,
                        "description": "Knowledge cutoff as a UTC date (YYYY-MM-DD): the response reflects what was known by the end of that day. Defaults to now; cannot be in the future. A date from before the dataset's knowledge history returns 422 point-in-time-unavailable naming the earliest one, which GET /v1/datasets lists as earliest_as_of.",
                        "schema": {
                            "type": "string",
                            "format": "date"
                        }
                    },
                    {
                        "name": "known_from",
                        "in": "query",
                        "required": false,
                        "description": "First UTC date (YYYY-MM-DD, inclusive) on which a revision became known.",
                        "schema": {
                            "type": "string",
                            "format": "date"
                        }
                    },
                    {
                        "name": "known_to",
                        "in": "query",
                        "required": false,
                        "description": "Last UTC date (YYYY-MM-DD, inclusive) on which a revision became known; on or after known_from.",
                        "schema": {
                            "type": "string",
                            "format": "date"
                        }
                    },
                    {
                        "name": "order",
                        "in": "query",
                        "required": false,
                        "description": "Direction on event_at; ties use ID ascending.",
                        "schema": {
                            "type": "string",
                            "enum": [
                                "asc",
                                "desc"
                            ],
                            "description": "Direction on event_at; ties use ID ascending.",
                            "default": "asc"
                        }
                    },
                    {
                        "name": "limit",
                        "in": "query",
                        "required": false,
                        "description": "Maximum records per page.",
                        "schema": {
                            "type": "integer",
                            "minimum": 1,
                            "maximum": 500,
                            "default": 100
                        }
                    },
                    {
                        "name": "cursor",
                        "in": "query",
                        "required": false,
                        "description": "Opaque cursor, expires after one hour; binds filters, order, resolved as_of, account/key and entitlement. Repeat the original query unchanged.",
                        "schema": {
                            "type": "string",
                            "maxLength": 4096
                        }
                    },
                    {
                        "name": "format",
                        "in": "query",
                        "description": "Response format. csv returns the data rows with a header row, for spreadsheet functions such as IMPORTDATA; nested fields become dotted columns and lists one JSON array cell, the next page cursor is returned in X-Next-Cursor and meta.errors in X-Meta-Errors. A result without rows is the header row alone, listing the documented fields of a row. Default json, or csv when format is omitted and the Accept header ranks text/csv above JSON; a format the Accept header does not admit returns 406 not-acceptable.",
                        "schema": {
                            "type": "string",
                            "enum": [
                                "json",
                                "csv"
                            ]
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Authorized records. An empty collection is a valid result; a dataset with no connected source returns 501, and one with nothing published for your markets 503.",
                        "headers": {
                            "X-RateLimit-Limit": {
                                "$ref": "#/components/headers/X-RateLimit-Limit"
                            },
                            "X-RateLimit-Remaining": {
                                "$ref": "#/components/headers/X-RateLimit-Remaining"
                            },
                            "X-RateLimit-Reset": {
                                "$ref": "#/components/headers/X-RateLimit-Reset"
                            },
                            "Cache-Control": {
                                "description": "Always no-store, private: responses of this endpoint carry no ETag and must not be stored or reused.",
                                "schema": {
                                    "type": "string",
                                    "const": "no-store, private"
                                }
                            },
                            "X-Request-ID": {
                                "$ref": "#/components/headers/X-Request-ID"
                            },
                            "X-Next-Cursor": {
                                "$ref": "#/components/headers/X-Next-Cursor"
                            },
                            "X-Meta-Errors": {
                                "$ref": "#/components/headers/X-Meta-Errors"
                            },
                            "X-Credits-Limit": {
                                "$ref": "#/components/headers/X-Credits-Limit"
                            },
                            "X-Credits-Remaining": {
                                "$ref": "#/components/headers/X-Credits-Remaining"
                            },
                            "X-Credits-Cost": {
                                "$ref": "#/components/headers/X-Credits-Cost"
                            },
                            "X-Concurrency-Limit": {
                                "$ref": "#/components/headers/X-Concurrency-Limit"
                            },
                            "X-Concurrency-Remaining": {
                                "$ref": "#/components/headers/X-Concurrency-Remaining"
                            }
                        },
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "object",
                                    "additionalProperties": false,
                                    "properties": {
                                        "data": {
                                            "type": "array",
                                            "items": {
                                                "$ref": "#/components/schemas/OptionQuote"
                                            }
                                        },
                                        "meta": {
                                            "$ref": "#/components/schemas/ResponseMeta"
                                        }
                                    },
                                    "required": [
                                        "data",
                                        "meta"
                                    ]
                                },
                                "examples": {
                                    "synthetic": {
                                        "summary": "Synthetic contract example; not production data",
                                        "value": {
                                            "data": [
                                                {
                                                    "id": "record_example_1",
                                                    "instrument_id": "inst_example_option",
                                                    "event_at": "2026-09-18T20:00:00Z",
                                                    "bid": {
                                                        "amount": "5.25",
                                                        "currency_code": "USD"
                                                    },
                                                    "ask": {
                                                        "amount": "5.25",
                                                        "currency_code": "USD"
                                                    },
                                                    "last": {
                                                        "amount": "5.25",
                                                        "currency_code": "USD"
                                                    },
                                                    "volume": "123",
                                                    "open_interest": "2000",
                                                    "open_interest_date": "2026-09-18",
                                                    "implied_volatility": "0.05",
                                                    "delta": "0.52",
                                                    "gamma": "0.02",
                                                    "theta": "-0.04",
                                                    "vega": "0.15",
                                                    "rho": "0.03"
                                                }
                                            ],
                                            "meta": {
                                                "timezone": "UTC",
                                                "as_of": "2026-11-01T00:00:00Z",
                                                "next_cursor": null,
                                                "coverage": {
                                                    "status": "complete",
                                                    "reason": null
                                                }
                                            }
                                        }
                                    }
                                }
                            },
                            "text/csv": {
                                "schema": {
                                    "type": "string"
                                }
                            }
                        }
                    },
                    "400": {
                        "$ref": "#/components/responses/BadRequest"
                    },
                    "401": {
                        "$ref": "#/components/responses/Unauthorized"
                    },
                    "403": {
                        "$ref": "#/components/responses/Forbidden"
                    },
                    "404": {
                        "$ref": "#/components/responses/NotFound"
                    },
                    "405": {
                        "$ref": "#/components/responses/MethodNotAllowed"
                    },
                    "406": {
                        "$ref": "#/components/responses/NotAcceptable"
                    },
                    "409": {
                        "$ref": "#/components/responses/Conflict"
                    },
                    "413": {
                        "$ref": "#/components/responses/ContentTooLarge"
                    },
                    "414": {
                        "$ref": "#/components/responses/URITooLong"
                    },
                    "415": {
                        "$ref": "#/components/responses/UnsupportedMediaType"
                    },
                    "422": {
                        "$ref": "#/components/responses/UnprocessableContent"
                    },
                    "429": {
                        "$ref": "#/components/responses/TooManyRequests"
                    },
                    "431": {
                        "$ref": "#/components/responses/RequestHeaderFieldsTooLarge"
                    },
                    "500": {
                        "$ref": "#/components/responses/InternalServerError"
                    },
                    "503": {
                        "$ref": "#/components/responses/ServiceUnavailable"
                    }
                },
                "x-query-constraints": [
                    {
                        "rule": "exactly_one",
                        "parameters": [
                            "contract_ids",
                            "underlying_ids"
                        ]
                    },
                    {
                        "rule": "less_than",
                        "lower": "known_from",
                        "upper": "known_to"
                    }
                ],
                "x-example-query": {
                    "underlying_ids": [
                        "01M35H2KE2ZJHXFY5C3E7FPC66"
                    ]
                },
                "x-contract-family": "research",
                "x-credit-cost": "50 credits per request.",
                "x-availability": "available"
            }
        },
        "/v1/options/bars": {
            "get": {
                "operationId": "list_options_bars",
                "summary": "Option bars",
                "tags": [
                    "Options"
                ],
                "description": "Historical daily option OHLCV, one row per trading date the contract traded; sessions without a trade have no bar. Prices are raw. Read from the provider when requested; history starts in late 2023. For as_of, known_from and known_to, a bar is known at the end of its session's New York day. Default order: date descending (newest first), id ascending. Contract selection is required. Data is delivered from validated canonical batches; a connected dataset with nothing published for the key's markets yet returns 503. Access requires the operation capability on the API key.",
                "x-implementation-status": "implemented",
                "x-required-capability": "options.read",
                "x-time-field": "date",
                "x-exportable": true,
                "parameters": [
                    {
                        "name": "contract_ids",
                        "in": "query",
                        "required": true,
                        "description": "Contract instrument IDs.",
                        "schema": {
                            "type": "array",
                            "minItems": 1,
                            "maxItems": 100,
                            "uniqueItems": true,
                            "items": {
                                "type": "string",
                                "description": "Opaque stable public identifier; never an internal database key.",
                                "minLength": 1,
                                "maxLength": 128,
                                "pattern": "^[A-Za-z0-9][A-Za-z0-9_.:-]{0,127}$"
                            }
                        },
                        "style": "form",
                        "explode": false,
                        "example": [
                            "inst_example_option"
                        ]
                    },
                    {
                        "name": "from",
                        "in": "query",
                        "required": false,
                        "description": "Inclusive lower bound on date.",
                        "schema": {
                            "type": "string",
                            "format": "date"
                        }
                    },
                    {
                        "name": "to",
                        "in": "query",
                        "required": false,
                        "description": "Inclusive upper bound on date; must be on or after from, so from equal to to selects one day.",
                        "schema": {
                            "type": "string",
                            "format": "date"
                        }
                    },
                    {
                        "name": "as_of",
                        "in": "query",
                        "required": false,
                        "description": "Knowledge cutoff as a UTC date (YYYY-MM-DD): the response reflects what was known by the end of that day. Defaults to now; cannot be in the future. A date from before the dataset's knowledge history returns 422 point-in-time-unavailable naming the earliest one, which GET /v1/datasets lists as earliest_as_of.",
                        "schema": {
                            "type": "string",
                            "format": "date"
                        }
                    },
                    {
                        "name": "known_from",
                        "in": "query",
                        "required": false,
                        "description": "First UTC date (YYYY-MM-DD, inclusive) on which a revision became known.",
                        "schema": {
                            "type": "string",
                            "format": "date"
                        }
                    },
                    {
                        "name": "known_to",
                        "in": "query",
                        "required": false,
                        "description": "Last UTC date (YYYY-MM-DD, inclusive) on which a revision became known; on or after known_from.",
                        "schema": {
                            "type": "string",
                            "format": "date"
                        }
                    },
                    {
                        "name": "order",
                        "in": "query",
                        "required": false,
                        "description": "Direction on date; ties use ID ascending.",
                        "schema": {
                            "type": "string",
                            "enum": [
                                "asc",
                                "desc"
                            ],
                            "description": "Direction on date; ties use ID ascending.",
                            "default": "desc"
                        }
                    },
                    {
                        "name": "limit",
                        "in": "query",
                        "required": false,
                        "description": "Maximum records per page.",
                        "schema": {
                            "type": "integer",
                            "minimum": 1,
                            "maximum": 500,
                            "default": 100
                        }
                    },
                    {
                        "name": "cursor",
                        "in": "query",
                        "required": false,
                        "description": "Opaque cursor, expires after one hour; binds filters, order, resolved as_of, account/key and entitlement. Repeat the original query unchanged.",
                        "schema": {
                            "type": "string",
                            "maxLength": 4096
                        }
                    },
                    {
                        "name": "format",
                        "in": "query",
                        "description": "Response format. csv returns the data rows with a header row, for spreadsheet functions such as IMPORTDATA; nested fields become dotted columns and lists one JSON array cell, the next page cursor is returned in X-Next-Cursor and meta.errors in X-Meta-Errors. A result without rows is the header row alone, listing the documented fields of a row. Default json, or csv when format is omitted and the Accept header ranks text/csv above JSON; a format the Accept header does not admit returns 406 not-acceptable.",
                        "schema": {
                            "type": "string",
                            "enum": [
                                "json",
                                "csv"
                            ]
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Authorized records. An empty collection is a valid result; a dataset with no connected source returns 501, and one with nothing published for your markets 503.",
                        "headers": {
                            "X-RateLimit-Limit": {
                                "$ref": "#/components/headers/X-RateLimit-Limit"
                            },
                            "X-RateLimit-Remaining": {
                                "$ref": "#/components/headers/X-RateLimit-Remaining"
                            },
                            "X-RateLimit-Reset": {
                                "$ref": "#/components/headers/X-RateLimit-Reset"
                            },
                            "Cache-Control": {
                                "description": "Always no-store, private: responses of this endpoint carry no ETag and must not be stored or reused.",
                                "schema": {
                                    "type": "string",
                                    "const": "no-store, private"
                                }
                            },
                            "X-Request-ID": {
                                "$ref": "#/components/headers/X-Request-ID"
                            },
                            "X-Next-Cursor": {
                                "$ref": "#/components/headers/X-Next-Cursor"
                            },
                            "X-Meta-Errors": {
                                "$ref": "#/components/headers/X-Meta-Errors"
                            },
                            "X-Credits-Limit": {
                                "$ref": "#/components/headers/X-Credits-Limit"
                            },
                            "X-Credits-Remaining": {
                                "$ref": "#/components/headers/X-Credits-Remaining"
                            },
                            "X-Credits-Cost": {
                                "$ref": "#/components/headers/X-Credits-Cost"
                            },
                            "X-Concurrency-Limit": {
                                "$ref": "#/components/headers/X-Concurrency-Limit"
                            },
                            "X-Concurrency-Remaining": {
                                "$ref": "#/components/headers/X-Concurrency-Remaining"
                            }
                        },
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "object",
                                    "additionalProperties": false,
                                    "properties": {
                                        "data": {
                                            "type": "array",
                                            "items": {
                                                "$ref": "#/components/schemas/OptionBar"
                                            }
                                        },
                                        "meta": {
                                            "$ref": "#/components/schemas/ResponseMeta"
                                        }
                                    },
                                    "required": [
                                        "data",
                                        "meta"
                                    ]
                                },
                                "examples": {
                                    "synthetic": {
                                        "summary": "Synthetic contract example; not production data",
                                        "value": {
                                            "data": [
                                                {
                                                    "id": "record_example_1",
                                                    "instrument_id": "inst_example_option",
                                                    "date": "2026-09-18",
                                                    "currency_code": "USD",
                                                    "open": "5.1",
                                                    "high": "5.5",
                                                    "low": "4.9",
                                                    "close": "5.25",
                                                    "volume": "1000"
                                                }
                                            ],
                                            "meta": {
                                                "timezone": "UTC",
                                                "as_of": "2026-11-01T00:00:00Z",
                                                "next_cursor": null,
                                                "coverage": {
                                                    "status": "complete",
                                                    "reason": null
                                                }
                                            }
                                        }
                                    }
                                }
                            },
                            "text/csv": {
                                "schema": {
                                    "type": "string"
                                }
                            }
                        }
                    },
                    "400": {
                        "$ref": "#/components/responses/BadRequest"
                    },
                    "401": {
                        "$ref": "#/components/responses/Unauthorized"
                    },
                    "403": {
                        "$ref": "#/components/responses/Forbidden"
                    },
                    "404": {
                        "$ref": "#/components/responses/NotFound"
                    },
                    "405": {
                        "$ref": "#/components/responses/MethodNotAllowed"
                    },
                    "406": {
                        "$ref": "#/components/responses/NotAcceptable"
                    },
                    "409": {
                        "$ref": "#/components/responses/Conflict"
                    },
                    "413": {
                        "$ref": "#/components/responses/ContentTooLarge"
                    },
                    "414": {
                        "$ref": "#/components/responses/URITooLong"
                    },
                    "415": {
                        "$ref": "#/components/responses/UnsupportedMediaType"
                    },
                    "422": {
                        "$ref": "#/components/responses/UnprocessableContent"
                    },
                    "429": {
                        "$ref": "#/components/responses/TooManyRequests"
                    },
                    "431": {
                        "$ref": "#/components/responses/RequestHeaderFieldsTooLarge"
                    },
                    "500": {
                        "$ref": "#/components/responses/InternalServerError"
                    },
                    "503": {
                        "$ref": "#/components/responses/ServiceUnavailable"
                    }
                },
                "x-query-constraints": [
                    {
                        "rule": "less_than",
                        "lower": "from",
                        "upper": "to"
                    },
                    {
                        "rule": "less_than",
                        "lower": "known_from",
                        "upper": "known_to"
                    }
                ],
                "x-example-query": {
                    "contract_ids": [
                        "inst_example_option"
                    ]
                },
                "x-contract-family": "research",
                "x-credit-cost": "50 credits per request.",
                "x-availability": "available"
            }
        },
        "/v1/bars": {
            "get": {
                "operationId": "list_bars",
                "summary": "Cross-asset bars",
                "tags": [
                    "Market prices"
                ],
                "description": "Unified bars for exchange listings, crypto and currency pairs, indices and bonds, served from the same stores as /v1/eod (interval 1d, which also needs eod.read) and /v1/intraday (intraday intervals, which also need intraday.read). Requires exactly one of instrument_ids or symbols. Each listing serves the intervals it is collected at, and an interval it is not collected at returns 422 unsupported-interval; for crypto and currency pairs 5m and 1h are rolled up from 1m, and bonds have daily bars only. Prices are in currency_code; quote_instrument_id is null, since every crypto pair served is quoted in US dollars. Default order: window_start descending (newest first), id ascending. Instrument selection is required. Until a bar source publishes, bars are read from the price stores /v1/eod and /v1/intraday serve. Access requires the operation capability on the API key.",
                "x-implementation-status": "implemented",
                "x-required-capability": "bars.read",
                "x-time-field": "window_start",
                "x-exportable": true,
                "parameters": [
                    {
                        "name": "instrument_ids",
                        "in": "query",
                        "required": false,
                        "description": "Filter by stable instrument IDs. IDs and symbols may not be combined.",
                        "schema": {
                            "type": "array",
                            "minItems": 1,
                            "maxItems": 100,
                            "uniqueItems": true,
                            "items": {
                                "type": "string",
                                "description": "Opaque stable public identifier; never an internal database key.",
                                "minLength": 1,
                                "maxLength": 128,
                                "pattern": "^[A-Za-z0-9][A-Za-z0-9_.:-]{0,127}$"
                            }
                        },
                        "style": "form",
                        "explode": false
                    },
                    {
                        "name": "symbols",
                        "in": "query",
                        "required": false,
                        "description": "Convenience lookup for exchange-listed instruments as MIC:TICKER or a bare ticker, which resolves to the exchange listing that ticker; resolves at symbol_at. The MIC and the ticker are case-insensitive, and two spellings of one listing (AAPL and XNAS:AAPL) count as a repeated value. A bare ticker that names no listing as written is also read in the common vendor spellings: with an exchange suffix (RY.TO, SHEL.L, VOD.LSE, BHP.AX), ^GSPC for INDEX:GSPC, and EURUSD=X or EURUSD for FOREX:EUR-USD. A ticker may contain a space (BAC PRL) but not start or end with one. A request in which no symbol resolves returns 404 symbol-not-resolved; otherwise each symbol that does not resolve, or resolves to a listing with no rows for the request (no-data), is an entry of meta.errors. IDs and symbols may not be combined.",
                        "schema": {
                            "type": "array",
                            "minItems": 1,
                            "maxItems": 100,
                            "uniqueItems": true,
                            "items": {
                                "type": "string",
                                "pattern": "^(?:(?:[A-Za-z0-9]{4}|[Cc][Rr][Yy][Pp][Tt][Oo]|[Ff][Oo][Rr][Ee][Xx]|[Ii][Nn][Dd][Ee][Xx]):|\\^)?[A-Za-z0-9](?:[A-Za-z0-9./_^= -]{0,62}[A-Za-z0-9./_^=-])?$"
                            }
                        },
                        "style": "form",
                        "explode": false,
                        "example": [
                            "XNAS:AAPL"
                        ]
                    },
                    {
                        "name": "symbol_at",
                        "in": "query",
                        "required": false,
                        "description": "Resolve symbols as they were assigned at the end of this UTC date (YYYY-MM-DD); defaults to as_of. Only listings the security master holds resolve: it was built in September 2026 and records delistings from then on, so most issuers delisted earlier, such as TWTR or SIVB, resolve at no date. Only valid with symbols.",
                        "schema": {
                            "type": "string",
                            "format": "date"
                        }
                    },
                    {
                        "name": "from",
                        "in": "query",
                        "required": false,
                        "description": "First date (YYYY-MM-DD, inclusive) of window_start, the exchange-local trading date.",
                        "schema": {
                            "type": "string",
                            "format": "date"
                        },
                        "example": "2026-09-01"
                    },
                    {
                        "name": "to",
                        "in": "query",
                        "required": false,
                        "description": "Last date (YYYY-MM-DD, inclusive) of window_start; on or after from.",
                        "schema": {
                            "type": "string",
                            "format": "date"
                        },
                        "example": "2026-09-25"
                    },
                    {
                        "name": "interval",
                        "in": "query",
                        "required": true,
                        "description": "Required. 1d comes from end-of-day prices (/v1/eod). 5m and 1h come from the retained intraday bars of /v1/intraday (about 30 days): exchange listings are collected as five-minute bars, and 1h is rolled up from them, each session cut into hours from its open. 1m is served only by listings collected at one minute, which today are crypto and currency pairs; an interval a listing is not collected at (1m for exchange listings) returns 422 unsupported-interval. Weekly and monthly bars are not served.",
                        "schema": {
                            "type": "string",
                            "enum": [
                                "1d",
                                "5m",
                                "1h",
                                "1m"
                            ],
                            "description": "Required. 1d comes from end-of-day prices (/v1/eod). 5m and 1h come from the retained intraday bars of /v1/intraday (about 30 days): exchange listings are collected as five-minute bars, and 1h is rolled up from them, each session cut into hours from its open. 1m is served only by listings collected at one minute, which today are crypto and currency pairs; an interval a listing is not collected at (1m for exchange listings) returns 422 unsupported-interval. Weekly and monthly bars are not served."
                        },
                        "example": "1d"
                    },
                    {
                        "name": "session",
                        "in": "query",
                        "required": false,
                        "description": "Default regular. Continuous markets (crypto and currency pairs) trade in one session a UTC day, so all selects the same bars as regular for them. Exchange listings have regular-session bars only, with no pre-market or after-hours bars; all returns 422 unsupported-session for them.",
                        "schema": {
                            "type": "string",
                            "enum": [
                                "regular",
                                "all"
                            ],
                            "description": "Default regular. Continuous markets (crypto and currency pairs) trade in one session a UTC day, so all selects the same bars as regular for them. Exchange listings have regular-session bars only, with no pre-market or after-hours bars; all returns 422 unsupported-session for them."
                        }
                    },
                    {
                        "name": "adjustment",
                        "in": "query",
                        "required": false,
                        "description": "Defaults to raw. split and total_return prices are rounded half up to 6 decimal places and adjusted volume to whole shares; a listing whose corporate actions are not collected (crypto and currency pairs, indices, bonds, OTC) returns 422 adjustment-unsupported for them.",
                        "schema": {
                            "type": "string",
                            "enum": [
                                "raw",
                                "split",
                                "total_return"
                            ],
                            "description": "Defaults to raw. split and total_return prices are rounded half up to 6 decimal places and adjusted volume to whole shares; a listing whose corporate actions are not collected (crypto and currency pairs, indices, bonds, OTC) returns 422 adjustment-unsupported for them."
                        }
                    },
                    {
                        "name": "as_of",
                        "in": "query",
                        "required": false,
                        "description": "Knowledge cutoff as a UTC date (YYYY-MM-DD): the response reflects what was known by the end of that day. Defaults to now; cannot be in the future. A date from before the dataset's knowledge history returns 422 point-in-time-unavailable naming the earliest one, which GET /v1/datasets lists as earliest_as_of.",
                        "schema": {
                            "type": "string",
                            "format": "date"
                        }
                    },
                    {
                        "name": "order",
                        "in": "query",
                        "required": false,
                        "description": "Direction on window_start; ties use ID ascending.",
                        "schema": {
                            "type": "string",
                            "enum": [
                                "asc",
                                "desc"
                            ],
                            "description": "Direction on window_start; ties use ID ascending.",
                            "default": "desc"
                        }
                    },
                    {
                        "name": "limit",
                        "in": "query",
                        "required": false,
                        "description": "Maximum records per page.",
                        "schema": {
                            "type": "integer",
                            "minimum": 1,
                            "maximum": 500,
                            "default": 100
                        }
                    },
                    {
                        "name": "cursor",
                        "in": "query",
                        "required": false,
                        "description": "Opaque cursor, expires after one hour; binds filters, order, resolved as_of, account/key and entitlement. Repeat the original query unchanged.",
                        "schema": {
                            "type": "string",
                            "maxLength": 4096
                        }
                    },
                    {
                        "name": "format",
                        "in": "query",
                        "description": "Response format. csv returns the data rows with a header row, for spreadsheet functions such as IMPORTDATA; nested fields become dotted columns and lists one JSON array cell, the next page cursor is returned in X-Next-Cursor and meta.errors in X-Meta-Errors. A result without rows is the header row alone, listing the documented fields of a row. Default json, or csv when format is omitted and the Accept header ranks text/csv above JSON; a format the Accept header does not admit returns 406 not-acceptable.",
                        "schema": {
                            "type": "string",
                            "enum": [
                                "json",
                                "csv"
                            ]
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Authorized records. An empty collection is a valid result; a dataset with no connected source returns 501, and one with nothing published for your markets 503.",
                        "headers": {
                            "X-RateLimit-Limit": {
                                "$ref": "#/components/headers/X-RateLimit-Limit"
                            },
                            "X-RateLimit-Remaining": {
                                "$ref": "#/components/headers/X-RateLimit-Remaining"
                            },
                            "X-RateLimit-Reset": {
                                "$ref": "#/components/headers/X-RateLimit-Reset"
                            },
                            "Cache-Control": {
                                "description": "Always no-store, private: responses of this endpoint carry no ETag and must not be stored or reused.",
                                "schema": {
                                    "type": "string",
                                    "const": "no-store, private"
                                }
                            },
                            "X-Request-ID": {
                                "$ref": "#/components/headers/X-Request-ID"
                            },
                            "X-Next-Cursor": {
                                "$ref": "#/components/headers/X-Next-Cursor"
                            },
                            "X-Meta-Errors": {
                                "$ref": "#/components/headers/X-Meta-Errors"
                            },
                            "X-Credits-Limit": {
                                "$ref": "#/components/headers/X-Credits-Limit"
                            },
                            "X-Credits-Remaining": {
                                "$ref": "#/components/headers/X-Credits-Remaining"
                            },
                            "X-Credits-Cost": {
                                "$ref": "#/components/headers/X-Credits-Cost"
                            },
                            "X-Concurrency-Limit": {
                                "$ref": "#/components/headers/X-Concurrency-Limit"
                            },
                            "X-Concurrency-Remaining": {
                                "$ref": "#/components/headers/X-Concurrency-Remaining"
                            }
                        },
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "object",
                                    "additionalProperties": false,
                                    "properties": {
                                        "data": {
                                            "type": "array",
                                            "items": {
                                                "$ref": "#/components/schemas/InstrumentBar"
                                            }
                                        },
                                        "meta": {
                                            "$ref": "#/components/schemas/ResponseMeta"
                                        }
                                    },
                                    "required": [
                                        "data",
                                        "meta"
                                    ]
                                },
                                "examples": {
                                    "synthetic": {
                                        "summary": "Synthetic contract example; not production data",
                                        "value": {
                                            "data": [
                                                {
                                                    "id": "record_example_1",
                                                    "instrument_id": "inst_example_aapl",
                                                    "window_start": "2026-09-18T13:30:00Z",
                                                    "window_end": "2026-09-18T20:00:00Z",
                                                    "interval": "1d",
                                                    "session": "regular",
                                                    "currency_code": "USD",
                                                    "quote_instrument_id": null,
                                                    "open": "224.18",
                                                    "high": "228.34",
                                                    "low": "223.72",
                                                    "close": "227.63",
                                                    "volume": "1000",
                                                    "trade_count": 1250,
                                                    "adjustment": "raw"
                                                }
                                            ],
                                            "meta": {
                                                "timezone": "UTC",
                                                "as_of": "2026-11-01T00:00:00Z",
                                                "next_cursor": null,
                                                "coverage": {
                                                    "status": "complete",
                                                    "reason": null
                                                }
                                            }
                                        }
                                    }
                                }
                            },
                            "text/csv": {
                                "schema": {
                                    "type": "string"
                                }
                            }
                        }
                    },
                    "400": {
                        "$ref": "#/components/responses/BadRequest"
                    },
                    "401": {
                        "$ref": "#/components/responses/Unauthorized"
                    },
                    "403": {
                        "$ref": "#/components/responses/Forbidden"
                    },
                    "404": {
                        "$ref": "#/components/responses/NotFound"
                    },
                    "405": {
                        "$ref": "#/components/responses/MethodNotAllowed"
                    },
                    "406": {
                        "$ref": "#/components/responses/NotAcceptable"
                    },
                    "409": {
                        "$ref": "#/components/responses/Conflict"
                    },
                    "413": {
                        "$ref": "#/components/responses/ContentTooLarge"
                    },
                    "414": {
                        "$ref": "#/components/responses/URITooLong"
                    },
                    "415": {
                        "$ref": "#/components/responses/UnsupportedMediaType"
                    },
                    "422": {
                        "$ref": "#/components/responses/UnprocessableContent"
                    },
                    "429": {
                        "$ref": "#/components/responses/TooManyRequests"
                    },
                    "431": {
                        "$ref": "#/components/responses/RequestHeaderFieldsTooLarge"
                    },
                    "500": {
                        "$ref": "#/components/responses/InternalServerError"
                    },
                    "503": {
                        "$ref": "#/components/responses/ServiceUnavailable"
                    }
                },
                "x-query-constraints": [
                    {
                        "rule": "mutually_exclusive",
                        "parameters": [
                            "instrument_ids",
                            "symbols"
                        ]
                    },
                    {
                        "rule": "requires",
                        "parameter": "symbol_at",
                        "required": [
                            "symbols"
                        ]
                    },
                    {
                        "rule": "exactly_one",
                        "parameters": [
                            "instrument_ids",
                            "symbols"
                        ]
                    },
                    {
                        "rule": "less_than",
                        "lower": "from",
                        "upper": "to"
                    }
                ],
                "x-example-query": {
                    "symbols": [
                        "XNAS:AAPL"
                    ],
                    "interval": "1d",
                    "from": "2026-09-01",
                    "to": "2026-09-25"
                },
                "x-contract-family": "research",
                "x-credit-cost": "5 credits per symbol, 25 per symbol for intraday intervals.",
                "x-availability": "available"
            }
        },
        "/v1/trades": {
            "get": {
                "operationId": "list_trades",
                "summary": "Trades",
                "tags": [
                    "Market prices"
                ],
                "description": "Individual trade prints of one US-listed stock or ETF on one UTC date, from the consolidated tape (CTA and UTP): price, size, the executing exchange or FINRA reporting facility as a MIC, and normalized sale conditions. Requires exactly one instrument, as a single instrument_ids or symbols value, and from/to naming the same UTC date. A session's trades are available from the day after it trades, back to 2008, and each is knowable at the end of its New York trading day; the current session is not available. Trades are read on request rather than stored, so they carry no correction lineage: correction_of_id is always null and cancelled false. OTC Markets listings are included, and the plan history depth applies (403 before it). Past the provider's daily request limit the endpoint returns 503 with Retry-After until midnight UTC. Quote snapshots are not trade ticks. Default order: event_at ascending, id ascending. Instrument selection and bounded range are required. Read from the trade source on request; 503 dataset-unavailable when that source is switched off or does not answer, and when it has reached its daily request limit, with Retry-After until 00:00 UTC. Access requires the operation capability on the API key.",
                "x-implementation-status": "implemented",
                "x-required-capability": "trades.read",
                "x-time-field": "event_at",
                "x-exportable": true,
                "parameters": [
                    {
                        "name": "instrument_ids",
                        "in": "query",
                        "required": false,
                        "description": "Filter by stable instrument IDs. IDs and symbols may not be combined.",
                        "schema": {
                            "type": "array",
                            "minItems": 1,
                            "maxItems": 1,
                            "uniqueItems": true,
                            "items": {
                                "type": "string",
                                "description": "Opaque stable public identifier; never an internal database key.",
                                "minLength": 1,
                                "maxLength": 128,
                                "pattern": "^[A-Za-z0-9][A-Za-z0-9_.:-]{0,127}$"
                            }
                        },
                        "style": "form",
                        "explode": false
                    },
                    {
                        "name": "symbols",
                        "in": "query",
                        "required": false,
                        "description": "Convenience lookup for exchange-listed instruments as MIC:TICKER or a bare ticker, which resolves to the exchange listing that ticker; resolves at symbol_at. The MIC and the ticker are case-insensitive, and two spellings of one listing (AAPL and XNAS:AAPL) count as a repeated value. A bare ticker that names no listing as written is also read in the common vendor spellings: with an exchange suffix (RY.TO, SHEL.L, VOD.LSE, BHP.AX), ^GSPC for INDEX:GSPC, and EURUSD=X or EURUSD for FOREX:EUR-USD. A ticker may contain a space (BAC PRL) but not start or end with one. A request in which no symbol resolves returns 404 symbol-not-resolved; otherwise each symbol that does not resolve, or resolves to a listing with no rows for the request (no-data), is an entry of meta.errors. IDs and symbols may not be combined.",
                        "schema": {
                            "type": "array",
                            "minItems": 1,
                            "maxItems": 1,
                            "uniqueItems": true,
                            "items": {
                                "type": "string",
                                "pattern": "^(?:(?:[A-Za-z0-9]{4}|[Cc][Rr][Yy][Pp][Tt][Oo]|[Ff][Oo][Rr][Ee][Xx]|[Ii][Nn][Dd][Ee][Xx]):|\\^)?[A-Za-z0-9](?:[A-Za-z0-9./_^= -]{0,62}[A-Za-z0-9./_^=-])?$"
                            }
                        },
                        "style": "form",
                        "explode": false,
                        "example": [
                            "XNAS:AAPL"
                        ]
                    },
                    {
                        "name": "symbol_at",
                        "in": "query",
                        "required": false,
                        "description": "Resolve symbols as they were assigned at the end of this UTC date (YYYY-MM-DD); defaults to as_of. Only listings the security master holds resolve: it was built in September 2026 and records delistings from then on, so most issuers delisted earlier, such as TWTR or SIVB, resolve at no date. Only valid with symbols.",
                        "schema": {
                            "type": "string",
                            "format": "date"
                        }
                    },
                    {
                        "name": "from",
                        "in": "query",
                        "required": true,
                        "description": "UTC date (YYYY-MM-DD) of event_at; a request reads one day.",
                        "schema": {
                            "type": "string",
                            "format": "date"
                        },
                        "example": "2026-09-18"
                    },
                    {
                        "name": "to",
                        "in": "query",
                        "required": true,
                        "description": "The same UTC date as from (YYYY-MM-DD).",
                        "schema": {
                            "type": "string",
                            "format": "date"
                        },
                        "example": "2026-09-18"
                    },
                    {
                        "name": "as_of",
                        "in": "query",
                        "required": false,
                        "description": "Knowledge cutoff as a UTC date (YYYY-MM-DD): the response reflects what was known by the end of that day. Defaults to now; cannot be in the future. A date from before the dataset's knowledge history returns 422 point-in-time-unavailable naming the earliest one, which GET /v1/datasets lists as earliest_as_of.",
                        "schema": {
                            "type": "string",
                            "format": "date"
                        }
                    },
                    {
                        "name": "known_from",
                        "in": "query",
                        "required": false,
                        "description": "First UTC date (YYYY-MM-DD, inclusive) on which a revision became known.",
                        "schema": {
                            "type": "string",
                            "format": "date"
                        }
                    },
                    {
                        "name": "known_to",
                        "in": "query",
                        "required": false,
                        "description": "Last UTC date (YYYY-MM-DD, inclusive) on which a revision became known; on or after known_from.",
                        "schema": {
                            "type": "string",
                            "format": "date"
                        }
                    },
                    {
                        "name": "order",
                        "in": "query",
                        "required": false,
                        "description": "Direction on event_at; ties use ID ascending.",
                        "schema": {
                            "type": "string",
                            "enum": [
                                "asc",
                                "desc"
                            ],
                            "description": "Direction on event_at; ties use ID ascending.",
                            "default": "asc"
                        }
                    },
                    {
                        "name": "limit",
                        "in": "query",
                        "required": false,
                        "description": "Maximum records per page.",
                        "schema": {
                            "type": "integer",
                            "minimum": 1,
                            "maximum": 500,
                            "default": 100
                        }
                    },
                    {
                        "name": "cursor",
                        "in": "query",
                        "required": false,
                        "description": "Opaque cursor, expires after one hour; binds filters, order, resolved as_of, account/key and entitlement. Repeat the original query unchanged.",
                        "schema": {
                            "type": "string",
                            "maxLength": 4096
                        }
                    },
                    {
                        "name": "format",
                        "in": "query",
                        "description": "Response format. csv returns the data rows with a header row, for spreadsheet functions such as IMPORTDATA; nested fields become dotted columns and lists one JSON array cell, the next page cursor is returned in X-Next-Cursor and meta.errors in X-Meta-Errors. A result without rows is the header row alone, listing the documented fields of a row. Default json, or csv when format is omitted and the Accept header ranks text/csv above JSON; a format the Accept header does not admit returns 406 not-acceptable.",
                        "schema": {
                            "type": "string",
                            "enum": [
                                "json",
                                "csv"
                            ]
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Authorized records. An empty collection is a valid result; a dataset with no connected source returns 501, and one with nothing published for your markets 503.",
                        "headers": {
                            "X-RateLimit-Limit": {
                                "$ref": "#/components/headers/X-RateLimit-Limit"
                            },
                            "X-RateLimit-Remaining": {
                                "$ref": "#/components/headers/X-RateLimit-Remaining"
                            },
                            "X-RateLimit-Reset": {
                                "$ref": "#/components/headers/X-RateLimit-Reset"
                            },
                            "Cache-Control": {
                                "description": "Always no-store, private: responses of this endpoint carry no ETag and must not be stored or reused.",
                                "schema": {
                                    "type": "string",
                                    "const": "no-store, private"
                                }
                            },
                            "X-Request-ID": {
                                "$ref": "#/components/headers/X-Request-ID"
                            },
                            "X-Next-Cursor": {
                                "$ref": "#/components/headers/X-Next-Cursor"
                            },
                            "X-Meta-Errors": {
                                "$ref": "#/components/headers/X-Meta-Errors"
                            },
                            "X-Credits-Limit": {
                                "$ref": "#/components/headers/X-Credits-Limit"
                            },
                            "X-Credits-Remaining": {
                                "$ref": "#/components/headers/X-Credits-Remaining"
                            },
                            "X-Credits-Cost": {
                                "$ref": "#/components/headers/X-Credits-Cost"
                            },
                            "X-Concurrency-Limit": {
                                "$ref": "#/components/headers/X-Concurrency-Limit"
                            },
                            "X-Concurrency-Remaining": {
                                "$ref": "#/components/headers/X-Concurrency-Remaining"
                            }
                        },
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "object",
                                    "additionalProperties": false,
                                    "properties": {
                                        "data": {
                                            "type": "array",
                                            "items": {
                                                "$ref": "#/components/schemas/Trade"
                                            }
                                        },
                                        "meta": {
                                            "$ref": "#/components/schemas/ResponseMeta"
                                        }
                                    },
                                    "required": [
                                        "data",
                                        "meta"
                                    ]
                                },
                                "examples": {
                                    "synthetic": {
                                        "summary": "Synthetic contract example; not production data",
                                        "value": {
                                            "data": [
                                                {
                                                    "id": "record_example_1",
                                                    "instrument_id": "inst_example_aapl",
                                                    "event_at": "2026-09-18T13:30:00.002Z",
                                                    "price": "227.63",
                                                    "currency_code": "USD",
                                                    "quote_instrument_id": null,
                                                    "size": "100",
                                                    "venue_mic": "XNAS",
                                                    "conditions": [],
                                                    "correction_of_id": null,
                                                    "cancelled": false
                                                }
                                            ],
                                            "meta": {
                                                "timezone": "UTC",
                                                "as_of": "2026-11-01T00:00:00Z",
                                                "next_cursor": null,
                                                "coverage": {
                                                    "status": "complete",
                                                    "reason": null
                                                }
                                            }
                                        }
                                    }
                                }
                            },
                            "text/csv": {
                                "schema": {
                                    "type": "string"
                                }
                            }
                        }
                    },
                    "400": {
                        "$ref": "#/components/responses/BadRequest"
                    },
                    "401": {
                        "$ref": "#/components/responses/Unauthorized"
                    },
                    "403": {
                        "$ref": "#/components/responses/Forbidden"
                    },
                    "404": {
                        "$ref": "#/components/responses/NotFound"
                    },
                    "405": {
                        "$ref": "#/components/responses/MethodNotAllowed"
                    },
                    "406": {
                        "$ref": "#/components/responses/NotAcceptable"
                    },
                    "409": {
                        "$ref": "#/components/responses/Conflict"
                    },
                    "413": {
                        "$ref": "#/components/responses/ContentTooLarge"
                    },
                    "414": {
                        "$ref": "#/components/responses/URITooLong"
                    },
                    "415": {
                        "$ref": "#/components/responses/UnsupportedMediaType"
                    },
                    "422": {
                        "$ref": "#/components/responses/UnprocessableContent"
                    },
                    "429": {
                        "$ref": "#/components/responses/TooManyRequests"
                    },
                    "431": {
                        "$ref": "#/components/responses/RequestHeaderFieldsTooLarge"
                    },
                    "500": {
                        "$ref": "#/components/responses/InternalServerError"
                    },
                    "503": {
                        "$ref": "#/components/responses/ServiceUnavailable"
                    }
                },
                "x-query-constraints": [
                    {
                        "rule": "mutually_exclusive",
                        "parameters": [
                            "instrument_ids",
                            "symbols"
                        ]
                    },
                    {
                        "rule": "requires",
                        "parameter": "symbol_at",
                        "required": [
                            "symbols"
                        ]
                    },
                    {
                        "rule": "exactly_one",
                        "parameters": [
                            "instrument_ids",
                            "symbols"
                        ]
                    },
                    {
                        "rule": "less_than",
                        "lower": "from",
                        "upper": "to"
                    },
                    {
                        "rule": "less_than",
                        "lower": "known_from",
                        "upper": "known_to"
                    },
                    {
                        "rule": "max_range_seconds",
                        "lower": "from",
                        "upper": "to",
                        "value": 86400
                    }
                ],
                "x-example-query": {
                    "symbols": [
                        "XNAS:AAPL"
                    ],
                    "from": "2026-09-18",
                    "to": "2026-09-18"
                },
                "x-contract-family": "research",
                "x-credit-cost": "50 credits per symbol.",
                "x-availability": "available"
            }
        },
        "/v1/indicators/definitions": {
            "get": {
                "operationId": "list_indicators_definitions",
                "summary": "Indicator definitions",
                "tags": [
                    "Analytics"
                ],
                "description": "Discover supported indicators: each one's formula, input bar fields, parameters with their limits and defaults, output names, and the warmup bars it needs at default parameters. Default order: id ascending. Results are limited to the entitled scope. Data is delivered from validated canonical batches; a connected dataset with nothing published for the key's markets yet returns 503. Access requires the operation capability on the API key.",
                "x-implementation-status": "implemented",
                "x-required-capability": "indicators.read",
                "x-time-field": "id",
                "x-exportable": true,
                "parameters": [
                    {
                        "name": "as_of",
                        "in": "query",
                        "required": false,
                        "description": "Knowledge cutoff as a UTC date (YYYY-MM-DD): the response reflects what was known by the end of that day. Defaults to now; cannot be in the future. A date from before the dataset's knowledge history returns 422 point-in-time-unavailable naming the earliest one, which GET /v1/datasets lists as earliest_as_of.",
                        "schema": {
                            "type": "string",
                            "format": "date"
                        }
                    },
                    {
                        "name": "known_from",
                        "in": "query",
                        "required": false,
                        "description": "First UTC date (YYYY-MM-DD, inclusive) on which a revision became known.",
                        "schema": {
                            "type": "string",
                            "format": "date"
                        }
                    },
                    {
                        "name": "known_to",
                        "in": "query",
                        "required": false,
                        "description": "Last UTC date (YYYY-MM-DD, inclusive) on which a revision became known; on or after known_from.",
                        "schema": {
                            "type": "string",
                            "format": "date"
                        }
                    },
                    {
                        "name": "order",
                        "in": "query",
                        "required": false,
                        "description": "Direction on id; ties use ID ascending.",
                        "schema": {
                            "type": "string",
                            "enum": [
                                "asc",
                                "desc"
                            ],
                            "description": "Direction on id; ties use ID ascending.",
                            "default": "asc"
                        }
                    },
                    {
                        "name": "limit",
                        "in": "query",
                        "required": false,
                        "description": "Maximum records per page.",
                        "schema": {
                            "type": "integer",
                            "minimum": 1,
                            "maximum": 500,
                            "default": 100
                        }
                    },
                    {
                        "name": "cursor",
                        "in": "query",
                        "required": false,
                        "description": "Opaque cursor, expires after one hour; binds filters, order, resolved as_of, account/key and entitlement. Repeat the original query unchanged.",
                        "schema": {
                            "type": "string",
                            "maxLength": 4096
                        }
                    },
                    {
                        "name": "format",
                        "in": "query",
                        "description": "Response format. csv returns the data rows with a header row, for spreadsheet functions such as IMPORTDATA; nested fields become dotted columns and lists one JSON array cell, the next page cursor is returned in X-Next-Cursor and meta.errors in X-Meta-Errors. A result without rows is the header row alone, listing the documented fields of a row. Default json, or csv when format is omitted and the Accept header ranks text/csv above JSON; a format the Accept header does not admit returns 406 not-acceptable.",
                        "schema": {
                            "type": "string",
                            "enum": [
                                "json",
                                "csv"
                            ]
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Authorized records. An empty collection is a valid result; a dataset with no connected source returns 501, and one with nothing published for your markets 503.",
                        "headers": {
                            "X-RateLimit-Limit": {
                                "$ref": "#/components/headers/X-RateLimit-Limit"
                            },
                            "X-RateLimit-Remaining": {
                                "$ref": "#/components/headers/X-RateLimit-Remaining"
                            },
                            "X-RateLimit-Reset": {
                                "$ref": "#/components/headers/X-RateLimit-Reset"
                            },
                            "Cache-Control": {
                                "description": "Always no-store, private: responses of this endpoint carry no ETag and must not be stored or reused.",
                                "schema": {
                                    "type": "string",
                                    "const": "no-store, private"
                                }
                            },
                            "X-Request-ID": {
                                "$ref": "#/components/headers/X-Request-ID"
                            },
                            "X-Next-Cursor": {
                                "$ref": "#/components/headers/X-Next-Cursor"
                            },
                            "X-Meta-Errors": {
                                "$ref": "#/components/headers/X-Meta-Errors"
                            },
                            "X-Credits-Limit": {
                                "$ref": "#/components/headers/X-Credits-Limit"
                            },
                            "X-Credits-Remaining": {
                                "$ref": "#/components/headers/X-Credits-Remaining"
                            },
                            "X-Credits-Cost": {
                                "$ref": "#/components/headers/X-Credits-Cost"
                            },
                            "X-Concurrency-Limit": {
                                "$ref": "#/components/headers/X-Concurrency-Limit"
                            },
                            "X-Concurrency-Remaining": {
                                "$ref": "#/components/headers/X-Concurrency-Remaining"
                            }
                        },
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "object",
                                    "additionalProperties": false,
                                    "properties": {
                                        "data": {
                                            "type": "array",
                                            "items": {
                                                "$ref": "#/components/schemas/IndicatorDefinition"
                                            }
                                        },
                                        "meta": {
                                            "$ref": "#/components/schemas/ResponseMeta"
                                        }
                                    },
                                    "required": [
                                        "data",
                                        "meta"
                                    ]
                                },
                                "examples": {
                                    "synthetic": {
                                        "summary": "Synthetic contract example; not production data",
                                        "value": {
                                            "data": [
                                                {
                                                    "id": "sma",
                                                    "name": "Simple moving average",
                                                    "description": "Arithmetic mean of close prices over period bars.",
                                                    "inputs": [],
                                                    "parameters": [],
                                                    "outputs": [],
                                                    "warmup_bars": 19
                                                }
                                            ],
                                            "meta": {
                                                "timezone": "UTC",
                                                "as_of": "2026-11-01T00:00:00Z",
                                                "next_cursor": null,
                                                "coverage": {
                                                    "status": "complete",
                                                    "reason": null
                                                }
                                            }
                                        }
                                    }
                                }
                            },
                            "text/csv": {
                                "schema": {
                                    "type": "string"
                                }
                            }
                        }
                    },
                    "400": {
                        "$ref": "#/components/responses/BadRequest"
                    },
                    "401": {
                        "$ref": "#/components/responses/Unauthorized"
                    },
                    "403": {
                        "$ref": "#/components/responses/Forbidden"
                    },
                    "404": {
                        "$ref": "#/components/responses/NotFound"
                    },
                    "405": {
                        "$ref": "#/components/responses/MethodNotAllowed"
                    },
                    "406": {
                        "$ref": "#/components/responses/NotAcceptable"
                    },
                    "409": {
                        "$ref": "#/components/responses/Conflict"
                    },
                    "413": {
                        "$ref": "#/components/responses/ContentTooLarge"
                    },
                    "414": {
                        "$ref": "#/components/responses/URITooLong"
                    },
                    "415": {
                        "$ref": "#/components/responses/UnsupportedMediaType"
                    },
                    "422": {
                        "$ref": "#/components/responses/UnprocessableContent"
                    },
                    "429": {
                        "$ref": "#/components/responses/TooManyRequests"
                    },
                    "431": {
                        "$ref": "#/components/responses/RequestHeaderFieldsTooLarge"
                    },
                    "500": {
                        "$ref": "#/components/responses/InternalServerError"
                    },
                    "503": {
                        "$ref": "#/components/responses/ServiceUnavailable"
                    }
                },
                "x-query-constraints": [
                    {
                        "rule": "less_than",
                        "lower": "known_from",
                        "upper": "known_to"
                    }
                ],
                "x-example-query": [],
                "x-contract-family": "research",
                "x-credit-cost": "5 credits per request.",
                "x-availability": "available"
            }
        },
        "/v1/indicators": {
            "get": {
                "operationId": "list_indicators",
                "summary": "Technical indicators",
                "tags": [
                    "Analytics"
                ],
                "description": "Calculated series with explicit inputs. Requires instrument_ids or symbols. Until a source publishes indicator values, they are calculated on request from end-of-day bars (interval 1d, which also needs eod.read) or the retained intraday bars of /v1/intraday (5m, and 1h rolled up from it, for exchange listings; these need intraday.read), under the same knowledge cutoff, adjustment and plan history depth as those bars; event_at is the close of each bar, and recursive indicators (ema, macd, rsi, atr) are seeded at the start of a warmup long enough that the seed's weight in each value is below 1e-20 (480 bars for a 20-day ema), so they equal, to the published eight places, values seeded from the earliest bar the key may read. Bars are split-adjusted by default where the listing has split adjustments, and raw otherwise; over a window with no later split the two give the same values. Definition defaults apply when indicator-specific parameters are omitted; unsupported parameter combinations return 422. Include preceding bars for warmup without emitting results before from; insufficient warmup produces null values. An indicator that cannot be calculated from stored bars returns 422 indicator-unavailable, and a request that would read more than 100,000 bars, or 50,000 for one instrument, returns 422 indicator-history-limit. Default order: event_at descending (newest first), id ascending. Instrument selection is required. Until a source publishes indicator values, they are calculated on request from stored bars. Access requires the operation capability on the API key.",
                "x-implementation-status": "implemented",
                "x-required-capability": "indicators.read",
                "x-time-field": "event_at",
                "x-exportable": true,
                "parameters": [
                    {
                        "name": "instrument_ids",
                        "in": "query",
                        "required": false,
                        "description": "Filter by stable instrument IDs. IDs and symbols may not be combined.",
                        "schema": {
                            "type": "array",
                            "minItems": 1,
                            "maxItems": 100,
                            "uniqueItems": true,
                            "items": {
                                "type": "string",
                                "description": "Opaque stable public identifier; never an internal database key.",
                                "minLength": 1,
                                "maxLength": 128,
                                "pattern": "^[A-Za-z0-9][A-Za-z0-9_.:-]{0,127}$"
                            }
                        },
                        "style": "form",
                        "explode": false
                    },
                    {
                        "name": "symbols",
                        "in": "query",
                        "required": false,
                        "description": "Convenience lookup for exchange-listed instruments as MIC:TICKER or a bare ticker, which resolves to the exchange listing that ticker; resolves at symbol_at. The MIC and the ticker are case-insensitive, and two spellings of one listing (AAPL and XNAS:AAPL) count as a repeated value. A bare ticker that names no listing as written is also read in the common vendor spellings: with an exchange suffix (RY.TO, SHEL.L, VOD.LSE, BHP.AX), ^GSPC for INDEX:GSPC, and EURUSD=X or EURUSD for FOREX:EUR-USD. A ticker may contain a space (BAC PRL) but not start or end with one. A request in which no symbol resolves returns 404 symbol-not-resolved; otherwise each symbol that does not resolve, or resolves to a listing with no rows for the request (no-data), is an entry of meta.errors. IDs and symbols may not be combined.",
                        "schema": {
                            "type": "array",
                            "minItems": 1,
                            "maxItems": 100,
                            "uniqueItems": true,
                            "items": {
                                "type": "string",
                                "pattern": "^(?:(?:[A-Za-z0-9]{4}|[Cc][Rr][Yy][Pp][Tt][Oo]|[Ff][Oo][Rr][Ee][Xx]|[Ii][Nn][Dd][Ee][Xx]):|\\^)?[A-Za-z0-9](?:[A-Za-z0-9./_^= -]{0,62}[A-Za-z0-9./_^=-])?$"
                            }
                        },
                        "style": "form",
                        "explode": false,
                        "example": [
                            "XNAS:AAPL"
                        ]
                    },
                    {
                        "name": "symbol_at",
                        "in": "query",
                        "required": false,
                        "description": "Resolve symbols as they were assigned at the end of this UTC date (YYYY-MM-DD); defaults to as_of. Only listings the security master holds resolve: it was built in September 2026 and records delistings from then on, so most issuers delisted earlier, such as TWTR or SIVB, resolve at no date. Only valid with symbols.",
                        "schema": {
                            "type": "string",
                            "format": "date"
                        }
                    },
                    {
                        "name": "indicator",
                        "in": "query",
                        "required": true,
                        "description": "Code from indicators/definitions.",
                        "schema": {
                            "type": "string",
                            "pattern": "^[a-z][a-z0-9_]*$"
                        },
                        "example": "sma"
                    },
                    {
                        "name": "from",
                        "in": "query",
                        "required": false,
                        "description": "First UTC date (YYYY-MM-DD, inclusive) of event_at.",
                        "schema": {
                            "type": "string",
                            "format": "date"
                        },
                        "example": "2026-06-01"
                    },
                    {
                        "name": "to",
                        "in": "query",
                        "required": false,
                        "description": "Last UTC date (YYYY-MM-DD, inclusive) of event_at; on or after from.",
                        "schema": {
                            "type": "string",
                            "format": "date"
                        },
                        "example": "2026-09-25"
                    },
                    {
                        "name": "interval",
                        "in": "query",
                        "required": true,
                        "description": "Source bar interval, as /v1/bars serves it: 1d for every listing, 5m and 1h for exchange listings, and 1m only for listings collected at one minute (crypto and currency pairs); otherwise 422 unsupported-interval. Weekly and monthly bars are not served.",
                        "schema": {
                            "type": "string",
                            "enum": [
                                "1d",
                                "5m",
                                "1h",
                                "1m"
                            ],
                            "description": "Source bar interval, as /v1/bars serves it: 1d for every listing, 5m and 1h for exchange listings, and 1m only for listings collected at one minute (crypto and currency pairs); otherwise 422 unsupported-interval. Weekly and monthly bars are not served."
                        },
                        "example": "1d"
                    },
                    {
                        "name": "period",
                        "in": "query",
                        "required": false,
                        "description": "Lookback bars; only valid for indicators whose definition supports period. Without it, the definition's default applies: 20 for sma, ema and bollinger_bands, 14 for rsi, atr and stochastic, 12 for roc (GET /v1/indicators/definitions states each one's limits; rsi and bollinger_bands need at least 2).",
                        "schema": {
                            "type": "integer",
                            "minimum": 1,
                            "maximum": 1000
                        }
                    },
                    {
                        "name": "fast_period",
                        "in": "query",
                        "required": false,
                        "description": "Optional indicator-specific fast period; macd defaults to 12.",
                        "schema": {
                            "type": "integer",
                            "minimum": 1,
                            "maximum": 1000
                        }
                    },
                    {
                        "name": "slow_period",
                        "in": "query",
                        "required": false,
                        "description": "Optional slow period, greater than fast_period; macd defaults to 26.",
                        "schema": {
                            "type": "integer",
                            "minimum": 1,
                            "maximum": 1000
                        }
                    },
                    {
                        "name": "signal_period",
                        "in": "query",
                        "required": false,
                        "description": "Optional signal period; macd defaults to 9 and stochastic to 3.",
                        "schema": {
                            "type": "integer",
                            "minimum": 1,
                            "maximum": 1000
                        }
                    },
                    {
                        "name": "adjustment",
                        "in": "query",
                        "required": false,
                        "description": "Source-bar adjustment. Without it, bars are split-adjusted (meta.default_adjustment) for a listing with validated split adjustments, so a window that spans a split is on one share basis, and raw for a listing without them (crypto and currency pairs, indices, bonds, OTC), for which an explicit split or total_return returns 422 adjustment-unsupported. Each record's adjustment states what its bars had. raw reads bars as traded.",
                        "schema": {
                            "type": "string",
                            "enum": [
                                "raw",
                                "split",
                                "total_return"
                            ],
                            "description": "Source-bar adjustment. Without it, bars are split-adjusted (meta.default_adjustment) for a listing with validated split adjustments, so a window that spans a split is on one share basis, and raw for a listing without them (crypto and currency pairs, indices, bonds, OTC), for which an explicit split or total_return returns 422 adjustment-unsupported. Each record's adjustment states what its bars had. raw reads bars as traded."
                        }
                    },
                    {
                        "name": "session",
                        "in": "query",
                        "required": false,
                        "description": "Source-bar session; default regular. Continuous markets (crypto and currency pairs) trade in one session a UTC day, so all selects the same bars as regular for them; exchange listings return 422 unsupported-session for anything but regular.",
                        "schema": {
                            "type": "string",
                            "enum": [
                                "regular",
                                "all"
                            ],
                            "description": "Source-bar session; default regular. Continuous markets (crypto and currency pairs) trade in one session a UTC day, so all selects the same bars as regular for them; exchange listings return 422 unsupported-session for anything but regular."
                        }
                    },
                    {
                        "name": "as_of",
                        "in": "query",
                        "required": false,
                        "description": "Knowledge cutoff as a UTC date (YYYY-MM-DD): the response reflects what was known by the end of that day. Defaults to now; cannot be in the future. A date from before the dataset's knowledge history returns 422 point-in-time-unavailable naming the earliest one, which GET /v1/datasets lists as earliest_as_of.",
                        "schema": {
                            "type": "string",
                            "format": "date"
                        }
                    },
                    {
                        "name": "order",
                        "in": "query",
                        "required": false,
                        "description": "Direction on event_at; ties use ID ascending.",
                        "schema": {
                            "type": "string",
                            "enum": [
                                "asc",
                                "desc"
                            ],
                            "description": "Direction on event_at; ties use ID ascending.",
                            "default": "desc"
                        }
                    },
                    {
                        "name": "limit",
                        "in": "query",
                        "required": false,
                        "description": "Maximum records per page.",
                        "schema": {
                            "type": "integer",
                            "minimum": 1,
                            "maximum": 500,
                            "default": 100
                        }
                    },
                    {
                        "name": "cursor",
                        "in": "query",
                        "required": false,
                        "description": "Opaque cursor, expires after one hour; binds filters, order, resolved as_of, account/key and entitlement. Repeat the original query unchanged.",
                        "schema": {
                            "type": "string",
                            "maxLength": 4096
                        }
                    },
                    {
                        "name": "format",
                        "in": "query",
                        "description": "Response format. csv returns the data rows with a header row, for spreadsheet functions such as IMPORTDATA; nested fields become dotted columns and lists one JSON array cell, the next page cursor is returned in X-Next-Cursor and meta.errors in X-Meta-Errors. A result without rows is the header row alone, listing the documented fields of a row. Default json, or csv when format is omitted and the Accept header ranks text/csv above JSON; a format the Accept header does not admit returns 406 not-acceptable.",
                        "schema": {
                            "type": "string",
                            "enum": [
                                "json",
                                "csv"
                            ]
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Authorized records. An empty collection is a valid result; a dataset with no connected source returns 501, and one with nothing published for your markets 503.",
                        "headers": {
                            "X-RateLimit-Limit": {
                                "$ref": "#/components/headers/X-RateLimit-Limit"
                            },
                            "X-RateLimit-Remaining": {
                                "$ref": "#/components/headers/X-RateLimit-Remaining"
                            },
                            "X-RateLimit-Reset": {
                                "$ref": "#/components/headers/X-RateLimit-Reset"
                            },
                            "Cache-Control": {
                                "description": "Always no-store, private: responses of this endpoint carry no ETag and must not be stored or reused.",
                                "schema": {
                                    "type": "string",
                                    "const": "no-store, private"
                                }
                            },
                            "X-Request-ID": {
                                "$ref": "#/components/headers/X-Request-ID"
                            },
                            "X-Next-Cursor": {
                                "$ref": "#/components/headers/X-Next-Cursor"
                            },
                            "X-Meta-Errors": {
                                "$ref": "#/components/headers/X-Meta-Errors"
                            },
                            "X-Credits-Limit": {
                                "$ref": "#/components/headers/X-Credits-Limit"
                            },
                            "X-Credits-Remaining": {
                                "$ref": "#/components/headers/X-Credits-Remaining"
                            },
                            "X-Credits-Cost": {
                                "$ref": "#/components/headers/X-Credits-Cost"
                            },
                            "X-Concurrency-Limit": {
                                "$ref": "#/components/headers/X-Concurrency-Limit"
                            },
                            "X-Concurrency-Remaining": {
                                "$ref": "#/components/headers/X-Concurrency-Remaining"
                            }
                        },
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "object",
                                    "additionalProperties": false,
                                    "properties": {
                                        "data": {
                                            "type": "array",
                                            "items": {
                                                "$ref": "#/components/schemas/IndicatorValue"
                                            }
                                        },
                                        "meta": {
                                            "$ref": "#/components/schemas/ResponseMeta"
                                        }
                                    },
                                    "required": [
                                        "data",
                                        "meta"
                                    ]
                                },
                                "examples": {
                                    "synthetic": {
                                        "summary": "Synthetic contract example; not production data",
                                        "value": {
                                            "data": [
                                                {
                                                    "id": "record_example_1",
                                                    "instrument_id": "inst_example_aapl",
                                                    "event_at": "2026-09-18T20:00:00Z",
                                                    "indicator": "sma",
                                                    "interval": "1d",
                                                    "session": "regular",
                                                    "adjustment": "raw",
                                                    "parameters": {
                                                        "period": 20,
                                                        "fast_period": 12,
                                                        "slow_period": 26,
                                                        "signal_period": 9
                                                    },
                                                    "output": "value",
                                                    "value": {
                                                        "value": "225.12",
                                                        "unit": "currency",
                                                        "currency_code": "USD"
                                                    }
                                                }
                                            ],
                                            "meta": {
                                                "timezone": "UTC",
                                                "as_of": "2026-11-01T00:00:00Z",
                                                "next_cursor": null,
                                                "coverage": {
                                                    "status": "complete",
                                                    "reason": null
                                                }
                                            }
                                        }
                                    }
                                }
                            },
                            "text/csv": {
                                "schema": {
                                    "type": "string"
                                }
                            }
                        }
                    },
                    "400": {
                        "$ref": "#/components/responses/BadRequest"
                    },
                    "401": {
                        "$ref": "#/components/responses/Unauthorized"
                    },
                    "403": {
                        "$ref": "#/components/responses/Forbidden"
                    },
                    "404": {
                        "$ref": "#/components/responses/NotFound"
                    },
                    "405": {
                        "$ref": "#/components/responses/MethodNotAllowed"
                    },
                    "406": {
                        "$ref": "#/components/responses/NotAcceptable"
                    },
                    "409": {
                        "$ref": "#/components/responses/Conflict"
                    },
                    "413": {
                        "$ref": "#/components/responses/ContentTooLarge"
                    },
                    "414": {
                        "$ref": "#/components/responses/URITooLong"
                    },
                    "415": {
                        "$ref": "#/components/responses/UnsupportedMediaType"
                    },
                    "422": {
                        "$ref": "#/components/responses/UnprocessableContent"
                    },
                    "429": {
                        "$ref": "#/components/responses/TooManyRequests"
                    },
                    "431": {
                        "$ref": "#/components/responses/RequestHeaderFieldsTooLarge"
                    },
                    "500": {
                        "$ref": "#/components/responses/InternalServerError"
                    },
                    "503": {
                        "$ref": "#/components/responses/ServiceUnavailable"
                    }
                },
                "x-query-constraints": [
                    {
                        "rule": "mutually_exclusive",
                        "parameters": [
                            "instrument_ids",
                            "symbols"
                        ]
                    },
                    {
                        "rule": "requires",
                        "parameter": "symbol_at",
                        "required": [
                            "symbols"
                        ]
                    },
                    {
                        "rule": "exactly_one",
                        "parameters": [
                            "instrument_ids",
                            "symbols"
                        ]
                    },
                    {
                        "rule": "less_than",
                        "lower": "from",
                        "upper": "to"
                    }
                ],
                "x-example-query": {
                    "symbols": [
                        "XNAS:AAPL"
                    ],
                    "indicator": "sma",
                    "interval": "1d",
                    "from": "2026-06-01",
                    "to": "2026-09-25"
                },
                "x-contract-family": "research",
                "x-credit-cost": "25 credits per symbol.",
                "x-availability": "available"
            }
        },
        "/v1/economic/series": {
            "get": {
                "operationId": "list_economic_series",
                "summary": "Economic series",
                "tags": [
                    "Economics"
                ],
                "description": "Discover macro, Treasury curves, reference rates, funding/credit spreads, FX reference, commodity and housing series in one catalog. Coverage: US Federal Reserve data (Treasury constant-maturity yields, SOFR, EFFR, OBFR and TGCR with percentiles and volumes, BGCR, SOFR averages and index, Fed target range, IORB, CPI, PCE, labor, inflation expectations, commercial paper); the U.S. Treasury's daily bill rates, extra par curve tenors, real par yields and long-term rates; SONIA, the euro short-term rate (ESTR) and ECB and Bank of England policy rates; US funding spreads; the NY Fed corporate bond market distress index, the Treasury HQM corporate yield curve and CFTC CDS notionals; annual sovereign risk premiums, equity risk premiums, corporate tax rates and CDS spreads by country and default spreads by rating (world.sovereign_default_spread.{rating}); closing benchmark government bond yields of about 60 countries (yields, ID {country}.government_bond.yield.{tenor}); EURIBOR, euro swap and Canadian prime rates; ECB euro reference and Norges Bank exchange rates (fx); World Bank development indicators for about 50 economies and aggregates (ID {country}.wdi.{indicator}, annual); energy, metal and agricultural prices and commodity price indices (commodity); and BIS residential property price indices (real_estate). Each series names its original publisher; country series carry country_code, and aggregates (euro area, world, groups of economies) a null country_code and their region. Money is in currency_code units: commodity prices in US dollars per the unit the name states, exchange rates in units of currency_code per one unit of the named currency. Default order: id ascending. Results are limited to the entitled scope. Data is delivered from validated canonical batches; a connected dataset with nothing published for the key's markets yet returns 503. Access requires the operation capability on the API key.",
                "x-implementation-status": "implemented",
                "x-required-capability": "economic.read",
                "x-time-field": "id",
                "x-exportable": true,
                "parameters": [
                    {
                        "name": "countries",
                        "in": "query",
                        "required": false,
                        "description": "ISO 3166-1 alpha-2 country codes.",
                        "schema": {
                            "type": "array",
                            "minItems": 1,
                            "maxItems": 100,
                            "uniqueItems": true,
                            "items": {
                                "type": "string",
                                "pattern": "^[A-Z]{2}$"
                            }
                        },
                        "style": "form",
                        "explode": false
                    },
                    {
                        "name": "category",
                        "in": "query",
                        "required": false,
                        "description": "Series category.",
                        "schema": {
                            "type": "string",
                            "enum": [
                                "economy",
                                "rates",
                                "yields",
                                "credit",
                                "fx",
                                "commodity",
                                "real_estate"
                            ],
                            "description": "Series category."
                        }
                    },
                    {
                        "name": "q",
                        "in": "query",
                        "required": false,
                        "description": "Case-insensitive series name search. A value that is empty or only whitespace returns 422.",
                        "schema": {
                            "type": "string",
                            "minLength": 1,
                            "maxLength": 200,
                            "pattern": "\\S"
                        }
                    },
                    {
                        "name": "as_of",
                        "in": "query",
                        "required": false,
                        "description": "Knowledge cutoff as a UTC date (YYYY-MM-DD): the response reflects what was known by the end of that day. Defaults to now; cannot be in the future. A date from before the dataset's knowledge history returns 422 point-in-time-unavailable naming the earliest one, which GET /v1/datasets lists as earliest_as_of.",
                        "schema": {
                            "type": "string",
                            "format": "date"
                        }
                    },
                    {
                        "name": "known_from",
                        "in": "query",
                        "required": false,
                        "description": "First UTC date (YYYY-MM-DD, inclusive) on which a revision became known.",
                        "schema": {
                            "type": "string",
                            "format": "date"
                        }
                    },
                    {
                        "name": "known_to",
                        "in": "query",
                        "required": false,
                        "description": "Last UTC date (YYYY-MM-DD, inclusive) on which a revision became known; on or after known_from.",
                        "schema": {
                            "type": "string",
                            "format": "date"
                        }
                    },
                    {
                        "name": "order",
                        "in": "query",
                        "required": false,
                        "description": "Direction on id; ties use ID ascending.",
                        "schema": {
                            "type": "string",
                            "enum": [
                                "asc",
                                "desc"
                            ],
                            "description": "Direction on id; ties use ID ascending.",
                            "default": "asc"
                        }
                    },
                    {
                        "name": "limit",
                        "in": "query",
                        "required": false,
                        "description": "Maximum records per page.",
                        "schema": {
                            "type": "integer",
                            "minimum": 1,
                            "maximum": 500,
                            "default": 100
                        }
                    },
                    {
                        "name": "cursor",
                        "in": "query",
                        "required": false,
                        "description": "Opaque cursor, expires after one hour; binds filters, order, resolved as_of, account/key and entitlement. Repeat the original query unchanged.",
                        "schema": {
                            "type": "string",
                            "maxLength": 4096
                        }
                    },
                    {
                        "name": "format",
                        "in": "query",
                        "description": "Response format. csv returns the data rows with a header row, for spreadsheet functions such as IMPORTDATA; nested fields become dotted columns and lists one JSON array cell, the next page cursor is returned in X-Next-Cursor and meta.errors in X-Meta-Errors. A result without rows is the header row alone, listing the documented fields of a row. Default json, or csv when format is omitted and the Accept header ranks text/csv above JSON; a format the Accept header does not admit returns 406 not-acceptable.",
                        "schema": {
                            "type": "string",
                            "enum": [
                                "json",
                                "csv"
                            ]
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Authorized records. An empty collection is a valid result; a dataset with no connected source returns 501, and one with nothing published for your markets 503.",
                        "headers": {
                            "X-RateLimit-Limit": {
                                "$ref": "#/components/headers/X-RateLimit-Limit"
                            },
                            "X-RateLimit-Remaining": {
                                "$ref": "#/components/headers/X-RateLimit-Remaining"
                            },
                            "X-RateLimit-Reset": {
                                "$ref": "#/components/headers/X-RateLimit-Reset"
                            },
                            "Cache-Control": {
                                "description": "Always no-store, private: responses of this endpoint carry no ETag and must not be stored or reused.",
                                "schema": {
                                    "type": "string",
                                    "const": "no-store, private"
                                }
                            },
                            "X-Request-ID": {
                                "$ref": "#/components/headers/X-Request-ID"
                            },
                            "X-Next-Cursor": {
                                "$ref": "#/components/headers/X-Next-Cursor"
                            },
                            "X-Meta-Errors": {
                                "$ref": "#/components/headers/X-Meta-Errors"
                            },
                            "X-Credits-Limit": {
                                "$ref": "#/components/headers/X-Credits-Limit"
                            },
                            "X-Credits-Remaining": {
                                "$ref": "#/components/headers/X-Credits-Remaining"
                            },
                            "X-Credits-Cost": {
                                "$ref": "#/components/headers/X-Credits-Cost"
                            },
                            "X-Concurrency-Limit": {
                                "$ref": "#/components/headers/X-Concurrency-Limit"
                            },
                            "X-Concurrency-Remaining": {
                                "$ref": "#/components/headers/X-Concurrency-Remaining"
                            }
                        },
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "object",
                                    "additionalProperties": false,
                                    "properties": {
                                        "data": {
                                            "type": "array",
                                            "items": {
                                                "$ref": "#/components/schemas/EconomicSeries"
                                            }
                                        },
                                        "meta": {
                                            "$ref": "#/components/schemas/ResponseMeta"
                                        }
                                    },
                                    "required": [
                                        "data",
                                        "meta"
                                    ]
                                },
                                "examples": {
                                    "synthetic": {
                                        "summary": "Synthetic contract example; not production data",
                                        "value": {
                                            "data": [
                                                {
                                                    "id": "us.cpi.all_items",
                                                    "name": "US consumer price index",
                                                    "category": "economy",
                                                    "country_code": "US",
                                                    "region": "example",
                                                    "frequency": "daily",
                                                    "unit": "index_points",
                                                    "currency_code": "USD",
                                                    "seasonal_adjustment": "adjusted",
                                                    "maturity": "P10Y",
                                                    "publisher": "U.S. Bureau of Labor Statistics"
                                                }
                                            ],
                                            "meta": {
                                                "timezone": "UTC",
                                                "as_of": "2026-11-01T00:00:00Z",
                                                "next_cursor": null,
                                                "coverage": {
                                                    "status": "complete",
                                                    "reason": null
                                                }
                                            }
                                        }
                                    }
                                }
                            },
                            "text/csv": {
                                "schema": {
                                    "type": "string"
                                }
                            }
                        }
                    },
                    "400": {
                        "$ref": "#/components/responses/BadRequest"
                    },
                    "401": {
                        "$ref": "#/components/responses/Unauthorized"
                    },
                    "403": {
                        "$ref": "#/components/responses/Forbidden"
                    },
                    "404": {
                        "$ref": "#/components/responses/NotFound"
                    },
                    "405": {
                        "$ref": "#/components/responses/MethodNotAllowed"
                    },
                    "406": {
                        "$ref": "#/components/responses/NotAcceptable"
                    },
                    "409": {
                        "$ref": "#/components/responses/Conflict"
                    },
                    "413": {
                        "$ref": "#/components/responses/ContentTooLarge"
                    },
                    "414": {
                        "$ref": "#/components/responses/URITooLong"
                    },
                    "415": {
                        "$ref": "#/components/responses/UnsupportedMediaType"
                    },
                    "422": {
                        "$ref": "#/components/responses/UnprocessableContent"
                    },
                    "429": {
                        "$ref": "#/components/responses/TooManyRequests"
                    },
                    "431": {
                        "$ref": "#/components/responses/RequestHeaderFieldsTooLarge"
                    },
                    "500": {
                        "$ref": "#/components/responses/InternalServerError"
                    },
                    "503": {
                        "$ref": "#/components/responses/ServiceUnavailable"
                    }
                },
                "x-query-constraints": [
                    {
                        "rule": "less_than",
                        "lower": "known_from",
                        "upper": "known_to"
                    }
                ],
                "x-example-query": [],
                "x-contract-family": "research",
                "x-credit-cost": "5 credits per request.",
                "x-availability": "available"
            }
        },
        "/v1/economic/observations": {
            "get": {
                "operationId": "list_economic_observations",
                "summary": "Economic observations",
                "tags": [
                    "Economics"
                ],
                "description": "Revision-aware series observations. as_of selects the latest revision knowable at the cutoff for each series/date. All maturities of a curve are queried as a series set. observation_date is the day of a daily or weekly value and the first day of the month, quarter or year a monthly, quarterly or annual value describes, which period_start and period_end bound. Rates, yields and spreads are in percent (basis-point spreads divided by 100); published_at is the source's release instant where it states one (CFTC swap notionals) and null otherwise. Daily series are refreshed each weekday, World Bank, BIS property and sovereign risk series about monthly. Default order: observation_date ascending, id ascending. Series selection is required. Data is delivered from validated canonical batches; a connected dataset with nothing published for the key's markets yet returns 503. Access requires the operation capability on the API key.",
                "x-implementation-status": "implemented",
                "x-required-capability": "economic.read",
                "x-time-field": "observation_date",
                "x-exportable": true,
                "parameters": [
                    {
                        "name": "series_ids",
                        "in": "query",
                        "required": true,
                        "description": "Series IDs from economic/series.",
                        "schema": {
                            "type": "array",
                            "minItems": 1,
                            "maxItems": 100,
                            "uniqueItems": true,
                            "items": {
                                "minLength": 1,
                                "maxLength": 128,
                                "type": "string",
                                "description": "Series ID."
                            }
                        },
                        "style": "form",
                        "explode": false,
                        "example": [
                            "us.cpi.all_items"
                        ]
                    },
                    {
                        "name": "from",
                        "in": "query",
                        "required": false,
                        "description": "Inclusive lower bound on observation_date.",
                        "schema": {
                            "type": "string",
                            "format": "date"
                        }
                    },
                    {
                        "name": "to",
                        "in": "query",
                        "required": false,
                        "description": "Inclusive upper bound on observation_date; must be on or after from, so from equal to to selects one day.",
                        "schema": {
                            "type": "string",
                            "format": "date"
                        }
                    },
                    {
                        "name": "as_of",
                        "in": "query",
                        "required": false,
                        "description": "Knowledge cutoff as a UTC date (YYYY-MM-DD): the response reflects what was known by the end of that day. Defaults to now; cannot be in the future. A date from before the dataset's knowledge history returns 422 point-in-time-unavailable naming the earliest one, which GET /v1/datasets lists as earliest_as_of.",
                        "schema": {
                            "type": "string",
                            "format": "date"
                        }
                    },
                    {
                        "name": "known_from",
                        "in": "query",
                        "required": false,
                        "description": "First UTC date (YYYY-MM-DD, inclusive) on which a revision became known.",
                        "schema": {
                            "type": "string",
                            "format": "date"
                        }
                    },
                    {
                        "name": "known_to",
                        "in": "query",
                        "required": false,
                        "description": "Last UTC date (YYYY-MM-DD, inclusive) on which a revision became known; on or after known_from.",
                        "schema": {
                            "type": "string",
                            "format": "date"
                        }
                    },
                    {
                        "name": "order",
                        "in": "query",
                        "required": false,
                        "description": "Direction on observation_date; ties use ID ascending.",
                        "schema": {
                            "type": "string",
                            "enum": [
                                "asc",
                                "desc"
                            ],
                            "description": "Direction on observation_date; ties use ID ascending.",
                            "default": "asc"
                        }
                    },
                    {
                        "name": "limit",
                        "in": "query",
                        "required": false,
                        "description": "Maximum records per page.",
                        "schema": {
                            "type": "integer",
                            "minimum": 1,
                            "maximum": 500,
                            "default": 100
                        }
                    },
                    {
                        "name": "cursor",
                        "in": "query",
                        "required": false,
                        "description": "Opaque cursor, expires after one hour; binds filters, order, resolved as_of, account/key and entitlement. Repeat the original query unchanged.",
                        "schema": {
                            "type": "string",
                            "maxLength": 4096
                        }
                    },
                    {
                        "name": "format",
                        "in": "query",
                        "description": "Response format. csv returns the data rows with a header row, for spreadsheet functions such as IMPORTDATA; nested fields become dotted columns and lists one JSON array cell, the next page cursor is returned in X-Next-Cursor and meta.errors in X-Meta-Errors. A result without rows is the header row alone, listing the documented fields of a row. Default json, or csv when format is omitted and the Accept header ranks text/csv above JSON; a format the Accept header does not admit returns 406 not-acceptable.",
                        "schema": {
                            "type": "string",
                            "enum": [
                                "json",
                                "csv"
                            ]
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Authorized records. An empty collection is a valid result; a dataset with no connected source returns 501, and one with nothing published for your markets 503.",
                        "headers": {
                            "X-RateLimit-Limit": {
                                "$ref": "#/components/headers/X-RateLimit-Limit"
                            },
                            "X-RateLimit-Remaining": {
                                "$ref": "#/components/headers/X-RateLimit-Remaining"
                            },
                            "X-RateLimit-Reset": {
                                "$ref": "#/components/headers/X-RateLimit-Reset"
                            },
                            "Cache-Control": {
                                "description": "Always no-store, private: responses of this endpoint carry no ETag and must not be stored or reused.",
                                "schema": {
                                    "type": "string",
                                    "const": "no-store, private"
                                }
                            },
                            "X-Request-ID": {
                                "$ref": "#/components/headers/X-Request-ID"
                            },
                            "X-Next-Cursor": {
                                "$ref": "#/components/headers/X-Next-Cursor"
                            },
                            "X-Meta-Errors": {
                                "$ref": "#/components/headers/X-Meta-Errors"
                            },
                            "X-Credits-Limit": {
                                "$ref": "#/components/headers/X-Credits-Limit"
                            },
                            "X-Credits-Remaining": {
                                "$ref": "#/components/headers/X-Credits-Remaining"
                            },
                            "X-Credits-Cost": {
                                "$ref": "#/components/headers/X-Credits-Cost"
                            },
                            "X-Concurrency-Limit": {
                                "$ref": "#/components/headers/X-Concurrency-Limit"
                            },
                            "X-Concurrency-Remaining": {
                                "$ref": "#/components/headers/X-Concurrency-Remaining"
                            }
                        },
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "object",
                                    "additionalProperties": false,
                                    "properties": {
                                        "data": {
                                            "type": "array",
                                            "items": {
                                                "$ref": "#/components/schemas/EconomicObservation"
                                            }
                                        },
                                        "meta": {
                                            "$ref": "#/components/schemas/ResponseMeta"
                                        }
                                    },
                                    "required": [
                                        "data",
                                        "meta"
                                    ]
                                },
                                "examples": {
                                    "synthetic": {
                                        "summary": "Synthetic contract example; not production data",
                                        "value": {
                                            "data": [
                                                {
                                                    "id": "record_example_1",
                                                    "series_id": "us.cpi.all_items",
                                                    "observation_date": "2026-09-18",
                                                    "period_start": "2026-09-18",
                                                    "period_end": "2026-09-18",
                                                    "value": {
                                                        "value": "315.25",
                                                        "unit": "index_points",
                                                        "currency_code": null
                                                    },
                                                    "published_at": "2026-09-18T20:00:00Z",
                                                    "status": "preliminary"
                                                }
                                            ],
                                            "meta": {
                                                "timezone": "UTC",
                                                "as_of": "2026-11-01T00:00:00Z",
                                                "next_cursor": null,
                                                "coverage": {
                                                    "status": "complete",
                                                    "reason": null
                                                }
                                            }
                                        }
                                    }
                                }
                            },
                            "text/csv": {
                                "schema": {
                                    "type": "string"
                                }
                            }
                        }
                    },
                    "400": {
                        "$ref": "#/components/responses/BadRequest"
                    },
                    "401": {
                        "$ref": "#/components/responses/Unauthorized"
                    },
                    "403": {
                        "$ref": "#/components/responses/Forbidden"
                    },
                    "404": {
                        "$ref": "#/components/responses/NotFound"
                    },
                    "405": {
                        "$ref": "#/components/responses/MethodNotAllowed"
                    },
                    "406": {
                        "$ref": "#/components/responses/NotAcceptable"
                    },
                    "409": {
                        "$ref": "#/components/responses/Conflict"
                    },
                    "413": {
                        "$ref": "#/components/responses/ContentTooLarge"
                    },
                    "414": {
                        "$ref": "#/components/responses/URITooLong"
                    },
                    "415": {
                        "$ref": "#/components/responses/UnsupportedMediaType"
                    },
                    "422": {
                        "$ref": "#/components/responses/UnprocessableContent"
                    },
                    "429": {
                        "$ref": "#/components/responses/TooManyRequests"
                    },
                    "431": {
                        "$ref": "#/components/responses/RequestHeaderFieldsTooLarge"
                    },
                    "500": {
                        "$ref": "#/components/responses/InternalServerError"
                    },
                    "503": {
                        "$ref": "#/components/responses/ServiceUnavailable"
                    }
                },
                "x-query-constraints": [
                    {
                        "rule": "less_than",
                        "lower": "from",
                        "upper": "to"
                    },
                    {
                        "rule": "less_than",
                        "lower": "known_from",
                        "upper": "known_to"
                    }
                ],
                "x-example-query": {
                    "series_ids": [
                        "us.cpi.all_items"
                    ]
                },
                "x-contract-family": "research",
                "x-credit-cost": "5 credits per series.",
                "x-availability": "available"
            }
        },
        "/v1/economic/events": {
            "get": {
                "operationId": "list_economic_events",
                "summary": "Economic calendar",
                "tags": [
                    "Economics"
                ],
                "description": "Scheduled and historical economic releases with their actual, forecast and previous values. scheduled_at is the scheduled instant in UTC, null for an entry with no time of day; release_date is its UTC date. The connected source does not report the instant a figure was actually released (released_at), a revised previous value, an importance rating or measurement units, so those stay null or unknown; read the release name for the unit. Public holidays the source calendar lists are not releases and are left out. History comes from the source calendar, which begins in 2020, and is backfilled from the present backwards, so it can start later than 2020 while that runs; GET /v1/datasets/economic.events/coverage reports the current history_from and history_to. Upcoming releases appear about seven days ahead. series_id is null on every event: the calendar source links no release to a series. Default order: release_date ascending, id ascending. Omitting entity selectors returns the entitled universe; explicit unauthorized selectors return 403. Data is delivered from validated canonical batches; a connected dataset with nothing published for the key's markets yet returns 503. Access requires the operation capability on the API key.",
                "x-implementation-status": "implemented",
                "x-required-capability": "economic.read",
                "x-time-field": "release_date",
                "x-exportable": true,
                "parameters": [
                    {
                        "name": "countries",
                        "in": "query",
                        "required": false,
                        "description": "ISO 3166-1 alpha-2 country codes.",
                        "schema": {
                            "type": "array",
                            "minItems": 1,
                            "maxItems": 100,
                            "uniqueItems": true,
                            "items": {
                                "type": "string",
                                "pattern": "^[A-Z]{2}$"
                            }
                        },
                        "style": "form",
                        "explode": false
                    },
                    {
                        "name": "series_ids",
                        "in": "query",
                        "required": false,
                        "description": "Associated economic series. Events are not linked to series yet (series_id is null), so this filter matches none.",
                        "schema": {
                            "type": "array",
                            "minItems": 1,
                            "maxItems": 100,
                            "uniqueItems": true,
                            "items": {
                                "minLength": 1,
                                "maxLength": 128,
                                "type": "string",
                                "description": "Series ID."
                            }
                        },
                        "style": "form",
                        "explode": false
                    },
                    {
                        "name": "from",
                        "in": "query",
                        "required": false,
                        "description": "Inclusive lower bound on release_date.",
                        "schema": {
                            "type": "string",
                            "format": "date"
                        },
                        "example": "2026-09-01"
                    },
                    {
                        "name": "to",
                        "in": "query",
                        "required": false,
                        "description": "Inclusive upper bound on release_date; must be on or after from, so from equal to to selects one day.",
                        "schema": {
                            "type": "string",
                            "format": "date"
                        },
                        "example": "2026-09-25"
                    },
                    {
                        "name": "as_of",
                        "in": "query",
                        "required": false,
                        "description": "Knowledge cutoff as a UTC date (YYYY-MM-DD): the response reflects what was known by the end of that day. Defaults to now; cannot be in the future. A date from before the dataset's knowledge history returns 422 point-in-time-unavailable naming the earliest one, which GET /v1/datasets lists as earliest_as_of.",
                        "schema": {
                            "type": "string",
                            "format": "date"
                        }
                    },
                    {
                        "name": "known_from",
                        "in": "query",
                        "required": false,
                        "description": "First UTC date (YYYY-MM-DD, inclusive) on which a revision became known.",
                        "schema": {
                            "type": "string",
                            "format": "date"
                        }
                    },
                    {
                        "name": "known_to",
                        "in": "query",
                        "required": false,
                        "description": "Last UTC date (YYYY-MM-DD, inclusive) on which a revision became known; on or after known_from.",
                        "schema": {
                            "type": "string",
                            "format": "date"
                        }
                    },
                    {
                        "name": "order",
                        "in": "query",
                        "required": false,
                        "description": "Direction on release_date; ties use ID ascending.",
                        "schema": {
                            "type": "string",
                            "enum": [
                                "asc",
                                "desc"
                            ],
                            "description": "Direction on release_date; ties use ID ascending.",
                            "default": "asc"
                        }
                    },
                    {
                        "name": "limit",
                        "in": "query",
                        "required": false,
                        "description": "Maximum records per page.",
                        "schema": {
                            "type": "integer",
                            "minimum": 1,
                            "maximum": 500,
                            "default": 100
                        }
                    },
                    {
                        "name": "cursor",
                        "in": "query",
                        "required": false,
                        "description": "Opaque cursor, expires after one hour; binds filters, order, resolved as_of, account/key and entitlement. Repeat the original query unchanged.",
                        "schema": {
                            "type": "string",
                            "maxLength": 4096
                        }
                    },
                    {
                        "name": "format",
                        "in": "query",
                        "description": "Response format. csv returns the data rows with a header row, for spreadsheet functions such as IMPORTDATA; nested fields become dotted columns and lists one JSON array cell, the next page cursor is returned in X-Next-Cursor and meta.errors in X-Meta-Errors. A result without rows is the header row alone, listing the documented fields of a row. Default json, or csv when format is omitted and the Accept header ranks text/csv above JSON; a format the Accept header does not admit returns 406 not-acceptable.",
                        "schema": {
                            "type": "string",
                            "enum": [
                                "json",
                                "csv"
                            ]
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Authorized records. An empty collection is a valid result; a dataset with no connected source returns 501, and one with nothing published for your markets 503.",
                        "headers": {
                            "X-RateLimit-Limit": {
                                "$ref": "#/components/headers/X-RateLimit-Limit"
                            },
                            "X-RateLimit-Remaining": {
                                "$ref": "#/components/headers/X-RateLimit-Remaining"
                            },
                            "X-RateLimit-Reset": {
                                "$ref": "#/components/headers/X-RateLimit-Reset"
                            },
                            "Cache-Control": {
                                "description": "Always no-store, private: responses of this endpoint carry no ETag and must not be stored or reused.",
                                "schema": {
                                    "type": "string",
                                    "const": "no-store, private"
                                }
                            },
                            "X-Request-ID": {
                                "$ref": "#/components/headers/X-Request-ID"
                            },
                            "X-Next-Cursor": {
                                "$ref": "#/components/headers/X-Next-Cursor"
                            },
                            "X-Meta-Errors": {
                                "$ref": "#/components/headers/X-Meta-Errors"
                            },
                            "X-Credits-Limit": {
                                "$ref": "#/components/headers/X-Credits-Limit"
                            },
                            "X-Credits-Remaining": {
                                "$ref": "#/components/headers/X-Credits-Remaining"
                            },
                            "X-Credits-Cost": {
                                "$ref": "#/components/headers/X-Credits-Cost"
                            },
                            "X-Concurrency-Limit": {
                                "$ref": "#/components/headers/X-Concurrency-Limit"
                            },
                            "X-Concurrency-Remaining": {
                                "$ref": "#/components/headers/X-Concurrency-Remaining"
                            }
                        },
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "object",
                                    "additionalProperties": false,
                                    "properties": {
                                        "data": {
                                            "type": "array",
                                            "items": {
                                                "$ref": "#/components/schemas/EconomicEvent"
                                            }
                                        },
                                        "meta": {
                                            "$ref": "#/components/schemas/ResponseMeta"
                                        }
                                    },
                                    "required": [
                                        "data",
                                        "meta"
                                    ]
                                },
                                "examples": {
                                    "synthetic": {
                                        "summary": "Synthetic contract example; not production data",
                                        "value": {
                                            "data": [
                                                {
                                                    "id": "record_example_1",
                                                    "series_id": "us.cpi.all_items",
                                                    "name": "Consumer price index",
                                                    "country_code": "US",
                                                    "release_date": "2026-09-18",
                                                    "scheduled_at": "2026-09-18T20:00:00Z",
                                                    "released_at": "2026-09-18T20:00:00Z",
                                                    "reference_period": "2026-08",
                                                    "importance": "low",
                                                    "actual": {
                                                        "value": "315.25",
                                                        "unit": "index_points",
                                                        "currency_code": null
                                                    },
                                                    "forecast": {
                                                        "value": "315.25",
                                                        "unit": "index_points",
                                                        "currency_code": null
                                                    },
                                                    "previous": {
                                                        "value": "315.25",
                                                        "unit": "index_points",
                                                        "currency_code": null
                                                    },
                                                    "revised_previous": {
                                                        "value": "315.25",
                                                        "unit": "index_points",
                                                        "currency_code": null
                                                    },
                                                    "status": "released"
                                                }
                                            ],
                                            "meta": {
                                                "timezone": "UTC",
                                                "as_of": "2026-11-01T00:00:00Z",
                                                "next_cursor": null,
                                                "coverage": {
                                                    "status": "complete",
                                                    "reason": null
                                                }
                                            }
                                        }
                                    }
                                }
                            },
                            "text/csv": {
                                "schema": {
                                    "type": "string"
                                }
                            }
                        }
                    },
                    "400": {
                        "$ref": "#/components/responses/BadRequest"
                    },
                    "401": {
                        "$ref": "#/components/responses/Unauthorized"
                    },
                    "403": {
                        "$ref": "#/components/responses/Forbidden"
                    },
                    "404": {
                        "$ref": "#/components/responses/NotFound"
                    },
                    "405": {
                        "$ref": "#/components/responses/MethodNotAllowed"
                    },
                    "406": {
                        "$ref": "#/components/responses/NotAcceptable"
                    },
                    "409": {
                        "$ref": "#/components/responses/Conflict"
                    },
                    "413": {
                        "$ref": "#/components/responses/ContentTooLarge"
                    },
                    "414": {
                        "$ref": "#/components/responses/URITooLong"
                    },
                    "415": {
                        "$ref": "#/components/responses/UnsupportedMediaType"
                    },
                    "422": {
                        "$ref": "#/components/responses/UnprocessableContent"
                    },
                    "429": {
                        "$ref": "#/components/responses/TooManyRequests"
                    },
                    "431": {
                        "$ref": "#/components/responses/RequestHeaderFieldsTooLarge"
                    },
                    "500": {
                        "$ref": "#/components/responses/InternalServerError"
                    },
                    "503": {
                        "$ref": "#/components/responses/ServiceUnavailable"
                    }
                },
                "x-query-constraints": [
                    {
                        "rule": "less_than",
                        "lower": "from",
                        "upper": "to"
                    },
                    {
                        "rule": "less_than",
                        "lower": "known_from",
                        "upper": "known_to"
                    }
                ],
                "x-example-query": {
                    "from": "2026-09-01",
                    "to": "2026-09-25"
                },
                "x-contract-family": "research",
                "x-credit-cost": "5 credits per request.",
                "x-availability": "available"
            }
        },
        "/v1/ipos": {
            "get": {
                "operationId": "list_ipos",
                "summary": "IPOs",
                "tags": [
                    "Company events"
                ],
                "description": "Upcoming and historical initial public offerings on US exchanges (Nasdaq, NYSE, NYSE American, NYSE Arca, Cboe BZX), including issuers without a listed instrument yet. History starts in 2008. The connected sources date few offerings ahead of time, so most appear once they price or list, and only a handful are listed as expected at any time; an offering without a date is left out until it has one. OTC listings are not covered. Each offering keeps its id as it moves from expected to priced to listed, postponed or withdrawn; a postponed or withdrawn offering keeps the listing_date it was expected on. instrument_id and company_id are set once the offering has listed and its listing is in OHLC; expected_symbol is the source ticker on the expected exchange. Refreshed daily at 07:40 New York time. Default order: listing_date ascending, id ascending. Results are limited to the entitled scope. Data is delivered from validated canonical batches; a connected dataset with nothing published for the key's markets yet returns 503. Access requires the operation capability on the API key.",
                "x-implementation-status": "implemented",
                "x-required-capability": "ipos.read",
                "x-time-field": "listing_date",
                "x-exportable": true,
                "parameters": [
                    {
                        "name": "from",
                        "in": "query",
                        "required": false,
                        "description": "Inclusive lower bound on listing_date.",
                        "schema": {
                            "type": "string",
                            "format": "date"
                        },
                        "example": "2026-09-01"
                    },
                    {
                        "name": "to",
                        "in": "query",
                        "required": false,
                        "description": "Inclusive upper bound on listing_date; must be on or after from, so from equal to to selects one day.",
                        "schema": {
                            "type": "string",
                            "format": "date"
                        },
                        "example": "2026-09-25"
                    },
                    {
                        "name": "exchanges",
                        "in": "query",
                        "required": false,
                        "description": "Expected listing MICs. A malformed or repeated code returns 422 invalid-exchanges, a MIC the API does not serve 404 exchange-not-found, and one outside the key's markets 403 market-not-entitled.",
                        "schema": {
                            "type": "array",
                            "minItems": 1,
                            "maxItems": 100,
                            "uniqueItems": true,
                            "items": {
                                "type": "string",
                                "pattern": "^(?:[A-Z0-9]{4}|CRYPTO|FOREX|INDEX)$"
                            }
                        },
                        "style": "form",
                        "explode": false
                    },
                    {
                        "name": "status",
                        "in": "query",
                        "required": false,
                        "description": "Offering status.",
                        "schema": {
                            "type": "string",
                            "enum": [
                                "expected",
                                "priced",
                                "listed",
                                "postponed",
                                "withdrawn"
                            ],
                            "description": "Offering status."
                        }
                    },
                    {
                        "name": "as_of",
                        "in": "query",
                        "required": false,
                        "description": "Knowledge cutoff as a UTC date (YYYY-MM-DD): the response reflects what was known by the end of that day. Defaults to now; cannot be in the future. A date from before the dataset's knowledge history returns 422 point-in-time-unavailable naming the earliest one, which GET /v1/datasets lists as earliest_as_of.",
                        "schema": {
                            "type": "string",
                            "format": "date"
                        }
                    },
                    {
                        "name": "known_from",
                        "in": "query",
                        "required": false,
                        "description": "First UTC date (YYYY-MM-DD, inclusive) on which a revision became known.",
                        "schema": {
                            "type": "string",
                            "format": "date"
                        }
                    },
                    {
                        "name": "known_to",
                        "in": "query",
                        "required": false,
                        "description": "Last UTC date (YYYY-MM-DD, inclusive) on which a revision became known; on or after known_from.",
                        "schema": {
                            "type": "string",
                            "format": "date"
                        }
                    },
                    {
                        "name": "order",
                        "in": "query",
                        "required": false,
                        "description": "Direction on listing_date; ties use ID ascending.",
                        "schema": {
                            "type": "string",
                            "enum": [
                                "asc",
                                "desc"
                            ],
                            "description": "Direction on listing_date; ties use ID ascending.",
                            "default": "asc"
                        }
                    },
                    {
                        "name": "limit",
                        "in": "query",
                        "required": false,
                        "description": "Maximum records per page.",
                        "schema": {
                            "type": "integer",
                            "minimum": 1,
                            "maximum": 500,
                            "default": 100
                        }
                    },
                    {
                        "name": "cursor",
                        "in": "query",
                        "required": false,
                        "description": "Opaque cursor, expires after one hour; binds filters, order, resolved as_of, account/key and entitlement. Repeat the original query unchanged.",
                        "schema": {
                            "type": "string",
                            "maxLength": 4096
                        }
                    },
                    {
                        "name": "format",
                        "in": "query",
                        "description": "Response format. csv returns the data rows with a header row, for spreadsheet functions such as IMPORTDATA; nested fields become dotted columns and lists one JSON array cell, the next page cursor is returned in X-Next-Cursor and meta.errors in X-Meta-Errors. A result without rows is the header row alone, listing the documented fields of a row. Default json, or csv when format is omitted and the Accept header ranks text/csv above JSON; a format the Accept header does not admit returns 406 not-acceptable.",
                        "schema": {
                            "type": "string",
                            "enum": [
                                "json",
                                "csv"
                            ]
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Authorized records. An empty collection is a valid result; a dataset with no connected source returns 501, and one with nothing published for your markets 503.",
                        "headers": {
                            "X-RateLimit-Limit": {
                                "$ref": "#/components/headers/X-RateLimit-Limit"
                            },
                            "X-RateLimit-Remaining": {
                                "$ref": "#/components/headers/X-RateLimit-Remaining"
                            },
                            "X-RateLimit-Reset": {
                                "$ref": "#/components/headers/X-RateLimit-Reset"
                            },
                            "Cache-Control": {
                                "description": "Always no-store, private: responses of this endpoint carry no ETag and must not be stored or reused.",
                                "schema": {
                                    "type": "string",
                                    "const": "no-store, private"
                                }
                            },
                            "X-Request-ID": {
                                "$ref": "#/components/headers/X-Request-ID"
                            },
                            "X-Next-Cursor": {
                                "$ref": "#/components/headers/X-Next-Cursor"
                            },
                            "X-Meta-Errors": {
                                "$ref": "#/components/headers/X-Meta-Errors"
                            },
                            "X-Credits-Limit": {
                                "$ref": "#/components/headers/X-Credits-Limit"
                            },
                            "X-Credits-Remaining": {
                                "$ref": "#/components/headers/X-Credits-Remaining"
                            },
                            "X-Credits-Cost": {
                                "$ref": "#/components/headers/X-Credits-Cost"
                            },
                            "X-Concurrency-Limit": {
                                "$ref": "#/components/headers/X-Concurrency-Limit"
                            },
                            "X-Concurrency-Remaining": {
                                "$ref": "#/components/headers/X-Concurrency-Remaining"
                            }
                        },
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "object",
                                    "additionalProperties": false,
                                    "properties": {
                                        "data": {
                                            "type": "array",
                                            "items": {
                                                "$ref": "#/components/schemas/Ipo"
                                            }
                                        },
                                        "meta": {
                                            "$ref": "#/components/schemas/ResponseMeta"
                                        }
                                    },
                                    "required": [
                                        "data",
                                        "meta"
                                    ]
                                },
                                "examples": {
                                    "synthetic": {
                                        "summary": "Synthetic contract example; not production data",
                                        "value": {
                                            "data": [
                                                {
                                                    "id": "record_example_1",
                                                    "company_id": "company_example_apple",
                                                    "company_name": "example",
                                                    "instrument_id": "inst_example_aapl",
                                                    "expected_symbol": "XNAS:EXAMPLE",
                                                    "exchange_mic": "XNAS",
                                                    "listing_date": "2026-09-18",
                                                    "status": "expected",
                                                    "price_low": {
                                                        "amount": "227.63",
                                                        "currency_code": "USD"
                                                    },
                                                    "price_high": {
                                                        "amount": "227.63",
                                                        "currency_code": "USD"
                                                    },
                                                    "offer_price": {
                                                        "amount": "227.63",
                                                        "currency_code": "USD"
                                                    },
                                                    "shares_offered": "10000000"
                                                }
                                            ],
                                            "meta": {
                                                "timezone": "UTC",
                                                "as_of": "2026-11-01T00:00:00Z",
                                                "next_cursor": null,
                                                "coverage": {
                                                    "status": "complete",
                                                    "reason": null
                                                }
                                            }
                                        }
                                    }
                                }
                            },
                            "text/csv": {
                                "schema": {
                                    "type": "string"
                                }
                            }
                        }
                    },
                    "400": {
                        "$ref": "#/components/responses/BadRequest"
                    },
                    "401": {
                        "$ref": "#/components/responses/Unauthorized"
                    },
                    "403": {
                        "$ref": "#/components/responses/Forbidden"
                    },
                    "404": {
                        "$ref": "#/components/responses/NotFound"
                    },
                    "405": {
                        "$ref": "#/components/responses/MethodNotAllowed"
                    },
                    "406": {
                        "$ref": "#/components/responses/NotAcceptable"
                    },
                    "409": {
                        "$ref": "#/components/responses/Conflict"
                    },
                    "413": {
                        "$ref": "#/components/responses/ContentTooLarge"
                    },
                    "414": {
                        "$ref": "#/components/responses/URITooLong"
                    },
                    "415": {
                        "$ref": "#/components/responses/UnsupportedMediaType"
                    },
                    "422": {
                        "$ref": "#/components/responses/UnprocessableContent"
                    },
                    "429": {
                        "$ref": "#/components/responses/TooManyRequests"
                    },
                    "431": {
                        "$ref": "#/components/responses/RequestHeaderFieldsTooLarge"
                    },
                    "500": {
                        "$ref": "#/components/responses/InternalServerError"
                    },
                    "503": {
                        "$ref": "#/components/responses/ServiceUnavailable"
                    }
                },
                "x-query-constraints": [
                    {
                        "rule": "less_than",
                        "lower": "from",
                        "upper": "to"
                    },
                    {
                        "rule": "less_than",
                        "lower": "known_from",
                        "upper": "known_to"
                    }
                ],
                "x-example-query": {
                    "from": "2026-09-01",
                    "to": "2026-09-25"
                },
                "x-contract-family": "research",
                "x-credit-cost": "5 credits per request.",
                "x-availability": "available"
            }
        },
        "/v1/filings/{filing_id}/sections": {
            "get": {
                "operationId": "list_filings_filing_id_sections",
                "summary": "Filing sections",
                "tags": [
                    "Company data"
                ],
                "description": "Narrative text of an existing filing: Item 1 Business, Item 1A Risk Factors and Item 7 MD&A of 10-K filings, and each item of 8-K filings, amendments included. Other forms and other sections are not covered. Sections attach to filings in /v1/filings by accession number and are published the morning after the filing date; history covers about two years of filings. A section longer than 256 KiB is cut and marked truncated. An accession number with no sections, whether the filing is covered, not covered or not indexed, returns 200 data: []. Default order: id ascending. Results are limited to the entitled scope. Data is delivered from validated canonical batches; a connected dataset with nothing published for the key's markets yet returns 503. Access requires the operation capability on the API key.",
                "x-implementation-status": "implemented",
                "x-required-capability": "filings.read",
                "x-time-field": "id",
                "x-exportable": true,
                "parameters": [
                    {
                        "name": "filing_id",
                        "in": "path",
                        "required": true,
                        "description": "SEC accession number, as accession_number in /v1/filings.",
                        "schema": {
                            "type": "string",
                            "pattern": "^[0-9]{10}-[0-9]{2}-[0-9]{6}$"
                        },
                        "example": "0000320193-24-000123"
                    },
                    {
                        "name": "as_of",
                        "in": "query",
                        "required": false,
                        "description": "Knowledge cutoff as a UTC date (YYYY-MM-DD): the response reflects what was known by the end of that day. Defaults to now; cannot be in the future. A date from before the dataset's knowledge history returns 422 point-in-time-unavailable naming the earliest one, which GET /v1/datasets lists as earliest_as_of.",
                        "schema": {
                            "type": "string",
                            "format": "date"
                        }
                    },
                    {
                        "name": "known_from",
                        "in": "query",
                        "required": false,
                        "description": "First UTC date (YYYY-MM-DD, inclusive) on which a revision became known.",
                        "schema": {
                            "type": "string",
                            "format": "date"
                        }
                    },
                    {
                        "name": "known_to",
                        "in": "query",
                        "required": false,
                        "description": "Last UTC date (YYYY-MM-DD, inclusive) on which a revision became known; on or after known_from.",
                        "schema": {
                            "type": "string",
                            "format": "date"
                        }
                    },
                    {
                        "name": "order",
                        "in": "query",
                        "required": false,
                        "description": "Direction on id; ties use ID ascending.",
                        "schema": {
                            "type": "string",
                            "enum": [
                                "asc",
                                "desc"
                            ],
                            "description": "Direction on id; ties use ID ascending.",
                            "default": "asc"
                        }
                    },
                    {
                        "name": "limit",
                        "in": "query",
                        "required": false,
                        "description": "Maximum records per page.",
                        "schema": {
                            "type": "integer",
                            "minimum": 1,
                            "maximum": 500,
                            "default": 100
                        }
                    },
                    {
                        "name": "cursor",
                        "in": "query",
                        "required": false,
                        "description": "Opaque cursor, expires after one hour; binds filters, order, resolved as_of, account/key and entitlement. Repeat the original query unchanged.",
                        "schema": {
                            "type": "string",
                            "maxLength": 4096
                        }
                    },
                    {
                        "name": "format",
                        "in": "query",
                        "description": "Response format. csv returns the data rows with a header row, for spreadsheet functions such as IMPORTDATA; nested fields become dotted columns and lists one JSON array cell, the next page cursor is returned in X-Next-Cursor and meta.errors in X-Meta-Errors. A result without rows is the header row alone, listing the documented fields of a row. Default json, or csv when format is omitted and the Accept header ranks text/csv above JSON; a format the Accept header does not admit returns 406 not-acceptable.",
                        "schema": {
                            "type": "string",
                            "enum": [
                                "json",
                                "csv"
                            ]
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Authorized records. An empty collection is a valid result; a dataset with no connected source returns 501, and one with nothing published for your markets 503.",
                        "headers": {
                            "X-RateLimit-Limit": {
                                "$ref": "#/components/headers/X-RateLimit-Limit"
                            },
                            "X-RateLimit-Remaining": {
                                "$ref": "#/components/headers/X-RateLimit-Remaining"
                            },
                            "X-RateLimit-Reset": {
                                "$ref": "#/components/headers/X-RateLimit-Reset"
                            },
                            "Cache-Control": {
                                "description": "Always no-store, private: responses of this endpoint carry no ETag and must not be stored or reused.",
                                "schema": {
                                    "type": "string",
                                    "const": "no-store, private"
                                }
                            },
                            "X-Request-ID": {
                                "$ref": "#/components/headers/X-Request-ID"
                            },
                            "X-Next-Cursor": {
                                "$ref": "#/components/headers/X-Next-Cursor"
                            },
                            "X-Meta-Errors": {
                                "$ref": "#/components/headers/X-Meta-Errors"
                            },
                            "X-Credits-Limit": {
                                "$ref": "#/components/headers/X-Credits-Limit"
                            },
                            "X-Credits-Remaining": {
                                "$ref": "#/components/headers/X-Credits-Remaining"
                            },
                            "X-Credits-Cost": {
                                "$ref": "#/components/headers/X-Credits-Cost"
                            },
                            "X-Concurrency-Limit": {
                                "$ref": "#/components/headers/X-Concurrency-Limit"
                            },
                            "X-Concurrency-Remaining": {
                                "$ref": "#/components/headers/X-Concurrency-Remaining"
                            }
                        },
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "object",
                                    "additionalProperties": false,
                                    "properties": {
                                        "data": {
                                            "type": "array",
                                            "items": {
                                                "$ref": "#/components/schemas/FilingSection"
                                            }
                                        },
                                        "meta": {
                                            "$ref": "#/components/schemas/ResponseMeta"
                                        }
                                    },
                                    "required": [
                                        "data",
                                        "meta"
                                    ]
                                },
                                "examples": {
                                    "synthetic": {
                                        "summary": "Synthetic contract example; not production data",
                                        "value": {
                                            "data": [
                                                {
                                                    "id": "record_example_1",
                                                    "filing_id": "0000320193-24-000123",
                                                    "code": "2.02",
                                                    "title": "Results of Operations",
                                                    "text": "Example filing text.",
                                                    "truncated": false,
                                                    "order": 1
                                                }
                                            ],
                                            "meta": {
                                                "timezone": "UTC",
                                                "as_of": "2026-11-01T00:00:00Z",
                                                "next_cursor": null,
                                                "coverage": {
                                                    "status": "complete",
                                                    "reason": null
                                                }
                                            }
                                        }
                                    }
                                }
                            },
                            "text/csv": {
                                "schema": {
                                    "type": "string"
                                }
                            }
                        }
                    },
                    "400": {
                        "$ref": "#/components/responses/BadRequest"
                    },
                    "401": {
                        "$ref": "#/components/responses/Unauthorized"
                    },
                    "403": {
                        "$ref": "#/components/responses/Forbidden"
                    },
                    "404": {
                        "$ref": "#/components/responses/NotFound"
                    },
                    "405": {
                        "$ref": "#/components/responses/MethodNotAllowed"
                    },
                    "406": {
                        "$ref": "#/components/responses/NotAcceptable"
                    },
                    "409": {
                        "$ref": "#/components/responses/Conflict"
                    },
                    "413": {
                        "$ref": "#/components/responses/ContentTooLarge"
                    },
                    "414": {
                        "$ref": "#/components/responses/URITooLong"
                    },
                    "415": {
                        "$ref": "#/components/responses/UnsupportedMediaType"
                    },
                    "422": {
                        "$ref": "#/components/responses/UnprocessableContent"
                    },
                    "429": {
                        "$ref": "#/components/responses/TooManyRequests"
                    },
                    "431": {
                        "$ref": "#/components/responses/RequestHeaderFieldsTooLarge"
                    },
                    "500": {
                        "$ref": "#/components/responses/InternalServerError"
                    },
                    "503": {
                        "$ref": "#/components/responses/ServiceUnavailable"
                    }
                },
                "x-query-constraints": [
                    {
                        "rule": "less_than",
                        "lower": "known_from",
                        "upper": "known_to"
                    }
                ],
                "x-example-query": {
                    "filing_id": "0000320193-24-000123"
                },
                "x-contract-family": "research",
                "x-credit-cost": "50 credits per request.",
                "x-availability": "available"
            }
        },
        "/v1/filings/{filing_id}/exhibits": {
            "get": {
                "operationId": "list_filings_filing_id_exhibits",
                "summary": "Filing exhibits",
                "tags": [
                    "Company data"
                ],
                "description": "Exhibits of an existing filing as its SEC EDGAR filing index lists them: each EX- document (99.1 press releases, 10.x material contracts, 31 and 32 certifications, the 101 XBRL files, 104 cover page and so on) in document order, with its exhibit number, the filer's description (the exhibit type when the filer gave none), a link to the document on SEC EDGAR and its media type. Exhibits attach to filings in /v1/filings by accession number, every indexed form and its amendments (10-K, 10-Q, 8-K, 20-F, 40-F, 6-K), and are read within about an hour of the filing being indexed; history is filled back to about two years of filings. The document itself is not stored or served. An accession number with no exhibits, whether the filing is covered, not covered or not indexed, returns 200 data: []. Default order: id ascending. Results are limited to the entitled scope. Data is delivered from validated canonical batches; a connected dataset with nothing published for the key's markets yet returns 503. Access requires the operation capability on the API key.",
                "x-implementation-status": "implemented",
                "x-required-capability": "filings.read",
                "x-time-field": "id",
                "x-exportable": true,
                "parameters": [
                    {
                        "name": "filing_id",
                        "in": "path",
                        "required": true,
                        "description": "SEC accession number, as accession_number in /v1/filings.",
                        "schema": {
                            "type": "string",
                            "pattern": "^[0-9]{10}-[0-9]{2}-[0-9]{6}$"
                        },
                        "example": "0000320193-24-000123"
                    },
                    {
                        "name": "as_of",
                        "in": "query",
                        "required": false,
                        "description": "Knowledge cutoff as a UTC date (YYYY-MM-DD): the response reflects what was known by the end of that day. Defaults to now; cannot be in the future. A date from before the dataset's knowledge history returns 422 point-in-time-unavailable naming the earliest one, which GET /v1/datasets lists as earliest_as_of.",
                        "schema": {
                            "type": "string",
                            "format": "date"
                        }
                    },
                    {
                        "name": "known_from",
                        "in": "query",
                        "required": false,
                        "description": "First UTC date (YYYY-MM-DD, inclusive) on which a revision became known.",
                        "schema": {
                            "type": "string",
                            "format": "date"
                        }
                    },
                    {
                        "name": "known_to",
                        "in": "query",
                        "required": false,
                        "description": "Last UTC date (YYYY-MM-DD, inclusive) on which a revision became known; on or after known_from.",
                        "schema": {
                            "type": "string",
                            "format": "date"
                        }
                    },
                    {
                        "name": "order",
                        "in": "query",
                        "required": false,
                        "description": "Direction on id; ties use ID ascending.",
                        "schema": {
                            "type": "string",
                            "enum": [
                                "asc",
                                "desc"
                            ],
                            "description": "Direction on id; ties use ID ascending.",
                            "default": "asc"
                        }
                    },
                    {
                        "name": "limit",
                        "in": "query",
                        "required": false,
                        "description": "Maximum records per page.",
                        "schema": {
                            "type": "integer",
                            "minimum": 1,
                            "maximum": 500,
                            "default": 100
                        }
                    },
                    {
                        "name": "cursor",
                        "in": "query",
                        "required": false,
                        "description": "Opaque cursor, expires after one hour; binds filters, order, resolved as_of, account/key and entitlement. Repeat the original query unchanged.",
                        "schema": {
                            "type": "string",
                            "maxLength": 4096
                        }
                    },
                    {
                        "name": "format",
                        "in": "query",
                        "description": "Response format. csv returns the data rows with a header row, for spreadsheet functions such as IMPORTDATA; nested fields become dotted columns and lists one JSON array cell, the next page cursor is returned in X-Next-Cursor and meta.errors in X-Meta-Errors. A result without rows is the header row alone, listing the documented fields of a row. Default json, or csv when format is omitted and the Accept header ranks text/csv above JSON; a format the Accept header does not admit returns 406 not-acceptable.",
                        "schema": {
                            "type": "string",
                            "enum": [
                                "json",
                                "csv"
                            ]
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Authorized records. An empty collection is a valid result; a dataset with no connected source returns 501, and one with nothing published for your markets 503.",
                        "headers": {
                            "X-RateLimit-Limit": {
                                "$ref": "#/components/headers/X-RateLimit-Limit"
                            },
                            "X-RateLimit-Remaining": {
                                "$ref": "#/components/headers/X-RateLimit-Remaining"
                            },
                            "X-RateLimit-Reset": {
                                "$ref": "#/components/headers/X-RateLimit-Reset"
                            },
                            "Cache-Control": {
                                "description": "Always no-store, private: responses of this endpoint carry no ETag and must not be stored or reused.",
                                "schema": {
                                    "type": "string",
                                    "const": "no-store, private"
                                }
                            },
                            "X-Request-ID": {
                                "$ref": "#/components/headers/X-Request-ID"
                            },
                            "X-Next-Cursor": {
                                "$ref": "#/components/headers/X-Next-Cursor"
                            },
                            "X-Meta-Errors": {
                                "$ref": "#/components/headers/X-Meta-Errors"
                            },
                            "X-Credits-Limit": {
                                "$ref": "#/components/headers/X-Credits-Limit"
                            },
                            "X-Credits-Remaining": {
                                "$ref": "#/components/headers/X-Credits-Remaining"
                            },
                            "X-Credits-Cost": {
                                "$ref": "#/components/headers/X-Credits-Cost"
                            },
                            "X-Concurrency-Limit": {
                                "$ref": "#/components/headers/X-Concurrency-Limit"
                            },
                            "X-Concurrency-Remaining": {
                                "$ref": "#/components/headers/X-Concurrency-Remaining"
                            }
                        },
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "object",
                                    "additionalProperties": false,
                                    "properties": {
                                        "data": {
                                            "type": "array",
                                            "items": {
                                                "$ref": "#/components/schemas/FilingExhibit"
                                            }
                                        },
                                        "meta": {
                                            "$ref": "#/components/schemas/ResponseMeta"
                                        }
                                    },
                                    "required": [
                                        "data",
                                        "meta"
                                    ]
                                },
                                "examples": {
                                    "synthetic": {
                                        "summary": "Synthetic contract example; not production data",
                                        "value": {
                                            "data": [
                                                {
                                                    "id": "record_example_1",
                                                    "filing_id": "0000320193-24-000123",
                                                    "number": "99.1",
                                                    "description": "Earnings release",
                                                    "url": "https://example.com/filings/exhibit",
                                                    "media_type": "text/html"
                                                }
                                            ],
                                            "meta": {
                                                "timezone": "UTC",
                                                "as_of": "2026-11-01T00:00:00Z",
                                                "next_cursor": null,
                                                "coverage": {
                                                    "status": "complete",
                                                    "reason": null
                                                }
                                            }
                                        }
                                    }
                                }
                            },
                            "text/csv": {
                                "schema": {
                                    "type": "string"
                                }
                            }
                        }
                    },
                    "400": {
                        "$ref": "#/components/responses/BadRequest"
                    },
                    "401": {
                        "$ref": "#/components/responses/Unauthorized"
                    },
                    "403": {
                        "$ref": "#/components/responses/Forbidden"
                    },
                    "404": {
                        "$ref": "#/components/responses/NotFound"
                    },
                    "405": {
                        "$ref": "#/components/responses/MethodNotAllowed"
                    },
                    "406": {
                        "$ref": "#/components/responses/NotAcceptable"
                    },
                    "409": {
                        "$ref": "#/components/responses/Conflict"
                    },
                    "413": {
                        "$ref": "#/components/responses/ContentTooLarge"
                    },
                    "414": {
                        "$ref": "#/components/responses/URITooLong"
                    },
                    "415": {
                        "$ref": "#/components/responses/UnsupportedMediaType"
                    },
                    "422": {
                        "$ref": "#/components/responses/UnprocessableContent"
                    },
                    "429": {
                        "$ref": "#/components/responses/TooManyRequests"
                    },
                    "431": {
                        "$ref": "#/components/responses/RequestHeaderFieldsTooLarge"
                    },
                    "500": {
                        "$ref": "#/components/responses/InternalServerError"
                    },
                    "503": {
                        "$ref": "#/components/responses/ServiceUnavailable"
                    }
                },
                "x-query-constraints": [
                    {
                        "rule": "less_than",
                        "lower": "known_from",
                        "upper": "known_to"
                    }
                ],
                "x-example-query": {
                    "filing_id": "0000320193-24-000123"
                },
                "x-contract-family": "research",
                "x-credit-cost": "50 credits per request.",
                "x-availability": "available"
            }
        },
        "/v1/ratings/esg": {
            "get": {
                "operationId": "list_ratings_esg",
                "summary": "ESG ratings",
                "tags": [
                    "Specialist data"
                ],
                "description": "Not yet available: no data source is connected to this dataset yet, so every request returns 501 dataset-unavailable. Provider-specific ESG scores with explicit scales (scale_min, scale_max, higher_is_better); scores of different providers are not comparable. Default order: observed_on ascending, id ascending. Omitting entity selectors returns the entitled universe; explicit unauthorized selectors return 403. Data is delivered from validated canonical batches; a connected dataset with nothing published for the key's markets yet returns 503. Access requires the operation capability on the API key.",
                "x-implementation-status": "implemented",
                "x-required-capability": "ratings.read",
                "x-time-field": "observed_on",
                "x-exportable": true,
                "parameters": [
                    {
                        "name": "instrument_ids",
                        "in": "query",
                        "required": false,
                        "description": "Filter by stable instrument IDs. IDs and symbols may not be combined.",
                        "schema": {
                            "type": "array",
                            "minItems": 1,
                            "maxItems": 100,
                            "uniqueItems": true,
                            "items": {
                                "type": "string",
                                "description": "Opaque stable public identifier; never an internal database key.",
                                "minLength": 1,
                                "maxLength": 128,
                                "pattern": "^[A-Za-z0-9][A-Za-z0-9_.:-]{0,127}$"
                            }
                        },
                        "style": "form",
                        "explode": false
                    },
                    {
                        "name": "symbols",
                        "in": "query",
                        "required": false,
                        "description": "Convenience lookup for exchange-listed instruments as MIC:TICKER or a bare ticker, which resolves to the exchange listing that ticker; resolves at symbol_at. The MIC and the ticker are case-insensitive, and two spellings of one listing (AAPL and XNAS:AAPL) count as a repeated value. A bare ticker that names no listing as written is also read in the common vendor spellings: with an exchange suffix (RY.TO, SHEL.L, VOD.LSE, BHP.AX), ^GSPC for INDEX:GSPC, and EURUSD=X or EURUSD for FOREX:EUR-USD. A ticker may contain a space (BAC PRL) but not start or end with one. A request in which no symbol resolves returns 404 symbol-not-resolved; otherwise each symbol that does not resolve, or resolves to a listing with no rows for the request (no-data), is an entry of meta.errors. IDs and symbols may not be combined.",
                        "schema": {
                            "type": "array",
                            "minItems": 1,
                            "maxItems": 100,
                            "uniqueItems": true,
                            "items": {
                                "type": "string",
                                "pattern": "^(?:(?:[A-Za-z0-9]{4}|[Cc][Rr][Yy][Pp][Tt][Oo]|[Ff][Oo][Rr][Ee][Xx]|[Ii][Nn][Dd][Ee][Xx]):|\\^)?[A-Za-z0-9](?:[A-Za-z0-9./_^= -]{0,62}[A-Za-z0-9./_^=-])?$"
                            }
                        },
                        "style": "form",
                        "explode": false,
                        "example": [
                            "XNAS:AAPL"
                        ]
                    },
                    {
                        "name": "symbol_at",
                        "in": "query",
                        "required": false,
                        "description": "Resolve symbols as they were assigned at the end of this UTC date (YYYY-MM-DD); defaults to as_of. Only listings the security master holds resolve: it was built in September 2026 and records delistings from then on, so most issuers delisted earlier, such as TWTR or SIVB, resolve at no date. Only valid with symbols.",
                        "schema": {
                            "type": "string",
                            "format": "date"
                        }
                    },
                    {
                        "name": "from",
                        "in": "query",
                        "required": false,
                        "description": "Inclusive lower bound on observed_on.",
                        "schema": {
                            "type": "string",
                            "format": "date"
                        }
                    },
                    {
                        "name": "to",
                        "in": "query",
                        "required": false,
                        "description": "Inclusive upper bound on observed_on; must be on or after from, so from equal to to selects one day.",
                        "schema": {
                            "type": "string",
                            "format": "date"
                        }
                    },
                    {
                        "name": "as_of",
                        "in": "query",
                        "required": false,
                        "description": "Knowledge cutoff as a UTC date (YYYY-MM-DD): the response reflects what was known by the end of that day. Defaults to now; cannot be in the future. A date from before the dataset's knowledge history returns 422 point-in-time-unavailable naming the earliest one, which GET /v1/datasets lists as earliest_as_of.",
                        "schema": {
                            "type": "string",
                            "format": "date"
                        }
                    },
                    {
                        "name": "known_from",
                        "in": "query",
                        "required": false,
                        "description": "First UTC date (YYYY-MM-DD, inclusive) on which a revision became known.",
                        "schema": {
                            "type": "string",
                            "format": "date"
                        }
                    },
                    {
                        "name": "known_to",
                        "in": "query",
                        "required": false,
                        "description": "Last UTC date (YYYY-MM-DD, inclusive) on which a revision became known; on or after known_from.",
                        "schema": {
                            "type": "string",
                            "format": "date"
                        }
                    },
                    {
                        "name": "order",
                        "in": "query",
                        "required": false,
                        "description": "Direction on observed_on; ties use ID ascending.",
                        "schema": {
                            "type": "string",
                            "enum": [
                                "asc",
                                "desc"
                            ],
                            "description": "Direction on observed_on; ties use ID ascending.",
                            "default": "asc"
                        }
                    },
                    {
                        "name": "limit",
                        "in": "query",
                        "required": false,
                        "description": "Maximum records per page.",
                        "schema": {
                            "type": "integer",
                            "minimum": 1,
                            "maximum": 500,
                            "default": 100
                        }
                    },
                    {
                        "name": "cursor",
                        "in": "query",
                        "required": false,
                        "description": "Opaque cursor, expires after one hour; binds filters, order, resolved as_of, account/key and entitlement. Repeat the original query unchanged.",
                        "schema": {
                            "type": "string",
                            "maxLength": 4096
                        }
                    },
                    {
                        "name": "format",
                        "in": "query",
                        "description": "Response format. csv returns the data rows with a header row, for spreadsheet functions such as IMPORTDATA; nested fields become dotted columns and lists one JSON array cell, the next page cursor is returned in X-Next-Cursor and meta.errors in X-Meta-Errors. A result without rows is the header row alone, listing the documented fields of a row. Default json, or csv when format is omitted and the Accept header ranks text/csv above JSON; a format the Accept header does not admit returns 406 not-acceptable.",
                        "schema": {
                            "type": "string",
                            "enum": [
                                "json",
                                "csv"
                            ]
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Authorized records. An empty collection is a valid result; a dataset with no connected source returns 501, and one with nothing published for your markets 503.",
                        "headers": {
                            "X-RateLimit-Limit": {
                                "$ref": "#/components/headers/X-RateLimit-Limit"
                            },
                            "X-RateLimit-Remaining": {
                                "$ref": "#/components/headers/X-RateLimit-Remaining"
                            },
                            "X-RateLimit-Reset": {
                                "$ref": "#/components/headers/X-RateLimit-Reset"
                            },
                            "Cache-Control": {
                                "description": "Always no-store, private: responses of this endpoint carry no ETag and must not be stored or reused.",
                                "schema": {
                                    "type": "string",
                                    "const": "no-store, private"
                                }
                            },
                            "X-Request-ID": {
                                "$ref": "#/components/headers/X-Request-ID"
                            },
                            "X-Next-Cursor": {
                                "$ref": "#/components/headers/X-Next-Cursor"
                            },
                            "X-Meta-Errors": {
                                "$ref": "#/components/headers/X-Meta-Errors"
                            },
                            "X-Credits-Limit": {
                                "$ref": "#/components/headers/X-Credits-Limit"
                            },
                            "X-Credits-Remaining": {
                                "$ref": "#/components/headers/X-Credits-Remaining"
                            },
                            "X-Credits-Cost": {
                                "$ref": "#/components/headers/X-Credits-Cost"
                            },
                            "X-Concurrency-Limit": {
                                "$ref": "#/components/headers/X-Concurrency-Limit"
                            },
                            "X-Concurrency-Remaining": {
                                "$ref": "#/components/headers/X-Concurrency-Remaining"
                            }
                        },
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "object",
                                    "additionalProperties": false,
                                    "properties": {
                                        "data": {
                                            "type": "array",
                                            "items": {
                                                "$ref": "#/components/schemas/EsgRating"
                                            }
                                        },
                                        "meta": {
                                            "$ref": "#/components/schemas/ResponseMeta"
                                        }
                                    },
                                    "required": [
                                        "data",
                                        "meta"
                                    ]
                                },
                                "examples": {
                                    "synthetic": {
                                        "summary": "Synthetic contract example; not production data",
                                        "value": {
                                            "data": [
                                                {
                                                    "id": "record_example_1",
                                                    "instrument_id": "inst_example_aapl",
                                                    "observed_on": "2026-09-18",
                                                    "overall": "75",
                                                    "environmental": "70",
                                                    "social": "80",
                                                    "governance": "75",
                                                    "scale_min": "0",
                                                    "scale_max": "100",
                                                    "higher_is_better": true
                                                }
                                            ],
                                            "meta": {
                                                "timezone": "UTC",
                                                "as_of": "2026-11-01T00:00:00Z",
                                                "next_cursor": null,
                                                "coverage": {
                                                    "status": "complete",
                                                    "reason": null
                                                }
                                            }
                                        }
                                    }
                                }
                            },
                            "text/csv": {
                                "schema": {
                                    "type": "string"
                                }
                            }
                        }
                    },
                    "400": {
                        "$ref": "#/components/responses/BadRequest"
                    },
                    "401": {
                        "$ref": "#/components/responses/Unauthorized"
                    },
                    "403": {
                        "$ref": "#/components/responses/Forbidden"
                    },
                    "404": {
                        "$ref": "#/components/responses/NotFound"
                    },
                    "405": {
                        "$ref": "#/components/responses/MethodNotAllowed"
                    },
                    "406": {
                        "$ref": "#/components/responses/NotAcceptable"
                    },
                    "409": {
                        "$ref": "#/components/responses/Conflict"
                    },
                    "413": {
                        "$ref": "#/components/responses/ContentTooLarge"
                    },
                    "414": {
                        "$ref": "#/components/responses/URITooLong"
                    },
                    "415": {
                        "$ref": "#/components/responses/UnsupportedMediaType"
                    },
                    "422": {
                        "$ref": "#/components/responses/UnprocessableContent"
                    },
                    "429": {
                        "$ref": "#/components/responses/TooManyRequests"
                    },
                    "431": {
                        "$ref": "#/components/responses/RequestHeaderFieldsTooLarge"
                    },
                    "500": {
                        "$ref": "#/components/responses/InternalServerError"
                    },
                    "501": {
                        "description": "RFC 9457 problem dataset-unavailable: no data source is connected to this dataset yet.",
                        "headers": {
                            "X-RateLimit-Limit": {
                                "schema": {
                                    "type": "integer"
                                },
                                "description": "Account-wide admission state; Reset is a Unix timestamp."
                            },
                            "X-RateLimit-Remaining": {
                                "schema": {
                                    "type": "integer"
                                },
                                "description": "Account-wide admission state; Reset is a Unix timestamp."
                            },
                            "X-RateLimit-Reset": {
                                "schema": {
                                    "type": "integer"
                                },
                                "description": "Account-wide admission state; Reset is a Unix timestamp."
                            },
                            "X-Credits-Limit": {
                                "$ref": "#/components/headers/X-Credits-Limit"
                            },
                            "X-Credits-Remaining": {
                                "$ref": "#/components/headers/X-Credits-Remaining"
                            },
                            "X-Credits-Cost": {
                                "$ref": "#/components/headers/X-Credits-Cost"
                            },
                            "X-Concurrency-Limit": {
                                "$ref": "#/components/headers/X-Concurrency-Limit"
                            },
                            "X-Concurrency-Remaining": {
                                "$ref": "#/components/headers/X-Concurrency-Remaining"
                            }
                        },
                        "content": {
                            "application/problem+json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Problem"
                                }
                            }
                        }
                    },
                    "503": {
                        "$ref": "#/components/responses/ServiceUnavailable"
                    }
                },
                "x-query-constraints": [
                    {
                        "rule": "mutually_exclusive",
                        "parameters": [
                            "instrument_ids",
                            "symbols"
                        ]
                    },
                    {
                        "rule": "requires",
                        "parameter": "symbol_at",
                        "required": [
                            "symbols"
                        ]
                    },
                    {
                        "rule": "less_than",
                        "lower": "from",
                        "upper": "to"
                    },
                    {
                        "rule": "less_than",
                        "lower": "known_from",
                        "upper": "known_to"
                    }
                ],
                "x-example-query": {
                    "symbols": [
                        "XNAS:AAPL"
                    ]
                },
                "x-contract-family": "research",
                "x-credit-cost": "50 credits per symbol; 500 credits without symbols (whole market).",
                "x-availability": "unavailable"
            }
        },
        "/v1/analytics/risk": {
            "get": {
                "operationId": "list_analytics_risk",
                "summary": "Risk analytics",
                "tags": [
                    "Specialist data"
                ],
                "description": "Computed by OHLC each evening from its own end-of-day prices for active US listings: the trailing 252 daily simple returns (253 closes through the latest complete session), total-return adjusted (splits and cash dividends) where the listing's dividend history is valued, otherwise split-adjusted; listings without a validated split history are not computed. Volatility is the sample standard deviation times sqrt(252); Sharpe is mean daily return times 252 less the window's mean 3-month Treasury yield (H.15 DGS3MO; 0 when none is published), over that volatility; beta is cov(r, r_SPY) / var(r_SPY) against the US SPY listing; volatility, Sharpe and beta use returns between consecutive sessions only. A listing needs closes on the window's first and last sessions and on at least 80% of its sessions. risk_score and its scale are null. The newest two observation dates are kept; window_start and window_end state each record's window. Not arbitrary portfolio computation. Default order: observed_on ascending, id ascending. Omitting entity selectors returns the entitled universe; explicit unauthorized selectors return 403. Data is delivered from validated canonical batches; a connected dataset with nothing published for the key's markets yet returns 503. Access requires the operation capability on the API key.",
                "x-implementation-status": "implemented",
                "x-required-capability": "analytics.read",
                "x-time-field": "observed_on",
                "x-exportable": true,
                "parameters": [
                    {
                        "name": "instrument_ids",
                        "in": "query",
                        "required": false,
                        "description": "Filter by stable instrument IDs. IDs and symbols may not be combined.",
                        "schema": {
                            "type": "array",
                            "minItems": 1,
                            "maxItems": 100,
                            "uniqueItems": true,
                            "items": {
                                "type": "string",
                                "description": "Opaque stable public identifier; never an internal database key.",
                                "minLength": 1,
                                "maxLength": 128,
                                "pattern": "^[A-Za-z0-9][A-Za-z0-9_.:-]{0,127}$"
                            }
                        },
                        "style": "form",
                        "explode": false
                    },
                    {
                        "name": "symbols",
                        "in": "query",
                        "required": false,
                        "description": "Convenience lookup for exchange-listed instruments as MIC:TICKER or a bare ticker, which resolves to the exchange listing that ticker; resolves at symbol_at. The MIC and the ticker are case-insensitive, and two spellings of one listing (AAPL and XNAS:AAPL) count as a repeated value. A bare ticker that names no listing as written is also read in the common vendor spellings: with an exchange suffix (RY.TO, SHEL.L, VOD.LSE, BHP.AX), ^GSPC for INDEX:GSPC, and EURUSD=X or EURUSD for FOREX:EUR-USD. A ticker may contain a space (BAC PRL) but not start or end with one. A request in which no symbol resolves returns 404 symbol-not-resolved; otherwise each symbol that does not resolve, or resolves to a listing with no rows for the request (no-data), is an entry of meta.errors. IDs and symbols may not be combined.",
                        "schema": {
                            "type": "array",
                            "minItems": 1,
                            "maxItems": 100,
                            "uniqueItems": true,
                            "items": {
                                "type": "string",
                                "pattern": "^(?:(?:[A-Za-z0-9]{4}|[Cc][Rr][Yy][Pp][Tt][Oo]|[Ff][Oo][Rr][Ee][Xx]|[Ii][Nn][Dd][Ee][Xx]):|\\^)?[A-Za-z0-9](?:[A-Za-z0-9./_^= -]{0,62}[A-Za-z0-9./_^=-])?$"
                            }
                        },
                        "style": "form",
                        "explode": false,
                        "example": [
                            "XNAS:AAPL"
                        ]
                    },
                    {
                        "name": "symbol_at",
                        "in": "query",
                        "required": false,
                        "description": "Resolve symbols as they were assigned at the end of this UTC date (YYYY-MM-DD); defaults to as_of. Only listings the security master holds resolve: it was built in September 2026 and records delistings from then on, so most issuers delisted earlier, such as TWTR or SIVB, resolve at no date. Only valid with symbols.",
                        "schema": {
                            "type": "string",
                            "format": "date"
                        }
                    },
                    {
                        "name": "from",
                        "in": "query",
                        "required": false,
                        "description": "Inclusive lower bound on observed_on.",
                        "schema": {
                            "type": "string",
                            "format": "date"
                        }
                    },
                    {
                        "name": "to",
                        "in": "query",
                        "required": false,
                        "description": "Inclusive upper bound on observed_on; must be on or after from, so from equal to to selects one day.",
                        "schema": {
                            "type": "string",
                            "format": "date"
                        }
                    },
                    {
                        "name": "as_of",
                        "in": "query",
                        "required": false,
                        "description": "Knowledge cutoff as a UTC date (YYYY-MM-DD): the response reflects what was known by the end of that day. Defaults to now; cannot be in the future. A date from before the dataset's knowledge history returns 422 point-in-time-unavailable naming the earliest one, which GET /v1/datasets lists as earliest_as_of.",
                        "schema": {
                            "type": "string",
                            "format": "date"
                        }
                    },
                    {
                        "name": "known_from",
                        "in": "query",
                        "required": false,
                        "description": "First UTC date (YYYY-MM-DD, inclusive) on which a revision became known.",
                        "schema": {
                            "type": "string",
                            "format": "date"
                        }
                    },
                    {
                        "name": "known_to",
                        "in": "query",
                        "required": false,
                        "description": "Last UTC date (YYYY-MM-DD, inclusive) on which a revision became known; on or after known_from.",
                        "schema": {
                            "type": "string",
                            "format": "date"
                        }
                    },
                    {
                        "name": "order",
                        "in": "query",
                        "required": false,
                        "description": "Direction on observed_on; ties use ID ascending.",
                        "schema": {
                            "type": "string",
                            "enum": [
                                "asc",
                                "desc"
                            ],
                            "description": "Direction on observed_on; ties use ID ascending.",
                            "default": "asc"
                        }
                    },
                    {
                        "name": "limit",
                        "in": "query",
                        "required": false,
                        "description": "Maximum records per page.",
                        "schema": {
                            "type": "integer",
                            "minimum": 1,
                            "maximum": 500,
                            "default": 100
                        }
                    },
                    {
                        "name": "cursor",
                        "in": "query",
                        "required": false,
                        "description": "Opaque cursor, expires after one hour; binds filters, order, resolved as_of, account/key and entitlement. Repeat the original query unchanged.",
                        "schema": {
                            "type": "string",
                            "maxLength": 4096
                        }
                    },
                    {
                        "name": "format",
                        "in": "query",
                        "description": "Response format. csv returns the data rows with a header row, for spreadsheet functions such as IMPORTDATA; nested fields become dotted columns and lists one JSON array cell, the next page cursor is returned in X-Next-Cursor and meta.errors in X-Meta-Errors. A result without rows is the header row alone, listing the documented fields of a row. Default json, or csv when format is omitted and the Accept header ranks text/csv above JSON; a format the Accept header does not admit returns 406 not-acceptable.",
                        "schema": {
                            "type": "string",
                            "enum": [
                                "json",
                                "csv"
                            ]
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Authorized records. An empty collection is a valid result; a dataset with no connected source returns 501, and one with nothing published for your markets 503.",
                        "headers": {
                            "X-RateLimit-Limit": {
                                "$ref": "#/components/headers/X-RateLimit-Limit"
                            },
                            "X-RateLimit-Remaining": {
                                "$ref": "#/components/headers/X-RateLimit-Remaining"
                            },
                            "X-RateLimit-Reset": {
                                "$ref": "#/components/headers/X-RateLimit-Reset"
                            },
                            "Cache-Control": {
                                "description": "Always no-store, private: responses of this endpoint carry no ETag and must not be stored or reused.",
                                "schema": {
                                    "type": "string",
                                    "const": "no-store, private"
                                }
                            },
                            "X-Request-ID": {
                                "$ref": "#/components/headers/X-Request-ID"
                            },
                            "X-Next-Cursor": {
                                "$ref": "#/components/headers/X-Next-Cursor"
                            },
                            "X-Meta-Errors": {
                                "$ref": "#/components/headers/X-Meta-Errors"
                            },
                            "X-Credits-Limit": {
                                "$ref": "#/components/headers/X-Credits-Limit"
                            },
                            "X-Credits-Remaining": {
                                "$ref": "#/components/headers/X-Credits-Remaining"
                            },
                            "X-Credits-Cost": {
                                "$ref": "#/components/headers/X-Credits-Cost"
                            },
                            "X-Concurrency-Limit": {
                                "$ref": "#/components/headers/X-Concurrency-Limit"
                            },
                            "X-Concurrency-Remaining": {
                                "$ref": "#/components/headers/X-Concurrency-Remaining"
                            }
                        },
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "object",
                                    "additionalProperties": false,
                                    "properties": {
                                        "data": {
                                            "type": "array",
                                            "items": {
                                                "$ref": "#/components/schemas/RiskAnalytics"
                                            }
                                        },
                                        "meta": {
                                            "$ref": "#/components/schemas/ResponseMeta"
                                        }
                                    },
                                    "required": [
                                        "data",
                                        "meta"
                                    ]
                                },
                                "examples": {
                                    "synthetic": {
                                        "summary": "Synthetic contract example; not production data",
                                        "value": {
                                            "data": [
                                                {
                                                    "id": "record_example_1",
                                                    "instrument_id": "inst_example_aapl",
                                                    "observed_on": "2026-09-18",
                                                    "window_start": "2025-09-18",
                                                    "window_end": "2026-09-18",
                                                    "benchmark_instrument_id": "inst_example_spy",
                                                    "annualized_volatility": "0.05",
                                                    "maximum_drawdown": "-0.2",
                                                    "sharpe_ratio": "1.1",
                                                    "beta": "0.95",
                                                    "total_return": "0.05",
                                                    "risk_score": null,
                                                    "score_scale_min": null,
                                                    "score_scale_max": null
                                                }
                                            ],
                                            "meta": {
                                                "timezone": "UTC",
                                                "as_of": "2026-11-01T00:00:00Z",
                                                "next_cursor": null,
                                                "coverage": {
                                                    "status": "complete",
                                                    "reason": null
                                                }
                                            }
                                        }
                                    }
                                }
                            },
                            "text/csv": {
                                "schema": {
                                    "type": "string"
                                }
                            }
                        }
                    },
                    "400": {
                        "$ref": "#/components/responses/BadRequest"
                    },
                    "401": {
                        "$ref": "#/components/responses/Unauthorized"
                    },
                    "403": {
                        "$ref": "#/components/responses/Forbidden"
                    },
                    "404": {
                        "$ref": "#/components/responses/NotFound"
                    },
                    "405": {
                        "$ref": "#/components/responses/MethodNotAllowed"
                    },
                    "406": {
                        "$ref": "#/components/responses/NotAcceptable"
                    },
                    "409": {
                        "$ref": "#/components/responses/Conflict"
                    },
                    "413": {
                        "$ref": "#/components/responses/ContentTooLarge"
                    },
                    "414": {
                        "$ref": "#/components/responses/URITooLong"
                    },
                    "415": {
                        "$ref": "#/components/responses/UnsupportedMediaType"
                    },
                    "422": {
                        "$ref": "#/components/responses/UnprocessableContent"
                    },
                    "429": {
                        "$ref": "#/components/responses/TooManyRequests"
                    },
                    "431": {
                        "$ref": "#/components/responses/RequestHeaderFieldsTooLarge"
                    },
                    "500": {
                        "$ref": "#/components/responses/InternalServerError"
                    },
                    "503": {
                        "$ref": "#/components/responses/ServiceUnavailable"
                    }
                },
                "x-query-constraints": [
                    {
                        "rule": "mutually_exclusive",
                        "parameters": [
                            "instrument_ids",
                            "symbols"
                        ]
                    },
                    {
                        "rule": "requires",
                        "parameter": "symbol_at",
                        "required": [
                            "symbols"
                        ]
                    },
                    {
                        "rule": "less_than",
                        "lower": "from",
                        "upper": "to"
                    },
                    {
                        "rule": "less_than",
                        "lower": "known_from",
                        "upper": "known_to"
                    }
                ],
                "x-example-query": {
                    "symbols": [
                        "XNAS:AAPL"
                    ]
                },
                "x-contract-family": "research",
                "x-credit-cost": "50 credits per symbol; 500 credits without symbols (whole market).",
                "x-availability": "available"
            }
        },
        "/v1/congressional-trades": {
            "get": {
                "operationId": "list_congressional_trades",
                "summary": "Congressional trades",
                "tags": [
                    "Specialist data"
                ],
                "description": "Securities transactions that members of the U.S. House and Senate and their spouses and dependents report under the STOCK Act, one row per transaction of each periodic transaction report: from the House Clerk's financial disclosure site and the Senate's Electronic Financial Disclosure system, from 2012 (sparse before 2014). Refreshed every six hours; members have up to 45 days to report, so transaction dates trail by days to weeks. Rows keep the filed value range (amount_min, amount_max in USD; no exact amount is disclosed), the asset description and comment as filed, the owner, and the disclosure date and delay; a trade is public from disclosed_on. instrument and company_id link the US listing a reported ticker named on the transaction date when the listing's name agrees with the asset description (for options, the underlying listing), so symbols and instrument_ids select a security's trades; bonds, private holdings and unresolved tickers have none. Members are identified by Bioguide ID where known (official_id). A transaction date filed in a year after the disclosure (3031 for 2021) is read in the disclosure's year, or the year before when it would otherwise follow the disclosure. The source does not flag amended reports: an amendment that changes a row publishes a new revision of it, and a row it drops is withdrawn (as_of before the change still returns it). Party affiliation is not reported. Default order: transaction_date ascending, id ascending. Omitting entity selectors returns the entitled universe; explicit unauthorized selectors return 403. Data is delivered from validated canonical batches; a connected dataset with nothing published for the key's markets yet returns 503. Access requires the operation capability on the API key.",
                "x-implementation-status": "implemented",
                "x-required-capability": "congressional-trades.read",
                "x-time-field": "transaction_date",
                "x-exportable": true,
                "parameters": [
                    {
                        "name": "company_ids",
                        "in": "query",
                        "required": false,
                        "description": "Filter by issuer IDs. May be combined with instrument selectors; filters intersect, except on issuer-level datasets (statements, segments, estimates, earnings, insider transactions), where an instrument selector is read as its company and takes the place of company_ids, so results cover every share class.",
                        "schema": {
                            "type": "array",
                            "minItems": 1,
                            "maxItems": 100,
                            "uniqueItems": true,
                            "items": {
                                "type": "string",
                                "description": "Opaque stable public identifier; never an internal database key.",
                                "minLength": 1,
                                "maxLength": 128,
                                "pattern": "^[A-Za-z0-9][A-Za-z0-9_.:-]{0,127}$"
                            }
                        },
                        "style": "form",
                        "explode": false
                    },
                    {
                        "name": "instrument_ids",
                        "in": "query",
                        "required": false,
                        "description": "Filter by stable instrument IDs. IDs and symbols may not be combined.",
                        "schema": {
                            "type": "array",
                            "minItems": 1,
                            "maxItems": 100,
                            "uniqueItems": true,
                            "items": {
                                "type": "string",
                                "description": "Opaque stable public identifier; never an internal database key.",
                                "minLength": 1,
                                "maxLength": 128,
                                "pattern": "^[A-Za-z0-9][A-Za-z0-9_.:-]{0,127}$"
                            }
                        },
                        "style": "form",
                        "explode": false
                    },
                    {
                        "name": "symbols",
                        "in": "query",
                        "required": false,
                        "description": "Convenience lookup for exchange-listed instruments as MIC:TICKER or a bare ticker, which resolves to the exchange listing that ticker; resolves at symbol_at. The MIC and the ticker are case-insensitive, and two spellings of one listing (AAPL and XNAS:AAPL) count as a repeated value. A bare ticker that names no listing as written is also read in the common vendor spellings: with an exchange suffix (RY.TO, SHEL.L, VOD.LSE, BHP.AX), ^GSPC for INDEX:GSPC, and EURUSD=X or EURUSD for FOREX:EUR-USD. A ticker may contain a space (BAC PRL) but not start or end with one. A request in which no symbol resolves returns 404 symbol-not-resolved; otherwise each symbol that does not resolve, or resolves to a listing with no rows for the request (no-data), is an entry of meta.errors. IDs and symbols may not be combined.",
                        "schema": {
                            "type": "array",
                            "minItems": 1,
                            "maxItems": 100,
                            "uniqueItems": true,
                            "items": {
                                "type": "string",
                                "pattern": "^(?:(?:[A-Za-z0-9]{4}|[Cc][Rr][Yy][Pp][Tt][Oo]|[Ff][Oo][Rr][Ee][Xx]|[Ii][Nn][Dd][Ee][Xx]):|\\^)?[A-Za-z0-9](?:[A-Za-z0-9./_^= -]{0,62}[A-Za-z0-9./_^=-])?$"
                            }
                        },
                        "style": "form",
                        "explode": false,
                        "example": [
                            "XNAS:AAPL"
                        ]
                    },
                    {
                        "name": "symbol_at",
                        "in": "query",
                        "required": false,
                        "description": "Resolve symbols as they were assigned at the end of this UTC date (YYYY-MM-DD); defaults to as_of. Only listings the security master holds resolve: it was built in September 2026 and records delistings from then on, so most issuers delisted earlier, such as TWTR or SIVB, resolve at no date. Only valid with symbols.",
                        "schema": {
                            "type": "string",
                            "format": "date"
                        }
                    },
                    {
                        "name": "from",
                        "in": "query",
                        "required": false,
                        "description": "Inclusive lower bound on transaction_date.",
                        "schema": {
                            "type": "string",
                            "format": "date"
                        }
                    },
                    {
                        "name": "to",
                        "in": "query",
                        "required": false,
                        "description": "Inclusive upper bound on transaction_date; must be on or after from, so from equal to to selects one day.",
                        "schema": {
                            "type": "string",
                            "format": "date"
                        }
                    },
                    {
                        "name": "chamber",
                        "in": "query",
                        "required": false,
                        "description": "Congressional chamber.",
                        "schema": {
                            "type": "string",
                            "enum": [
                                "house",
                                "senate"
                            ],
                            "description": "Congressional chamber."
                        }
                    },
                    {
                        "name": "official_ids",
                        "in": "query",
                        "required": false,
                        "description": "Filter by member: Bioguide IDs or the official_id of the rows.",
                        "schema": {
                            "type": "array",
                            "minItems": 1,
                            "maxItems": 100,
                            "uniqueItems": true,
                            "items": {
                                "type": "string",
                                "description": "Opaque stable public identifier; never an internal database key.",
                                "minLength": 1,
                                "maxLength": 128,
                                "pattern": "^[A-Za-z0-9][A-Za-z0-9_.:-]{0,127}$"
                            }
                        },
                        "style": "form",
                        "explode": false
                    },
                    {
                        "name": "type",
                        "in": "query",
                        "required": false,
                        "description": "Reported transaction type.",
                        "schema": {
                            "type": "string",
                            "enum": [
                                "purchase",
                                "sale",
                                "exchange",
                                "other"
                            ],
                            "description": "Reported transaction type."
                        }
                    },
                    {
                        "name": "as_of",
                        "in": "query",
                        "required": false,
                        "description": "Knowledge cutoff as a UTC date (YYYY-MM-DD): the response reflects what was known by the end of that day. Defaults to now; cannot be in the future. A date from before the dataset's knowledge history returns 422 point-in-time-unavailable naming the earliest one, which GET /v1/datasets lists as earliest_as_of.",
                        "schema": {
                            "type": "string",
                            "format": "date"
                        }
                    },
                    {
                        "name": "known_from",
                        "in": "query",
                        "required": false,
                        "description": "First UTC date (YYYY-MM-DD, inclusive) on which a revision became known.",
                        "schema": {
                            "type": "string",
                            "format": "date"
                        }
                    },
                    {
                        "name": "known_to",
                        "in": "query",
                        "required": false,
                        "description": "Last UTC date (YYYY-MM-DD, inclusive) on which a revision became known; on or after known_from.",
                        "schema": {
                            "type": "string",
                            "format": "date"
                        }
                    },
                    {
                        "name": "order",
                        "in": "query",
                        "required": false,
                        "description": "Direction on transaction_date; ties use ID ascending.",
                        "schema": {
                            "type": "string",
                            "enum": [
                                "asc",
                                "desc"
                            ],
                            "description": "Direction on transaction_date; ties use ID ascending.",
                            "default": "asc"
                        }
                    },
                    {
                        "name": "limit",
                        "in": "query",
                        "required": false,
                        "description": "Maximum records per page.",
                        "schema": {
                            "type": "integer",
                            "minimum": 1,
                            "maximum": 500,
                            "default": 100
                        }
                    },
                    {
                        "name": "cursor",
                        "in": "query",
                        "required": false,
                        "description": "Opaque cursor, expires after one hour; binds filters, order, resolved as_of, account/key and entitlement. Repeat the original query unchanged.",
                        "schema": {
                            "type": "string",
                            "maxLength": 4096
                        }
                    },
                    {
                        "name": "format",
                        "in": "query",
                        "description": "Response format. csv returns the data rows with a header row, for spreadsheet functions such as IMPORTDATA; nested fields become dotted columns and lists one JSON array cell, the next page cursor is returned in X-Next-Cursor and meta.errors in X-Meta-Errors. A result without rows is the header row alone, listing the documented fields of a row. Default json, or csv when format is omitted and the Accept header ranks text/csv above JSON; a format the Accept header does not admit returns 406 not-acceptable.",
                        "schema": {
                            "type": "string",
                            "enum": [
                                "json",
                                "csv"
                            ]
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Authorized records. An empty collection is a valid result; a dataset with no connected source returns 501, and one with nothing published for your markets 503.",
                        "headers": {
                            "X-RateLimit-Limit": {
                                "$ref": "#/components/headers/X-RateLimit-Limit"
                            },
                            "X-RateLimit-Remaining": {
                                "$ref": "#/components/headers/X-RateLimit-Remaining"
                            },
                            "X-RateLimit-Reset": {
                                "$ref": "#/components/headers/X-RateLimit-Reset"
                            },
                            "Cache-Control": {
                                "description": "Always no-store, private: responses of this endpoint carry no ETag and must not be stored or reused.",
                                "schema": {
                                    "type": "string",
                                    "const": "no-store, private"
                                }
                            },
                            "X-Request-ID": {
                                "$ref": "#/components/headers/X-Request-ID"
                            },
                            "X-Next-Cursor": {
                                "$ref": "#/components/headers/X-Next-Cursor"
                            },
                            "X-Meta-Errors": {
                                "$ref": "#/components/headers/X-Meta-Errors"
                            },
                            "X-Credits-Limit": {
                                "$ref": "#/components/headers/X-Credits-Limit"
                            },
                            "X-Credits-Remaining": {
                                "$ref": "#/components/headers/X-Credits-Remaining"
                            },
                            "X-Credits-Cost": {
                                "$ref": "#/components/headers/X-Credits-Cost"
                            },
                            "X-Concurrency-Limit": {
                                "$ref": "#/components/headers/X-Concurrency-Limit"
                            },
                            "X-Concurrency-Remaining": {
                                "$ref": "#/components/headers/X-Concurrency-Remaining"
                            }
                        },
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "object",
                                    "additionalProperties": false,
                                    "properties": {
                                        "data": {
                                            "type": "array",
                                            "items": {
                                                "$ref": "#/components/schemas/CongressionalTrade"
                                            }
                                        },
                                        "meta": {
                                            "$ref": "#/components/schemas/ResponseMeta"
                                        }
                                    },
                                    "required": [
                                        "data",
                                        "meta"
                                    ]
                                },
                                "examples": {
                                    "synthetic": {
                                        "summary": "Synthetic contract example; not production data",
                                        "value": {
                                            "data": [
                                                {
                                                    "id": "record_example_1",
                                                    "official_id": "S000250",
                                                    "bioguide_id": "S000250",
                                                    "official_name": "Pete Sessions",
                                                    "chamber": "house",
                                                    "state": "TX",
                                                    "district": 17,
                                                    "owner": "self",
                                                    "instrument": {
                                                        "instrument_id": "inst_example_aapl",
                                                        "symbol": "XNAS:AAPL",
                                                        "name": "Example Corporation"
                                                    },
                                                    "company_id": "company_example_apple",
                                                    "asset_description": "International Business Machines",
                                                    "asset_type": "stock",
                                                    "transaction_date": "2026-09-18",
                                                    "disclosed_on": "2026-09-18",
                                                    "disclosure_delay_days": 21,
                                                    "type": "purchase",
                                                    "amount_min": {
                                                        "amount": "227.63",
                                                        "currency_code": "USD"
                                                    },
                                                    "amount_max": {
                                                        "amount": "227.63",
                                                        "currency_code": "USD"
                                                    },
                                                    "comment": "Dividend reinvestment"
                                                }
                                            ],
                                            "meta": {
                                                "timezone": "UTC",
                                                "as_of": "2026-11-01T00:00:00Z",
                                                "next_cursor": null,
                                                "coverage": {
                                                    "status": "complete",
                                                    "reason": null
                                                }
                                            }
                                        }
                                    }
                                }
                            },
                            "text/csv": {
                                "schema": {
                                    "type": "string"
                                }
                            }
                        }
                    },
                    "400": {
                        "$ref": "#/components/responses/BadRequest"
                    },
                    "401": {
                        "$ref": "#/components/responses/Unauthorized"
                    },
                    "403": {
                        "$ref": "#/components/responses/Forbidden"
                    },
                    "404": {
                        "$ref": "#/components/responses/NotFound"
                    },
                    "405": {
                        "$ref": "#/components/responses/MethodNotAllowed"
                    },
                    "406": {
                        "$ref": "#/components/responses/NotAcceptable"
                    },
                    "409": {
                        "$ref": "#/components/responses/Conflict"
                    },
                    "413": {
                        "$ref": "#/components/responses/ContentTooLarge"
                    },
                    "414": {
                        "$ref": "#/components/responses/URITooLong"
                    },
                    "415": {
                        "$ref": "#/components/responses/UnsupportedMediaType"
                    },
                    "422": {
                        "$ref": "#/components/responses/UnprocessableContent"
                    },
                    "429": {
                        "$ref": "#/components/responses/TooManyRequests"
                    },
                    "431": {
                        "$ref": "#/components/responses/RequestHeaderFieldsTooLarge"
                    },
                    "500": {
                        "$ref": "#/components/responses/InternalServerError"
                    },
                    "503": {
                        "$ref": "#/components/responses/ServiceUnavailable"
                    }
                },
                "x-query-constraints": [
                    {
                        "rule": "mutually_exclusive",
                        "parameters": [
                            "instrument_ids",
                            "symbols"
                        ]
                    },
                    {
                        "rule": "requires",
                        "parameter": "symbol_at",
                        "required": [
                            "symbols"
                        ]
                    },
                    {
                        "rule": "less_than",
                        "lower": "from",
                        "upper": "to"
                    },
                    {
                        "rule": "less_than",
                        "lower": "known_from",
                        "upper": "known_to"
                    }
                ],
                "x-example-query": {
                    "symbols": [
                        "XNAS:AAPL"
                    ]
                },
                "x-contract-family": "research",
                "x-credit-cost": "5 credits per request.",
                "x-availability": "available"
            }
        },
        "/v1/sanctions": {
            "get": {
                "operationId": "list_sanctions",
                "summary": "Sanctions",
                "tags": [
                    "Specialist data"
                ],
                "description": "The US Treasury OFAC Specially Designated Nationals (SDN) list and Consolidated (non-SDN) list, merged into one record per OFAC entity: people, organizations, vessels and aircraft, with every alias and non-Latin spelling, ISO countries from addresses, nationality, citizenship and vessel flag, sanctions programs, and identifiers such as IMO and MMSI numbers, passports, national and tax IDs, SWIFT/BIC codes and digital currency addresses. Refreshed daily from OFAC's published exports, usually the evening (New York time) of the day OFAC acts. listed_on is the earliest date OFAC added the entity to one of these lists. OFAC drops delisted entries without a date, so an entity that leaves both lists stays here as removed, with removed_on the date OFAC's exports were first seen without it (status=removed or all returns them). Other jurisdictions' lists (UN, EU, UK) are not covered. A name match alone does not establish identity: confirm with the identifiers, dates and countries before acting on a match. Default order: id ascending. Results are limited to the entitled scope. Data is delivered from validated canonical batches; a connected dataset with nothing published for the key's markets yet returns 503. Access requires the operation capability on the API key.",
                "x-implementation-status": "implemented",
                "x-required-capability": "sanctions.read",
                "x-time-field": "id",
                "x-exportable": true,
                "parameters": [
                    {
                        "name": "q",
                        "in": "query",
                        "required": false,
                        "description": "Case-insensitive word match over names and aliases, in id order; no identity-match score is implied. A value that is empty or only whitespace returns 422.",
                        "schema": {
                            "type": "string",
                            "minLength": 1,
                            "maxLength": 200,
                            "pattern": "\\S"
                        }
                    },
                    {
                        "name": "countries",
                        "in": "query",
                        "required": false,
                        "description": "ISO 3166-1 alpha-2 country codes.",
                        "schema": {
                            "type": "array",
                            "minItems": 1,
                            "maxItems": 100,
                            "uniqueItems": true,
                            "items": {
                                "type": "string",
                                "pattern": "^[A-Z]{2}$"
                            }
                        },
                        "style": "form",
                        "explode": false
                    },
                    {
                        "name": "entity_type",
                        "in": "query",
                        "required": false,
                        "description": "Entity type.",
                        "schema": {
                            "type": "string",
                            "enum": [
                                "person",
                                "organization",
                                "vessel",
                                "aircraft"
                            ],
                            "description": "Entity type."
                        }
                    },
                    {
                        "name": "status",
                        "in": "query",
                        "required": false,
                        "description": "Defaults to active.",
                        "schema": {
                            "type": "string",
                            "enum": [
                                "active",
                                "removed",
                                "all"
                            ],
                            "description": "Defaults to active."
                        }
                    },
                    {
                        "name": "effective_date",
                        "in": "query",
                        "required": false,
                        "description": "Effective date, defaults to the UTC date of as_of. Returns the latest eligible snapshot on or before this date; response retains its actual snapshot date.",
                        "schema": {
                            "type": "string",
                            "format": "date"
                        }
                    },
                    {
                        "name": "as_of",
                        "in": "query",
                        "required": false,
                        "description": "Knowledge cutoff as a UTC date (YYYY-MM-DD): the response reflects what was known by the end of that day. Defaults to now; cannot be in the future. A date from before the dataset's knowledge history returns 422 point-in-time-unavailable naming the earliest one, which GET /v1/datasets lists as earliest_as_of.",
                        "schema": {
                            "type": "string",
                            "format": "date"
                        }
                    },
                    {
                        "name": "known_from",
                        "in": "query",
                        "required": false,
                        "description": "First UTC date (YYYY-MM-DD, inclusive) on which a revision became known.",
                        "schema": {
                            "type": "string",
                            "format": "date"
                        }
                    },
                    {
                        "name": "known_to",
                        "in": "query",
                        "required": false,
                        "description": "Last UTC date (YYYY-MM-DD, inclusive) on which a revision became known; on or after known_from.",
                        "schema": {
                            "type": "string",
                            "format": "date"
                        }
                    },
                    {
                        "name": "order",
                        "in": "query",
                        "required": false,
                        "description": "Direction on id; ties use ID ascending.",
                        "schema": {
                            "type": "string",
                            "enum": [
                                "asc",
                                "desc"
                            ],
                            "description": "Direction on id; ties use ID ascending.",
                            "default": "asc"
                        }
                    },
                    {
                        "name": "limit",
                        "in": "query",
                        "required": false,
                        "description": "Maximum records per page.",
                        "schema": {
                            "type": "integer",
                            "minimum": 1,
                            "maximum": 500,
                            "default": 100
                        }
                    },
                    {
                        "name": "cursor",
                        "in": "query",
                        "required": false,
                        "description": "Opaque cursor, expires after one hour; binds filters, order, resolved as_of, account/key and entitlement. Repeat the original query unchanged.",
                        "schema": {
                            "type": "string",
                            "maxLength": 4096
                        }
                    },
                    {
                        "name": "format",
                        "in": "query",
                        "description": "Response format. csv returns the data rows with a header row, for spreadsheet functions such as IMPORTDATA; nested fields become dotted columns and lists one JSON array cell, the next page cursor is returned in X-Next-Cursor and meta.errors in X-Meta-Errors. A result without rows is the header row alone, listing the documented fields of a row. Default json, or csv when format is omitted and the Accept header ranks text/csv above JSON; a format the Accept header does not admit returns 406 not-acceptable.",
                        "schema": {
                            "type": "string",
                            "enum": [
                                "json",
                                "csv"
                            ]
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Authorized records. An empty collection is a valid result; a dataset with no connected source returns 501, and one with nothing published for your markets 503.",
                        "headers": {
                            "X-RateLimit-Limit": {
                                "$ref": "#/components/headers/X-RateLimit-Limit"
                            },
                            "X-RateLimit-Remaining": {
                                "$ref": "#/components/headers/X-RateLimit-Remaining"
                            },
                            "X-RateLimit-Reset": {
                                "$ref": "#/components/headers/X-RateLimit-Reset"
                            },
                            "Cache-Control": {
                                "description": "Always no-store, private: responses of this endpoint carry no ETag and must not be stored or reused.",
                                "schema": {
                                    "type": "string",
                                    "const": "no-store, private"
                                }
                            },
                            "X-Request-ID": {
                                "$ref": "#/components/headers/X-Request-ID"
                            },
                            "X-Next-Cursor": {
                                "$ref": "#/components/headers/X-Next-Cursor"
                            },
                            "X-Meta-Errors": {
                                "$ref": "#/components/headers/X-Meta-Errors"
                            },
                            "X-Credits-Limit": {
                                "$ref": "#/components/headers/X-Credits-Limit"
                            },
                            "X-Credits-Remaining": {
                                "$ref": "#/components/headers/X-Credits-Remaining"
                            },
                            "X-Credits-Cost": {
                                "$ref": "#/components/headers/X-Credits-Cost"
                            },
                            "X-Concurrency-Limit": {
                                "$ref": "#/components/headers/X-Concurrency-Limit"
                            },
                            "X-Concurrency-Remaining": {
                                "$ref": "#/components/headers/X-Concurrency-Remaining"
                            }
                        },
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "object",
                                    "additionalProperties": false,
                                    "properties": {
                                        "data": {
                                            "type": "array",
                                            "items": {
                                                "$ref": "#/components/schemas/SanctionedEntity"
                                            }
                                        },
                                        "meta": {
                                            "$ref": "#/components/schemas/ResponseMeta"
                                        }
                                    },
                                    "required": [
                                        "data",
                                        "meta"
                                    ]
                                },
                                "examples": {
                                    "synthetic": {
                                        "summary": "Synthetic contract example; not production data",
                                        "value": {
                                            "data": [
                                                {
                                                    "id": "record_example_1",
                                                    "name": "example",
                                                    "entity_type": "person",
                                                    "aliases": [],
                                                    "countries": [],
                                                    "programs": [],
                                                    "identifiers": [],
                                                    "listed_on": "2026-09-18",
                                                    "removed_on": null,
                                                    "status": "active"
                                                }
                                            ],
                                            "meta": {
                                                "timezone": "UTC",
                                                "as_of": "2026-11-01T00:00:00Z",
                                                "next_cursor": null,
                                                "coverage": {
                                                    "status": "complete",
                                                    "reason": null
                                                }
                                            }
                                        }
                                    }
                                }
                            },
                            "text/csv": {
                                "schema": {
                                    "type": "string"
                                }
                            }
                        }
                    },
                    "400": {
                        "$ref": "#/components/responses/BadRequest"
                    },
                    "401": {
                        "$ref": "#/components/responses/Unauthorized"
                    },
                    "403": {
                        "$ref": "#/components/responses/Forbidden"
                    },
                    "404": {
                        "$ref": "#/components/responses/NotFound"
                    },
                    "405": {
                        "$ref": "#/components/responses/MethodNotAllowed"
                    },
                    "406": {
                        "$ref": "#/components/responses/NotAcceptable"
                    },
                    "409": {
                        "$ref": "#/components/responses/Conflict"
                    },
                    "413": {
                        "$ref": "#/components/responses/ContentTooLarge"
                    },
                    "414": {
                        "$ref": "#/components/responses/URITooLong"
                    },
                    "415": {
                        "$ref": "#/components/responses/UnsupportedMediaType"
                    },
                    "422": {
                        "$ref": "#/components/responses/UnprocessableContent"
                    },
                    "429": {
                        "$ref": "#/components/responses/TooManyRequests"
                    },
                    "431": {
                        "$ref": "#/components/responses/RequestHeaderFieldsTooLarge"
                    },
                    "500": {
                        "$ref": "#/components/responses/InternalServerError"
                    },
                    "503": {
                        "$ref": "#/components/responses/ServiceUnavailable"
                    }
                },
                "x-query-constraints": [
                    {
                        "rule": "less_than",
                        "lower": "known_from",
                        "upper": "known_to"
                    }
                ],
                "x-example-query": [],
                "x-contract-family": "research",
                "x-credit-cost": "5 credits per request.",
                "x-availability": "available"
            }
        },
        "/v1/datasets": {
            "get": {
                "operationId": "list_datasets",
                "summary": "Datasets",
                "tags": [
                    "Delivery"
                ],
                "description": "Discover dataset implementation and account-specific readiness, supported filters and point-in-time availability. Default order: id ascending. Results are limited to the entitled scope. Never 501 or 503: a dataset with nothing published is reported as rows, implementation_status planned or availability unavailable in /v1/datasets and coverage status unavailable in /v1/datasets/{dataset}/coverage. Access requires the operation capability on the API key.",
                "x-implementation-status": "implemented",
                "x-required-capability": "reference.read",
                "x-time-field": "id",
                "x-exportable": false,
                "parameters": [
                    {
                        "name": "as_of",
                        "in": "query",
                        "required": false,
                        "description": "Not supported: only the current catalog is served, and any as_of returns 422 point-in-time-unavailable. Omit it.",
                        "schema": {
                            "type": "string",
                            "format": "date"
                        }
                    },
                    {
                        "name": "limit",
                        "in": "query",
                        "required": false,
                        "description": "Maximum records per page.",
                        "schema": {
                            "type": "integer",
                            "minimum": 1,
                            "maximum": 500,
                            "default": 100
                        }
                    },
                    {
                        "name": "cursor",
                        "in": "query",
                        "required": false,
                        "description": "Opaque cursor, expires after one hour; binds filters, order, resolved as_of, account/key and entitlement. Repeat the original query unchanged.",
                        "schema": {
                            "type": "string",
                            "maxLength": 4096
                        }
                    },
                    {
                        "name": "format",
                        "in": "query",
                        "description": "Response format. csv returns the data rows with a header row, for spreadsheet functions such as IMPORTDATA; nested fields become dotted columns and lists one JSON array cell, the next page cursor is returned in X-Next-Cursor and meta.errors in X-Meta-Errors. A result without rows is the header row alone, listing the documented fields of a row. Default json, or csv when format is omitted and the Accept header ranks text/csv above JSON; a format the Accept header does not admit returns 406 not-acceptable.",
                        "schema": {
                            "type": "string",
                            "enum": [
                                "json",
                                "csv"
                            ]
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Authorized records. An empty collection is a valid result; a dataset with no connected source returns 501, and one with nothing published for your markets 503.",
                        "headers": {
                            "X-RateLimit-Limit": {
                                "$ref": "#/components/headers/X-RateLimit-Limit"
                            },
                            "X-RateLimit-Remaining": {
                                "$ref": "#/components/headers/X-RateLimit-Remaining"
                            },
                            "X-RateLimit-Reset": {
                                "$ref": "#/components/headers/X-RateLimit-Reset"
                            },
                            "Cache-Control": {
                                "description": "Always no-store, private: responses of this endpoint carry no ETag and must not be stored or reused.",
                                "schema": {
                                    "type": "string",
                                    "const": "no-store, private"
                                }
                            },
                            "X-Request-ID": {
                                "$ref": "#/components/headers/X-Request-ID"
                            },
                            "X-Next-Cursor": {
                                "$ref": "#/components/headers/X-Next-Cursor"
                            },
                            "X-Meta-Errors": {
                                "$ref": "#/components/headers/X-Meta-Errors"
                            },
                            "X-Credits-Limit": {
                                "$ref": "#/components/headers/X-Credits-Limit"
                            },
                            "X-Credits-Remaining": {
                                "$ref": "#/components/headers/X-Credits-Remaining"
                            },
                            "X-Credits-Cost": {
                                "$ref": "#/components/headers/X-Credits-Cost"
                            },
                            "X-Concurrency-Limit": {
                                "$ref": "#/components/headers/X-Concurrency-Limit"
                            },
                            "X-Concurrency-Remaining": {
                                "$ref": "#/components/headers/X-Concurrency-Remaining"
                            }
                        },
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "object",
                                    "additionalProperties": false,
                                    "properties": {
                                        "data": {
                                            "type": "array",
                                            "items": {
                                                "$ref": "#/components/schemas/Dataset"
                                            }
                                        },
                                        "meta": {
                                            "$ref": "#/components/schemas/ResponseMeta"
                                        }
                                    },
                                    "required": [
                                        "data",
                                        "meta"
                                    ]
                                },
                                "examples": {
                                    "synthetic": {
                                        "summary": "Synthetic contract example; not production data",
                                        "value": {
                                            "data": [
                                                {
                                                    "id": "news",
                                                    "name": "Financial news",
                                                    "description": "example",
                                                    "resource_paths": [],
                                                    "implementation_status": "planned",
                                                    "availability": "unavailable",
                                                    "supports_point_in_time": false,
                                                    "earliest_as_of": "2026-09-23",
                                                    "filters": [],
                                                    "capability": "news.read"
                                                }
                                            ],
                                            "meta": {
                                                "timezone": "UTC",
                                                "as_of": "2026-11-01T00:00:00Z",
                                                "next_cursor": null,
                                                "coverage": {
                                                    "status": "complete",
                                                    "reason": null
                                                }
                                            }
                                        }
                                    }
                                }
                            },
                            "text/csv": {
                                "schema": {
                                    "type": "string"
                                }
                            }
                        }
                    },
                    "400": {
                        "$ref": "#/components/responses/BadRequest"
                    },
                    "401": {
                        "$ref": "#/components/responses/Unauthorized"
                    },
                    "403": {
                        "$ref": "#/components/responses/Forbidden"
                    },
                    "404": {
                        "$ref": "#/components/responses/NotFound"
                    },
                    "405": {
                        "$ref": "#/components/responses/MethodNotAllowed"
                    },
                    "406": {
                        "$ref": "#/components/responses/NotAcceptable"
                    },
                    "409": {
                        "$ref": "#/components/responses/Conflict"
                    },
                    "413": {
                        "$ref": "#/components/responses/ContentTooLarge"
                    },
                    "414": {
                        "$ref": "#/components/responses/URITooLong"
                    },
                    "415": {
                        "$ref": "#/components/responses/UnsupportedMediaType"
                    },
                    "422": {
                        "$ref": "#/components/responses/UnprocessableContent"
                    },
                    "429": {
                        "$ref": "#/components/responses/TooManyRequests"
                    },
                    "431": {
                        "$ref": "#/components/responses/RequestHeaderFieldsTooLarge"
                    },
                    "500": {
                        "$ref": "#/components/responses/InternalServerError"
                    },
                    "503": {
                        "$ref": "#/components/responses/ServiceUnavailable"
                    }
                },
                "x-query-constraints": [],
                "x-example-query": [],
                "x-contract-family": "research",
                "x-credit-cost": "5 credits per request.",
                "x-availability": "available"
            }
        },
        "/v1/datasets/{dataset}/coverage": {
            "get": {
                "operationId": "list_datasets_dataset_coverage",
                "summary": "Dataset coverage",
                "tags": [
                    "Delivery"
                ],
                "description": "Entitlement-filtered source coverage and historical extent. Coverage is evidence of readiness, not a blanket promise of complete data. delay_seconds is null. Rows are ordered by exchange_mic, country_code, instrument_id and series_id. A dataset with nothing published is reported as rows with status unavailable, not refused. Default order: id ascending. Omitting entity selectors returns the entitled universe; explicit unauthorized selectors return 403. Never 501 or 503: a dataset with nothing published is reported as rows, implementation_status planned or availability unavailable in /v1/datasets and coverage status unavailable in /v1/datasets/{dataset}/coverage. Access requires the operation capability on the API key.",
                "x-implementation-status": "implemented",
                "x-required-capability": "reference.read",
                "x-time-field": "id",
                "x-exportable": false,
                "parameters": [
                    {
                        "name": "dataset",
                        "in": "path",
                        "required": true,
                        "description": "Dataset slug: the path after /v1/ with / written as ., such as eod or financials.statements. An unknown slug, or one outside the key's capabilities, returns 404 dataset-not-found.",
                        "schema": {
                            "type": "string",
                            "description": "Dataset slug."
                        },
                        "example": "eod"
                    },
                    {
                        "name": "instrument_ids",
                        "in": "query",
                        "required": false,
                        "description": "Filter by stable instrument IDs. IDs and symbols may not be combined.",
                        "schema": {
                            "type": "array",
                            "minItems": 1,
                            "maxItems": 100,
                            "uniqueItems": true,
                            "items": {
                                "type": "string",
                                "description": "Opaque stable public identifier; never an internal database key.",
                                "minLength": 1,
                                "maxLength": 128,
                                "pattern": "^[A-Za-z0-9][A-Za-z0-9_.:-]{0,127}$"
                            }
                        },
                        "style": "form",
                        "explode": false
                    },
                    {
                        "name": "symbols",
                        "in": "query",
                        "required": false,
                        "description": "Convenience lookup for exchange-listed instruments as MIC:TICKER or a bare ticker, which resolves to the exchange listing that ticker; resolves at symbol_at. The MIC and the ticker are case-insensitive, and two spellings of one listing (AAPL and XNAS:AAPL) count as a repeated value. A bare ticker that names no listing as written is also read in the common vendor spellings: with an exchange suffix (RY.TO, SHEL.L, VOD.LSE, BHP.AX), ^GSPC for INDEX:GSPC, and EURUSD=X or EURUSD for FOREX:EUR-USD. A ticker may contain a space (BAC PRL) but not start or end with one. A request in which no symbol resolves returns 404 symbol-not-resolved; otherwise each symbol that does not resolve, or resolves to a listing with no rows for the request (no-data), is an entry of meta.errors. IDs and symbols may not be combined.",
                        "schema": {
                            "type": "array",
                            "minItems": 1,
                            "maxItems": 100,
                            "uniqueItems": true,
                            "items": {
                                "type": "string",
                                "pattern": "^(?:(?:[A-Za-z0-9]{4}|[Cc][Rr][Yy][Pp][Tt][Oo]|[Ff][Oo][Rr][Ee][Xx]|[Ii][Nn][Dd][Ee][Xx]):|\\^)?[A-Za-z0-9](?:[A-Za-z0-9./_^= -]{0,62}[A-Za-z0-9./_^=-])?$"
                            }
                        },
                        "style": "form",
                        "explode": false,
                        "example": [
                            "XNAS:AAPL"
                        ]
                    },
                    {
                        "name": "symbol_at",
                        "in": "query",
                        "required": false,
                        "description": "Resolve symbols as they were assigned at the end of this UTC date (YYYY-MM-DD); defaults to as_of. Only listings the security master holds resolve: it was built in September 2026 and records delistings from then on, so most issuers delisted earlier, such as TWTR or SIVB, resolve at no date. Only valid with symbols.",
                        "schema": {
                            "type": "string",
                            "format": "date"
                        }
                    },
                    {
                        "name": "countries",
                        "in": "query",
                        "required": false,
                        "description": "ISO 3166-1 alpha-2 country codes.",
                        "schema": {
                            "type": "array",
                            "minItems": 1,
                            "maxItems": 100,
                            "uniqueItems": true,
                            "items": {
                                "type": "string",
                                "pattern": "^[A-Z]{2}$"
                            }
                        },
                        "style": "form",
                        "explode": false
                    },
                    {
                        "name": "series_ids",
                        "in": "query",
                        "required": false,
                        "description": "Series IDs.",
                        "schema": {
                            "type": "array",
                            "minItems": 1,
                            "maxItems": 100,
                            "uniqueItems": true,
                            "items": {
                                "minLength": 1,
                                "maxLength": 128,
                                "type": "string",
                                "description": "Series ID."
                            }
                        },
                        "style": "form",
                        "explode": false
                    },
                    {
                        "name": "as_of",
                        "in": "query",
                        "required": false,
                        "description": "Knowledge cutoff as a UTC date (YYYY-MM-DD) for the coverage of a research dataset; cannot be in the future. A date before the dataset's history returns no rows. For core datasets (those of the core endpoints, such as eod and quotes), and for bars while they are read from end-of-day prices, any as_of returns 422 point-in-time-unavailable.",
                        "schema": {
                            "type": "string",
                            "format": "date"
                        }
                    },
                    {
                        "name": "limit",
                        "in": "query",
                        "required": false,
                        "description": "Maximum records per page.",
                        "schema": {
                            "type": "integer",
                            "minimum": 1,
                            "maximum": 500,
                            "default": 100
                        }
                    },
                    {
                        "name": "cursor",
                        "in": "query",
                        "required": false,
                        "description": "Opaque cursor, expires after one hour; binds filters, order, resolved as_of, account/key and entitlement. Repeat the original query unchanged.",
                        "schema": {
                            "type": "string",
                            "maxLength": 4096
                        }
                    },
                    {
                        "name": "format",
                        "in": "query",
                        "description": "Response format. csv returns the data rows with a header row, for spreadsheet functions such as IMPORTDATA; nested fields become dotted columns and lists one JSON array cell, the next page cursor is returned in X-Next-Cursor and meta.errors in X-Meta-Errors. A result without rows is the header row alone, listing the documented fields of a row. Default json, or csv when format is omitted and the Accept header ranks text/csv above JSON; a format the Accept header does not admit returns 406 not-acceptable.",
                        "schema": {
                            "type": "string",
                            "enum": [
                                "json",
                                "csv"
                            ]
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Authorized records. An empty collection is a valid result; a dataset with no connected source returns 501, and one with nothing published for your markets 503.",
                        "headers": {
                            "X-RateLimit-Limit": {
                                "$ref": "#/components/headers/X-RateLimit-Limit"
                            },
                            "X-RateLimit-Remaining": {
                                "$ref": "#/components/headers/X-RateLimit-Remaining"
                            },
                            "X-RateLimit-Reset": {
                                "$ref": "#/components/headers/X-RateLimit-Reset"
                            },
                            "Cache-Control": {
                                "description": "Always no-store, private: responses of this endpoint carry no ETag and must not be stored or reused.",
                                "schema": {
                                    "type": "string",
                                    "const": "no-store, private"
                                }
                            },
                            "X-Request-ID": {
                                "$ref": "#/components/headers/X-Request-ID"
                            },
                            "X-Next-Cursor": {
                                "$ref": "#/components/headers/X-Next-Cursor"
                            },
                            "X-Meta-Errors": {
                                "$ref": "#/components/headers/X-Meta-Errors"
                            },
                            "X-Credits-Limit": {
                                "$ref": "#/components/headers/X-Credits-Limit"
                            },
                            "X-Credits-Remaining": {
                                "$ref": "#/components/headers/X-Credits-Remaining"
                            },
                            "X-Credits-Cost": {
                                "$ref": "#/components/headers/X-Credits-Cost"
                            },
                            "X-Concurrency-Limit": {
                                "$ref": "#/components/headers/X-Concurrency-Limit"
                            },
                            "X-Concurrency-Remaining": {
                                "$ref": "#/components/headers/X-Concurrency-Remaining"
                            }
                        },
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "object",
                                    "additionalProperties": false,
                                    "properties": {
                                        "data": {
                                            "type": "array",
                                            "items": {
                                                "$ref": "#/components/schemas/DatasetCoverage"
                                            }
                                        },
                                        "meta": {
                                            "$ref": "#/components/schemas/ResponseMeta"
                                        }
                                    },
                                    "required": [
                                        "data",
                                        "meta"
                                    ]
                                },
                                "examples": {
                                    "synthetic": {
                                        "summary": "Synthetic contract example; not production data",
                                        "value": {
                                            "data": [
                                                {
                                                    "dataset": "ratings.esg",
                                                    "asset_type": "equity",
                                                    "exchange_mic": "XNAS",
                                                    "country_code": "US",
                                                    "instrument_id": "inst_example_aapl",
                                                    "series_id": "example",
                                                    "history_from": null,
                                                    "history_to": null,
                                                    "knowledge_from": null,
                                                    "latest_event_at": null,
                                                    "checked_at": "2026-09-18T20:00:00Z",
                                                    "status": "unavailable",
                                                    "reason": "Source adapter not implemented.",
                                                    "delay_seconds": null,
                                                    "intervals": [],
                                                    "gaps": null
                                                }
                                            ],
                                            "meta": {
                                                "timezone": "UTC",
                                                "as_of": "2026-11-01T00:00:00Z",
                                                "next_cursor": null,
                                                "coverage": {
                                                    "status": "complete",
                                                    "reason": null
                                                }
                                            }
                                        }
                                    }
                                }
                            },
                            "text/csv": {
                                "schema": {
                                    "type": "string"
                                }
                            }
                        }
                    },
                    "400": {
                        "$ref": "#/components/responses/BadRequest"
                    },
                    "401": {
                        "$ref": "#/components/responses/Unauthorized"
                    },
                    "403": {
                        "$ref": "#/components/responses/Forbidden"
                    },
                    "404": {
                        "$ref": "#/components/responses/NotFound"
                    },
                    "405": {
                        "$ref": "#/components/responses/MethodNotAllowed"
                    },
                    "406": {
                        "$ref": "#/components/responses/NotAcceptable"
                    },
                    "409": {
                        "$ref": "#/components/responses/Conflict"
                    },
                    "413": {
                        "$ref": "#/components/responses/ContentTooLarge"
                    },
                    "414": {
                        "$ref": "#/components/responses/URITooLong"
                    },
                    "415": {
                        "$ref": "#/components/responses/UnsupportedMediaType"
                    },
                    "422": {
                        "$ref": "#/components/responses/UnprocessableContent"
                    },
                    "429": {
                        "$ref": "#/components/responses/TooManyRequests"
                    },
                    "431": {
                        "$ref": "#/components/responses/RequestHeaderFieldsTooLarge"
                    },
                    "500": {
                        "$ref": "#/components/responses/InternalServerError"
                    },
                    "503": {
                        "$ref": "#/components/responses/ServiceUnavailable"
                    }
                },
                "x-query-constraints": [
                    {
                        "rule": "mutually_exclusive",
                        "parameters": [
                            "instrument_ids",
                            "symbols"
                        ]
                    },
                    {
                        "rule": "requires",
                        "parameter": "symbol_at",
                        "required": [
                            "symbols"
                        ]
                    }
                ],
                "x-example-query": {
                    "dataset": "eod",
                    "symbols": [
                        "XNAS:AAPL"
                    ]
                },
                "x-contract-family": "research",
                "x-credit-cost": "5 credits per request.",
                "x-availability": "available"
            }
        },
        "/v1/crypto/assets": {
            "get": {
                "operationId": "list_crypto_assets",
                "summary": "Crypto assets",
                "tags": [
                    "Reference data"
                ],
                "description": "Crypto asset metadata and supply; trading pairs remain separate instruments with base/quote IDs. One row per coin with a profile (name, links, supply, market capitalization, and for tokens their network and contract): one source's supply and market capitalization are read daily for every coin it prices (about nine in ten listed pairs), the other's profile of the leading coins weekly, and the newest observation is served, with market_cap and fully_diluted_market_cap carried to the latest daily close in between. A pair whose coin neither source profiles is in /v1/tickers and /v1/eod but not here. Default order: id ascending. Omitting entity selectors returns the entitled universe; explicit unauthorized selectors return 403. Data is delivered from validated canonical batches; a connected dataset with nothing published for the key's markets yet returns 503. Access requires the operation capability on the API key.",
                "x-implementation-status": "implemented",
                "x-required-capability": "crypto.read",
                "x-time-field": "id",
                "x-exportable": true,
                "parameters": [
                    {
                        "name": "instrument_ids",
                        "in": "query",
                        "required": false,
                        "description": "Crypto asset IDs: a coin's ID, which is a pair's base_instrument_id; a pair's own instrument_id matches no row.",
                        "schema": {
                            "type": "array",
                            "minItems": 1,
                            "maxItems": 100,
                            "uniqueItems": true,
                            "items": {
                                "type": "string",
                                "description": "Opaque stable public identifier; never an internal database key.",
                                "minLength": 1,
                                "maxLength": 128,
                                "pattern": "^[A-Za-z0-9][A-Za-z0-9_.:-]{0,127}$"
                            }
                        },
                        "style": "form",
                        "explode": false
                    },
                    {
                        "name": "effective_date",
                        "in": "query",
                        "required": false,
                        "description": "Effective date, defaults to the UTC date of as_of. Returns the latest eligible snapshot on or before this date; response retains its actual snapshot date.",
                        "schema": {
                            "type": "string",
                            "format": "date"
                        }
                    },
                    {
                        "name": "as_of",
                        "in": "query",
                        "required": false,
                        "description": "Knowledge cutoff as a UTC date (YYYY-MM-DD): the response reflects what was known by the end of that day. Defaults to now; cannot be in the future. A date from before the dataset's knowledge history returns 422 point-in-time-unavailable naming the earliest one, which GET /v1/datasets lists as earliest_as_of.",
                        "schema": {
                            "type": "string",
                            "format": "date"
                        }
                    },
                    {
                        "name": "known_from",
                        "in": "query",
                        "required": false,
                        "description": "First UTC date (YYYY-MM-DD, inclusive) on which a revision became known.",
                        "schema": {
                            "type": "string",
                            "format": "date"
                        }
                    },
                    {
                        "name": "known_to",
                        "in": "query",
                        "required": false,
                        "description": "Last UTC date (YYYY-MM-DD, inclusive) on which a revision became known; on or after known_from.",
                        "schema": {
                            "type": "string",
                            "format": "date"
                        }
                    },
                    {
                        "name": "order",
                        "in": "query",
                        "required": false,
                        "description": "Direction on id; ties use ID ascending.",
                        "schema": {
                            "type": "string",
                            "enum": [
                                "asc",
                                "desc"
                            ],
                            "description": "Direction on id; ties use ID ascending.",
                            "default": "asc"
                        }
                    },
                    {
                        "name": "limit",
                        "in": "query",
                        "required": false,
                        "description": "Maximum records per page.",
                        "schema": {
                            "type": "integer",
                            "minimum": 1,
                            "maximum": 500,
                            "default": 100
                        }
                    },
                    {
                        "name": "cursor",
                        "in": "query",
                        "required": false,
                        "description": "Opaque cursor, expires after one hour; binds filters, order, resolved as_of, account/key and entitlement. Repeat the original query unchanged.",
                        "schema": {
                            "type": "string",
                            "maxLength": 4096
                        }
                    },
                    {
                        "name": "format",
                        "in": "query",
                        "description": "Response format. csv returns the data rows with a header row, for spreadsheet functions such as IMPORTDATA; nested fields become dotted columns and lists one JSON array cell, the next page cursor is returned in X-Next-Cursor and meta.errors in X-Meta-Errors. A result without rows is the header row alone, listing the documented fields of a row. Default json, or csv when format is omitted and the Accept header ranks text/csv above JSON; a format the Accept header does not admit returns 406 not-acceptable.",
                        "schema": {
                            "type": "string",
                            "enum": [
                                "json",
                                "csv"
                            ]
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Authorized records. An empty collection is a valid result; a dataset with no connected source returns 501, and one with nothing published for your markets 503.",
                        "headers": {
                            "X-RateLimit-Limit": {
                                "$ref": "#/components/headers/X-RateLimit-Limit"
                            },
                            "X-RateLimit-Remaining": {
                                "$ref": "#/components/headers/X-RateLimit-Remaining"
                            },
                            "X-RateLimit-Reset": {
                                "$ref": "#/components/headers/X-RateLimit-Reset"
                            },
                            "Cache-Control": {
                                "description": "Always no-store, private: responses of this endpoint carry no ETag and must not be stored or reused.",
                                "schema": {
                                    "type": "string",
                                    "const": "no-store, private"
                                }
                            },
                            "X-Request-ID": {
                                "$ref": "#/components/headers/X-Request-ID"
                            },
                            "X-Next-Cursor": {
                                "$ref": "#/components/headers/X-Next-Cursor"
                            },
                            "X-Meta-Errors": {
                                "$ref": "#/components/headers/X-Meta-Errors"
                            },
                            "X-Credits-Limit": {
                                "$ref": "#/components/headers/X-Credits-Limit"
                            },
                            "X-Credits-Remaining": {
                                "$ref": "#/components/headers/X-Credits-Remaining"
                            },
                            "X-Credits-Cost": {
                                "$ref": "#/components/headers/X-Credits-Cost"
                            },
                            "X-Concurrency-Limit": {
                                "$ref": "#/components/headers/X-Concurrency-Limit"
                            },
                            "X-Concurrency-Remaining": {
                                "$ref": "#/components/headers/X-Concurrency-Remaining"
                            }
                        },
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "object",
                                    "additionalProperties": false,
                                    "properties": {
                                        "data": {
                                            "type": "array",
                                            "items": {
                                                "$ref": "#/components/schemas/CryptoAsset"
                                            }
                                        },
                                        "meta": {
                                            "$ref": "#/components/schemas/ResponseMeta"
                                        }
                                    },
                                    "required": [
                                        "data",
                                        "meta"
                                    ]
                                },
                                "examples": {
                                    "synthetic": {
                                        "summary": "Synthetic contract example; not production data",
                                        "value": {
                                            "data": [
                                                {
                                                    "id": "record_example_1",
                                                    "instrument_id": "inst_example_aapl",
                                                    "name": "Example Coin",
                                                    "code": "EXC",
                                                    "network": "Example Network",
                                                    "contract_address": "example",
                                                    "website_url": "https://example.com",
                                                    "whitepaper_url": "https://example.com/whitepaper",
                                                    "circulating_supply": "20000000",
                                                    "total_supply": "20000000",
                                                    "max_supply": "21000000",
                                                    "market_cap": "1727580677399.2",
                                                    "fully_diluted_market_cap": "1805628720913.8",
                                                    "observed_on": "2026-09-18"
                                                }
                                            ],
                                            "meta": {
                                                "timezone": "UTC",
                                                "as_of": "2026-11-01T00:00:00Z",
                                                "next_cursor": null,
                                                "coverage": {
                                                    "status": "complete",
                                                    "reason": null
                                                }
                                            }
                                        }
                                    }
                                }
                            },
                            "text/csv": {
                                "schema": {
                                    "type": "string"
                                }
                            }
                        }
                    },
                    "400": {
                        "$ref": "#/components/responses/BadRequest"
                    },
                    "401": {
                        "$ref": "#/components/responses/Unauthorized"
                    },
                    "403": {
                        "$ref": "#/components/responses/Forbidden"
                    },
                    "404": {
                        "$ref": "#/components/responses/NotFound"
                    },
                    "405": {
                        "$ref": "#/components/responses/MethodNotAllowed"
                    },
                    "406": {
                        "$ref": "#/components/responses/NotAcceptable"
                    },
                    "409": {
                        "$ref": "#/components/responses/Conflict"
                    },
                    "413": {
                        "$ref": "#/components/responses/ContentTooLarge"
                    },
                    "414": {
                        "$ref": "#/components/responses/URITooLong"
                    },
                    "415": {
                        "$ref": "#/components/responses/UnsupportedMediaType"
                    },
                    "422": {
                        "$ref": "#/components/responses/UnprocessableContent"
                    },
                    "429": {
                        "$ref": "#/components/responses/TooManyRequests"
                    },
                    "431": {
                        "$ref": "#/components/responses/RequestHeaderFieldsTooLarge"
                    },
                    "500": {
                        "$ref": "#/components/responses/InternalServerError"
                    },
                    "503": {
                        "$ref": "#/components/responses/ServiceUnavailable"
                    }
                },
                "x-query-constraints": [
                    {
                        "rule": "less_than",
                        "lower": "known_from",
                        "upper": "known_to"
                    }
                ],
                "x-example-query": [],
                "x-contract-family": "research",
                "x-credit-cost": "5 credits per request.",
                "x-availability": "available"
            }
        },
        "/v1/screener": {
            "post": {
                "operationId": "screen_instruments",
                "summary": "Screen instruments",
                "tags": [
                    "Analytics"
                ],
                "description": "Screen the entitled instrument universe using typed filters against a daily snapshot of every active listing, materialized after the evening end-of-day corrections. Numeric fields use latest eligible observations at as_of: close, volume and change_percent from the latest completed daily bar; valuation, yield and growth from versioned metric definitions; sector and industry from the company profile. Each snapshot is published at 22:30 New York time and the one before it is kept, so as_of reaches back to when the previous evening's snapshot finished publishing: between about one and two days. Any earlier as_of returns 422 point-in-time-unavailable naming the earliest available as_of. A body that states one JSON member twice, such as limit, returns 422 naming it; several filters on one field, such as close gte and close lte, combine as a range. Return the filter and sort fields used for each match. Data not available for a requested field returns 422, not an empty screen. Repeating a cursor requires the identical body except cursor. Default order: market_capitalization descending, instrument ID ascending; matches without the sort metric follow those that have it, so a screen for asset_type etf, crypto, forex or index, which carry no market capitalization, is best sorted on close or volume (an index has no volume). Default order: requested sort then instrument ID ascending. Results are limited to the entitled scope. Data is delivered from validated canonical batches; a connected dataset with nothing published for the key's markets yet returns 503. Access requires the operation capability on the API key.",
                "x-implementation-status": "implemented",
                "x-required-capability": "screener.read",
                "x-time-field": "id",
                "x-exportable": false,
                "parameters": [],
                "responses": {
                    "200": {
                        "description": "Authorized records. An empty collection is a valid result; a dataset with no connected source returns 501, and one with nothing published for your markets 503.",
                        "headers": {
                            "X-RateLimit-Limit": {
                                "$ref": "#/components/headers/X-RateLimit-Limit"
                            },
                            "X-RateLimit-Remaining": {
                                "$ref": "#/components/headers/X-RateLimit-Remaining"
                            },
                            "X-RateLimit-Reset": {
                                "$ref": "#/components/headers/X-RateLimit-Reset"
                            },
                            "Cache-Control": {
                                "description": "Always no-store, private: responses of this endpoint carry no ETag and must not be stored or reused.",
                                "schema": {
                                    "type": "string",
                                    "const": "no-store, private"
                                }
                            },
                            "X-Request-ID": {
                                "$ref": "#/components/headers/X-Request-ID"
                            },
                            "X-Next-Cursor": {
                                "$ref": "#/components/headers/X-Next-Cursor"
                            },
                            "X-Meta-Errors": {
                                "$ref": "#/components/headers/X-Meta-Errors"
                            },
                            "X-Credits-Limit": {
                                "$ref": "#/components/headers/X-Credits-Limit"
                            },
                            "X-Credits-Remaining": {
                                "$ref": "#/components/headers/X-Credits-Remaining"
                            },
                            "X-Credits-Cost": {
                                "$ref": "#/components/headers/X-Credits-Cost"
                            },
                            "X-Concurrency-Limit": {
                                "$ref": "#/components/headers/X-Concurrency-Limit"
                            },
                            "X-Concurrency-Remaining": {
                                "$ref": "#/components/headers/X-Concurrency-Remaining"
                            }
                        },
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "object",
                                    "additionalProperties": false,
                                    "properties": {
                                        "data": {
                                            "type": "array",
                                            "items": {
                                                "$ref": "#/components/schemas/ScreenMatch"
                                            }
                                        },
                                        "meta": {
                                            "$ref": "#/components/schemas/ResponseMeta"
                                        }
                                    },
                                    "required": [
                                        "data",
                                        "meta"
                                    ]
                                },
                                "examples": {
                                    "synthetic": {
                                        "summary": "Synthetic contract example; not production data",
                                        "value": {
                                            "data": [
                                                {
                                                    "instrument": {
                                                        "instrument_id": "inst_example_aapl",
                                                        "symbol": "XNAS:AAPL",
                                                        "name": "Example Corporation"
                                                    },
                                                    "company_id": "company_example_apple",
                                                    "observed_at": "2026-09-18T20:00:00Z",
                                                    "values": [],
                                                    "classifications": []
                                                }
                                            ],
                                            "meta": {
                                                "timezone": "UTC",
                                                "as_of": "2026-11-01T00:00:00Z",
                                                "next_cursor": null,
                                                "coverage": {
                                                    "status": "complete",
                                                    "reason": null
                                                }
                                            }
                                        }
                                    }
                                }
                            },
                            "text/csv": {
                                "schema": {
                                    "type": "string"
                                }
                            }
                        }
                    },
                    "400": {
                        "$ref": "#/components/responses/BadRequest"
                    },
                    "401": {
                        "$ref": "#/components/responses/Unauthorized"
                    },
                    "403": {
                        "$ref": "#/components/responses/Forbidden"
                    },
                    "404": {
                        "$ref": "#/components/responses/NotFound"
                    },
                    "405": {
                        "$ref": "#/components/responses/MethodNotAllowed"
                    },
                    "406": {
                        "$ref": "#/components/responses/NotAcceptable"
                    },
                    "409": {
                        "$ref": "#/components/responses/Conflict"
                    },
                    "413": {
                        "$ref": "#/components/responses/ContentTooLarge"
                    },
                    "414": {
                        "$ref": "#/components/responses/URITooLong"
                    },
                    "415": {
                        "$ref": "#/components/responses/UnsupportedMediaType"
                    },
                    "422": {
                        "$ref": "#/components/responses/UnprocessableContent"
                    },
                    "429": {
                        "$ref": "#/components/responses/TooManyRequests"
                    },
                    "431": {
                        "$ref": "#/components/responses/RequestHeaderFieldsTooLarge"
                    },
                    "500": {
                        "$ref": "#/components/responses/InternalServerError"
                    },
                    "503": {
                        "$ref": "#/components/responses/ServiceUnavailable"
                    }
                },
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/ScreenRequest"
                            },
                            "example": {
                                "filters": [
                                    {
                                        "field": "market_capitalization",
                                        "operator": "gte",
                                        "value": "1000000000"
                                    },
                                    {
                                        "field": "sector",
                                        "operator": "in",
                                        "values": [
                                            "Technology"
                                        ]
                                    }
                                ],
                                "currency_code": "USD",
                                "sort": {
                                    "field": "market_capitalization",
                                    "direction": "desc"
                                },
                                "limit": 100
                            }
                        }
                    }
                },
                "x-contract-family": "research",
                "x-credit-cost": "25 credits per request.",
                "x-availability": "available"
            }
        },
        "/v1/short-volume": {
            "get": {
                "operationId": "list_short_volume",
                "summary": "Short volume",
                "tags": [
                    "Ownership and trading"
                ],
                "description": "Daily short sale volume that off-exchange venues and alternative trading systems reported to FINRA, per instrument and trade date, with a breakdown by reporting facility. Only FINRA-reported trades are counted, so total_volume is not the consolidated volume of the day and the ratio is not a short interest measure; reported short positions are in /v1/short-interest. A day becomes knowable when OHLC imports the published file, never earlier. Default order: date ascending, id ascending. Omitting entity selectors returns the entitled universe; explicit unauthorized selectors return 403. Data is delivered from validated canonical batches; a connected dataset with nothing published for the key's markets yet returns 503. Access requires the operation capability on the API key.",
                "x-implementation-status": "implemented",
                "x-required-capability": "short-interest.read",
                "x-time-field": "date",
                "x-exportable": true,
                "parameters": [
                    {
                        "name": "instrument_ids",
                        "in": "query",
                        "required": false,
                        "description": "Filter by stable instrument IDs. IDs and symbols may not be combined.",
                        "schema": {
                            "type": "array",
                            "minItems": 1,
                            "maxItems": 100,
                            "uniqueItems": true,
                            "items": {
                                "type": "string",
                                "description": "Opaque stable public identifier; never an internal database key.",
                                "minLength": 1,
                                "maxLength": 128,
                                "pattern": "^[A-Za-z0-9][A-Za-z0-9_.:-]{0,127}$"
                            }
                        },
                        "style": "form",
                        "explode": false
                    },
                    {
                        "name": "symbols",
                        "in": "query",
                        "required": false,
                        "description": "Convenience lookup for exchange-listed instruments as MIC:TICKER or a bare ticker, which resolves to the exchange listing that ticker; resolves at symbol_at. The MIC and the ticker are case-insensitive, and two spellings of one listing (AAPL and XNAS:AAPL) count as a repeated value. A bare ticker that names no listing as written is also read in the common vendor spellings: with an exchange suffix (RY.TO, SHEL.L, VOD.LSE, BHP.AX), ^GSPC for INDEX:GSPC, and EURUSD=X or EURUSD for FOREX:EUR-USD. A ticker may contain a space (BAC PRL) but not start or end with one. A request in which no symbol resolves returns 404 symbol-not-resolved; otherwise each symbol that does not resolve, or resolves to a listing with no rows for the request (no-data), is an entry of meta.errors. IDs and symbols may not be combined.",
                        "schema": {
                            "type": "array",
                            "minItems": 1,
                            "maxItems": 100,
                            "uniqueItems": true,
                            "items": {
                                "type": "string",
                                "pattern": "^(?:(?:[A-Za-z0-9]{4}|[Cc][Rr][Yy][Pp][Tt][Oo]|[Ff][Oo][Rr][Ee][Xx]|[Ii][Nn][Dd][Ee][Xx]):|\\^)?[A-Za-z0-9](?:[A-Za-z0-9./_^= -]{0,62}[A-Za-z0-9./_^=-])?$"
                            }
                        },
                        "style": "form",
                        "explode": false,
                        "example": [
                            "XNAS:AAPL"
                        ]
                    },
                    {
                        "name": "symbol_at",
                        "in": "query",
                        "required": false,
                        "description": "Resolve symbols as they were assigned at the end of this UTC date (YYYY-MM-DD); defaults to as_of. Only listings the security master holds resolve: it was built in September 2026 and records delistings from then on, so most issuers delisted earlier, such as TWTR or SIVB, resolve at no date. Only valid with symbols.",
                        "schema": {
                            "type": "string",
                            "format": "date"
                        }
                    },
                    {
                        "name": "from",
                        "in": "query",
                        "required": false,
                        "description": "Inclusive lower bound on date.",
                        "schema": {
                            "type": "string",
                            "format": "date"
                        },
                        "example": "2026-09-01"
                    },
                    {
                        "name": "to",
                        "in": "query",
                        "required": false,
                        "description": "Inclusive upper bound on date; must be on or after from, so from equal to to selects one day.",
                        "schema": {
                            "type": "string",
                            "format": "date"
                        },
                        "example": "2026-09-25"
                    },
                    {
                        "name": "as_of",
                        "in": "query",
                        "required": false,
                        "description": "Knowledge cutoff as a UTC date (YYYY-MM-DD): the response reflects what was known by the end of that day. Defaults to now; cannot be in the future. A date from before the dataset's knowledge history returns 422 point-in-time-unavailable naming the earliest one, which GET /v1/datasets lists as earliest_as_of.",
                        "schema": {
                            "type": "string",
                            "format": "date"
                        }
                    },
                    {
                        "name": "known_from",
                        "in": "query",
                        "required": false,
                        "description": "First UTC date (YYYY-MM-DD, inclusive) on which a revision became known.",
                        "schema": {
                            "type": "string",
                            "format": "date"
                        }
                    },
                    {
                        "name": "known_to",
                        "in": "query",
                        "required": false,
                        "description": "Last UTC date (YYYY-MM-DD, inclusive) on which a revision became known; on or after known_from.",
                        "schema": {
                            "type": "string",
                            "format": "date"
                        }
                    },
                    {
                        "name": "order",
                        "in": "query",
                        "required": false,
                        "description": "Direction on date; ties use ID ascending.",
                        "schema": {
                            "type": "string",
                            "enum": [
                                "asc",
                                "desc"
                            ],
                            "description": "Direction on date; ties use ID ascending.",
                            "default": "asc"
                        }
                    },
                    {
                        "name": "limit",
                        "in": "query",
                        "required": false,
                        "description": "Maximum records per page.",
                        "schema": {
                            "type": "integer",
                            "minimum": 1,
                            "maximum": 500,
                            "default": 100
                        }
                    },
                    {
                        "name": "cursor",
                        "in": "query",
                        "required": false,
                        "description": "Opaque cursor, expires after one hour; binds filters, order, resolved as_of, account/key and entitlement. Repeat the original query unchanged.",
                        "schema": {
                            "type": "string",
                            "maxLength": 4096
                        }
                    },
                    {
                        "name": "format",
                        "in": "query",
                        "description": "Response format. csv returns the data rows with a header row, for spreadsheet functions such as IMPORTDATA; nested fields become dotted columns and lists one JSON array cell, the next page cursor is returned in X-Next-Cursor and meta.errors in X-Meta-Errors. A result without rows is the header row alone, listing the documented fields of a row. Default json, or csv when format is omitted and the Accept header ranks text/csv above JSON; a format the Accept header does not admit returns 406 not-acceptable.",
                        "schema": {
                            "type": "string",
                            "enum": [
                                "json",
                                "csv"
                            ]
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Authorized records. An empty collection is a valid result; a dataset with no connected source returns 501, and one with nothing published for your markets 503.",
                        "headers": {
                            "X-RateLimit-Limit": {
                                "$ref": "#/components/headers/X-RateLimit-Limit"
                            },
                            "X-RateLimit-Remaining": {
                                "$ref": "#/components/headers/X-RateLimit-Remaining"
                            },
                            "X-RateLimit-Reset": {
                                "$ref": "#/components/headers/X-RateLimit-Reset"
                            },
                            "Cache-Control": {
                                "description": "Always no-store, private: responses of this endpoint carry no ETag and must not be stored or reused.",
                                "schema": {
                                    "type": "string",
                                    "const": "no-store, private"
                                }
                            },
                            "X-Request-ID": {
                                "$ref": "#/components/headers/X-Request-ID"
                            },
                            "X-Next-Cursor": {
                                "$ref": "#/components/headers/X-Next-Cursor"
                            },
                            "X-Meta-Errors": {
                                "$ref": "#/components/headers/X-Meta-Errors"
                            },
                            "X-Credits-Limit": {
                                "$ref": "#/components/headers/X-Credits-Limit"
                            },
                            "X-Credits-Remaining": {
                                "$ref": "#/components/headers/X-Credits-Remaining"
                            },
                            "X-Credits-Cost": {
                                "$ref": "#/components/headers/X-Credits-Cost"
                            },
                            "X-Concurrency-Limit": {
                                "$ref": "#/components/headers/X-Concurrency-Limit"
                            },
                            "X-Concurrency-Remaining": {
                                "$ref": "#/components/headers/X-Concurrency-Remaining"
                            }
                        },
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "object",
                                    "additionalProperties": false,
                                    "properties": {
                                        "data": {
                                            "type": "array",
                                            "items": {
                                                "$ref": "#/components/schemas/ShortVolume"
                                            }
                                        },
                                        "meta": {
                                            "$ref": "#/components/schemas/ResponseMeta"
                                        }
                                    },
                                    "required": [
                                        "data",
                                        "meta"
                                    ]
                                },
                                "examples": {
                                    "synthetic": {
                                        "summary": "Synthetic contract example; not production data",
                                        "value": {
                                            "data": [
                                                {
                                                    "id": "record_example_1",
                                                    "instrument_id": "inst_example_aapl",
                                                    "date": "2026-09-18",
                                                    "short_volume": "420830.989754",
                                                    "short_exempt_volume": "0",
                                                    "total_volume": "1173148.600045",
                                                    "short_volume_ratio": "0.3587",
                                                    "venues": {
                                                        "nyse": {
                                                            "short_volume": "395584",
                                                            "short_exempt_volume": "0"
                                                        },
                                                        "nasdaq_carteret": {
                                                            "short_volume": "395584",
                                                            "short_exempt_volume": "0"
                                                        },
                                                        "nasdaq_chicago": {
                                                            "short_volume": "395584",
                                                            "short_exempt_volume": "0"
                                                        },
                                                        "adf": {
                                                            "short_volume": "395584",
                                                            "short_exempt_volume": "0"
                                                        }
                                                    }
                                                }
                                            ],
                                            "meta": {
                                                "timezone": "UTC",
                                                "as_of": "2026-11-01T00:00:00Z",
                                                "next_cursor": null,
                                                "coverage": {
                                                    "status": "complete",
                                                    "reason": null
                                                }
                                            }
                                        }
                                    }
                                }
                            },
                            "text/csv": {
                                "schema": {
                                    "type": "string"
                                }
                            }
                        }
                    },
                    "400": {
                        "$ref": "#/components/responses/BadRequest"
                    },
                    "401": {
                        "$ref": "#/components/responses/Unauthorized"
                    },
                    "403": {
                        "$ref": "#/components/responses/Forbidden"
                    },
                    "404": {
                        "$ref": "#/components/responses/NotFound"
                    },
                    "405": {
                        "$ref": "#/components/responses/MethodNotAllowed"
                    },
                    "406": {
                        "$ref": "#/components/responses/NotAcceptable"
                    },
                    "409": {
                        "$ref": "#/components/responses/Conflict"
                    },
                    "413": {
                        "$ref": "#/components/responses/ContentTooLarge"
                    },
                    "414": {
                        "$ref": "#/components/responses/URITooLong"
                    },
                    "415": {
                        "$ref": "#/components/responses/UnsupportedMediaType"
                    },
                    "422": {
                        "$ref": "#/components/responses/UnprocessableContent"
                    },
                    "429": {
                        "$ref": "#/components/responses/TooManyRequests"
                    },
                    "431": {
                        "$ref": "#/components/responses/RequestHeaderFieldsTooLarge"
                    },
                    "500": {
                        "$ref": "#/components/responses/InternalServerError"
                    },
                    "503": {
                        "$ref": "#/components/responses/ServiceUnavailable"
                    }
                },
                "x-query-constraints": [
                    {
                        "rule": "mutually_exclusive",
                        "parameters": [
                            "instrument_ids",
                            "symbols"
                        ]
                    },
                    {
                        "rule": "requires",
                        "parameter": "symbol_at",
                        "required": [
                            "symbols"
                        ]
                    },
                    {
                        "rule": "less_than",
                        "lower": "from",
                        "upper": "to"
                    },
                    {
                        "rule": "less_than",
                        "lower": "known_from",
                        "upper": "known_to"
                    }
                ],
                "x-example-query": {
                    "symbols": [
                        "XNAS:AAPL"
                    ],
                    "from": "2026-09-01",
                    "to": "2026-09-25"
                },
                "x-contract-family": "research",
                "x-credit-cost": "5 credits per symbol; 500 credits without symbols (whole market).",
                "x-availability": "available"
            }
        },
        "/v1/tickers": {
            "get": {
                "operationId": "list_tickers",
                "summary": "All tickers",
                "tags": [
                    "Reference data"
                ],
                "description": "Every listing in the security master for the entitled markets, active or delisted, with its ticker, name, identifiers and security type at date. Filter by ticker prefix or name, type, asset class, exchange, country, CIK or FIGI. Holidays and trading hours are in /v1/calendar and /v1/market-status. Default order: ticker ascending, then listing. Results are limited to the entitled scope. Served from the OHLC security master, exchange calendars and reference tables. Access requires the operation capability on the API key.",
                "x-implementation-status": "implemented",
                "x-required-capability": "reference.read",
                "x-time-field": "ticker",
                "x-exportable": false,
                "parameters": [
                    {
                        "name": "q",
                        "in": "query",
                        "required": false,
                        "description": "Case-insensitive ticker prefix in any spelling (BRK.B, BRK/B, BACpL), or text whose every word occurs anywhere in the listing's name. A value that is empty or only whitespace returns 422.",
                        "schema": {
                            "type": "string",
                            "minLength": 1,
                            "maxLength": 200,
                            "pattern": "\\S"
                        },
                        "example": "AAPL"
                    },
                    {
                        "name": "types",
                        "in": "query",
                        "required": false,
                        "description": "Security type codes: those of /v1/ticker-types (such as CS, PFD or ETF), FUND for mutual funds, BOND for bonds, CRYPTO for crypto pairs, FOREX for currency pairs or INDEX for indices. A code that is not one of these returns 422.",
                        "schema": {
                            "type": "array",
                            "minItems": 1,
                            "maxItems": 100,
                            "uniqueItems": true,
                            "items": {
                                "type": "string",
                                "pattern": "^[A-Z]{1,16}$"
                            }
                        },
                        "style": "form",
                        "explode": false
                    },
                    {
                        "name": "asset_types",
                        "in": "query",
                        "required": false,
                        "description": "Asset classes, as in /v1/instruments.",
                        "schema": {
                            "type": "array",
                            "minItems": 1,
                            "maxItems": 100,
                            "uniqueItems": true,
                            "items": {
                                "minLength": 1,
                                "maxLength": 128,
                                "type": "string",
                                "enum": [
                                    "equity",
                                    "etf",
                                    "mutual_fund",
                                    "crypto",
                                    "forex",
                                    "index",
                                    "bond"
                                ],
                                "description": "Asset class."
                            }
                        },
                        "style": "form",
                        "explode": false
                    },
                    {
                        "name": "exchanges",
                        "in": "query",
                        "required": false,
                        "description": "Listing MICs. A malformed or repeated code returns 422 invalid-exchanges, a MIC the API does not serve 404 exchange-not-found, and one outside the key's markets 403 market-not-entitled.",
                        "schema": {
                            "type": "array",
                            "minItems": 1,
                            "maxItems": 100,
                            "uniqueItems": true,
                            "items": {
                                "type": "string",
                                "pattern": "^(?:[A-Z0-9]{4}|CRYPTO|FOREX|INDEX)$"
                            }
                        },
                        "style": "form",
                        "explode": false
                    },
                    {
                        "name": "countries",
                        "in": "query",
                        "required": false,
                        "description": "ISO 3166-1 alpha-2 country codes.",
                        "schema": {
                            "type": "array",
                            "minItems": 1,
                            "maxItems": 100,
                            "uniqueItems": true,
                            "items": {
                                "type": "string",
                                "pattern": "^[A-Z]{2}$"
                            }
                        },
                        "style": "form",
                        "explode": false
                    },
                    {
                        "name": "active",
                        "in": "query",
                        "required": false,
                        "description": "true lists listings trading at date; false lists listings that no longer trade, under the last ticker each traded as; all lists both. Earlier tickers of a listing are in /v1/instruments/{instrument_id}/symbols. The security master was built in September 2026 from the listings its sources still carried and records delistings from then on, so nearly every delisted listing it holds stopped trading in 2026, and most issuers delisted earlier, such as TWTR or SIVB, are not held.",
                        "schema": {
                            "type": "string",
                            "enum": [
                                "true",
                                "false",
                                "all"
                            ],
                            "description": "Listing state at date.",
                            "default": "true"
                        }
                    },
                    {
                        "name": "date",
                        "in": "query",
                        "required": false,
                        "description": "Point in time: listing state and ticker at the end of this UTC date. Defaults to now. Tickers are effective-dated; names, types and identifiers are the latest recorded. A listing appears only where a ticker is recorded for it at date: ticker records begin in 2003 at the earliest and later for many listings, so an early date lists few of the listings whose prices reach back to it (history_from).",
                        "schema": {
                            "type": "string",
                            "format": "date"
                        }
                    },
                    {
                        "name": "cik",
                        "in": "query",
                        "required": false,
                        "description": "Issuer SEC CIK; leading zeroes are optional.",
                        "schema": {
                            "type": "string",
                            "pattern": "^[0-9]{1,10}$"
                        }
                    },
                    {
                        "name": "figi",
                        "in": "query",
                        "required": false,
                        "description": "Composite or share-class FIGI.",
                        "schema": {
                            "type": "string",
                            "pattern": "^[A-Z0-9]{12}$"
                        }
                    },
                    {
                        "name": "order",
                        "in": "query",
                        "required": false,
                        "description": "Direction on ticker; listings sharing a ticker follow in the same direction.",
                        "schema": {
                            "type": "string",
                            "enum": [
                                "asc",
                                "desc"
                            ],
                            "description": "Direction on ticker.",
                            "default": "asc"
                        }
                    },
                    {
                        "name": "limit",
                        "in": "query",
                        "required": false,
                        "description": "Maximum records per page.",
                        "schema": {
                            "type": "integer",
                            "minimum": 1,
                            "maximum": 1000,
                            "default": 100
                        }
                    },
                    {
                        "name": "cursor",
                        "in": "query",
                        "required": false,
                        "description": "Opaque cursor, expires after one hour; binds filters, order, resolved as_of, account/key and entitlement. Repeat the original query unchanged.",
                        "schema": {
                            "type": "string",
                            "maxLength": 4096
                        }
                    },
                    {
                        "name": "format",
                        "in": "query",
                        "description": "Response format. csv returns the data rows with a header row, for spreadsheet functions such as IMPORTDATA; nested fields become dotted columns and lists one JSON array cell, the next page cursor is returned in X-Next-Cursor and meta.errors in X-Meta-Errors. A result without rows is the header row alone, listing the documented fields of a row. Default json, or csv when format is omitted and the Accept header ranks text/csv above JSON; a format the Accept header does not admit returns 406 not-acceptable.",
                        "schema": {
                            "type": "string",
                            "enum": [
                                "json",
                                "csv"
                            ]
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Authorized records. An empty collection is a valid result; a dataset with no connected source returns 501, and one with nothing published for your markets 503.",
                        "headers": {
                            "X-RateLimit-Limit": {
                                "$ref": "#/components/headers/X-RateLimit-Limit"
                            },
                            "X-RateLimit-Remaining": {
                                "$ref": "#/components/headers/X-RateLimit-Remaining"
                            },
                            "X-RateLimit-Reset": {
                                "$ref": "#/components/headers/X-RateLimit-Reset"
                            },
                            "Cache-Control": {
                                "description": "Always no-store, private: responses of this endpoint carry no ETag and must not be stored or reused.",
                                "schema": {
                                    "type": "string",
                                    "const": "no-store, private"
                                }
                            },
                            "X-Request-ID": {
                                "$ref": "#/components/headers/X-Request-ID"
                            },
                            "X-Next-Cursor": {
                                "$ref": "#/components/headers/X-Next-Cursor"
                            },
                            "X-Meta-Errors": {
                                "$ref": "#/components/headers/X-Meta-Errors"
                            },
                            "X-Credits-Limit": {
                                "$ref": "#/components/headers/X-Credits-Limit"
                            },
                            "X-Credits-Remaining": {
                                "$ref": "#/components/headers/X-Credits-Remaining"
                            },
                            "X-Credits-Cost": {
                                "$ref": "#/components/headers/X-Credits-Cost"
                            },
                            "X-Concurrency-Limit": {
                                "$ref": "#/components/headers/X-Concurrency-Limit"
                            },
                            "X-Concurrency-Remaining": {
                                "$ref": "#/components/headers/X-Concurrency-Remaining"
                            }
                        },
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "object",
                                    "additionalProperties": false,
                                    "properties": {
                                        "data": {
                                            "type": "array",
                                            "items": {
                                                "$ref": "#/components/schemas/Ticker"
                                            }
                                        },
                                        "meta": {
                                            "$ref": "#/components/schemas/ResponseMeta"
                                        }
                                    },
                                    "required": [
                                        "data",
                                        "meta"
                                    ]
                                },
                                "examples": {
                                    "synthetic": {
                                        "summary": "Synthetic contract example; not production data",
                                        "value": {
                                            "data": [
                                                {
                                                    "symbol": "XNAS:AAPL",
                                                    "ticker": "AAPL",
                                                    "name": "Apple Inc",
                                                    "instrument_id": "inst_example_aapl",
                                                    "company_id": "company_example_apple",
                                                    "exchange_mic": "XNAS",
                                                    "asset_type": "equity",
                                                    "type": "CS",
                                                    "active": true,
                                                    "currency_code": "USD",
                                                    "country_code": "US",
                                                    "cik": "0000320193",
                                                    "composite_figi": "BBG000B9XRY4",
                                                    "share_class_figi": "BBG001S5N8V8",
                                                    "isin": "US0378331005",
                                                    "list_date": "1980-12-12",
                                                    "history_from": "1980-12-12",
                                                    "delisted_date": null,
                                                    "last_updated_at": "2026-09-18T20:00:00Z",
                                                    "logo_url": "https://api.ohlc.io/logos/01J8Z3Q4R5S6T7V8W9X0Y1Z2A3/9b1e4d2c6a7f3e80.svg"
                                                }
                                            ],
                                            "meta": {
                                                "timezone": "UTC",
                                                "as_of": "2026-11-01T00:00:00Z",
                                                "next_cursor": null,
                                                "coverage": {
                                                    "status": "complete",
                                                    "reason": null
                                                }
                                            }
                                        }
                                    }
                                }
                            },
                            "text/csv": {
                                "schema": {
                                    "type": "string"
                                }
                            }
                        }
                    },
                    "400": {
                        "$ref": "#/components/responses/BadRequest"
                    },
                    "401": {
                        "$ref": "#/components/responses/Unauthorized"
                    },
                    "403": {
                        "$ref": "#/components/responses/Forbidden"
                    },
                    "404": {
                        "$ref": "#/components/responses/NotFound"
                    },
                    "405": {
                        "$ref": "#/components/responses/MethodNotAllowed"
                    },
                    "406": {
                        "$ref": "#/components/responses/NotAcceptable"
                    },
                    "409": {
                        "$ref": "#/components/responses/Conflict"
                    },
                    "413": {
                        "$ref": "#/components/responses/ContentTooLarge"
                    },
                    "414": {
                        "$ref": "#/components/responses/URITooLong"
                    },
                    "415": {
                        "$ref": "#/components/responses/UnsupportedMediaType"
                    },
                    "422": {
                        "$ref": "#/components/responses/UnprocessableContent"
                    },
                    "429": {
                        "$ref": "#/components/responses/TooManyRequests"
                    },
                    "431": {
                        "$ref": "#/components/responses/RequestHeaderFieldsTooLarge"
                    },
                    "500": {
                        "$ref": "#/components/responses/InternalServerError"
                    },
                    "503": {
                        "$ref": "#/components/responses/ServiceUnavailable"
                    }
                },
                "x-query-constraints": [],
                "x-example-query": {
                    "q": "AAPL"
                },
                "x-contract-family": "research",
                "x-credit-cost": "5 credits per request.",
                "x-availability": "available"
            }
        },
        "/v1/ticker-types": {
            "get": {
                "operationId": "list_ticker_types",
                "summary": "Ticker types",
                "tags": [
                    "Reference data"
                ],
                "description": "US security type codes from the reference source (asset_class stocks, locale us), with their names. /v1/tickers also reports and accepts FUND for mutual funds, BOND for bonds, CRYPTO for crypto pairs, FOREX for currency pairs and INDEX for indices, which this list does not carry. Default order: code ascending. Results are limited to the entitled scope. Served from the OHLC security master, exchange calendars and reference tables. Access requires the operation capability on the API key.",
                "x-implementation-status": "implemented",
                "x-required-capability": "reference.read",
                "x-time-field": "id",
                "x-exportable": false,
                "parameters": [
                    {
                        "name": "limit",
                        "in": "query",
                        "required": false,
                        "description": "Maximum records per page.",
                        "schema": {
                            "type": "integer",
                            "minimum": 1,
                            "maximum": 500,
                            "default": 100
                        }
                    },
                    {
                        "name": "cursor",
                        "in": "query",
                        "required": false,
                        "description": "Opaque cursor, expires after one hour; binds filters, order, resolved as_of, account/key and entitlement. Repeat the original query unchanged.",
                        "schema": {
                            "type": "string",
                            "maxLength": 4096
                        }
                    },
                    {
                        "name": "format",
                        "in": "query",
                        "description": "Response format. csv returns the data rows with a header row, for spreadsheet functions such as IMPORTDATA; nested fields become dotted columns and lists one JSON array cell, the next page cursor is returned in X-Next-Cursor and meta.errors in X-Meta-Errors. A result without rows is the header row alone, listing the documented fields of a row. Default json, or csv when format is omitted and the Accept header ranks text/csv above JSON; a format the Accept header does not admit returns 406 not-acceptable.",
                        "schema": {
                            "type": "string",
                            "enum": [
                                "json",
                                "csv"
                            ]
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Authorized records. An empty collection is a valid result; a dataset with no connected source returns 501, and one with nothing published for your markets 503.",
                        "headers": {
                            "X-RateLimit-Limit": {
                                "$ref": "#/components/headers/X-RateLimit-Limit"
                            },
                            "X-RateLimit-Remaining": {
                                "$ref": "#/components/headers/X-RateLimit-Remaining"
                            },
                            "X-RateLimit-Reset": {
                                "$ref": "#/components/headers/X-RateLimit-Reset"
                            },
                            "Cache-Control": {
                                "description": "Always no-store, private: responses of this endpoint carry no ETag and must not be stored or reused.",
                                "schema": {
                                    "type": "string",
                                    "const": "no-store, private"
                                }
                            },
                            "X-Request-ID": {
                                "$ref": "#/components/headers/X-Request-ID"
                            },
                            "X-Next-Cursor": {
                                "$ref": "#/components/headers/X-Next-Cursor"
                            },
                            "X-Meta-Errors": {
                                "$ref": "#/components/headers/X-Meta-Errors"
                            },
                            "X-Credits-Limit": {
                                "$ref": "#/components/headers/X-Credits-Limit"
                            },
                            "X-Credits-Remaining": {
                                "$ref": "#/components/headers/X-Credits-Remaining"
                            },
                            "X-Credits-Cost": {
                                "$ref": "#/components/headers/X-Credits-Cost"
                            },
                            "X-Concurrency-Limit": {
                                "$ref": "#/components/headers/X-Concurrency-Limit"
                            },
                            "X-Concurrency-Remaining": {
                                "$ref": "#/components/headers/X-Concurrency-Remaining"
                            }
                        },
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "object",
                                    "additionalProperties": false,
                                    "properties": {
                                        "data": {
                                            "type": "array",
                                            "items": {
                                                "$ref": "#/components/schemas/TickerType"
                                            }
                                        },
                                        "meta": {
                                            "$ref": "#/components/schemas/ResponseMeta"
                                        }
                                    },
                                    "required": [
                                        "data",
                                        "meta"
                                    ]
                                },
                                "examples": {
                                    "synthetic": {
                                        "summary": "Synthetic contract example; not production data",
                                        "value": {
                                            "data": [
                                                {
                                                    "code": "CS",
                                                    "description": "Common Stock",
                                                    "asset_class": "stocks",
                                                    "locale": "us"
                                                }
                                            ],
                                            "meta": {
                                                "timezone": "UTC",
                                                "as_of": "2026-11-01T00:00:00Z",
                                                "next_cursor": null,
                                                "coverage": {
                                                    "status": "complete",
                                                    "reason": null
                                                }
                                            }
                                        }
                                    }
                                }
                            },
                            "text/csv": {
                                "schema": {
                                    "type": "string"
                                }
                            }
                        }
                    },
                    "400": {
                        "$ref": "#/components/responses/BadRequest"
                    },
                    "401": {
                        "$ref": "#/components/responses/Unauthorized"
                    },
                    "403": {
                        "$ref": "#/components/responses/Forbidden"
                    },
                    "404": {
                        "$ref": "#/components/responses/NotFound"
                    },
                    "405": {
                        "$ref": "#/components/responses/MethodNotAllowed"
                    },
                    "406": {
                        "$ref": "#/components/responses/NotAcceptable"
                    },
                    "409": {
                        "$ref": "#/components/responses/Conflict"
                    },
                    "413": {
                        "$ref": "#/components/responses/ContentTooLarge"
                    },
                    "414": {
                        "$ref": "#/components/responses/URITooLong"
                    },
                    "415": {
                        "$ref": "#/components/responses/UnsupportedMediaType"
                    },
                    "422": {
                        "$ref": "#/components/responses/UnprocessableContent"
                    },
                    "429": {
                        "$ref": "#/components/responses/TooManyRequests"
                    },
                    "431": {
                        "$ref": "#/components/responses/RequestHeaderFieldsTooLarge"
                    },
                    "500": {
                        "$ref": "#/components/responses/InternalServerError"
                    },
                    "503": {
                        "$ref": "#/components/responses/ServiceUnavailable"
                    }
                },
                "x-query-constraints": [],
                "x-example-query": [],
                "x-contract-family": "research",
                "x-credit-cost": "5 credits per request.",
                "x-availability": "available"
            }
        },
        "/v1/conditions": {
            "get": {
                "operationId": "list_conditions",
                "summary": "Trade and quote conditions",
                "tags": [
                    "Reference data"
                ],
                "description": "Condition codes that qualify US stock trades and quotes, with their securities information processor mappings and whether a trade updates high, low, open, close and volume. Default order: type ascending, then id ascending. Results are limited to the entitled scope. Served from the OHLC security master, exchange calendars and reference tables. Access requires the operation capability on the API key.",
                "x-implementation-status": "implemented",
                "x-required-capability": "reference.read",
                "x-time-field": "id",
                "x-exportable": false,
                "parameters": [
                    {
                        "name": "types",
                        "in": "query",
                        "required": false,
                        "description": "Condition types, such as sale_condition or quote_condition.",
                        "schema": {
                            "type": "array",
                            "minItems": 1,
                            "maxItems": 100,
                            "uniqueItems": true,
                            "items": {
                                "type": "string",
                                "pattern": "^[a-z_]{1,48}$"
                            }
                        },
                        "style": "form",
                        "explode": false
                    },
                    {
                        "name": "data_types",
                        "in": "query",
                        "required": false,
                        "description": "Data types: trade, bbo or nbbo.",
                        "schema": {
                            "type": "array",
                            "minItems": 1,
                            "maxItems": 100,
                            "uniqueItems": true,
                            "items": {
                                "minLength": 1,
                                "maxLength": 128,
                                "type": "string",
                                "enum": [
                                    "trade",
                                    "bbo",
                                    "nbbo"
                                ],
                                "description": "Data type."
                            }
                        },
                        "style": "form",
                        "explode": false
                    },
                    {
                        "name": "limit",
                        "in": "query",
                        "required": false,
                        "description": "Maximum records per page.",
                        "schema": {
                            "type": "integer",
                            "minimum": 1,
                            "maximum": 500,
                            "default": 100
                        }
                    },
                    {
                        "name": "cursor",
                        "in": "query",
                        "required": false,
                        "description": "Opaque cursor, expires after one hour; binds filters, order, resolved as_of, account/key and entitlement. Repeat the original query unchanged.",
                        "schema": {
                            "type": "string",
                            "maxLength": 4096
                        }
                    },
                    {
                        "name": "format",
                        "in": "query",
                        "description": "Response format. csv returns the data rows with a header row, for spreadsheet functions such as IMPORTDATA; nested fields become dotted columns and lists one JSON array cell, the next page cursor is returned in X-Next-Cursor and meta.errors in X-Meta-Errors. A result without rows is the header row alone, listing the documented fields of a row. Default json, or csv when format is omitted and the Accept header ranks text/csv above JSON; a format the Accept header does not admit returns 406 not-acceptable.",
                        "schema": {
                            "type": "string",
                            "enum": [
                                "json",
                                "csv"
                            ]
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Authorized records. An empty collection is a valid result; a dataset with no connected source returns 501, and one with nothing published for your markets 503.",
                        "headers": {
                            "X-RateLimit-Limit": {
                                "$ref": "#/components/headers/X-RateLimit-Limit"
                            },
                            "X-RateLimit-Remaining": {
                                "$ref": "#/components/headers/X-RateLimit-Remaining"
                            },
                            "X-RateLimit-Reset": {
                                "$ref": "#/components/headers/X-RateLimit-Reset"
                            },
                            "Cache-Control": {
                                "description": "Always no-store, private: responses of this endpoint carry no ETag and must not be stored or reused.",
                                "schema": {
                                    "type": "string",
                                    "const": "no-store, private"
                                }
                            },
                            "X-Request-ID": {
                                "$ref": "#/components/headers/X-Request-ID"
                            },
                            "X-Next-Cursor": {
                                "$ref": "#/components/headers/X-Next-Cursor"
                            },
                            "X-Meta-Errors": {
                                "$ref": "#/components/headers/X-Meta-Errors"
                            },
                            "X-Credits-Limit": {
                                "$ref": "#/components/headers/X-Credits-Limit"
                            },
                            "X-Credits-Remaining": {
                                "$ref": "#/components/headers/X-Credits-Remaining"
                            },
                            "X-Credits-Cost": {
                                "$ref": "#/components/headers/X-Credits-Cost"
                            },
                            "X-Concurrency-Limit": {
                                "$ref": "#/components/headers/X-Concurrency-Limit"
                            },
                            "X-Concurrency-Remaining": {
                                "$ref": "#/components/headers/X-Concurrency-Remaining"
                            }
                        },
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "object",
                                    "additionalProperties": false,
                                    "properties": {
                                        "data": {
                                            "type": "array",
                                            "items": {
                                                "$ref": "#/components/schemas/Condition"
                                            }
                                        },
                                        "meta": {
                                            "$ref": "#/components/schemas/ResponseMeta"
                                        }
                                    },
                                    "required": [
                                        "data",
                                        "meta"
                                    ]
                                },
                                "examples": {
                                    "synthetic": {
                                        "summary": "Synthetic contract example; not production data",
                                        "value": {
                                            "data": [
                                                {
                                                    "id": 2,
                                                    "type": "sale_condition",
                                                    "name": "Average Price Trade",
                                                    "description": "The trade price is an average of several executions.",
                                                    "asset_class": "stocks",
                                                    "data_types": [],
                                                    "sip_mapping": {
                                                        "CTA": "B",
                                                        "UTP": "W"
                                                    },
                                                    "exchange": null,
                                                    "legacy": false,
                                                    "update_rules": null
                                                }
                                            ],
                                            "meta": {
                                                "timezone": "UTC",
                                                "as_of": "2026-11-01T00:00:00Z",
                                                "next_cursor": null,
                                                "coverage": {
                                                    "status": "complete",
                                                    "reason": null
                                                }
                                            }
                                        }
                                    }
                                }
                            },
                            "text/csv": {
                                "schema": {
                                    "type": "string"
                                }
                            }
                        }
                    },
                    "400": {
                        "$ref": "#/components/responses/BadRequest"
                    },
                    "401": {
                        "$ref": "#/components/responses/Unauthorized"
                    },
                    "403": {
                        "$ref": "#/components/responses/Forbidden"
                    },
                    "404": {
                        "$ref": "#/components/responses/NotFound"
                    },
                    "405": {
                        "$ref": "#/components/responses/MethodNotAllowed"
                    },
                    "406": {
                        "$ref": "#/components/responses/NotAcceptable"
                    },
                    "409": {
                        "$ref": "#/components/responses/Conflict"
                    },
                    "413": {
                        "$ref": "#/components/responses/ContentTooLarge"
                    },
                    "414": {
                        "$ref": "#/components/responses/URITooLong"
                    },
                    "415": {
                        "$ref": "#/components/responses/UnsupportedMediaType"
                    },
                    "422": {
                        "$ref": "#/components/responses/UnprocessableContent"
                    },
                    "429": {
                        "$ref": "#/components/responses/TooManyRequests"
                    },
                    "431": {
                        "$ref": "#/components/responses/RequestHeaderFieldsTooLarge"
                    },
                    "500": {
                        "$ref": "#/components/responses/InternalServerError"
                    },
                    "503": {
                        "$ref": "#/components/responses/ServiceUnavailable"
                    }
                },
                "x-query-constraints": [],
                "x-example-query": [],
                "x-contract-family": "research",
                "x-credit-cost": "5 credits per request.",
                "x-availability": "available"
            }
        },
        "/v1/market-status": {
            "get": {
                "operationId": "get_market_status",
                "summary": "Market status",
                "tags": [
                    "Reference data"
                ],
                "description": "Whether each entitled exchange is open now, in pre-market or after-hours trading, closed or on a holiday, with today's session and the next open and close, from the published exchange calendar. pre_market and after_hours apply to US exchanges only (04:00 to 20:00 New York time, or until four hours after an early close); other exchanges have no extended hours. The CRYPTO, FOREX, INDEX and BOND venues follow their own calendars in /v1/calendar, and INDEX says nothing about the market of any one index. next_open_at and next_close_at are null when no session falls within the next 14 days. Upcoming holidays and past sessions are in /v1/calendar. Default order: exchange MIC ascending. Results are limited to the entitled scope. Served from the OHLC security master, exchange calendars and reference tables. Access requires the operation capability on the API key.",
                "x-implementation-status": "implemented",
                "x-required-capability": "calendar.read",
                "x-time-field": "id",
                "x-exportable": false,
                "parameters": [
                    {
                        "name": "exchanges",
                        "in": "query",
                        "required": false,
                        "description": "Exchange MICs; defaults to every entitled exchange with a published calendar. A malformed or repeated code returns 422 invalid-exchanges, a MIC the API does not serve 404 exchange-not-found, and one outside the key's markets 403 market-not-entitled.",
                        "schema": {
                            "type": "array",
                            "minItems": 1,
                            "maxItems": 100,
                            "uniqueItems": true,
                            "items": {
                                "type": "string",
                                "pattern": "^(?:[A-Z0-9]{4}|CRYPTO|FOREX|INDEX)$"
                            }
                        },
                        "style": "form",
                        "explode": false,
                        "example": [
                            "XNAS"
                        ]
                    },
                    {
                        "name": "limit",
                        "in": "query",
                        "required": false,
                        "description": "Maximum records per page.",
                        "schema": {
                            "type": "integer",
                            "minimum": 1,
                            "maximum": 500,
                            "default": 100
                        }
                    },
                    {
                        "name": "cursor",
                        "in": "query",
                        "required": false,
                        "description": "Opaque cursor, expires after one hour; binds filters, order, resolved as_of, account/key and entitlement. Repeat the original query unchanged.",
                        "schema": {
                            "type": "string",
                            "maxLength": 4096
                        }
                    },
                    {
                        "name": "format",
                        "in": "query",
                        "description": "Response format. csv returns the data rows with a header row, for spreadsheet functions such as IMPORTDATA; nested fields become dotted columns and lists one JSON array cell, the next page cursor is returned in X-Next-Cursor and meta.errors in X-Meta-Errors. A result without rows is the header row alone, listing the documented fields of a row. Default json, or csv when format is omitted and the Accept header ranks text/csv above JSON; a format the Accept header does not admit returns 406 not-acceptable.",
                        "schema": {
                            "type": "string",
                            "enum": [
                                "json",
                                "csv"
                            ]
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Authorized records. An empty collection is a valid result; a dataset with no connected source returns 501, and one with nothing published for your markets 503.",
                        "headers": {
                            "X-RateLimit-Limit": {
                                "$ref": "#/components/headers/X-RateLimit-Limit"
                            },
                            "X-RateLimit-Remaining": {
                                "$ref": "#/components/headers/X-RateLimit-Remaining"
                            },
                            "X-RateLimit-Reset": {
                                "$ref": "#/components/headers/X-RateLimit-Reset"
                            },
                            "Cache-Control": {
                                "description": "Always no-store, private: responses of this endpoint carry no ETag and must not be stored or reused.",
                                "schema": {
                                    "type": "string",
                                    "const": "no-store, private"
                                }
                            },
                            "X-Request-ID": {
                                "$ref": "#/components/headers/X-Request-ID"
                            },
                            "X-Next-Cursor": {
                                "$ref": "#/components/headers/X-Next-Cursor"
                            },
                            "X-Meta-Errors": {
                                "$ref": "#/components/headers/X-Meta-Errors"
                            },
                            "X-Credits-Limit": {
                                "$ref": "#/components/headers/X-Credits-Limit"
                            },
                            "X-Credits-Remaining": {
                                "$ref": "#/components/headers/X-Credits-Remaining"
                            },
                            "X-Credits-Cost": {
                                "$ref": "#/components/headers/X-Credits-Cost"
                            },
                            "X-Concurrency-Limit": {
                                "$ref": "#/components/headers/X-Concurrency-Limit"
                            },
                            "X-Concurrency-Remaining": {
                                "$ref": "#/components/headers/X-Concurrency-Remaining"
                            }
                        },
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "object",
                                    "additionalProperties": false,
                                    "properties": {
                                        "data": {
                                            "type": "array",
                                            "items": {
                                                "$ref": "#/components/schemas/MarketStatus"
                                            }
                                        },
                                        "meta": {
                                            "$ref": "#/components/schemas/ResponseMeta"
                                        }
                                    },
                                    "required": [
                                        "data",
                                        "meta"
                                    ]
                                },
                                "examples": {
                                    "synthetic": {
                                        "summary": "Synthetic contract example; not production data",
                                        "value": {
                                            "data": [
                                                {
                                                    "exchange_mic": "XNAS",
                                                    "exchange_timezone": "America/New_York",
                                                    "local_date": "2026-09-18",
                                                    "status": "open",
                                                    "session": null,
                                                    "next_open_at": "2026-09-18T20:00:00Z",
                                                    "next_close_at": "2026-09-18T20:00:00Z",
                                                    "server_time": "2026-09-18T20:00:00Z"
                                                }
                                            ],
                                            "meta": {
                                                "timezone": "UTC",
                                                "as_of": "2026-11-01T00:00:00Z",
                                                "next_cursor": null,
                                                "coverage": {
                                                    "status": "complete",
                                                    "reason": null
                                                }
                                            }
                                        }
                                    }
                                }
                            },
                            "text/csv": {
                                "schema": {
                                    "type": "string"
                                }
                            }
                        }
                    },
                    "400": {
                        "$ref": "#/components/responses/BadRequest"
                    },
                    "401": {
                        "$ref": "#/components/responses/Unauthorized"
                    },
                    "403": {
                        "$ref": "#/components/responses/Forbidden"
                    },
                    "404": {
                        "$ref": "#/components/responses/NotFound"
                    },
                    "405": {
                        "$ref": "#/components/responses/MethodNotAllowed"
                    },
                    "406": {
                        "$ref": "#/components/responses/NotAcceptable"
                    },
                    "409": {
                        "$ref": "#/components/responses/Conflict"
                    },
                    "413": {
                        "$ref": "#/components/responses/ContentTooLarge"
                    },
                    "414": {
                        "$ref": "#/components/responses/URITooLong"
                    },
                    "415": {
                        "$ref": "#/components/responses/UnsupportedMediaType"
                    },
                    "422": {
                        "$ref": "#/components/responses/UnprocessableContent"
                    },
                    "429": {
                        "$ref": "#/components/responses/TooManyRequests"
                    },
                    "431": {
                        "$ref": "#/components/responses/RequestHeaderFieldsTooLarge"
                    },
                    "500": {
                        "$ref": "#/components/responses/InternalServerError"
                    },
                    "503": {
                        "$ref": "#/components/responses/ServiceUnavailable"
                    }
                },
                "x-query-constraints": [],
                "x-example-query": {
                    "exchanges": [
                        "XNAS"
                    ]
                },
                "x-contract-family": "research",
                "x-credit-cost": "5 credits per request.",
                "x-availability": "available"
            }
        },
        "/v1/instruments/{instrument_id}/events": {
            "get": {
                "operationId": "list_instruments_instrument_id_events",
                "summary": "Ticker events",
                "tags": [
                    "Reference data"
                ],
                "description": "Ticker and venue changes of one listing, derived from its effective-dated symbol assignments: each event is the exchange-local date a new MIC:TICKER took effect and the one it replaced. An event whose ticker equals previous_ticker is a move between exchanges, such as an uplisting from OTC. as_of excludes assignments recorded after it. Default order: date ascending, id ascending. Results are limited to the entitled scope. Served from the OHLC security master, exchange calendars and reference tables. Access requires the operation capability on the API key.",
                "x-implementation-status": "implemented",
                "x-required-capability": "instruments.read",
                "x-time-field": "date",
                "x-exportable": true,
                "parameters": [
                    {
                        "name": "instrument_id",
                        "in": "path",
                        "required": true,
                        "description": "Stable public identifier.",
                        "schema": {
                            "type": "string",
                            "description": "Opaque stable public identifier; never an internal database key.",
                            "minLength": 1,
                            "maxLength": 128,
                            "pattern": "^[A-Za-z0-9][A-Za-z0-9_.:-]{0,127}$"
                        },
                        "example": "01M35H2KE2ZJHXFY5C3E7FPC66"
                    },
                    {
                        "name": "from",
                        "in": "query",
                        "required": false,
                        "description": "Inclusive lower bound on date.",
                        "schema": {
                            "type": "string",
                            "format": "date"
                        }
                    },
                    {
                        "name": "to",
                        "in": "query",
                        "required": false,
                        "description": "Inclusive upper bound on date; must be on or after from, so from equal to to selects one day.",
                        "schema": {
                            "type": "string",
                            "format": "date"
                        }
                    },
                    {
                        "name": "as_of",
                        "in": "query",
                        "required": false,
                        "description": "Knowledge cutoff as a UTC date (YYYY-MM-DD): the response reflects what was known by the end of that day. Defaults to now; cannot be in the future. A date from before the dataset's knowledge history returns 422 point-in-time-unavailable naming the earliest one, which GET /v1/datasets lists as earliest_as_of.",
                        "schema": {
                            "type": "string",
                            "format": "date"
                        }
                    },
                    {
                        "name": "order",
                        "in": "query",
                        "required": false,
                        "description": "Direction on date; ties use ID ascending.",
                        "schema": {
                            "type": "string",
                            "enum": [
                                "asc",
                                "desc"
                            ],
                            "description": "Direction on date; ties use ID ascending.",
                            "default": "asc"
                        }
                    },
                    {
                        "name": "limit",
                        "in": "query",
                        "required": false,
                        "description": "Maximum records per page.",
                        "schema": {
                            "type": "integer",
                            "minimum": 1,
                            "maximum": 500,
                            "default": 100
                        }
                    },
                    {
                        "name": "cursor",
                        "in": "query",
                        "required": false,
                        "description": "Opaque cursor, expires after one hour; binds filters, order, resolved as_of, account/key and entitlement. Repeat the original query unchanged.",
                        "schema": {
                            "type": "string",
                            "maxLength": 4096
                        }
                    },
                    {
                        "name": "format",
                        "in": "query",
                        "description": "Response format. csv returns the data rows with a header row, for spreadsheet functions such as IMPORTDATA; nested fields become dotted columns and lists one JSON array cell, the next page cursor is returned in X-Next-Cursor and meta.errors in X-Meta-Errors. A result without rows is the header row alone, listing the documented fields of a row. Default json, or csv when format is omitted and the Accept header ranks text/csv above JSON; a format the Accept header does not admit returns 406 not-acceptable.",
                        "schema": {
                            "type": "string",
                            "enum": [
                                "json",
                                "csv"
                            ]
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Authorized records. An empty collection is a valid result; a dataset with no connected source returns 501, and one with nothing published for your markets 503.",
                        "headers": {
                            "X-RateLimit-Limit": {
                                "$ref": "#/components/headers/X-RateLimit-Limit"
                            },
                            "X-RateLimit-Remaining": {
                                "$ref": "#/components/headers/X-RateLimit-Remaining"
                            },
                            "X-RateLimit-Reset": {
                                "$ref": "#/components/headers/X-RateLimit-Reset"
                            },
                            "Cache-Control": {
                                "description": "Always no-store, private: responses of this endpoint carry no ETag and must not be stored or reused.",
                                "schema": {
                                    "type": "string",
                                    "const": "no-store, private"
                                }
                            },
                            "X-Request-ID": {
                                "$ref": "#/components/headers/X-Request-ID"
                            },
                            "X-Next-Cursor": {
                                "$ref": "#/components/headers/X-Next-Cursor"
                            },
                            "X-Meta-Errors": {
                                "$ref": "#/components/headers/X-Meta-Errors"
                            },
                            "X-Credits-Limit": {
                                "$ref": "#/components/headers/X-Credits-Limit"
                            },
                            "X-Credits-Remaining": {
                                "$ref": "#/components/headers/X-Credits-Remaining"
                            },
                            "X-Credits-Cost": {
                                "$ref": "#/components/headers/X-Credits-Cost"
                            },
                            "X-Concurrency-Limit": {
                                "$ref": "#/components/headers/X-Concurrency-Limit"
                            },
                            "X-Concurrency-Remaining": {
                                "$ref": "#/components/headers/X-Concurrency-Remaining"
                            }
                        },
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "object",
                                    "additionalProperties": false,
                                    "properties": {
                                        "data": {
                                            "type": "array",
                                            "items": {
                                                "$ref": "#/components/schemas/InstrumentEvent"
                                            }
                                        },
                                        "meta": {
                                            "$ref": "#/components/schemas/ResponseMeta"
                                        }
                                    },
                                    "required": [
                                        "data",
                                        "meta"
                                    ]
                                },
                                "examples": {
                                    "synthetic": {
                                        "summary": "Synthetic contract example; not production data",
                                        "value": {
                                            "data": [
                                                {
                                                    "id": "record_example_1",
                                                    "instrument_id": "inst_example_aapl",
                                                    "type": "ticker_change",
                                                    "date": "2026-09-18",
                                                    "ticker": "META",
                                                    "previous_ticker": "FB",
                                                    "symbol": "XNAS:META",
                                                    "previous_symbol": "XNAS:FB"
                                                }
                                            ],
                                            "meta": {
                                                "timezone": "UTC",
                                                "as_of": "2026-11-01T00:00:00Z",
                                                "next_cursor": null,
                                                "coverage": {
                                                    "status": "complete",
                                                    "reason": null
                                                }
                                            }
                                        }
                                    }
                                }
                            },
                            "text/csv": {
                                "schema": {
                                    "type": "string"
                                }
                            }
                        }
                    },
                    "400": {
                        "$ref": "#/components/responses/BadRequest"
                    },
                    "401": {
                        "$ref": "#/components/responses/Unauthorized"
                    },
                    "403": {
                        "$ref": "#/components/responses/Forbidden"
                    },
                    "404": {
                        "$ref": "#/components/responses/NotFound"
                    },
                    "405": {
                        "$ref": "#/components/responses/MethodNotAllowed"
                    },
                    "406": {
                        "$ref": "#/components/responses/NotAcceptable"
                    },
                    "409": {
                        "$ref": "#/components/responses/Conflict"
                    },
                    "413": {
                        "$ref": "#/components/responses/ContentTooLarge"
                    },
                    "414": {
                        "$ref": "#/components/responses/URITooLong"
                    },
                    "415": {
                        "$ref": "#/components/responses/UnsupportedMediaType"
                    },
                    "422": {
                        "$ref": "#/components/responses/UnprocessableContent"
                    },
                    "429": {
                        "$ref": "#/components/responses/TooManyRequests"
                    },
                    "431": {
                        "$ref": "#/components/responses/RequestHeaderFieldsTooLarge"
                    },
                    "500": {
                        "$ref": "#/components/responses/InternalServerError"
                    },
                    "503": {
                        "$ref": "#/components/responses/ServiceUnavailable"
                    }
                },
                "x-query-constraints": [
                    {
                        "rule": "less_than",
                        "lower": "from",
                        "upper": "to"
                    }
                ],
                "x-example-query": {
                    "instrument_id": "01M35H2KE2ZJHXFY5C3E7FPC66"
                },
                "x-contract-family": "research",
                "x-credit-cost": "5 credits per request.",
                "x-availability": "available"
            }
        },
        "/v1/bonds": {
            "get": {
                "operationId": "list_bonds",
                "summary": "Bonds",
                "tags": [
                    "Funds and indices"
                ],
                "description": "US-dollar corporate bonds, about 8,000, listed under the BOND venue by ISIN (BOND:US00037BAF94): each bond's terms (coupon, frequency, maturity, call features, seniority, issuer and its sector) and its latest price and yield to maturity. Bonds are included with Commercial and Scale; keys on other plans get 403 market-not-entitled. Prices are clean prices per 100 of face value, evaluated or last-trade, on the days a bond traded; the bond's daily history is in /v1/eod and /v1/bars (one price a day, open, high, low and close alike, no volume), and its yields in /v1/bonds/yields. The source states the maturity of few bonds, so most maturity_date values are read from the bond name (maturity_date_from_name); issuers are named as the source abbreviates them, and company_id links a bond to its company only on an exact name match. A record changes with each new price; as_of reads earlier records back seven days. Terms are read when a bond is first listed and monthly after. A bond that leaves the source's list keeps its last record; price_date shows when it last traded. Default order: id ascending. Omitting entity selectors returns the entitled universe; explicit unauthorized selectors return 403. Data is delivered from validated canonical batches; a connected dataset with nothing published for the key's markets yet returns 503. Access requires the operation capability on the API key.",
                "x-implementation-status": "implemented",
                "x-required-capability": "bonds.read",
                "x-time-field": "id",
                "x-exportable": true,
                "parameters": [
                    {
                        "name": "company_ids",
                        "in": "query",
                        "required": false,
                        "description": "Filter by issuer IDs. May be combined with instrument selectors; filters intersect, except on issuer-level datasets (statements, segments, estimates, earnings, insider transactions), where an instrument selector is read as its company and takes the place of company_ids, so results cover every share class.",
                        "schema": {
                            "type": "array",
                            "minItems": 1,
                            "maxItems": 100,
                            "uniqueItems": true,
                            "items": {
                                "type": "string",
                                "description": "Opaque stable public identifier; never an internal database key.",
                                "minLength": 1,
                                "maxLength": 128,
                                "pattern": "^[A-Za-z0-9][A-Za-z0-9_.:-]{0,127}$"
                            }
                        },
                        "style": "form",
                        "explode": false
                    },
                    {
                        "name": "instrument_ids",
                        "in": "query",
                        "required": false,
                        "description": "Filter by stable instrument IDs. IDs and symbols may not be combined.",
                        "schema": {
                            "type": "array",
                            "minItems": 1,
                            "maxItems": 100,
                            "uniqueItems": true,
                            "items": {
                                "type": "string",
                                "description": "Opaque stable public identifier; never an internal database key.",
                                "minLength": 1,
                                "maxLength": 128,
                                "pattern": "^[A-Za-z0-9][A-Za-z0-9_.:-]{0,127}$"
                            }
                        },
                        "style": "form",
                        "explode": false
                    },
                    {
                        "name": "symbols",
                        "in": "query",
                        "required": false,
                        "description": "Convenience lookup for exchange-listed instruments as MIC:TICKER or a bare ticker, which resolves to the exchange listing that ticker; resolves at symbol_at. The MIC and the ticker are case-insensitive, and two spellings of one listing (AAPL and XNAS:AAPL) count as a repeated value. A bare ticker that names no listing as written is also read in the common vendor spellings: with an exchange suffix (RY.TO, SHEL.L, VOD.LSE, BHP.AX), ^GSPC for INDEX:GSPC, and EURUSD=X or EURUSD for FOREX:EUR-USD. A ticker may contain a space (BAC PRL) but not start or end with one. A request in which no symbol resolves returns 404 symbol-not-resolved; otherwise each symbol that does not resolve, or resolves to a listing with no rows for the request (no-data), is an entry of meta.errors. IDs and symbols may not be combined.",
                        "schema": {
                            "type": "array",
                            "minItems": 1,
                            "maxItems": 100,
                            "uniqueItems": true,
                            "items": {
                                "type": "string",
                                "pattern": "^(?:(?:[A-Za-z0-9]{4}|[Cc][Rr][Yy][Pp][Tt][Oo]|[Ff][Oo][Rr][Ee][Xx]|[Ii][Nn][Dd][Ee][Xx]):|\\^)?[A-Za-z0-9](?:[A-Za-z0-9./_^= -]{0,62}[A-Za-z0-9./_^=-])?$"
                            }
                        },
                        "style": "form",
                        "explode": false,
                        "example": [
                            "BOND:US00037BAF94"
                        ]
                    },
                    {
                        "name": "symbol_at",
                        "in": "query",
                        "required": false,
                        "description": "Resolve symbols as they were assigned at the end of this UTC date (YYYY-MM-DD); defaults to as_of. Only listings the security master holds resolve: it was built in September 2026 and records delistings from then on, so most issuers delisted earlier, such as TWTR or SIVB, resolve at no date. Only valid with symbols.",
                        "schema": {
                            "type": "string",
                            "format": "date"
                        }
                    },
                    {
                        "name": "q",
                        "in": "query",
                        "required": false,
                        "description": "Case-insensitive search of the bond name and symbol. A value that is empty or only whitespace returns 422.",
                        "schema": {
                            "type": "string",
                            "minLength": 1,
                            "maxLength": 200,
                            "pattern": "\\S"
                        }
                    },
                    {
                        "name": "as_of",
                        "in": "query",
                        "required": false,
                        "description": "Knowledge cutoff as a UTC date (YYYY-MM-DD): the response reflects what was known by the end of that day. Defaults to now; cannot be in the future. A date from before the dataset's knowledge history returns 422 point-in-time-unavailable naming the earliest one, which GET /v1/datasets lists as earliest_as_of.",
                        "schema": {
                            "type": "string",
                            "format": "date"
                        }
                    },
                    {
                        "name": "known_from",
                        "in": "query",
                        "required": false,
                        "description": "First UTC date (YYYY-MM-DD, inclusive) on which a revision became known.",
                        "schema": {
                            "type": "string",
                            "format": "date"
                        }
                    },
                    {
                        "name": "known_to",
                        "in": "query",
                        "required": false,
                        "description": "Last UTC date (YYYY-MM-DD, inclusive) on which a revision became known; on or after known_from.",
                        "schema": {
                            "type": "string",
                            "format": "date"
                        }
                    },
                    {
                        "name": "order",
                        "in": "query",
                        "required": false,
                        "description": "Direction on id; ties use ID ascending.",
                        "schema": {
                            "type": "string",
                            "enum": [
                                "asc",
                                "desc"
                            ],
                            "description": "Direction on id; ties use ID ascending.",
                            "default": "asc"
                        }
                    },
                    {
                        "name": "limit",
                        "in": "query",
                        "required": false,
                        "description": "Maximum records per page.",
                        "schema": {
                            "type": "integer",
                            "minimum": 1,
                            "maximum": 500,
                            "default": 100
                        }
                    },
                    {
                        "name": "cursor",
                        "in": "query",
                        "required": false,
                        "description": "Opaque cursor, expires after one hour; binds filters, order, resolved as_of, account/key and entitlement. Repeat the original query unchanged.",
                        "schema": {
                            "type": "string",
                            "maxLength": 4096
                        }
                    },
                    {
                        "name": "format",
                        "in": "query",
                        "description": "Response format. csv returns the data rows with a header row, for spreadsheet functions such as IMPORTDATA; nested fields become dotted columns and lists one JSON array cell, the next page cursor is returned in X-Next-Cursor and meta.errors in X-Meta-Errors. A result without rows is the header row alone, listing the documented fields of a row. Default json, or csv when format is omitted and the Accept header ranks text/csv above JSON; a format the Accept header does not admit returns 406 not-acceptable.",
                        "schema": {
                            "type": "string",
                            "enum": [
                                "json",
                                "csv"
                            ]
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Authorized records. An empty collection is a valid result; a dataset with no connected source returns 501, and one with nothing published for your markets 503.",
                        "headers": {
                            "X-RateLimit-Limit": {
                                "$ref": "#/components/headers/X-RateLimit-Limit"
                            },
                            "X-RateLimit-Remaining": {
                                "$ref": "#/components/headers/X-RateLimit-Remaining"
                            },
                            "X-RateLimit-Reset": {
                                "$ref": "#/components/headers/X-RateLimit-Reset"
                            },
                            "Cache-Control": {
                                "description": "Always no-store, private: responses of this endpoint carry no ETag and must not be stored or reused.",
                                "schema": {
                                    "type": "string",
                                    "const": "no-store, private"
                                }
                            },
                            "X-Request-ID": {
                                "$ref": "#/components/headers/X-Request-ID"
                            },
                            "X-Next-Cursor": {
                                "$ref": "#/components/headers/X-Next-Cursor"
                            },
                            "X-Meta-Errors": {
                                "$ref": "#/components/headers/X-Meta-Errors"
                            },
                            "X-Credits-Limit": {
                                "$ref": "#/components/headers/X-Credits-Limit"
                            },
                            "X-Credits-Remaining": {
                                "$ref": "#/components/headers/X-Credits-Remaining"
                            },
                            "X-Credits-Cost": {
                                "$ref": "#/components/headers/X-Credits-Cost"
                            },
                            "X-Concurrency-Limit": {
                                "$ref": "#/components/headers/X-Concurrency-Limit"
                            },
                            "X-Concurrency-Remaining": {
                                "$ref": "#/components/headers/X-Concurrency-Remaining"
                            }
                        },
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "object",
                                    "additionalProperties": false,
                                    "properties": {
                                        "data": {
                                            "type": "array",
                                            "items": {
                                                "$ref": "#/components/schemas/Bond"
                                            }
                                        },
                                        "meta": {
                                            "$ref": "#/components/schemas/ResponseMeta"
                                        }
                                    },
                                    "required": [
                                        "data",
                                        "meta"
                                    ]
                                },
                                "examples": {
                                    "synthetic": {
                                        "summary": "Synthetic contract example; not production data",
                                        "value": {
                                            "data": [
                                                {
                                                    "id": "record_example_1",
                                                    "instrument_id": "inst_example_aapl",
                                                    "symbol": "BOND:US00037BAF94",
                                                    "name": "ABB FIN USA INC 3.8% 03Apr2028",
                                                    "isin": "US00037BAF94",
                                                    "cusip": "00037BAF9",
                                                    "figi": "BBG0000000A1",
                                                    "issuer_name": "ABB FIN USA INC",
                                                    "issuer_country_code": "US",
                                                    "company_id": "company_example_apple",
                                                    "currency_code": "USD",
                                                    "coupon_rate": "3.8",
                                                    "coupon_frequency": "annual",
                                                    "maturity_date": "2028-04-03",
                                                    "maturity_date_from_name": false,
                                                    "callable": null,
                                                    "next_call_date": "2028-02-15",
                                                    "debt_type": "Senior Unsecured Note",
                                                    "sector": "Industrial",
                                                    "industry": "Manufacturing",
                                                    "offering_date": "2012-05-03",
                                                    "price": "82.43",
                                                    "yield_to_maturity": "6.1438",
                                                    "price_date": "2026-09-18",
                                                    "terms_observed_on": "2026-09-18",
                                                    "observed_on": "2026-09-18"
                                                }
                                            ],
                                            "meta": {
                                                "timezone": "UTC",
                                                "as_of": "2026-11-01T00:00:00Z",
                                                "next_cursor": null,
                                                "coverage": {
                                                    "status": "complete",
                                                    "reason": null
                                                }
                                            }
                                        }
                                    }
                                }
                            },
                            "text/csv": {
                                "schema": {
                                    "type": "string"
                                }
                            }
                        }
                    },
                    "400": {
                        "$ref": "#/components/responses/BadRequest"
                    },
                    "401": {
                        "$ref": "#/components/responses/Unauthorized"
                    },
                    "403": {
                        "$ref": "#/components/responses/Forbidden"
                    },
                    "404": {
                        "$ref": "#/components/responses/NotFound"
                    },
                    "405": {
                        "$ref": "#/components/responses/MethodNotAllowed"
                    },
                    "406": {
                        "$ref": "#/components/responses/NotAcceptable"
                    },
                    "409": {
                        "$ref": "#/components/responses/Conflict"
                    },
                    "413": {
                        "$ref": "#/components/responses/ContentTooLarge"
                    },
                    "414": {
                        "$ref": "#/components/responses/URITooLong"
                    },
                    "415": {
                        "$ref": "#/components/responses/UnsupportedMediaType"
                    },
                    "422": {
                        "$ref": "#/components/responses/UnprocessableContent"
                    },
                    "429": {
                        "$ref": "#/components/responses/TooManyRequests"
                    },
                    "431": {
                        "$ref": "#/components/responses/RequestHeaderFieldsTooLarge"
                    },
                    "500": {
                        "$ref": "#/components/responses/InternalServerError"
                    },
                    "503": {
                        "$ref": "#/components/responses/ServiceUnavailable"
                    }
                },
                "x-query-constraints": [
                    {
                        "rule": "mutually_exclusive",
                        "parameters": [
                            "instrument_ids",
                            "symbols"
                        ]
                    },
                    {
                        "rule": "requires",
                        "parameter": "symbol_at",
                        "required": [
                            "symbols"
                        ]
                    },
                    {
                        "rule": "less_than",
                        "lower": "known_from",
                        "upper": "known_to"
                    }
                ],
                "x-example-query": {
                    "symbols": [
                        "BOND:US00037BAF94"
                    ]
                },
                "x-contract-family": "research",
                "x-credit-cost": "5 credits per request.",
                "x-availability": "available"
            }
        },
        "/v1/bonds/yields": {
            "get": {
                "operationId": "list_bonds_yields",
                "summary": "Bond yields",
                "tags": [
                    "Funds and indices"
                ],
                "description": "Daily price and yield to maturity of US corporate bonds (the BOND venue), as the source evaluates them, one row per bond and day traded: a bond has no row on a day it did not trade. History is held from 2021. A row is knowable from when OHLC first read its current figures; a revised figure replaces the one before it, which is not kept. Supply symbols or instrument_ids: omitting both returns 422. Bonds are included with Commercial and Scale; keys on other plans get 403 market-not-entitled. Default order: date descending (newest first), id ascending. Supply symbols or instrument_ids; results are limited to the entitled scope. Data is delivered from validated canonical batches; a connected dataset with nothing published for the key's markets yet returns 503. Access requires the operation capability on the API key.",
                "x-implementation-status": "implemented",
                "x-required-capability": "bonds.read",
                "x-time-field": "date",
                "x-exportable": true,
                "parameters": [
                    {
                        "name": "instrument_ids",
                        "in": "query",
                        "required": false,
                        "description": "Filter by stable instrument IDs. IDs and symbols may not be combined.",
                        "schema": {
                            "type": "array",
                            "minItems": 1,
                            "maxItems": 100,
                            "uniqueItems": true,
                            "items": {
                                "type": "string",
                                "description": "Opaque stable public identifier; never an internal database key.",
                                "minLength": 1,
                                "maxLength": 128,
                                "pattern": "^[A-Za-z0-9][A-Za-z0-9_.:-]{0,127}$"
                            }
                        },
                        "style": "form",
                        "explode": false
                    },
                    {
                        "name": "symbols",
                        "in": "query",
                        "required": false,
                        "description": "Convenience lookup for exchange-listed instruments as MIC:TICKER or a bare ticker, which resolves to the exchange listing that ticker; resolves at symbol_at. The MIC and the ticker are case-insensitive, and two spellings of one listing (AAPL and XNAS:AAPL) count as a repeated value. A bare ticker that names no listing as written is also read in the common vendor spellings: with an exchange suffix (RY.TO, SHEL.L, VOD.LSE, BHP.AX), ^GSPC for INDEX:GSPC, and EURUSD=X or EURUSD for FOREX:EUR-USD. A ticker may contain a space (BAC PRL) but not start or end with one. A request in which no symbol resolves returns 404 symbol-not-resolved; otherwise each symbol that does not resolve, or resolves to a listing with no rows for the request (no-data), is an entry of meta.errors. IDs and symbols may not be combined.",
                        "schema": {
                            "type": "array",
                            "minItems": 1,
                            "maxItems": 100,
                            "uniqueItems": true,
                            "items": {
                                "type": "string",
                                "pattern": "^(?:(?:[A-Za-z0-9]{4}|[Cc][Rr][Yy][Pp][Tt][Oo]|[Ff][Oo][Rr][Ee][Xx]|[Ii][Nn][Dd][Ee][Xx]):|\\^)?[A-Za-z0-9](?:[A-Za-z0-9./_^= -]{0,62}[A-Za-z0-9./_^=-])?$"
                            }
                        },
                        "style": "form",
                        "explode": false,
                        "example": [
                            "BOND:US00037BAF94"
                        ]
                    },
                    {
                        "name": "symbol_at",
                        "in": "query",
                        "required": false,
                        "description": "Resolve symbols as they were assigned at the end of this UTC date (YYYY-MM-DD); defaults to as_of. Only listings the security master holds resolve: it was built in September 2026 and records delistings from then on, so most issuers delisted earlier, such as TWTR or SIVB, resolve at no date. Only valid with symbols.",
                        "schema": {
                            "type": "string",
                            "format": "date"
                        }
                    },
                    {
                        "name": "from",
                        "in": "query",
                        "required": false,
                        "description": "Inclusive lower bound on date.",
                        "schema": {
                            "type": "string",
                            "format": "date"
                        },
                        "example": "2026-09-01"
                    },
                    {
                        "name": "to",
                        "in": "query",
                        "required": false,
                        "description": "Inclusive upper bound on date; must be on or after from, so from equal to to selects one day.",
                        "schema": {
                            "type": "string",
                            "format": "date"
                        },
                        "example": "2026-09-25"
                    },
                    {
                        "name": "as_of",
                        "in": "query",
                        "required": false,
                        "description": "Knowledge cutoff as a UTC date (YYYY-MM-DD): the response reflects what was known by the end of that day. Defaults to now; cannot be in the future. A yield is known from when OHLC first held its current figures, so a date before that returns no rows for the bond rather than 422.",
                        "schema": {
                            "type": "string",
                            "format": "date"
                        }
                    },
                    {
                        "name": "known_from",
                        "in": "query",
                        "required": false,
                        "description": "First UTC date (YYYY-MM-DD, inclusive) on which a revision became known.",
                        "schema": {
                            "type": "string",
                            "format": "date"
                        }
                    },
                    {
                        "name": "known_to",
                        "in": "query",
                        "required": false,
                        "description": "Last UTC date (YYYY-MM-DD, inclusive) on which a revision became known; on or after known_from.",
                        "schema": {
                            "type": "string",
                            "format": "date"
                        }
                    },
                    {
                        "name": "order",
                        "in": "query",
                        "required": false,
                        "description": "Direction on date; ties use ID ascending.",
                        "schema": {
                            "type": "string",
                            "enum": [
                                "asc",
                                "desc"
                            ],
                            "description": "Direction on date; ties use ID ascending.",
                            "default": "desc"
                        }
                    },
                    {
                        "name": "limit",
                        "in": "query",
                        "required": false,
                        "description": "Maximum records per page.",
                        "schema": {
                            "type": "integer",
                            "minimum": 1,
                            "maximum": 500,
                            "default": 100
                        }
                    },
                    {
                        "name": "cursor",
                        "in": "query",
                        "required": false,
                        "description": "Opaque cursor, expires after one hour; binds filters, order, resolved as_of, account/key and entitlement. Repeat the original query unchanged.",
                        "schema": {
                            "type": "string",
                            "maxLength": 4096
                        }
                    },
                    {
                        "name": "format",
                        "in": "query",
                        "description": "Response format. csv returns the data rows with a header row, for spreadsheet functions such as IMPORTDATA; nested fields become dotted columns and lists one JSON array cell, the next page cursor is returned in X-Next-Cursor and meta.errors in X-Meta-Errors. A result without rows is the header row alone, listing the documented fields of a row. Default json, or csv when format is omitted and the Accept header ranks text/csv above JSON; a format the Accept header does not admit returns 406 not-acceptable.",
                        "schema": {
                            "type": "string",
                            "enum": [
                                "json",
                                "csv"
                            ]
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Authorized records. An empty collection is a valid result; a dataset with no connected source returns 501, and one with nothing published for your markets 503.",
                        "headers": {
                            "X-RateLimit-Limit": {
                                "$ref": "#/components/headers/X-RateLimit-Limit"
                            },
                            "X-RateLimit-Remaining": {
                                "$ref": "#/components/headers/X-RateLimit-Remaining"
                            },
                            "X-RateLimit-Reset": {
                                "$ref": "#/components/headers/X-RateLimit-Reset"
                            },
                            "Cache-Control": {
                                "description": "Always no-store, private: responses of this endpoint carry no ETag and must not be stored or reused.",
                                "schema": {
                                    "type": "string",
                                    "const": "no-store, private"
                                }
                            },
                            "X-Request-ID": {
                                "$ref": "#/components/headers/X-Request-ID"
                            },
                            "X-Next-Cursor": {
                                "$ref": "#/components/headers/X-Next-Cursor"
                            },
                            "X-Meta-Errors": {
                                "$ref": "#/components/headers/X-Meta-Errors"
                            },
                            "X-Credits-Limit": {
                                "$ref": "#/components/headers/X-Credits-Limit"
                            },
                            "X-Credits-Remaining": {
                                "$ref": "#/components/headers/X-Credits-Remaining"
                            },
                            "X-Credits-Cost": {
                                "$ref": "#/components/headers/X-Credits-Cost"
                            },
                            "X-Concurrency-Limit": {
                                "$ref": "#/components/headers/X-Concurrency-Limit"
                            },
                            "X-Concurrency-Remaining": {
                                "$ref": "#/components/headers/X-Concurrency-Remaining"
                            }
                        },
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "object",
                                    "additionalProperties": false,
                                    "properties": {
                                        "data": {
                                            "type": "array",
                                            "items": {
                                                "$ref": "#/components/schemas/BondYield"
                                            }
                                        },
                                        "meta": {
                                            "$ref": "#/components/schemas/ResponseMeta"
                                        }
                                    },
                                    "required": [
                                        "data",
                                        "meta"
                                    ]
                                },
                                "examples": {
                                    "synthetic": {
                                        "summary": "Synthetic contract example; not production data",
                                        "value": {
                                            "data": [
                                                {
                                                    "id": "record_example_1",
                                                    "instrument_id": "inst_example_aapl",
                                                    "symbol": "BOND:US00037BAF94",
                                                    "date": "2026-09-18",
                                                    "currency_code": "USD",
                                                    "price": "82.43",
                                                    "yield_to_maturity": "6.1438"
                                                }
                                            ],
                                            "meta": {
                                                "timezone": "UTC",
                                                "as_of": "2026-11-01T00:00:00Z",
                                                "next_cursor": null,
                                                "coverage": {
                                                    "status": "complete",
                                                    "reason": null
                                                }
                                            }
                                        }
                                    }
                                }
                            },
                            "text/csv": {
                                "schema": {
                                    "type": "string"
                                }
                            }
                        }
                    },
                    "400": {
                        "$ref": "#/components/responses/BadRequest"
                    },
                    "401": {
                        "$ref": "#/components/responses/Unauthorized"
                    },
                    "403": {
                        "$ref": "#/components/responses/Forbidden"
                    },
                    "404": {
                        "$ref": "#/components/responses/NotFound"
                    },
                    "405": {
                        "$ref": "#/components/responses/MethodNotAllowed"
                    },
                    "406": {
                        "$ref": "#/components/responses/NotAcceptable"
                    },
                    "409": {
                        "$ref": "#/components/responses/Conflict"
                    },
                    "413": {
                        "$ref": "#/components/responses/ContentTooLarge"
                    },
                    "414": {
                        "$ref": "#/components/responses/URITooLong"
                    },
                    "415": {
                        "$ref": "#/components/responses/UnsupportedMediaType"
                    },
                    "422": {
                        "$ref": "#/components/responses/UnprocessableContent"
                    },
                    "429": {
                        "$ref": "#/components/responses/TooManyRequests"
                    },
                    "431": {
                        "$ref": "#/components/responses/RequestHeaderFieldsTooLarge"
                    },
                    "500": {
                        "$ref": "#/components/responses/InternalServerError"
                    },
                    "503": {
                        "$ref": "#/components/responses/ServiceUnavailable"
                    }
                },
                "x-query-constraints": [
                    {
                        "rule": "mutually_exclusive",
                        "parameters": [
                            "instrument_ids",
                            "symbols"
                        ]
                    },
                    {
                        "rule": "requires",
                        "parameter": "symbol_at",
                        "required": [
                            "symbols"
                        ]
                    },
                    {
                        "rule": "less_than",
                        "lower": "from",
                        "upper": "to"
                    },
                    {
                        "rule": "less_than",
                        "lower": "known_from",
                        "upper": "known_to"
                    }
                ],
                "x-example-query": {
                    "symbols": [
                        "BOND:US00037BAF94"
                    ],
                    "from": "2026-09-01",
                    "to": "2026-09-25"
                },
                "x-contract-family": "research",
                "x-credit-cost": "5 credits per symbol.",
                "x-availability": "available"
            }
        },
        "/v1/economic/sovereign-ratings": {
            "get": {
                "operationId": "list_economic_sovereign_ratings",
                "summary": "Sovereign credit ratings",
                "tags": [
                    "Economics"
                ],
                "description": "Long-term foreign-currency credit ratings of about 160 sovereigns by Moody's, S&P and Fitch, one record per country, agency and annual edition, as compiled each January by Aswath Damodaran (NYU Stern) from the agencies' published ratings; the 2026 edition is the first held, and each later edition adds its own records. A rating an agency changes during the year appears with the next edition. notch places every agency's rating on one 22-step scale (1 is Aaa/AAA, 10 is Baa3/BBB-, the lowest investment grade), so ratings compare across agencies; a country an agency does not rate has no record for it. The matching default spreads and country risk premiums are economic series ({country}.sovereign.default_spread, {country}.sovereign.country_risk_premium). Default order: observation_date ascending, id ascending. Results are limited to the entitled scope. Data is delivered from validated canonical batches; a connected dataset with nothing published for the key's markets yet returns 503. Access requires the operation capability on the API key.",
                "x-implementation-status": "implemented",
                "x-required-capability": "economic.read",
                "x-time-field": "observation_date",
                "x-exportable": true,
                "parameters": [
                    {
                        "name": "countries",
                        "in": "query",
                        "required": false,
                        "description": "ISO 3166-1 alpha-2 country codes.",
                        "schema": {
                            "type": "array",
                            "minItems": 1,
                            "maxItems": 100,
                            "uniqueItems": true,
                            "items": {
                                "type": "string",
                                "pattern": "^[A-Z]{2}$"
                            }
                        },
                        "style": "form",
                        "explode": false,
                        "example": [
                            "US"
                        ]
                    },
                    {
                        "name": "agency",
                        "in": "query",
                        "required": false,
                        "description": "Rating agency.",
                        "schema": {
                            "type": "string",
                            "enum": [
                                "moodys",
                                "sp",
                                "fitch"
                            ],
                            "description": "Rating agency."
                        }
                    },
                    {
                        "name": "from",
                        "in": "query",
                        "required": false,
                        "description": "Inclusive lower bound on observation_date.",
                        "schema": {
                            "type": "string",
                            "format": "date"
                        }
                    },
                    {
                        "name": "to",
                        "in": "query",
                        "required": false,
                        "description": "Inclusive upper bound on observation_date; must be on or after from, so from equal to to selects one day.",
                        "schema": {
                            "type": "string",
                            "format": "date"
                        }
                    },
                    {
                        "name": "as_of",
                        "in": "query",
                        "required": false,
                        "description": "Knowledge cutoff as a UTC date (YYYY-MM-DD): the response reflects what was known by the end of that day. Defaults to now; cannot be in the future. A date from before the dataset's knowledge history returns 422 point-in-time-unavailable naming the earliest one, which GET /v1/datasets lists as earliest_as_of.",
                        "schema": {
                            "type": "string",
                            "format": "date"
                        }
                    },
                    {
                        "name": "known_from",
                        "in": "query",
                        "required": false,
                        "description": "First UTC date (YYYY-MM-DD, inclusive) on which a revision became known.",
                        "schema": {
                            "type": "string",
                            "format": "date"
                        }
                    },
                    {
                        "name": "known_to",
                        "in": "query",
                        "required": false,
                        "description": "Last UTC date (YYYY-MM-DD, inclusive) on which a revision became known; on or after known_from.",
                        "schema": {
                            "type": "string",
                            "format": "date"
                        }
                    },
                    {
                        "name": "order",
                        "in": "query",
                        "required": false,
                        "description": "Direction on observation_date; ties use ID ascending.",
                        "schema": {
                            "type": "string",
                            "enum": [
                                "asc",
                                "desc"
                            ],
                            "description": "Direction on observation_date; ties use ID ascending.",
                            "default": "asc"
                        }
                    },
                    {
                        "name": "limit",
                        "in": "query",
                        "required": false,
                        "description": "Maximum records per page.",
                        "schema": {
                            "type": "integer",
                            "minimum": 1,
                            "maximum": 500,
                            "default": 100
                        }
                    },
                    {
                        "name": "cursor",
                        "in": "query",
                        "required": false,
                        "description": "Opaque cursor, expires after one hour; binds filters, order, resolved as_of, account/key and entitlement. Repeat the original query unchanged.",
                        "schema": {
                            "type": "string",
                            "maxLength": 4096
                        }
                    },
                    {
                        "name": "format",
                        "in": "query",
                        "description": "Response format. csv returns the data rows with a header row, for spreadsheet functions such as IMPORTDATA; nested fields become dotted columns and lists one JSON array cell, the next page cursor is returned in X-Next-Cursor and meta.errors in X-Meta-Errors. A result without rows is the header row alone, listing the documented fields of a row. Default json, or csv when format is omitted and the Accept header ranks text/csv above JSON; a format the Accept header does not admit returns 406 not-acceptable.",
                        "schema": {
                            "type": "string",
                            "enum": [
                                "json",
                                "csv"
                            ]
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Authorized records. An empty collection is a valid result; a dataset with no connected source returns 501, and one with nothing published for your markets 503.",
                        "headers": {
                            "X-RateLimit-Limit": {
                                "$ref": "#/components/headers/X-RateLimit-Limit"
                            },
                            "X-RateLimit-Remaining": {
                                "$ref": "#/components/headers/X-RateLimit-Remaining"
                            },
                            "X-RateLimit-Reset": {
                                "$ref": "#/components/headers/X-RateLimit-Reset"
                            },
                            "Cache-Control": {
                                "description": "Always no-store, private: responses of this endpoint carry no ETag and must not be stored or reused.",
                                "schema": {
                                    "type": "string",
                                    "const": "no-store, private"
                                }
                            },
                            "X-Request-ID": {
                                "$ref": "#/components/headers/X-Request-ID"
                            },
                            "X-Next-Cursor": {
                                "$ref": "#/components/headers/X-Next-Cursor"
                            },
                            "X-Meta-Errors": {
                                "$ref": "#/components/headers/X-Meta-Errors"
                            },
                            "X-Credits-Limit": {
                                "$ref": "#/components/headers/X-Credits-Limit"
                            },
                            "X-Credits-Remaining": {
                                "$ref": "#/components/headers/X-Credits-Remaining"
                            },
                            "X-Credits-Cost": {
                                "$ref": "#/components/headers/X-Credits-Cost"
                            },
                            "X-Concurrency-Limit": {
                                "$ref": "#/components/headers/X-Concurrency-Limit"
                            },
                            "X-Concurrency-Remaining": {
                                "$ref": "#/components/headers/X-Concurrency-Remaining"
                            }
                        },
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "object",
                                    "additionalProperties": false,
                                    "properties": {
                                        "data": {
                                            "type": "array",
                                            "items": {
                                                "$ref": "#/components/schemas/SovereignRating"
                                            }
                                        },
                                        "meta": {
                                            "$ref": "#/components/schemas/ResponseMeta"
                                        }
                                    },
                                    "required": [
                                        "data",
                                        "meta"
                                    ]
                                },
                                "examples": {
                                    "synthetic": {
                                        "summary": "Synthetic contract example; not production data",
                                        "value": {
                                            "data": [
                                                {
                                                    "id": "record_example_1",
                                                    "country_code": "US",
                                                    "agency": "moodys",
                                                    "rating": "Aa1",
                                                    "notch": 2,
                                                    "investment_grade": false,
                                                    "observation_date": "2026-01-01"
                                                }
                                            ],
                                            "meta": {
                                                "timezone": "UTC",
                                                "as_of": "2026-11-01T00:00:00Z",
                                                "next_cursor": null,
                                                "coverage": {
                                                    "status": "complete",
                                                    "reason": null
                                                }
                                            }
                                        }
                                    }
                                }
                            },
                            "text/csv": {
                                "schema": {
                                    "type": "string"
                                }
                            }
                        }
                    },
                    "400": {
                        "$ref": "#/components/responses/BadRequest"
                    },
                    "401": {
                        "$ref": "#/components/responses/Unauthorized"
                    },
                    "403": {
                        "$ref": "#/components/responses/Forbidden"
                    },
                    "404": {
                        "$ref": "#/components/responses/NotFound"
                    },
                    "405": {
                        "$ref": "#/components/responses/MethodNotAllowed"
                    },
                    "406": {
                        "$ref": "#/components/responses/NotAcceptable"
                    },
                    "409": {
                        "$ref": "#/components/responses/Conflict"
                    },
                    "413": {
                        "$ref": "#/components/responses/ContentTooLarge"
                    },
                    "414": {
                        "$ref": "#/components/responses/URITooLong"
                    },
                    "415": {
                        "$ref": "#/components/responses/UnsupportedMediaType"
                    },
                    "422": {
                        "$ref": "#/components/responses/UnprocessableContent"
                    },
                    "429": {
                        "$ref": "#/components/responses/TooManyRequests"
                    },
                    "431": {
                        "$ref": "#/components/responses/RequestHeaderFieldsTooLarge"
                    },
                    "500": {
                        "$ref": "#/components/responses/InternalServerError"
                    },
                    "503": {
                        "$ref": "#/components/responses/ServiceUnavailable"
                    }
                },
                "x-query-constraints": [
                    {
                        "rule": "less_than",
                        "lower": "from",
                        "upper": "to"
                    },
                    {
                        "rule": "less_than",
                        "lower": "known_from",
                        "upper": "known_to"
                    }
                ],
                "x-example-query": {
                    "countries": [
                        "US"
                    ]
                },
                "x-contract-family": "research",
                "x-credit-cost": "5 credits per request.",
                "x-availability": "available"
            }
        },
        "/v1/instruments/{id}": {
            "get": {
                "operationId": "get_instruments_by_id",
                "summary": "Instruments by ID",
                "tags": [
                    "Reference data"
                ],
                "description": "Fetch one accessible record by public ID at the knowledge cutoff. Includes inactive or expired records. Returns 404 when absent or inaccessible, 503 when dataset coverage is unavailable, and 501 when no source is connected to the dataset.",
                "x-implementation-status": "implemented",
                "x-required-capability": "instruments.read",
                "x-exportable": false,
                "parameters": [
                    {
                        "name": "effective_date",
                        "in": "query",
                        "required": false,
                        "description": "Effective date, defaults to the UTC date of as_of. Returns the latest eligible snapshot on or before this date; response retains its actual snapshot date.",
                        "schema": {
                            "type": "string",
                            "format": "date"
                        }
                    },
                    {
                        "name": "as_of",
                        "in": "query",
                        "required": false,
                        "description": "Knowledge cutoff as a UTC date (YYYY-MM-DD): the response reflects what was known by the end of that day. Defaults to now; cannot be in the future. A date from before the dataset's knowledge history returns 422 point-in-time-unavailable naming the earliest one, which GET /v1/datasets lists as earliest_as_of.",
                        "schema": {
                            "type": "string",
                            "format": "date"
                        }
                    },
                    {
                        "name": "id",
                        "in": "path",
                        "required": true,
                        "description": "Stable public record ID.",
                        "schema": {
                            "type": "string",
                            "minLength": 1,
                            "maxLength": 128,
                            "pattern": "^[A-Za-z0-9][A-Za-z0-9_.:-]{0,127}$"
                        },
                        "example": "01M35H2KE2ZJHXFY5C3E7FPC66"
                    },
                    {
                        "name": "format",
                        "in": "query",
                        "description": "Response format. csv returns the data rows with a header row, for spreadsheet functions such as IMPORTDATA; nested fields become dotted columns and lists one JSON array cell, the next page cursor is returned in X-Next-Cursor and meta.errors in X-Meta-Errors. A result without rows is the header row alone, listing the documented fields of a row. Default json, or csv when format is omitted and the Accept header ranks text/csv above JSON; a format the Accept header does not admit returns 406 not-acceptable.",
                        "schema": {
                            "type": "string",
                            "enum": [
                                "json",
                                "csv"
                            ]
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "One authorized record.",
                        "headers": {
                            "X-RateLimit-Limit": {
                                "$ref": "#/components/headers/X-RateLimit-Limit"
                            },
                            "X-RateLimit-Remaining": {
                                "$ref": "#/components/headers/X-RateLimit-Remaining"
                            },
                            "X-RateLimit-Reset": {
                                "$ref": "#/components/headers/X-RateLimit-Reset"
                            },
                            "Cache-Control": {
                                "description": "Always no-store, private: responses of this endpoint carry no ETag and must not be stored or reused.",
                                "schema": {
                                    "type": "string",
                                    "const": "no-store, private"
                                }
                            },
                            "X-Request-ID": {
                                "$ref": "#/components/headers/X-Request-ID"
                            },
                            "X-Next-Cursor": {
                                "$ref": "#/components/headers/X-Next-Cursor"
                            },
                            "X-Meta-Errors": {
                                "$ref": "#/components/headers/X-Meta-Errors"
                            },
                            "X-Credits-Limit": {
                                "$ref": "#/components/headers/X-Credits-Limit"
                            },
                            "X-Credits-Remaining": {
                                "$ref": "#/components/headers/X-Credits-Remaining"
                            },
                            "X-Credits-Cost": {
                                "$ref": "#/components/headers/X-Credits-Cost"
                            },
                            "X-Concurrency-Limit": {
                                "$ref": "#/components/headers/X-Concurrency-Limit"
                            },
                            "X-Concurrency-Remaining": {
                                "$ref": "#/components/headers/X-Concurrency-Remaining"
                            }
                        },
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "object",
                                    "additionalProperties": false,
                                    "properties": {
                                        "data": {
                                            "$ref": "#/components/schemas/Instrument"
                                        },
                                        "meta": {
                                            "$ref": "#/components/schemas/ResponseMeta"
                                        }
                                    },
                                    "required": [
                                        "data",
                                        "meta"
                                    ]
                                },
                                "examples": {
                                    "synthetic": {
                                        "summary": "Synthetic contract example; not production data",
                                        "value": {
                                            "data": {
                                                "id": "inst_example_aapl",
                                                "security_id": "inst_example_aapl",
                                                "name": "Example Corporation common stock",
                                                "asset_type": "equity",
                                                "company_id": "company_example_apple",
                                                "symbol": "XNAS:AAPL",
                                                "exchange_mic": "XNAS",
                                                "currency_code": "USD",
                                                "status": "active",
                                                "listed_on": "2026-09-18",
                                                "delisted_on": null,
                                                "base_instrument_id": null,
                                                "quote_instrument_id": null,
                                                "bond": null
                                            },
                                            "meta": {
                                                "timezone": "UTC",
                                                "as_of": "2026-11-01T00:00:00Z",
                                                "next_cursor": null,
                                                "coverage": {
                                                    "status": "complete",
                                                    "reason": null
                                                }
                                            }
                                        }
                                    }
                                }
                            },
                            "text/csv": {
                                "schema": {
                                    "type": "string"
                                }
                            }
                        }
                    },
                    "400": {
                        "$ref": "#/components/responses/BadRequest"
                    },
                    "401": {
                        "$ref": "#/components/responses/Unauthorized"
                    },
                    "403": {
                        "$ref": "#/components/responses/Forbidden"
                    },
                    "404": {
                        "$ref": "#/components/responses/NotFound"
                    },
                    "405": {
                        "$ref": "#/components/responses/MethodNotAllowed"
                    },
                    "406": {
                        "$ref": "#/components/responses/NotAcceptable"
                    },
                    "409": {
                        "$ref": "#/components/responses/Conflict"
                    },
                    "413": {
                        "$ref": "#/components/responses/ContentTooLarge"
                    },
                    "414": {
                        "$ref": "#/components/responses/URITooLong"
                    },
                    "415": {
                        "$ref": "#/components/responses/UnsupportedMediaType"
                    },
                    "422": {
                        "$ref": "#/components/responses/UnprocessableContent"
                    },
                    "429": {
                        "$ref": "#/components/responses/TooManyRequests"
                    },
                    "431": {
                        "$ref": "#/components/responses/RequestHeaderFieldsTooLarge"
                    },
                    "500": {
                        "$ref": "#/components/responses/InternalServerError"
                    },
                    "503": {
                        "$ref": "#/components/responses/ServiceUnavailable"
                    }
                },
                "x-contract-family": "research",
                "x-credit-cost": "5 credits per request.",
                "x-availability": "available",
                "x-example-query": {
                    "id": "01M35H2KE2ZJHXFY5C3E7FPC66"
                }
            }
        },
        "/v1/companies/{id}": {
            "get": {
                "operationId": "get_companies_by_id",
                "summary": "Companies by ID",
                "tags": [
                    "Company data"
                ],
                "description": "Fetch one accessible record by public ID at the knowledge cutoff. Includes inactive or expired records. Returns 404 when absent or inaccessible, 503 when dataset coverage is unavailable, and 501 when no source is connected to the dataset.",
                "x-implementation-status": "implemented",
                "x-required-capability": "companies.read",
                "x-exportable": false,
                "parameters": [
                    {
                        "name": "effective_date",
                        "in": "query",
                        "required": false,
                        "description": "Effective date, defaults to the UTC date of as_of. Returns the latest eligible snapshot on or before this date; response retains its actual snapshot date.",
                        "schema": {
                            "type": "string",
                            "format": "date"
                        }
                    },
                    {
                        "name": "as_of",
                        "in": "query",
                        "required": false,
                        "description": "Knowledge cutoff as a UTC date (YYYY-MM-DD): the response reflects what was known by the end of that day. Defaults to now; cannot be in the future. A date from before the dataset's knowledge history returns 422 point-in-time-unavailable naming the earliest one, which GET /v1/datasets lists as earliest_as_of.",
                        "schema": {
                            "type": "string",
                            "format": "date"
                        }
                    },
                    {
                        "name": "id",
                        "in": "path",
                        "required": true,
                        "description": "Stable public record ID.",
                        "schema": {
                            "type": "string",
                            "minLength": 1,
                            "maxLength": 128,
                            "pattern": "^[A-Za-z0-9][A-Za-z0-9_.:-]{0,127}$"
                        },
                        "example": "01M35H2KDW9VT69S5ZCEGMCPAX"
                    },
                    {
                        "name": "format",
                        "in": "query",
                        "description": "Response format. csv returns the data rows with a header row, for spreadsheet functions such as IMPORTDATA; nested fields become dotted columns and lists one JSON array cell, the next page cursor is returned in X-Next-Cursor and meta.errors in X-Meta-Errors. A result without rows is the header row alone, listing the documented fields of a row. Default json, or csv when format is omitted and the Accept header ranks text/csv above JSON; a format the Accept header does not admit returns 406 not-acceptable.",
                        "schema": {
                            "type": "string",
                            "enum": [
                                "json",
                                "csv"
                            ]
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "One authorized record.",
                        "headers": {
                            "X-RateLimit-Limit": {
                                "$ref": "#/components/headers/X-RateLimit-Limit"
                            },
                            "X-RateLimit-Remaining": {
                                "$ref": "#/components/headers/X-RateLimit-Remaining"
                            },
                            "X-RateLimit-Reset": {
                                "$ref": "#/components/headers/X-RateLimit-Reset"
                            },
                            "Cache-Control": {
                                "description": "Always no-store, private: responses of this endpoint carry no ETag and must not be stored or reused.",
                                "schema": {
                                    "type": "string",
                                    "const": "no-store, private"
                                }
                            },
                            "X-Request-ID": {
                                "$ref": "#/components/headers/X-Request-ID"
                            },
                            "X-Next-Cursor": {
                                "$ref": "#/components/headers/X-Next-Cursor"
                            },
                            "X-Meta-Errors": {
                                "$ref": "#/components/headers/X-Meta-Errors"
                            },
                            "X-Credits-Limit": {
                                "$ref": "#/components/headers/X-Credits-Limit"
                            },
                            "X-Credits-Remaining": {
                                "$ref": "#/components/headers/X-Credits-Remaining"
                            },
                            "X-Credits-Cost": {
                                "$ref": "#/components/headers/X-Credits-Cost"
                            },
                            "X-Concurrency-Limit": {
                                "$ref": "#/components/headers/X-Concurrency-Limit"
                            },
                            "X-Concurrency-Remaining": {
                                "$ref": "#/components/headers/X-Concurrency-Remaining"
                            }
                        },
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "object",
                                    "additionalProperties": false,
                                    "properties": {
                                        "data": {
                                            "$ref": "#/components/schemas/Company"
                                        },
                                        "meta": {
                                            "$ref": "#/components/schemas/ResponseMeta"
                                        }
                                    },
                                    "required": [
                                        "data",
                                        "meta"
                                    ]
                                },
                                "examples": {
                                    "synthetic": {
                                        "summary": "Synthetic contract example; not production data",
                                        "value": {
                                            "data": {
                                                "id": "company_example_apple",
                                                "name": "Example Corporation",
                                                "description": "Manufactures consumer products.",
                                                "country_code": "US",
                                                "sector": "Technology",
                                                "industry": "Consumer electronics",
                                                "classifications": [],
                                                "website_url": "https://example.com",
                                                "logo_url": "https://api.ohlc.io/logos/01J8Z3Q4R5S6T7V8W9X0Y1Z2A3/9b1e4d2c6a7f3e80.svg",
                                                "employees": 10000,
                                                "address": null,
                                                "officers": [],
                                                "instruments": []
                                            },
                                            "meta": {
                                                "timezone": "UTC",
                                                "as_of": "2026-11-01T00:00:00Z",
                                                "next_cursor": null,
                                                "coverage": {
                                                    "status": "complete",
                                                    "reason": null
                                                }
                                            }
                                        }
                                    }
                                }
                            },
                            "text/csv": {
                                "schema": {
                                    "type": "string"
                                }
                            }
                        }
                    },
                    "400": {
                        "$ref": "#/components/responses/BadRequest"
                    },
                    "401": {
                        "$ref": "#/components/responses/Unauthorized"
                    },
                    "403": {
                        "$ref": "#/components/responses/Forbidden"
                    },
                    "404": {
                        "$ref": "#/components/responses/NotFound"
                    },
                    "405": {
                        "$ref": "#/components/responses/MethodNotAllowed"
                    },
                    "406": {
                        "$ref": "#/components/responses/NotAcceptable"
                    },
                    "409": {
                        "$ref": "#/components/responses/Conflict"
                    },
                    "413": {
                        "$ref": "#/components/responses/ContentTooLarge"
                    },
                    "414": {
                        "$ref": "#/components/responses/URITooLong"
                    },
                    "415": {
                        "$ref": "#/components/responses/UnsupportedMediaType"
                    },
                    "422": {
                        "$ref": "#/components/responses/UnprocessableContent"
                    },
                    "429": {
                        "$ref": "#/components/responses/TooManyRequests"
                    },
                    "431": {
                        "$ref": "#/components/responses/RequestHeaderFieldsTooLarge"
                    },
                    "500": {
                        "$ref": "#/components/responses/InternalServerError"
                    },
                    "503": {
                        "$ref": "#/components/responses/ServiceUnavailable"
                    }
                },
                "x-contract-family": "research",
                "x-credit-cost": "5 credits per request.",
                "x-availability": "available",
                "x-example-query": {
                    "id": "01M35H2KDW9VT69S5ZCEGMCPAX"
                }
            }
        },
        "/v1/news/{id}": {
            "get": {
                "operationId": "get_news_by_id",
                "summary": "News by ID",
                "tags": [
                    "News and sentiment"
                ],
                "description": "Fetch one accessible record by public ID at the knowledge cutoff. Includes inactive or expired records. Returns 404 when absent or inaccessible, 503 when dataset coverage is unavailable, and 501 when no source is connected to the dataset.",
                "x-implementation-status": "implemented",
                "x-required-capability": "news.read",
                "x-exportable": false,
                "parameters": [
                    {
                        "name": "as_of",
                        "in": "query",
                        "required": false,
                        "description": "Knowledge cutoff as a UTC date (YYYY-MM-DD): the response reflects what was known by the end of that day. Defaults to now; cannot be in the future. A date from before the dataset's knowledge history returns 422 point-in-time-unavailable naming the earliest one, which GET /v1/datasets lists as earliest_as_of.",
                        "schema": {
                            "type": "string",
                            "format": "date"
                        }
                    },
                    {
                        "name": "id",
                        "in": "path",
                        "required": true,
                        "description": "Stable public record ID.",
                        "schema": {
                            "type": "string",
                            "minLength": 1,
                            "maxLength": 128,
                            "pattern": "^[A-Za-z0-9][A-Za-z0-9_.:-]{0,127}$"
                        },
                        "example": "record_511343eefdd551d912e9c754070d1e1f4da00d278c69c21621de40094e8e8dc6"
                    },
                    {
                        "name": "format",
                        "in": "query",
                        "description": "Response format. csv returns the data rows with a header row, for spreadsheet functions such as IMPORTDATA; nested fields become dotted columns and lists one JSON array cell, the next page cursor is returned in X-Next-Cursor and meta.errors in X-Meta-Errors. A result without rows is the header row alone, listing the documented fields of a row. Default json, or csv when format is omitted and the Accept header ranks text/csv above JSON; a format the Accept header does not admit returns 406 not-acceptable.",
                        "schema": {
                            "type": "string",
                            "enum": [
                                "json",
                                "csv"
                            ]
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "One authorized record.",
                        "headers": {
                            "X-RateLimit-Limit": {
                                "$ref": "#/components/headers/X-RateLimit-Limit"
                            },
                            "X-RateLimit-Remaining": {
                                "$ref": "#/components/headers/X-RateLimit-Remaining"
                            },
                            "X-RateLimit-Reset": {
                                "$ref": "#/components/headers/X-RateLimit-Reset"
                            },
                            "Cache-Control": {
                                "description": "Always no-store, private: responses of this endpoint carry no ETag and must not be stored or reused.",
                                "schema": {
                                    "type": "string",
                                    "const": "no-store, private"
                                }
                            },
                            "X-Request-ID": {
                                "$ref": "#/components/headers/X-Request-ID"
                            },
                            "X-Next-Cursor": {
                                "$ref": "#/components/headers/X-Next-Cursor"
                            },
                            "X-Meta-Errors": {
                                "$ref": "#/components/headers/X-Meta-Errors"
                            },
                            "X-Credits-Limit": {
                                "$ref": "#/components/headers/X-Credits-Limit"
                            },
                            "X-Credits-Remaining": {
                                "$ref": "#/components/headers/X-Credits-Remaining"
                            },
                            "X-Credits-Cost": {
                                "$ref": "#/components/headers/X-Credits-Cost"
                            },
                            "X-Concurrency-Limit": {
                                "$ref": "#/components/headers/X-Concurrency-Limit"
                            },
                            "X-Concurrency-Remaining": {
                                "$ref": "#/components/headers/X-Concurrency-Remaining"
                            }
                        },
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "object",
                                    "additionalProperties": false,
                                    "properties": {
                                        "data": {
                                            "$ref": "#/components/schemas/NewsArticle"
                                        },
                                        "meta": {
                                            "$ref": "#/components/schemas/ResponseMeta"
                                        }
                                    },
                                    "required": [
                                        "data",
                                        "meta"
                                    ]
                                },
                                "examples": {
                                    "synthetic": {
                                        "summary": "Synthetic contract example; not production data",
                                        "value": {
                                            "data": {
                                                "id": "record_example_1",
                                                "title": "Example Corporation announces quarterly results",
                                                "summary": "Quarterly results were announced today.",
                                                "content": null,
                                                "is_paywalled": false,
                                                "url": "https://finance.yahoo.com/news/example-corporation-results.html",
                                                "publisher": {
                                                    "name": "Yahoo Finance",
                                                    "domain": "finance.yahoo.com"
                                                },
                                                "published_at": "2026-09-18T20:00:00Z",
                                                "updated_at": null,
                                                "language": "en",
                                                "authors": [],
                                                "topics": [],
                                                "instruments": [
                                                    {
                                                        "instrument_id": "inst_example_aapl",
                                                        "symbol": "XNAS:AAPL",
                                                        "name": "Example Corporation"
                                                    }
                                                ],
                                                "sentiment": {
                                                    "score": "0.35",
                                                    "label": "positive"
                                                }
                                            },
                                            "meta": {
                                                "timezone": "UTC",
                                                "as_of": "2026-11-01T00:00:00Z",
                                                "next_cursor": null,
                                                "coverage": {
                                                    "status": "complete",
                                                    "reason": null
                                                }
                                            }
                                        }
                                    }
                                }
                            },
                            "text/csv": {
                                "schema": {
                                    "type": "string"
                                }
                            }
                        }
                    },
                    "400": {
                        "$ref": "#/components/responses/BadRequest"
                    },
                    "401": {
                        "$ref": "#/components/responses/Unauthorized"
                    },
                    "403": {
                        "$ref": "#/components/responses/Forbidden"
                    },
                    "404": {
                        "$ref": "#/components/responses/NotFound"
                    },
                    "405": {
                        "$ref": "#/components/responses/MethodNotAllowed"
                    },
                    "406": {
                        "$ref": "#/components/responses/NotAcceptable"
                    },
                    "409": {
                        "$ref": "#/components/responses/Conflict"
                    },
                    "413": {
                        "$ref": "#/components/responses/ContentTooLarge"
                    },
                    "414": {
                        "$ref": "#/components/responses/URITooLong"
                    },
                    "415": {
                        "$ref": "#/components/responses/UnsupportedMediaType"
                    },
                    "422": {
                        "$ref": "#/components/responses/UnprocessableContent"
                    },
                    "429": {
                        "$ref": "#/components/responses/TooManyRequests"
                    },
                    "431": {
                        "$ref": "#/components/responses/RequestHeaderFieldsTooLarge"
                    },
                    "500": {
                        "$ref": "#/components/responses/InternalServerError"
                    },
                    "503": {
                        "$ref": "#/components/responses/ServiceUnavailable"
                    }
                },
                "x-contract-family": "research",
                "x-credit-cost": "5 credits per request.",
                "x-availability": "available",
                "x-example-query": {
                    "id": "record_511343eefdd551d912e9c754070d1e1f4da00d278c69c21621de40094e8e8dc6"
                }
            }
        },
        "/v1/options/contracts/{id}": {
            "get": {
                "operationId": "get_options_contracts_by_id",
                "summary": "Option contracts by ID",
                "tags": [
                    "Options"
                ],
                "description": "Fetch one accessible record by public ID at the knowledge cutoff. Includes inactive or expired records. Returns 404 when absent or inaccessible, 503 when dataset coverage is unavailable, and 501 when no source is connected to the dataset.",
                "x-implementation-status": "implemented",
                "x-required-capability": "options.read",
                "x-exportable": false,
                "parameters": [
                    {
                        "name": "effective_date",
                        "in": "query",
                        "required": false,
                        "description": "Effective date, defaults to the UTC date of as_of. Returns the latest eligible snapshot on or before this date; response retains its actual snapshot date.",
                        "schema": {
                            "type": "string",
                            "format": "date"
                        }
                    },
                    {
                        "name": "as_of",
                        "in": "query",
                        "required": false,
                        "description": "Knowledge cutoff as a UTC date (YYYY-MM-DD): the response reflects what was known by the end of that day. Defaults to now; cannot be in the future. A date from before the dataset's knowledge history returns 422 point-in-time-unavailable naming the earliest one, which GET /v1/datasets lists as earliest_as_of.",
                        "schema": {
                            "type": "string",
                            "format": "date"
                        }
                    },
                    {
                        "name": "id",
                        "in": "path",
                        "required": true,
                        "description": "Stable public record ID.",
                        "schema": {
                            "type": "string",
                            "minLength": 1,
                            "maxLength": 128,
                            "pattern": "^[A-Za-z0-9][A-Za-z0-9_.:-]{0,127}$"
                        },
                        "example": "record_example_1"
                    },
                    {
                        "name": "format",
                        "in": "query",
                        "description": "Response format. csv returns the data rows with a header row, for spreadsheet functions such as IMPORTDATA; nested fields become dotted columns and lists one JSON array cell, the next page cursor is returned in X-Next-Cursor and meta.errors in X-Meta-Errors. A result without rows is the header row alone, listing the documented fields of a row. Default json, or csv when format is omitted and the Accept header ranks text/csv above JSON; a format the Accept header does not admit returns 406 not-acceptable.",
                        "schema": {
                            "type": "string",
                            "enum": [
                                "json",
                                "csv"
                            ]
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "One authorized record.",
                        "headers": {
                            "X-RateLimit-Limit": {
                                "$ref": "#/components/headers/X-RateLimit-Limit"
                            },
                            "X-RateLimit-Remaining": {
                                "$ref": "#/components/headers/X-RateLimit-Remaining"
                            },
                            "X-RateLimit-Reset": {
                                "$ref": "#/components/headers/X-RateLimit-Reset"
                            },
                            "Cache-Control": {
                                "description": "Always no-store, private: responses of this endpoint carry no ETag and must not be stored or reused.",
                                "schema": {
                                    "type": "string",
                                    "const": "no-store, private"
                                }
                            },
                            "X-Request-ID": {
                                "$ref": "#/components/headers/X-Request-ID"
                            },
                            "X-Next-Cursor": {
                                "$ref": "#/components/headers/X-Next-Cursor"
                            },
                            "X-Meta-Errors": {
                                "$ref": "#/components/headers/X-Meta-Errors"
                            },
                            "X-Credits-Limit": {
                                "$ref": "#/components/headers/X-Credits-Limit"
                            },
                            "X-Credits-Remaining": {
                                "$ref": "#/components/headers/X-Credits-Remaining"
                            },
                            "X-Credits-Cost": {
                                "$ref": "#/components/headers/X-Credits-Cost"
                            },
                            "X-Concurrency-Limit": {
                                "$ref": "#/components/headers/X-Concurrency-Limit"
                            },
                            "X-Concurrency-Remaining": {
                                "$ref": "#/components/headers/X-Concurrency-Remaining"
                            }
                        },
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "object",
                                    "additionalProperties": false,
                                    "properties": {
                                        "data": {
                                            "$ref": "#/components/schemas/OptionContract"
                                        },
                                        "meta": {
                                            "$ref": "#/components/schemas/ResponseMeta"
                                        }
                                    },
                                    "required": [
                                        "data",
                                        "meta"
                                    ]
                                },
                                "examples": {
                                    "synthetic": {
                                        "summary": "Synthetic contract example; not production data",
                                        "value": {
                                            "data": {
                                                "id": "record_example_1",
                                                "instrument_id": "inst_example_option",
                                                "underlying_instrument_id": "inst_example_aapl",
                                                "contract_symbol": "AAPL261218C00250000",
                                                "type": "call",
                                                "strike": {
                                                    "amount": "250",
                                                    "currency_code": "USD"
                                                },
                                                "expiration_date": "2026-12-18",
                                                "exercise_style": "american",
                                                "settlement": "physical",
                                                "multiplier": "100",
                                                "deliverables": [
                                                    {
                                                        "instrument_id": "inst_example_aapl",
                                                        "quantity": "100",
                                                        "cash": null
                                                    }
                                                ],
                                                "status": "active"
                                            },
                                            "meta": {
                                                "timezone": "UTC",
                                                "as_of": "2026-11-01T00:00:00Z",
                                                "next_cursor": null,
                                                "coverage": {
                                                    "status": "complete",
                                                    "reason": null
                                                }
                                            }
                                        }
                                    }
                                }
                            },
                            "text/csv": {
                                "schema": {
                                    "type": "string"
                                }
                            }
                        }
                    },
                    "400": {
                        "$ref": "#/components/responses/BadRequest"
                    },
                    "401": {
                        "$ref": "#/components/responses/Unauthorized"
                    },
                    "403": {
                        "$ref": "#/components/responses/Forbidden"
                    },
                    "404": {
                        "$ref": "#/components/responses/NotFound"
                    },
                    "405": {
                        "$ref": "#/components/responses/MethodNotAllowed"
                    },
                    "406": {
                        "$ref": "#/components/responses/NotAcceptable"
                    },
                    "409": {
                        "$ref": "#/components/responses/Conflict"
                    },
                    "413": {
                        "$ref": "#/components/responses/ContentTooLarge"
                    },
                    "414": {
                        "$ref": "#/components/responses/URITooLong"
                    },
                    "415": {
                        "$ref": "#/components/responses/UnsupportedMediaType"
                    },
                    "422": {
                        "$ref": "#/components/responses/UnprocessableContent"
                    },
                    "429": {
                        "$ref": "#/components/responses/TooManyRequests"
                    },
                    "431": {
                        "$ref": "#/components/responses/RequestHeaderFieldsTooLarge"
                    },
                    "500": {
                        "$ref": "#/components/responses/InternalServerError"
                    },
                    "503": {
                        "$ref": "#/components/responses/ServiceUnavailable"
                    }
                },
                "x-contract-family": "research",
                "x-credit-cost": "50 credits per request.",
                "x-availability": "available",
                "x-example-query": {
                    "id": "record_example_1"
                }
            }
        }
    },
    "components": {
        "securitySchemes": {
            "apiKey": {
                "type": "http",
                "scheme": "bearer",
                "bearerFormat": "OHLC API key",
                "description": "Send Authorization: Bearer YOUR_API_KEY. Clients that cannot set headers, such as spreadsheet web functions, may instead send the api_key query parameter on GET requests without an Origin header; the header wins when both are sent."
            }
        },
        "schemas": {
            "Problem": {
                "type": "object",
                "required": [
                    "type",
                    "title",
                    "status",
                    "detail",
                    "instance",
                    "code",
                    "invalid_params"
                ],
                "properties": {
                    "type": {
                        "type": "string",
                        "format": "uri"
                    },
                    "title": {
                        "type": "string"
                    },
                    "status": {
                        "type": "integer"
                    },
                    "detail": {
                        "type": "string"
                    },
                    "instance": {
                        "type": "string"
                    },
                    "code": {
                        "type": "string",
                        "description": "Stable machine-readable problem code."
                    },
                    "invalid_params": {
                        "type": "array",
                        "items": {
                            "type": "object",
                            "properties": {
                                "name": {
                                    "type": "string"
                                },
                                "reason": {
                                    "type": "string"
                                }
                            },
                            "required": [
                                "name",
                                "reason"
                            ]
                        },
                        "description": "Field-specific validation errors when available; otherwise empty."
                    }
                }
            },
            "Envelope": {
                "type": "object",
                "required": [
                    "data",
                    "meta"
                ],
                "properties": {
                    "data": {
                        "type": "array",
                        "items": {
                            "type": "object"
                        }
                    },
                    "meta": {
                        "type": "object",
                        "required": [
                            "timezone",
                            "next_cursor"
                        ],
                        "properties": {
                            "timezone": {
                                "const": "UTC"
                            },
                            "as_of": {
                                "type": "string",
                                "format": "date-time"
                            },
                            "next_cursor": {
                                "type": [
                                    "string",
                                    "null"
                                ]
                            },
                            "errors": {
                                "type": "array",
                                "items": {
                                    "type": "object",
                                    "properties": {
                                        "symbol": {
                                            "type": [
                                                "string",
                                                "null"
                                            ],
                                            "description": "Requested symbol, or the symbol a requested instrument ID resolved to; null when the instrument ID has no unique symbol."
                                        },
                                        "instrument_id": {
                                            "type": [
                                                "string",
                                                "null"
                                            ],
                                            "description": "Instrument ID of the listing: the requested one, or the one a requested symbol resolved to; null when a symbol resolved to no listing."
                                        },
                                        "code": {
                                            "type": "string",
                                            "description": "symbol-not-resolved or identifier-not-found when the member names no listing; no-data when it resolved but has no rows for this request, such as a listing without a quote or a date it did not trade."
                                        },
                                        "status": {
                                            "type": "integer"
                                        },
                                        "detail": {
                                            "type": "string"
                                        }
                                    },
                                    "required": [
                                        "symbol",
                                        "instrument_id",
                                        "code",
                                        "status",
                                        "detail"
                                    ]
                                },
                                "description": "Requested members of a batch that return no rows: every requested symbol or instrument ID appears in data or here. A member that names no listing is reported on the first page, and one that resolved but has no rows on the page that reaches it, so a paginated request reports each one once. Valid members are still returned; entitlement failures reject the request, and a request in which no member resolves is a 404. CSV responses carry these entries in the X-Meta-Errors header."
                            },
                            "unrecorded_symbols": {
                                "type": "array",
                                "items": {
                                    "type": "string"
                                },
                                "description": "Present when rows in data carry a symbol that is only a label: no ticker is recorded for that listing at symbol_at (ticker records begin in 2003 at the earliest, later for many listings, while prices start earlier), so the listing was found by the earliest ticker recorded for it, or by its instrument ID, and its rows carry that symbol. OHLC does not assert that the listing traded under the symbol then; /v1/instruments/{instrument_id}/symbols lists the recorded tickers. Not sent with format=csv."
                            }
                        }
                    }
                }
            },
            "Quote": {
                "type": "object",
                "properties": {
                    "security_id": {
                        "type": "string",
                        "deprecated": true,
                        "description": "Deprecated: the same stable public ID as instrument_id, which replaces it."
                    },
                    "instrument_id": {
                        "type": "string",
                        "description": "Stable public instrument ID, independent of ticker; the instrument_id of the research endpoints."
                    },
                    "symbol": {
                        "type": "string"
                    },
                    "exchange_mic": {
                        "type": "string"
                    },
                    "currency_code": {
                        "type": "string",
                        "pattern": "^[A-Z]{3}$"
                    },
                    "last_price": {
                        "description": "Last trade price in the delayed snapshot. Exact decimal string.",
                        "type": [
                            "string",
                            "null"
                        ],
                        "pattern": "^-?[0-9]+(?:\\.[0-9]+)?$"
                    },
                    "bid_price": {
                        "description": "Always null for now: no licensed source supplies bid and ask quotes yet. Reserved so clients need not change when one does.",
                        "type": [
                            "string",
                            "null"
                        ],
                        "pattern": "^-?[0-9]+(?:\\.[0-9]+)?$"
                    },
                    "ask_price": {
                        "description": "Always null for now: no licensed source supplies bid and ask quotes yet. Reserved so clients need not change when one does.",
                        "type": [
                            "string",
                            "null"
                        ],
                        "pattern": "^-?[0-9]+(?:\\.[0-9]+)?$"
                    },
                    "bid_size": {
                        "description": "Always null for now: no licensed source supplies bid and ask quotes yet. Reserved so clients need not change when one does.",
                        "type": [
                            "string",
                            "null"
                        ],
                        "pattern": "^-?[0-9]+(?:\\.[0-9]+)?$"
                    },
                    "ask_size": {
                        "description": "Always null for now: no licensed source supplies bid and ask quotes yet. Reserved so clients need not change when one does.",
                        "type": [
                            "string",
                            "null"
                        ],
                        "pattern": "^-?[0-9]+(?:\\.[0-9]+)?$"
                    },
                    "last_at": {
                        "description": "When the last trade printed: for exchange listings at least 15 minutes before the snapshot was published (US snapshots every 10 minutes, international ones every 60 minutes, and every 10 minutes for listings requested in the last 24 hours); for the leading crypto pairs, which are not delayed, usually under 10 minutes before the request, and up to about two hours for other pairs; for currency pairs while the forex market is open, up to about 10 minutes; for indices (the INDEX venue) about 15 minutes before the snapshot.",
                        "type": [
                            "string",
                            "null"
                        ],
                        "format": "date-time"
                    },
                    "bid_at": {
                        "description": "Always null for now: no licensed source supplies bid and ask quotes yet. Reserved so clients need not change when one does.",
                        "type": [
                            "string",
                            "null"
                        ],
                        "format": "date-time"
                    },
                    "ask_at": {
                        "description": "Always null for now: no licensed source supplies bid and ask quotes yet. Reserved so clients need not change when one does.",
                        "type": [
                            "string",
                            "null"
                        ],
                        "format": "date-time"
                    },
                    "adjustment": {
                        "type": "string",
                        "enum": [
                            "split",
                            "total_return"
                        ],
                        "description": "Present only for adjusted prices."
                    },
                    "factor_set_version": {
                        "type": "integer",
                        "description": "Present only for adjusted prices."
                    }
                },
                "required": [
                    "security_id",
                    "instrument_id",
                    "symbol",
                    "exchange_mic",
                    "currency_code",
                    "last_price",
                    "bid_price",
                    "ask_price",
                    "bid_size",
                    "ask_size",
                    "last_at",
                    "bid_at",
                    "ask_at"
                ]
            },
            "Bar": {
                "type": "object",
                "properties": {
                    "datetime": {
                        "type": "string",
                        "format": "date-time",
                        "description": "Instant the bar opens."
                    },
                    "security_id": {
                        "type": "string",
                        "deprecated": true,
                        "description": "Deprecated: the same stable public ID as instrument_id, which replaces it."
                    },
                    "instrument_id": {
                        "type": "string",
                        "description": "Stable public instrument ID, independent of ticker; the instrument_id of the research endpoints."
                    },
                    "symbol": {
                        "type": "string"
                    },
                    "exchange_mic": {
                        "type": "string"
                    },
                    "currency_code": {
                        "type": "string",
                        "pattern": "^[A-Z]{3}$"
                    },
                    "open": {
                        "type": [
                            "string",
                            "null"
                        ],
                        "pattern": "^-?[0-9]+(?:\\.[0-9]+)?$",
                        "description": "Exact decimal string. Never a JSON floating point number."
                    },
                    "high": {
                        "type": [
                            "string",
                            "null"
                        ],
                        "pattern": "^-?[0-9]+(?:\\.[0-9]+)?$",
                        "description": "Exact decimal string. Never a JSON floating point number."
                    },
                    "low": {
                        "type": [
                            "string",
                            "null"
                        ],
                        "pattern": "^-?[0-9]+(?:\\.[0-9]+)?$",
                        "description": "Exact decimal string. Never a JSON floating point number."
                    },
                    "close": {
                        "type": [
                            "string",
                            "null"
                        ],
                        "pattern": "^-?[0-9]+(?:\\.[0-9]+)?$",
                        "description": "Exact decimal string. Never a JSON floating point number."
                    },
                    "volume": {
                        "description": "Shares traded, always a whole number for exchange listings: a source that counts fractional-share executions is rounded half up to whole shares. A US daily bar carries the consolidated tape's volume (every print, fractional shares included) wherever the consolidated-tape source has the session and its open, high, low and close agree with the bar's, and the end-of-day provider's volume otherwise. For crypto pairs (the CRYPTO venue), a daily bar's volume is the value traded in the quote currency, US dollars, not coins; an intraday bar's is the number of coins traded, from the provider's separate intraday aggregation, so intraday volumes neither are dollars nor add up to the daily bar's. Null on any crypto bar whose price moved while the source reported no volume (the volume is unknown, not zero). Always null for currency pairs (the FOREX venue): the over-the-counter market reports no traded amount; for indices (the INDEX venue), whose level is not traded; and for bonds (the BOND venue), whose source reports no traded amount. Exact decimal string.",
                        "type": [
                            "string",
                            "null"
                        ],
                        "pattern": "^-?[0-9]+(?:\\.[0-9]+)?$"
                    },
                    "trade_count": {
                        "type": [
                            "integer",
                            "null"
                        ],
                        "minimum": 0,
                        "description": "Number of trades in the bar; null when no source of the bar counts them, which is not missing data. Only the consolidated-tape source of daily bars counts trades: a daily bar carries its count, with its volume, where that source has the session and its prices agree with the bar's, which is from the 2026-10-02 session on for the US-listed symbols that source covers. Most daily bars before that session, every intraday bar, crypto and currency pairs, indices, mutual funds and OTC listings are null."
                    },
                    "adjustment": {
                        "type": "string",
                        "enum": [
                            "split",
                            "total_return"
                        ],
                        "description": "Present only for adjusted prices."
                    },
                    "factor_set_version": {
                        "type": "integer",
                        "description": "Present only for adjusted prices."
                    }
                },
                "required": [
                    "datetime",
                    "security_id",
                    "instrument_id",
                    "symbol",
                    "exchange_mic",
                    "currency_code",
                    "open",
                    "high",
                    "low",
                    "close",
                    "volume",
                    "trade_count"
                ]
            },
            "DailyBar": {
                "type": "object",
                "properties": {
                    "date": {
                        "type": "string",
                        "format": "date",
                        "description": "Exchange-local trading date."
                    },
                    "security_id": {
                        "type": "string",
                        "deprecated": true,
                        "description": "Deprecated: the same stable public ID as instrument_id, which replaces it."
                    },
                    "instrument_id": {
                        "type": "string",
                        "description": "Stable public instrument ID, independent of ticker; the instrument_id of the research endpoints."
                    },
                    "symbol": {
                        "type": "string"
                    },
                    "exchange_mic": {
                        "type": "string"
                    },
                    "currency_code": {
                        "type": "string",
                        "pattern": "^[A-Z]{3}$"
                    },
                    "open": {
                        "type": [
                            "string",
                            "null"
                        ],
                        "pattern": "^-?[0-9]+(?:\\.[0-9]+)?$",
                        "description": "Exact decimal string. Never a JSON floating point number."
                    },
                    "high": {
                        "type": [
                            "string",
                            "null"
                        ],
                        "pattern": "^-?[0-9]+(?:\\.[0-9]+)?$",
                        "description": "Exact decimal string. Never a JSON floating point number."
                    },
                    "low": {
                        "type": [
                            "string",
                            "null"
                        ],
                        "pattern": "^-?[0-9]+(?:\\.[0-9]+)?$",
                        "description": "Exact decimal string. Never a JSON floating point number."
                    },
                    "close": {
                        "type": [
                            "string",
                            "null"
                        ],
                        "pattern": "^-?[0-9]+(?:\\.[0-9]+)?$",
                        "description": "Exact decimal string. Never a JSON floating point number."
                    },
                    "volume": {
                        "description": "Shares traded, always a whole number for exchange listings: a source that counts fractional-share executions is rounded half up to whole shares. A US daily bar carries the consolidated tape's volume (every print, fractional shares included) wherever the consolidated-tape source has the session and its open, high, low and close agree with the bar's, and the end-of-day provider's volume otherwise. For crypto pairs (the CRYPTO venue), a daily bar's volume is the value traded in the quote currency, US dollars, not coins; an intraday bar's is the number of coins traded, from the provider's separate intraday aggregation, so intraday volumes neither are dollars nor add up to the daily bar's. Null on any crypto bar whose price moved while the source reported no volume (the volume is unknown, not zero). Always null for currency pairs (the FOREX venue): the over-the-counter market reports no traded amount; for indices (the INDEX venue), whose level is not traded; and for bonds (the BOND venue), whose source reports no traded amount. Exact decimal string.",
                        "type": [
                            "string",
                            "null"
                        ],
                        "pattern": "^-?[0-9]+(?:\\.[0-9]+)?$"
                    },
                    "trade_count": {
                        "type": [
                            "integer",
                            "null"
                        ],
                        "minimum": 0,
                        "description": "Number of trades in the bar; null when no source of the bar counts them, which is not missing data. Only the consolidated-tape source of daily bars counts trades: a daily bar carries its count, with its volume, where that source has the session and its prices agree with the bar's, which is from the 2026-10-02 session on for the US-listed symbols that source covers. Most daily bars before that session, every intraday bar, crypto and currency pairs, indices, mutual funds and OTC listings are null."
                    },
                    "adjustment": {
                        "type": "string",
                        "enum": [
                            "split",
                            "total_return"
                        ],
                        "description": "Present only for adjusted prices."
                    },
                    "factor_set_version": {
                        "type": "integer",
                        "description": "Present only for adjusted prices."
                    }
                },
                "required": [
                    "date",
                    "security_id",
                    "instrument_id",
                    "symbol",
                    "exchange_mic",
                    "currency_code",
                    "open",
                    "high",
                    "low",
                    "close",
                    "volume",
                    "trade_count"
                ]
            },
            "FinancialFact": {
                "type": "object",
                "properties": {
                    "concept": {
                        "type": "string",
                        "description": "Source taxonomy concept name.",
                        "example": "Revenues"
                    },
                    "taxonomy": {
                        "type": "string",
                        "description": "Source taxonomy namespace, such as us-gaap or dei."
                    },
                    "taxonomy_version": {
                        "type": [
                            "string",
                            "null"
                        ],
                        "description": "Taxonomy version; SEC companyfacts does not state it, so always null."
                    },
                    "value": {
                        "description": "Exact decimal string; null when the filing reports the fact as nil.",
                        "example": "416161000000",
                        "type": [
                            "string",
                            "null"
                        ],
                        "pattern": "^-?[0-9]+(?:\\.[0-9]+)?$"
                    },
                    "unit": {
                        "type": "string"
                    },
                    "currency_code": {
                        "type": [
                            "string",
                            "null"
                        ],
                        "description": "Required for monetary units; null for nonmonetary values."
                    },
                    "fiscal_start": {
                        "type": [
                            "string",
                            "null"
                        ],
                        "format": "date",
                        "description": "Null for instant facts such as balances, which are measured on fiscal_end.",
                        "example": "2024-09-29"
                    },
                    "fiscal_end": {
                        "type": "string",
                        "format": "date",
                        "example": "2025-09-27"
                    },
                    "dimensions": {
                        "type": "object",
                        "additionalProperties": true,
                        "description": "Taxonomy dimension map; facts come from SEC companyfacts, which carries consolidated facts only, so it is always empty."
                    },
                    "accession_number": {
                        "type": [
                            "string",
                            "null"
                        ],
                        "description": "SEC accession number of the source filing."
                    },
                    "security_id": {
                        "type": "string",
                        "deprecated": true,
                        "description": "Deprecated: the same stable public ID as instrument_id, which replaces it."
                    },
                    "instrument_id": {
                        "type": "string",
                        "description": "Stable public instrument ID, independent of ticker; the instrument_id of the research endpoints."
                    },
                    "symbol": {
                        "type": "string"
                    },
                    "exchange_mic": {
                        "type": "string"
                    }
                },
                "required": [
                    "concept",
                    "taxonomy",
                    "taxonomy_version",
                    "value",
                    "unit",
                    "currency_code",
                    "fiscal_start",
                    "fiscal_end",
                    "dimensions",
                    "accession_number",
                    "security_id",
                    "instrument_id",
                    "symbol",
                    "exchange_mic"
                ]
            },
            "FlatFile": {
                "type": "object",
                "required": [
                    "dataset",
                    "market",
                    "date",
                    "rows",
                    "bytes",
                    "sha256",
                    "generated_at",
                    "download_path"
                ],
                "properties": {
                    "dataset": {
                        "type": "string",
                        "enum": [
                            "eod",
                            "corporate-actions"
                        ]
                    },
                    "market": {
                        "type": "string",
                        "const": "us"
                    },
                    "date": {
                        "type": "string",
                        "format": "date",
                        "description": "New York trading date the file covers.",
                        "example": "2026-09-18"
                    },
                    "rows": {
                        "type": "integer",
                        "description": "Data rows, excluding the header row.",
                        "example": 11234
                    },
                    "bytes": {
                        "type": "integer",
                        "description": "Size of the .csv.gz file.",
                        "example": 3456789
                    },
                    "sha256": {
                        "type": "string",
                        "pattern": "^[a-f0-9]{64}$",
                        "description": "SHA-256 of the .csv.gz file; changes when the file is republished.",
                        "example": "9f86d081884c7d659a2feaa0c55ad015a3bf4f1b2b0b822cd15d6c15b0f00a08"
                    },
                    "generated_at": {
                        "type": "string",
                        "format": "date-time",
                        "description": "When this version was published; also its knowledge cutoff."
                    },
                    "download_path": {
                        "type": "string",
                        "description": "Relative URL that downloads the file.",
                        "example": "/v1/flat-files/eod/2026-09-18?download=true"
                    }
                }
            },
            "Security": {
                "type": "object",
                "properties": {
                    "security_id": {
                        "type": "string",
                        "deprecated": true,
                        "description": "Deprecated: the same stable public ID as instrument_id, which replaces it."
                    },
                    "instrument_id": {
                        "type": "string",
                        "description": "Stable public instrument ID, independent of ticker; the instrument_id of the research endpoints."
                    },
                    "symbol": {
                        "type": "string"
                    },
                    "exchange_mic": {
                        "type": "string"
                    },
                    "ticker": {
                        "type": "string"
                    },
                    "valid_from": {
                        "type": "string",
                        "format": "date-time"
                    },
                    "valid_to": {
                        "type": [
                            "string",
                            "null"
                        ],
                        "format": "date-time"
                    }
                },
                "required": [
                    "security_id",
                    "instrument_id",
                    "symbol",
                    "exchange_mic",
                    "ticker",
                    "valid_from",
                    "valid_to"
                ]
            },
            "Filing": {
                "type": "object",
                "properties": {
                    "security_id": {
                        "type": "string",
                        "deprecated": true,
                        "description": "Deprecated: the same stable public ID as instrument_id, which replaces it."
                    },
                    "instrument_id": {
                        "type": "string",
                        "description": "Stable public instrument ID, independent of ticker; the instrument_id of the research endpoints."
                    },
                    "symbol": {
                        "type": "string"
                    },
                    "exchange_mic": {
                        "type": "string"
                    },
                    "accession_number": {
                        "type": "string",
                        "description": "SEC accession number; the public filing identifier."
                    },
                    "form_type": {
                        "type": "string"
                    },
                    "filed_on": {
                        "type": "string",
                        "format": "date"
                    },
                    "accepted_at": {
                        "type": [
                            "string",
                            "null"
                        ],
                        "format": "date-time"
                    },
                    "period_end": {
                        "type": [
                            "string",
                            "null"
                        ],
                        "format": "date"
                    },
                    "amendment_of": {
                        "type": [
                            "string",
                            "null"
                        ],
                        "description": "Accession number of the filing this one amends."
                    }
                },
                "required": [
                    "security_id",
                    "instrument_id",
                    "symbol",
                    "exchange_mic",
                    "accession_number",
                    "form_type",
                    "filed_on",
                    "accepted_at",
                    "period_end",
                    "amendment_of"
                ]
            },
            "ActionLeg": {
                "type": "object",
                "properties": {
                    "sequence": {
                        "type": "integer"
                    },
                    "resulting_security_id": {
                        "type": [
                            "string",
                            "null"
                        ]
                    },
                    "cash_amount": {
                        "type": [
                            "string",
                            "null"
                        ],
                        "pattern": "^-?[0-9]+(?:\\.[0-9]+)?$",
                        "description": "Exact decimal string. Never a JSON floating point number."
                    },
                    "currency_code": {
                        "type": [
                            "string",
                            "null"
                        ]
                    },
                    "ratio_numerator": {
                        "type": [
                            "string",
                            "null"
                        ],
                        "pattern": "^-?[0-9]+(?:\\.[0-9]+)?$",
                        "description": "Exact decimal string. Never a JSON floating point number."
                    },
                    "ratio_denominator": {
                        "type": [
                            "string",
                            "null"
                        ],
                        "pattern": "^-?[0-9]+(?:\\.[0-9]+)?$",
                        "description": "Exact decimal string. Never a JSON floating point number."
                    },
                    "attributes": {
                        "type": [
                            "object",
                            "array"
                        ],
                        "description": "Decoded source attributes."
                    }
                },
                "required": [
                    "sequence",
                    "resulting_security_id",
                    "cash_amount",
                    "currency_code",
                    "ratio_numerator",
                    "ratio_denominator",
                    "attributes"
                ]
            },
            "CorporateAction": {
                "type": "object",
                "properties": {
                    "security_id": {
                        "type": "string",
                        "deprecated": true,
                        "description": "Deprecated: the same stable public ID as instrument_id, which replaces it."
                    },
                    "instrument_id": {
                        "type": "string",
                        "description": "Stable public instrument ID, independent of ticker; the instrument_id of the research endpoints."
                    },
                    "symbol": {
                        "type": "string"
                    },
                    "exchange_mic": {
                        "type": "string"
                    },
                    "action_type": {
                        "type": "string"
                    },
                    "ex_date": {
                        "type": [
                            "string",
                            "null"
                        ],
                        "format": "date"
                    },
                    "record_date": {
                        "type": [
                            "string",
                            "null"
                        ],
                        "format": "date"
                    },
                    "pay_date": {
                        "type": [
                            "string",
                            "null"
                        ],
                        "format": "date"
                    },
                    "effective_at": {
                        "description": "The instant the action takes effect, if the source states one. The current sources give dates only, so it is null: an action takes effect on its ex_date, and a dividend is paid on its pay_date.",
                        "type": [
                            "string",
                            "null"
                        ],
                        "format": "date-time"
                    },
                    "announced_at": {
                        "type": [
                            "string",
                            "null"
                        ],
                        "format": "date-time",
                        "description": "When the action was announced. No source states the instant: a US dividend taken from the second source carries that source's declaration date at 00:00 UTC, a date rather than a time, and every other action is null; dividends carry the declaration_date the provider supplies instead."
                    },
                    "declaration_date": {
                        "type": [
                            "string",
                            "null"
                        ],
                        "format": "date",
                        "description": "Provider declaration date when supplied; date precision does not imply a known announcement time."
                    },
                    "frequency": {
                        "type": [
                            "string",
                            "null"
                        ],
                        "description": "Provider payment frequency when supplied; not inferred from payment spacing."
                    },
                    "is_cancelled": {
                        "type": "boolean"
                    },
                    "legs": {
                        "type": "array",
                        "items": {
                            "$ref": "#/components/schemas/ActionLeg"
                        }
                    }
                },
                "required": [
                    "security_id",
                    "instrument_id",
                    "symbol",
                    "exchange_mic",
                    "action_type",
                    "ex_date",
                    "record_date",
                    "pay_date",
                    "effective_at",
                    "announced_at",
                    "declaration_date",
                    "frequency",
                    "is_cancelled",
                    "legs"
                ]
            },
            "SymbolMatch": {
                "type": "object",
                "properties": {
                    "security_id": {
                        "type": "string",
                        "deprecated": true,
                        "description": "Deprecated: the same stable public ID as instrument_id, which replaces it."
                    },
                    "instrument_id": {
                        "type": "string",
                        "description": "Stable public instrument ID, independent of ticker; the instrument_id of the research endpoints."
                    },
                    "symbol": {
                        "type": "string"
                    },
                    "exchange_mic": {
                        "type": "string"
                    },
                    "ticker": {
                        "type": "string"
                    }
                },
                "required": [
                    "security_id",
                    "instrument_id",
                    "symbol",
                    "exchange_mic",
                    "ticker"
                ]
            },
            "Exchange": {
                "type": "object",
                "properties": {
                    "mic": {
                        "type": "string"
                    },
                    "country": {
                        "type": "string",
                        "description": "ISO country code of the exchange; ZZ for the venues of no single country (CRYPTO, FOREX, INDEX and BOND)."
                    },
                    "timezone": {
                        "type": "string"
                    },
                    "currency_code": {
                        "type": "string",
                        "pattern": "^[A-Z]{3}$",
                        "description": "The venue's default trading currency. Listings can quote in another unit: London lines mostly trade in pence (GBX) on XLON, whose currency_code is GBP; each row of the price endpoints states its own currency_code."
                    },
                    "price_scale": {
                        "type": "integer"
                    },
                    "tick_size": {
                        "type": "string",
                        "pattern": "^-?[0-9]+(?:\\.[0-9]+)?$",
                        "description": "Exact decimal string. Never a JSON floating point number."
                    },
                    "lot_size": {
                        "type": "string",
                        "pattern": "^-?[0-9]+(?:\\.[0-9]+)?$",
                        "description": "Exact decimal string. Never a JSON floating point number."
                    },
                    "settlement_convention": {
                        "type": [
                            "object",
                            "array"
                        ],
                        "description": "Reserved; empty for every exchange."
                    }
                },
                "required": [
                    "mic",
                    "country",
                    "timezone",
                    "currency_code",
                    "price_scale",
                    "tick_size",
                    "lot_size",
                    "settlement_convention"
                ]
            },
            "CalendarDay": {
                "type": "object",
                "properties": {
                    "exchange_mic": {
                        "type": "string"
                    },
                    "exchange_timezone": {
                        "type": "string"
                    },
                    "local_date": {
                        "type": "string",
                        "format": "date"
                    },
                    "status": {
                        "type": "string",
                        "description": "open or closed. A closed day has no sessions; holiday names are not served."
                    },
                    "sessions": {
                        "type": "array",
                        "description": "The day's trading sessions; empty on a closed day.",
                        "items": {
                            "type": "object",
                            "properties": {
                                "type": {
                                    "type": "string",
                                    "description": "Always regular: only the regular session is held. An early close is a regular session with an earlier closes_at."
                                },
                                "opens_at": {
                                    "type": [
                                        "string",
                                        "null"
                                    ],
                                    "format": "date-time"
                                },
                                "closes_at": {
                                    "type": [
                                        "string",
                                        "null"
                                    ],
                                    "format": "date-time"
                                }
                            },
                            "required": [
                                "type",
                                "opens_at",
                                "closes_at"
                            ]
                        }
                    }
                },
                "required": [
                    "exchange_mic",
                    "exchange_timezone",
                    "local_date",
                    "status",
                    "sessions"
                ]
            },
            "Dividend": {
                "type": "object",
                "properties": {
                    "id": {
                        "type": "string",
                        "description": "Stable public record ID; unchanged when the dividend is revised. Calculated dividend metrics (/v1/financials/metrics) list the dividends they were calculated from by this ID in input_record_ids."
                    },
                    "security_id": {
                        "type": "string",
                        "deprecated": true,
                        "description": "Deprecated: the same stable public ID as instrument_id, which replaces it."
                    },
                    "instrument_id": {
                        "type": "string",
                        "description": "Stable public instrument ID, independent of ticker; the instrument_id of the research endpoints."
                    },
                    "symbol": {
                        "type": "string"
                    },
                    "exchange_mic": {
                        "type": "string"
                    },
                    "action_type": {
                        "type": "string",
                        "enum": [
                            "cash_dividend",
                            "stock_dividend"
                        ],
                        "description": "cash_dividend. stock_dividend is reserved: the current sources record a stock dividend paid in the listing's own shares as a split, which /v1/splits lists."
                    },
                    "ex_date": {
                        "type": [
                            "string",
                            "null"
                        ],
                        "format": "date"
                    },
                    "record_date": {
                        "type": [
                            "string",
                            "null"
                        ],
                        "format": "date",
                        "description": "Record date: holders on the register at its end receive the dividend. From the corporate-action record, or, where that states none, from the exchange's announcement (announcement.record_date)."
                    },
                    "pay_date": {
                        "type": [
                            "string",
                            "null"
                        ],
                        "format": "date"
                    },
                    "effective_at": {
                        "description": "The instant the action takes effect, if the source states one. The current sources give dates only, so it is null: an action takes effect on its ex_date, and a dividend is paid on its pay_date.",
                        "type": [
                            "string",
                            "null"
                        ],
                        "format": "date-time"
                    },
                    "announced_at": {
                        "type": [
                            "string",
                            "null"
                        ],
                        "format": "date-time",
                        "description": "When the action was announced. No source states the instant: a US dividend taken from the second source carries that source's declaration date at 00:00 UTC, a date rather than a time, and every other action is null; dividends carry the declaration_date the provider supplies instead."
                    },
                    "declaration_date": {
                        "type": [
                            "string",
                            "null"
                        ],
                        "format": "date",
                        "description": "Provider declaration date when supplied; date precision does not imply a known announcement time."
                    },
                    "frequency": {
                        "type": [
                            "string",
                            "null"
                        ],
                        "description": "The provider's payment frequency label as supplied, such as Quarterly; null when it sends none. Never inferred or filled from another source: frequency_per_year and distribution_type carry the classification. Not a reliable cadence to display: the provider labels twice-monthly payers Bimonthly and a twice-weekly one Biweekly, and calls other dividends Bimonthly that are quarterly. Show frequency_per_year, or the listing's dividend_payments_per_year from /v1/financials/metrics, instead."
                    },
                    "is_cancelled": {
                        "type": "boolean"
                    },
                    "legs": {
                        "type": "array",
                        "items": {
                            "$ref": "#/components/schemas/ActionLeg"
                        }
                    },
                    "frequency_per_year": {
                        "type": [
                            "integer",
                            "null"
                        ],
                        "description": "Payments per year: 104 twice-weekly, 52 weekly, 24 semi-monthly, 12 monthly, 4 quarterly, 2 semi-annual, 1 annual; 0 for a non-recurring payment. From the provider frequency label (0 for Other or Special); when frequency is null or a label OHLC does not recognize (such as None or Unknown), from a second source's cadence for the same dividend (US listings only), as for distribution_type. Bimonthly and Biweekly, which the provider gives twice-monthly and twice-weekly payers, are never read as 6 or 26: without a second source, such a dividend is 24 or 104 when the median gap between the listing's last five regular ex-dates through it (cash dividends not labelled Other or Special) is that of twice-monthly (11 to 20 days) or twice-weekly (4 days or less) payments, else null. Null when neither states a cadence, and for Interim and Final labels."
                    },
                    "distribution_type": {
                        "type": "string",
                        "enum": [
                            "recurring",
                            "special",
                            "supplemental",
                            "irregular",
                            "unknown"
                        ],
                        "description": "From the provider frequency label: special for Special; irregular for Other, a one-off outside the regular schedule; recurring for a cadence label (Weekly through Annual, Interim, Final), and for Bimonthly or Biweekly where the listing's ex-date gaps confirm a cadence, as for frequency_per_year. Without a recognized label, and for US listings only, from a second source's classification of the same dividend (same listing and ex_date, matching cash amount) known by the as_of cutoff: recurring for a regular dividend with a stated cadence, special for a special one, irregular for a capital gains distribution. frequency keeps the provider's value (null, or the unrecognized label), which tells such a row from one its label classifies. unknown when neither source classifies it. The current sources never distinguish supplemental payments."
                    },
                    "split_adjusted_amount": {
                        "description": "The cash leg restated for later share distributions: cash_amount x product of (split_from / split_to) over the listing's /v1/splits rows with execution_date after ex_date and on or before the as_of date, multiplied as exact fractions and rounded half up to 18 places once, trailing zeros removed. 0.82 paid before a 4-for-1 split is 0.205. Null without exactly one cash leg or an ex_date.",
                        "example": "0.205",
                        "type": [
                            "string",
                            "null"
                        ],
                        "pattern": "^-?[0-9]+(?:\\.[0-9]+)?$"
                    },
                    "historical_adjustment_factor": {
                        "description": "Cumulative dividend factor from the validated adjustment factor set /v1/eod?adjustment=total_return uses at the same as_of: the product, over this dividend and every later dividend in the set effective on or before the as_of date, of (reference_close - cash_amount) / reference_close, where reference_close is the last reconciled close before that ex_date. Each factor is stored truncated to 24 places and the product is truncated to 36 places per step, as /v1/eod multiplies. total_return bars before ex_date are the raw price x this factor x the split factor of later splits, rounded half up to 6 places. 0.82 on a 100.82 close is 100 / 100.82 = 0.99186669311644514977187. Null when the set is quarantined or missing or has no factor for this dividend (stock, cancelled or future ex-date dividends).",
                        "example": "0.99186669311644514977187",
                        "type": [
                            "string",
                            "null"
                        ],
                        "pattern": "^-?[0-9]+(?:\\.[0-9]+)?$"
                    },
                    "announcement": {
                        "type": [
                            "object",
                            "null"
                        ],
                        "description": "What the exchange's own announcement of this dividend states beyond its amount and dates: currently announced by the ASX for its listings (franking, reinvestment plans, specials), null for other listings. Attached only where the announcement describes the same payment: same listing and ex_date, and an amount that agrees with the cash leg, in its currency or in the declared one (equal, or equal once the more precise is rounded to the places of the other, the two within 1%). Null when none agrees; an ETF's final distribution announced after the estimate the cash leg still carries, or a special announced with a regular dividend that the cash leg leaves out, carries none until the leg agrees. Point in time: a query with an earlier as_of sees the version of the announcement known then, or none.",
                        "properties": {
                            "fiscal_period": {
                                "type": [
                                    "string",
                                    "null"
                                ],
                                "enum": [
                                    "interim",
                                    "final",
                                    null
                                ],
                                "description": "The payment's place in the company's financial year as the exchange announced it: interim during the year, final after its end. frequency keeps the corporate-action record's own label, which can differ (for ASX dividends it states Final for interim payments and Interim for final ones)."
                            },
                            "record_date": {
                                "type": [
                                    "string",
                                    "null"
                                ],
                                "format": "date",
                                "description": "Record date the exchange announced."
                            },
                            "pay_date": {
                                "type": [
                                    "string",
                                    "null"
                                ],
                                "format": "date",
                                "description": "Payment date the exchange announced."
                            },
                            "currency_code": {
                                "type": "string",
                                "pattern": "^[A-Z]{3}$",
                                "description": "Currency of cash_amount, special_amount, every tax amount and reinvestment_plan.price: the exchange's settlement currency (AUD on the ASX), whatever currency the dividend was declared in."
                            },
                            "cash_amount": {
                                "description": "Cash per share the exchange announced, in currency_code.",
                                "example": "1.379887",
                                "type": [
                                    "string",
                                    "null"
                                ],
                                "pattern": "^-?[0-9]+(?:\\.[0-9]+)?$"
                            },
                            "declared_currency_code": {
                                "type": [
                                    "string",
                                    "null"
                                ],
                                "pattern": "^[A-Z]{3}$",
                                "description": "Currency the company declared the dividend in, when other than currency_code (BHP and CSL declare in US dollars); null otherwise."
                            },
                            "declared_amount": {
                                "description": "Cash per share as declared, in declared_currency_code; null when declared in currency_code or not stated.",
                                "example": "0.99",
                                "type": [
                                    "string",
                                    "null"
                                ],
                                "pattern": "^-?[0-9]+(?:\\.[0-9]+)?$"
                            },
                            "special_amount": {
                                "description": "Part of cash_amount the company declared a special dividend, in currency_code: equal to cash_amount for a wholly special dividend, 0 for none. Null when the exchange flags a special without an amount OHLC can use.",
                                "example": "0.025",
                                "type": [
                                    "string",
                                    "null"
                                ],
                                "pattern": "^-?[0-9]+(?:\\.[0-9]+)?$"
                            },
                            "tax": {
                                "type": "object",
                                "description": "Tax treatment of the dividend for its holders. Amounts per share in currency_code.",
                                "properties": {
                                    "imputation_percent": {
                                        "description": "Share of the dividend paid out of profits on which the company paid corporate tax, which gives holders a credit for that tax: the franked percentage in Australia, the imputed share in New Zealand. Percent, from 0 to 100.",
                                        "example": "100",
                                        "type": [
                                            "string",
                                            "null"
                                        ],
                                        "pattern": "^-?[0-9]+(?:\\.[0-9]+)?$"
                                    },
                                    "imputed_amount": {
                                        "description": "Part of the cash amount carrying the tax credit (the franked amount).",
                                        "example": "1.3799",
                                        "type": [
                                            "string",
                                            "null"
                                        ],
                                        "pattern": "^-?[0-9]+(?:\\.[0-9]+)?$"
                                    },
                                    "corporate_tax_rate": {
                                        "description": "Corporate tax rate the imputation is stated at (30 for most Australian companies, 25 for smaller ones). Null when the announcement states none. Percent, from 0 to 100.",
                                        "example": "30",
                                        "type": [
                                            "string",
                                            "null"
                                        ],
                                        "pattern": "^-?[0-9]+(?:\\.[0-9]+)?$"
                                    },
                                    "imputation_credit": {
                                        "description": "Tax credit per share (the franking credit): imputed_amount x corporate_tax_rate / (100 - corporate_tax_rate), rounded half up to 6 places. 1.3799 franked at 30% carries 1.3799 x 30 / 70 = 0.591386. 0 when nothing is imputed; null when an imputed amount has no stated rate.",
                                        "example": "0.591386",
                                        "type": [
                                            "string",
                                            "null"
                                        ],
                                        "pattern": "^-?[0-9]+(?:\\.[0-9]+)?$"
                                    },
                                    "withholding_tax_rate": {
                                        "description": "Rate withheld from holders resident abroad, as announced (0 where the exchange states none). Percent, from 0 to 100.",
                                        "example": "0",
                                        "type": [
                                            "string",
                                            "null"
                                        ],
                                        "pattern": "^-?[0-9]+(?:\\.[0-9]+)?$"
                                    },
                                    "tax_deferred_amount": {
                                        "description": "Part of the payment that is tax-deferred (a trust distribution's return of capital for tax purposes).",
                                        "example": "0",
                                        "type": [
                                            "string",
                                            "null"
                                        ],
                                        "pattern": "^-?[0-9]+(?:\\.[0-9]+)?$"
                                    },
                                    "foreign_income_amount": {
                                        "description": "Part of the payment that is income from foreign sources (a trust distribution's foreign income).",
                                        "example": "0",
                                        "type": [
                                            "string",
                                            "null"
                                        ],
                                        "pattern": "^-?[0-9]+(?:\\.[0-9]+)?$"
                                    }
                                },
                                "required": [
                                    "imputation_percent",
                                    "imputed_amount",
                                    "corporate_tax_rate",
                                    "imputation_credit",
                                    "withholding_tax_rate",
                                    "tax_deferred_amount",
                                    "foreign_income_amount"
                                ]
                            },
                            "reinvestment_plan": {
                                "type": [
                                    "object",
                                    "null"
                                ],
                                "description": "The company's dividend reinvestment plan for this dividend; null when it operates none.",
                                "properties": {
                                    "status": {
                                        "type": "string",
                                        "enum": [
                                            "offered",
                                            "suspended"
                                        ],
                                        "description": "offered when holders may take shares instead of cash; suspended when the plan exists but does not operate for this dividend."
                                    },
                                    "price": {
                                        "description": "Price per share of the shares issued under the plan, in currency_code, once set; null before.",
                                        "example": "43.8936",
                                        "type": [
                                            "string",
                                            "null"
                                        ],
                                        "pattern": "^-?[0-9]+(?:\\.[0-9]+)?$"
                                    },
                                    "discount_percent": {
                                        "description": "Discount to the market price at which plan shares are issued. Percent, from 0 to 100.",
                                        "example": "1.5",
                                        "type": [
                                            "string",
                                            "null"
                                        ],
                                        "pattern": "^-?[0-9]+(?:\\.[0-9]+)?$"
                                    }
                                },
                                "required": [
                                    "status",
                                    "price",
                                    "discount_percent"
                                ]
                            }
                        },
                        "required": [
                            "fiscal_period",
                            "record_date",
                            "pay_date",
                            "currency_code",
                            "cash_amount",
                            "declared_currency_code",
                            "declared_amount",
                            "special_amount",
                            "tax",
                            "reinvestment_plan"
                        ]
                    }
                },
                "required": [
                    "id",
                    "security_id",
                    "instrument_id",
                    "symbol",
                    "exchange_mic",
                    "action_type",
                    "ex_date",
                    "record_date",
                    "pay_date",
                    "effective_at",
                    "announced_at",
                    "declaration_date",
                    "frequency",
                    "is_cancelled",
                    "legs",
                    "frequency_per_year",
                    "distribution_type",
                    "split_adjusted_amount",
                    "historical_adjustment_factor",
                    "announcement"
                ]
            },
            "Split": {
                "type": "object",
                "properties": {
                    "id": {
                        "type": "string",
                        "description": "Stable public record ID; unchanged when the split is revised."
                    },
                    "instrument_id": {
                        "type": "string",
                        "description": "Stable instrument ID of the listing; the same value as security_id."
                    },
                    "security_id": {
                        "type": "string",
                        "deprecated": true,
                        "description": "Deprecated: the same stable public ID as instrument_id, which replaces it."
                    },
                    "symbol": {
                        "type": "string"
                    },
                    "exchange_mic": {
                        "type": "string"
                    },
                    "execution_date": {
                        "type": "string",
                        "format": "date",
                        "description": "Ex-date: the first trading date on the post-split basis. A split the source dates on a day the listing's exchange was closed is given the next session (a split recorded for 2001-09-12, during the closure of US markets, executes on 2001-09-17)."
                    },
                    "split_from": {
                        "description": "Shares held before the split: a 4-for-1 split is 1 to 4, a 1-for-10 reverse split 10 to 1.",
                        "example": "1",
                        "type": "string",
                        "pattern": "^-?[0-9]+(?:\\.[0-9]+)?$"
                    },
                    "split_to": {
                        "description": "Shares held after the split for split_from shares before it.",
                        "example": "4",
                        "type": "string",
                        "pattern": "^-?[0-9]+(?:\\.[0-9]+)?$"
                    },
                    "adjustment_type": {
                        "type": "string",
                        "enum": [
                            "forward_split",
                            "reverse_split",
                            "stock_dividend"
                        ],
                        "description": "reverse_split when split_to is below split_from, forward_split when it is not. The current sources record a stock dividend paid in the listing's own shares as a split, so it is forward_split; stock_dividend is reserved."
                    },
                    "historical_adjustment_factor": {
                        "description": "Cumulative price factor for prices before execution_date: the exact product of (split_from / split_to) over this split and every later executed split of the listing, rounded half up to 24 places. /v1/eod?adjustment=split multiplies raw prices by the same product as a fraction, and by the price factor of any later spin-off or rights-offering adjustment the source records as a split but which distributes no shares (not listed here), and rounds the result to 6 places. A 4-for-1 split followed by a 2-for-1 split gives 0.125 for the first and 0.5 for the second. Null while execution_date is after the as_of date, and for cancelled splits.",
                        "example": "0.25",
                        "type": [
                            "string",
                            "null"
                        ],
                        "pattern": "^-?[0-9]+(?:\\.[0-9]+)?$"
                    },
                    "announced_at": {
                        "type": [
                            "string",
                            "null"
                        ],
                        "format": "date-time",
                        "description": "When the split was announced, if the source states it. The current split source gives only the execution date and ratio, so it is null."
                    },
                    "is_cancelled": {
                        "type": "boolean"
                    }
                },
                "required": [
                    "id",
                    "instrument_id",
                    "security_id",
                    "symbol",
                    "exchange_mic",
                    "execution_date",
                    "split_from",
                    "split_to",
                    "adjustment_type",
                    "historical_adjustment_factor",
                    "announced_at",
                    "is_cancelled"
                ]
            },
            "Health": {
                "type": "object",
                "properties": {
                    "dataset": {
                        "type": "string"
                    },
                    "market": {
                        "type": "string"
                    },
                    "exchange": {
                        "type": [
                            "string",
                            "null"
                        ],
                        "description": "Exchange MIC; null on the rows of research datasets with no connected source, which apply to the whole market."
                    },
                    "status": {
                        "type": "string",
                        "description": "freshness_status, or when that is fresh the coverage status (partial, unverified or unknown)."
                    },
                    "last_success_at": {
                        "type": [
                            "string",
                            "null"
                        ],
                        "format": "date-time",
                        "description": "When a source connected to this venue last finished a run that stored rows; the newest across its sources."
                    },
                    "latest_event_at": {
                        "type": [
                            "string",
                            "null"
                        ],
                        "format": "date-time",
                        "description": "The newest event any connected source stored for this venue. One listing with the latest session sets it, so read coverage.latest_session for how many listings have that session."
                    },
                    "latest_complete_local_date": {
                        "type": [
                            "string",
                            "null"
                        ],
                        "format": "date",
                        "description": "Reserved for the newest date through which the venue's history is complete; always null, since no venue's completeness is established (coverage.history_complete)."
                    },
                    "freshness_status": {
                        "type": "string",
                        "enum": [
                            "fresh",
                            "partial",
                            "stale",
                            "late",
                            "not_expected",
                            "unavailable"
                        ],
                        "description": "fresh: the freshest connected source delivered on time. partial or stale (daily and intraday bars): fewer than 90 percent, or fewer than 50 percent, of the listings that traded in the sessions before have bars of coverage.latest_session, judged from 5.5 hours after its close for US daily bars (CA 11 hours, GB 15.5 hours, FR 15.5 hours, NL 15.5 hours, AU 26 hours for the international markets, whose daily bars arrive with each exchange's daily file, read from two hours after its close) and 8 hours for intraday bars. late: past its deadline. not_expected: nothing is due. unavailable: no connected source has delivered for this venue."
                    },
                    "coverage": {
                        "type": "object",
                        "properties": {
                            "checked_at": {
                                "type": [
                                    "string",
                                    "null"
                                ],
                                "format": "date-time"
                            },
                            "status": {
                                "type": "string"
                            },
                            "eligible_symbols": {
                                "type": [
                                    "integer",
                                    "null"
                                ]
                            },
                            "symbols_with_rows": {
                                "type": [
                                    "integer",
                                    "null"
                                ],
                                "description": "Listings with at least one row, of any date."
                            },
                            "history_complete": {
                                "type": "boolean",
                                "description": "Whether the venue's history is verified complete; always false for now."
                            },
                            "latest_session": {
                                "type": [
                                    "object",
                                    "null"
                                ],
                                "description": "Daily and intraday bars: the newest closed session of the venue and how many listings have its bars, counted every 15 minutes. eligible_symbols are the listings with bars on at least one of the 5 sessions before it. Null for other datasets and where the calendar holds no closed session.",
                                "properties": {
                                    "date": {
                                        "type": "string",
                                        "format": "date"
                                    },
                                    "closed_at": {
                                        "type": "string",
                                        "format": "date-time"
                                    },
                                    "eligible_symbols": {
                                        "type": "integer"
                                    },
                                    "symbols_with_rows": {
                                        "type": "integer"
                                    },
                                    "checked_at": {
                                        "type": "string",
                                        "format": "date-time"
                                    }
                                },
                                "required": [
                                    "date",
                                    "closed_at",
                                    "eligible_symbols",
                                    "symbols_with_rows",
                                    "checked_at"
                                ]
                            },
                            "asset_types": {
                                "type": "array",
                                "description": "Quotes, daily bars and intraday bars: the venue's listings by asset type and how many have at least one row. Mutual funds are priced once a day and have no quotes or intraday bars; NYSE-listed preferreds are absent from the delayed quote snapshot; crypto intraday bars cover the leading pairs only, and crypto quotes the pairs either crypto source prices; forex quotes and intraday bars cover the live pairs only, and index quotes the leading indices only. Counted only for the US exchanges, the crypto venue and the Toronto, TSX Venture, Cboe Canada, London, Euronext Paris and Amsterdam and ASX exchanges: the FOREX, INDEX, BOND and FSRV rows carry an empty list, a null latest_session and coverage status unknown. Empty for other datasets.",
                                "items": {
                                    "type": "object",
                                    "properties": {
                                        "asset_type": {
                                            "type": "string"
                                        },
                                        "eligible_symbols": {
                                            "type": "integer"
                                        },
                                        "symbols_with_rows": {
                                            "type": "integer"
                                        }
                                    },
                                    "required": [
                                        "asset_type",
                                        "eligible_symbols",
                                        "symbols_with_rows"
                                    ]
                                }
                            }
                        },
                        "required": [
                            "checked_at",
                            "status",
                            "eligible_symbols",
                            "symbols_with_rows",
                            "history_complete",
                            "latest_session",
                            "asset_types"
                        ]
                    }
                },
                "required": [
                    "dataset",
                    "market",
                    "exchange",
                    "status",
                    "last_success_at",
                    "latest_event_at",
                    "latest_complete_local_date",
                    "freshness_status",
                    "coverage"
                ]
            },
            "ExportCreated": {
                "type": "object",
                "properties": {
                    "data": {
                        "type": "object",
                        "properties": {
                            "id": {
                                "type": "string"
                            },
                            "status": {
                                "type": "string",
                                "const": "pending"
                            }
                        },
                        "required": [
                            "id",
                            "status"
                        ]
                    },
                    "meta": {
                        "type": "object",
                        "properties": {
                            "timezone": {
                                "type": "string",
                                "const": "UTC"
                            }
                        },
                        "required": [
                            "timezone"
                        ]
                    }
                },
                "required": [
                    "data",
                    "meta"
                ]
            },
            "ExportStatus": {
                "type": "object",
                "properties": {
                    "data": {
                        "type": "object",
                        "properties": {
                            "id": {
                                "type": "string"
                            },
                            "status": {
                                "type": "string",
                                "enum": [
                                    "pending",
                                    "running",
                                    "ready",
                                    "failed",
                                    "expired"
                                ],
                                "description": "pending, running, ready or failed. expired is not reported: a request for an expired export returns 409 export-expired instead."
                            },
                            "bytes": {
                                "type": [
                                    "integer",
                                    "null"
                                ]
                            }
                        },
                        "required": [
                            "id",
                            "status",
                            "bytes"
                        ]
                    },
                    "meta": {
                        "type": "object",
                        "properties": {
                            "timezone": {
                                "type": "string",
                                "const": "UTC"
                            }
                        },
                        "required": [
                            "timezone"
                        ]
                    }
                },
                "required": [
                    "data",
                    "meta"
                ]
            },
            "Snapshot": {
                "type": "object",
                "properties": {
                    "security_id": {
                        "type": "string",
                        "description": "Stable public instrument ID, the instrument_id of the other endpoints."
                    },
                    "symbol": {
                        "type": "string"
                    },
                    "exchange_mic": {
                        "type": "string"
                    },
                    "currency_code": {
                        "type": [
                            "string",
                            "null"
                        ],
                        "pattern": "^[A-Z]{3}$"
                    },
                    "price": {
                        "description": "Latest price: the delayed quote's last price when it is from a newer trading date than the latest session, otherwise the latest session close. Null without either.",
                        "type": [
                            "string",
                            "null"
                        ],
                        "pattern": "^-?[0-9]+(?:\\.[0-9]+)?$"
                    },
                    "price_source": {
                        "type": [
                            "string",
                            "null"
                        ],
                        "enum": [
                            "delayed_quote",
                            "session_close",
                            null
                        ],
                        "description": "delayed_quote is a delayed snapshot, never a real-time price; session_close is an official end-of-day close."
                    },
                    "previous_close": {
                        "description": "Close of the session before the price's session, restated for any split between the two so that both are on one share basis. Null, with change and change_percent, when there is no earlier session, or when the price's session opened (or, before its bar exists, the quote printed) at least 90% away from that close with no split on record: the mark of a split not recorded yet. A crypto or currency pair's previous_close is also null for the hours after UTC midnight before the day just ended has its bar (about ten minutes for the leading crypto pairs, about two hours for other pairs), rather than a two days' move shown as one; a currency pair's day before Sunday is the Friday. The sessions' own closes stay in session and previous_session.",
                        "type": [
                            "string",
                            "null"
                        ],
                        "pattern": "^-?[0-9]+(?:\\.[0-9]+)?$"
                    },
                    "change": {
                        "description": "price minus previous_close; null when previous_close is.",
                        "type": [
                            "string",
                            "null"
                        ],
                        "pattern": "^-?[0-9]+(?:\\.[0-9]+)?$"
                    },
                    "change_percent": {
                        "description": "100 \u00d7 change / previous_close, rounded to 8 decimal places; null when previous_close is.",
                        "type": [
                            "string",
                            "null"
                        ],
                        "pattern": "^-?[0-9]+(?:\\.[0-9]+)?$"
                    },
                    "updated_at": {
                        "description": "When price was observed: the quote's last_at or the session close.",
                        "type": [
                            "string",
                            "null"
                        ],
                        "format": "date-time"
                    },
                    "quote": {
                        "description": "The latest eligible quote, as GET /v1/quotes returns it; null when the listing has none, or when its newest quote predates a session that has traded since (price is then that session's close). Its bid and ask fields are always null: no licensed source supplies them yet.",
                        "type": [
                            "object",
                            "null"
                        ],
                        "properties": {
                            "last_price": {
                                "type": [
                                    "string",
                                    "null"
                                ],
                                "pattern": "^-?[0-9]+(?:\\.[0-9]+)?$",
                                "description": "Exact decimal string. Never a JSON floating point number."
                            },
                            "last_at": {
                                "type": [
                                    "string",
                                    "null"
                                ],
                                "format": "date-time"
                            },
                            "bid_price": {
                                "type": [
                                    "string",
                                    "null"
                                ],
                                "pattern": "^-?[0-9]+(?:\\.[0-9]+)?$",
                                "description": "Exact decimal string. Never a JSON floating point number."
                            },
                            "bid_at": {
                                "type": [
                                    "string",
                                    "null"
                                ],
                                "format": "date-time"
                            },
                            "bid_size": {
                                "type": [
                                    "string",
                                    "null"
                                ],
                                "pattern": "^-?[0-9]+(?:\\.[0-9]+)?$",
                                "description": "Exact decimal string. Never a JSON floating point number."
                            },
                            "ask_price": {
                                "type": [
                                    "string",
                                    "null"
                                ],
                                "pattern": "^-?[0-9]+(?:\\.[0-9]+)?$",
                                "description": "Exact decimal string. Never a JSON floating point number."
                            },
                            "ask_at": {
                                "type": [
                                    "string",
                                    "null"
                                ],
                                "format": "date-time"
                            },
                            "ask_size": {
                                "type": [
                                    "string",
                                    "null"
                                ],
                                "pattern": "^-?[0-9]+(?:\\.[0-9]+)?$",
                                "description": "Exact decimal string. Never a JSON floating point number."
                            }
                        },
                        "required": [
                            "last_price",
                            "last_at",
                            "bid_price",
                            "bid_at",
                            "bid_size",
                            "ask_price",
                            "ask_at",
                            "ask_size"
                        ]
                    },
                    "session": {
                        "description": "The latest session daily bar, unadjusted.",
                        "type": [
                            "object",
                            "null"
                        ],
                        "properties": {
                            "date": {
                                "type": "string",
                                "format": "date",
                                "description": "Exchange-local trading date."
                            },
                            "open": {
                                "type": [
                                    "string",
                                    "null"
                                ],
                                "pattern": "^-?[0-9]+(?:\\.[0-9]+)?$",
                                "description": "Exact decimal string. Never a JSON floating point number."
                            },
                            "high": {
                                "type": [
                                    "string",
                                    "null"
                                ],
                                "pattern": "^-?[0-9]+(?:\\.[0-9]+)?$",
                                "description": "Exact decimal string. Never a JSON floating point number."
                            },
                            "low": {
                                "type": [
                                    "string",
                                    "null"
                                ],
                                "pattern": "^-?[0-9]+(?:\\.[0-9]+)?$",
                                "description": "Exact decimal string. Never a JSON floating point number."
                            },
                            "close": {
                                "type": [
                                    "string",
                                    "null"
                                ],
                                "pattern": "^-?[0-9]+(?:\\.[0-9]+)?$",
                                "description": "Exact decimal string. Never a JSON floating point number."
                            },
                            "volume": {
                                "type": [
                                    "string",
                                    "null"
                                ],
                                "pattern": "^-?[0-9]+(?:\\.[0-9]+)?$",
                                "description": "Exact decimal string. Never a JSON floating point number."
                            }
                        },
                        "required": [
                            "date",
                            "open",
                            "high",
                            "low",
                            "close",
                            "volume"
                        ]
                    },
                    "previous_session": {
                        "description": "The session daily bar before it, unadjusted.",
                        "type": [
                            "object",
                            "null"
                        ],
                        "properties": {
                            "date": {
                                "type": "string",
                                "format": "date",
                                "description": "Exchange-local trading date."
                            },
                            "open": {
                                "type": [
                                    "string",
                                    "null"
                                ],
                                "pattern": "^-?[0-9]+(?:\\.[0-9]+)?$",
                                "description": "Exact decimal string. Never a JSON floating point number."
                            },
                            "high": {
                                "type": [
                                    "string",
                                    "null"
                                ],
                                "pattern": "^-?[0-9]+(?:\\.[0-9]+)?$",
                                "description": "Exact decimal string. Never a JSON floating point number."
                            },
                            "low": {
                                "type": [
                                    "string",
                                    "null"
                                ],
                                "pattern": "^-?[0-9]+(?:\\.[0-9]+)?$",
                                "description": "Exact decimal string. Never a JSON floating point number."
                            },
                            "close": {
                                "type": [
                                    "string",
                                    "null"
                                ],
                                "pattern": "^-?[0-9]+(?:\\.[0-9]+)?$",
                                "description": "Exact decimal string. Never a JSON floating point number."
                            },
                            "volume": {
                                "type": [
                                    "string",
                                    "null"
                                ],
                                "pattern": "^-?[0-9]+(?:\\.[0-9]+)?$",
                                "description": "Exact decimal string. Never a JSON floating point number."
                            }
                        },
                        "required": [
                            "date",
                            "open",
                            "high",
                            "low",
                            "close",
                            "volume"
                        ]
                    }
                },
                "required": [
                    "security_id",
                    "symbol",
                    "exchange_mic",
                    "currency_code",
                    "price",
                    "price_source",
                    "previous_close",
                    "change",
                    "change_percent",
                    "updated_at",
                    "quote",
                    "session",
                    "previous_session"
                ]
            },
            "Mover": {
                "type": "object",
                "properties": {
                    "security_id": {
                        "type": "string",
                        "description": "Stable public instrument ID, the instrument_id of the other endpoints."
                    },
                    "symbol": {
                        "type": [
                            "string",
                            "null"
                        ],
                        "description": "Current MIC:TICKER of the listing."
                    },
                    "exchange_mic": {
                        "type": "string"
                    },
                    "currency_code": {
                        "type": "string",
                        "pattern": "^[A-Z]{3}$"
                    },
                    "date": {
                        "type": "string",
                        "format": "date",
                        "description": "Trading date of the session."
                    },
                    "previous_date": {
                        "type": "string",
                        "format": "date",
                        "description": "Trading date of the session before it."
                    },
                    "close": {
                        "type": [
                            "string",
                            "null"
                        ],
                        "pattern": "^-?[0-9]+(?:\\.[0-9]+)?$",
                        "description": "Exact decimal string. Never a JSON floating point number."
                    },
                    "previous_close": {
                        "description": "Previous session close, restated for any split between the two sessions so that both closes are on one share basis.",
                        "type": [
                            "string",
                            "null"
                        ],
                        "pattern": "^-?[0-9]+(?:\\.[0-9]+)?$"
                    },
                    "change": {
                        "type": [
                            "string",
                            "null"
                        ],
                        "pattern": "^-?[0-9]+(?:\\.[0-9]+)?$",
                        "description": "Exact decimal string. Never a JSON floating point number."
                    },
                    "change_percent": {
                        "description": "100 \u00d7 change / previous_close, rounded to 8 decimal places.",
                        "type": [
                            "string",
                            "null"
                        ],
                        "pattern": "^-?[0-9]+(?:\\.[0-9]+)?$"
                    },
                    "volume": {
                        "description": "Session volume: whole shares for exchange listings, the value traded in the quote currency for crypto pairs, null for currency pairs, indices and bonds.",
                        "type": [
                            "string",
                            "null"
                        ],
                        "pattern": "^-?[0-9]+(?:\\.[0-9]+)?$"
                    }
                },
                "required": [
                    "security_id",
                    "symbol",
                    "exchange_mic",
                    "currency_code",
                    "date",
                    "previous_date",
                    "close",
                    "previous_close",
                    "change",
                    "change_percent",
                    "volume"
                ]
            },
            "Instrument": {
                "type": "object",
                "additionalProperties": false,
                "properties": {
                    "id": {
                        "type": "string",
                        "description": "Opaque stable public identifier; never an internal database key.",
                        "example": "inst_example_aapl",
                        "minLength": 1,
                        "maxLength": 128,
                        "pattern": "^[A-Za-z0-9][A-Za-z0-9_.:-]{0,127}$"
                    },
                    "security_id": {
                        "type": [
                            "string",
                            "null"
                        ],
                        "description": "Existing OHLC security_id when applicable; identical to id for existing securities.",
                        "example": "inst_example_aapl"
                    },
                    "name": {
                        "type": "string",
                        "description": "Instrument name.",
                        "example": "Example Corporation common stock"
                    },
                    "asset_type": {
                        "type": "string",
                        "enum": [
                            "equity",
                            "etf",
                            "mutual_fund",
                            "index",
                            "bond",
                            "option",
                            "forex",
                            "crypto",
                            "commodity"
                        ],
                        "description": "Instrument type.",
                        "example": "equity"
                    },
                    "company_id": {
                        "type": [
                            "string",
                            "null"
                        ],
                        "description": "Opaque stable public identifier; never an internal database key.",
                        "example": "company_example_apple",
                        "minLength": 1,
                        "maxLength": 128,
                        "pattern": "^[A-Za-z0-9][A-Za-z0-9_.:-]{0,127}$"
                    },
                    "symbol": {
                        "type": [
                            "string",
                            "null"
                        ],
                        "description": "MIC:TICKER; null for unlisted instruments.",
                        "example": "XNAS:AAPL"
                    },
                    "exchange_mic": {
                        "type": [
                            "string",
                            "null"
                        ],
                        "pattern": "^(?:[A-Z0-9]{4}|CRYPTO|FOREX|INDEX)$",
                        "example": "XNAS"
                    },
                    "currency_code": {
                        "type": [
                            "string",
                            "null"
                        ],
                        "pattern": "^[A-Z]{3}$",
                        "example": "USD",
                        "description": "ISO 4217 currency. Crypto quote assets use instrument IDs, not invented ISO codes."
                    },
                    "status": {
                        "type": "string",
                        "enum": [
                            "active",
                            "delisted",
                            "expired",
                            "inactive"
                        ],
                        "description": "Lifecycle state at effective_date. delisted: the listing no longer trades and its ticker has left the provider's symbol list. inactive: it has had no daily bar for a run of sessions after trading daily, while still listed; it becomes delisted once dropped, or active again when it trades.",
                        "example": "active"
                    },
                    "listed_on": {
                        "type": [
                            "string",
                            "null"
                        ],
                        "format": "date",
                        "example": "2026-09-18"
                    },
                    "delisted_on": {
                        "type": [
                            "string",
                            "null"
                        ],
                        "format": "date",
                        "example": "2026-09-18",
                        "description": "Last date a delisted or inactive listing traded; null while active."
                    },
                    "logo_url": {
                        "type": [
                            "string",
                            "null"
                        ],
                        "format": "uri",
                        "description": "Logo hosted by OHLC for the listing's company, or for a fund without its own, its sponsor's: SVG when a vector logo exists, otherwise PNG. The URL changes when the logo changes, so it can be cached indefinitely.",
                        "example": "https://api.ohlc.io/logos/01J8Z3Q4R5S6T7V8W9X0Y1Z2A3/9b1e4d2c6a7f3e80.svg"
                    },
                    "base_instrument_id": {
                        "type": [
                            "string",
                            "null"
                        ],
                        "description": "For a crypto pair, its coin (instrument_id in /v1/crypto/assets); null otherwise.",
                        "example": "inst_example_aapl",
                        "minLength": 1,
                        "maxLength": 128,
                        "pattern": "^[A-Za-z0-9][A-Za-z0-9_.:-]{0,127}$"
                    },
                    "quote_instrument_id": {
                        "type": [
                            "string",
                            "null"
                        ],
                        "description": "Always null: every crypto pair served is quoted in US dollars.",
                        "example": "inst_example_aapl",
                        "minLength": 1,
                        "maxLength": 128,
                        "pattern": "^[A-Za-z0-9][A-Za-z0-9_.:-]{0,127}$"
                    },
                    "bond": {
                        "type": [
                            "object",
                            "null"
                        ],
                        "additionalProperties": false,
                        "properties": {
                            "issuer_id": {
                                "type": "string",
                                "description": "Opaque stable public identifier; never an internal database key.",
                                "example": "inst_example_aapl",
                                "minLength": 1,
                                "maxLength": 128,
                                "pattern": "^[A-Za-z0-9][A-Za-z0-9_.:-]{0,127}$"
                            },
                            "maturity_date": {
                                "type": "string",
                                "format": "date",
                                "example": "2026-09-18"
                            },
                            "coupon_rate": {
                                "type": "string",
                                "pattern": "^-?[0-9]+(?:\\.[0-9]+)?$",
                                "description": "Dimensionless ratio; 0.05 means 5%.",
                                "example": "0.05"
                            },
                            "face_value": {
                                "$ref": "#/components/schemas/Money"
                            },
                            "coupon_frequency": {
                                "type": "integer",
                                "minimum": 0,
                                "description": "Payments per year.",
                                "example": 2
                            }
                        },
                        "required": [
                            "issuer_id",
                            "maturity_date",
                            "coupon_rate",
                            "face_value",
                            "coupon_frequency"
                        ]
                    }
                },
                "required": [
                    "id",
                    "security_id",
                    "name",
                    "asset_type",
                    "company_id",
                    "symbol",
                    "exchange_mic",
                    "currency_code",
                    "status",
                    "listed_on",
                    "delisted_on",
                    "base_instrument_id",
                    "quote_instrument_id",
                    "bond"
                ]
            },
            "Money": {
                "type": "object",
                "additionalProperties": false,
                "properties": {
                    "amount": {
                        "type": "string",
                        "pattern": "^-?[0-9]+(?:\\.[0-9]+)?$",
                        "description": "Exact monetary amount.",
                        "example": "227.63"
                    },
                    "currency_code": {
                        "type": "string",
                        "pattern": "^[A-Z]{3}$",
                        "example": "USD",
                        "description": "ISO 4217 currency. Crypto quote assets use instrument IDs, not invented ISO codes."
                    }
                },
                "required": [
                    "amount",
                    "currency_code"
                ]
            },
            "ResponseMeta": {
                "type": "object",
                "additionalProperties": false,
                "properties": {
                    "timezone": {
                        "type": "string",
                        "const": "UTC"
                    },
                    "as_of": {
                        "type": "string",
                        "format": "date-time",
                        "example": "2026-09-18T20:00:00Z"
                    },
                    "next_cursor": {
                        "type": [
                            "string",
                            "null"
                        ],
                        "description": "Opaque continuation cursor; null on final page.",
                        "example": "opaque_cursor"
                    },
                    "coverage": {
                        "type": "object",
                        "additionalProperties": false,
                        "properties": {
                            "status": {
                                "type": "string",
                                "enum": [
                                    "complete",
                                    "partial"
                                ],
                                "description": "Completeness within the requested scope.",
                                "example": "complete"
                            },
                            "reason": {
                                "type": [
                                    "string",
                                    "null"
                                ],
                                "description": "Reason for partial coverage.",
                                "example": "Source history starts after requested from."
                            }
                        },
                        "required": [
                            "status",
                            "reason"
                        ]
                    },
                    "errors": {
                        "type": "array",
                        "items": {
                            "type": "object",
                            "additionalProperties": false,
                            "properties": {
                                "symbol": {
                                    "type": [
                                        "string",
                                        "null"
                                    ],
                                    "description": "Requested symbol, or the symbol a requested instrument ID trades under; null when that instrument has no unique symbol.",
                                    "example": "XNAS:UNKNOWN"
                                },
                                "instrument_id": {
                                    "type": [
                                        "string",
                                        "null"
                                    ],
                                    "description": "Instrument ID of the listing the member resolved to; null for a symbol that did not resolve.",
                                    "example": "inst_example_aapl"
                                },
                                "code": {
                                    "type": "string",
                                    "description": "symbol-not-resolved when the symbol names no listing; no-data when the member resolved but has no rows for this request.",
                                    "example": "symbol-not-resolved"
                                },
                                "status": {
                                    "type": "integer",
                                    "example": 404
                                },
                                "detail": {
                                    "type": "string",
                                    "description": "Why the member returned no rows.",
                                    "example": "Symbol has no unique effective security at symbol_at."
                                }
                            },
                            "required": [
                                "symbol",
                                "instrument_id",
                                "code",
                                "status",
                                "detail"
                            ]
                        },
                        "description": "Requested symbols and instrument IDs that return no rows: every requested member has rows in the result or an entry here. Present on the first page only, so a paginated request reports each member once, and never for a member whose rows are on a later page: when more pages follow, each member not on the first page is checked for a row within a time budget, and one left unchecked is left out rather than reported as empty. Members with rows are still returned; a request in which no symbol resolves returns 404 symbol-not-resolved instead. On research endpoints only symbols degrade into entries here: an unknown instrument ID or series ID returns 404 identifier-not-found for the whole request."
                    },
                    "default_adjustment": {
                        "type": "string",
                        "enum": [
                            "split"
                        ],
                        "description": "On /v1/indicators: the adjustment of the source bars when the request names none, for listings with validated split adjustments; listings without them (crypto and currency pairs, indices, bonds, OTC) are read raw, and each record's adjustment states what was applied.",
                        "example": "split"
                    },
                    "snapshot": {
                        "type": "object",
                        "additionalProperties": false,
                        "properties": {
                            "snapshot_date": {
                                "type": [
                                    "string",
                                    "null"
                                ],
                                "format": "date",
                                "example": "2026-09-18",
                                "description": "Date of the portfolio snapshot the page is from."
                            },
                            "positions": {
                                "type": "integer",
                                "minimum": 0,
                                "description": "Positions the snapshot lists, across all pages.",
                                "example": 50
                            },
                            "weight": {
                                "type": "string",
                                "pattern": "^-?[0-9]+(?:\\.[0-9]+)?$",
                                "description": "Sum of the listed positions' weights: the share of the fund's assets the snapshot covers. 0.64 means the listed positions are 64% of the fund; a value near 1 means the whole portfolio is listed.",
                                "example": "0.6399474"
                            }
                        },
                        "required": [
                            "snapshot_date",
                            "positions",
                            "weight"
                        ],
                        "description": "On fund holdings only: what the snapshot covers. The connected source lists most ETFs' every position, but only the largest positions of some ETFs and the 10 largest of a mutual fund; weight tells a top-N list from a whole portfolio."
                    }
                },
                "required": [
                    "timezone",
                    "as_of",
                    "next_cursor",
                    "coverage"
                ]
            },
            "InstrumentSymbol": {
                "type": "object",
                "additionalProperties": false,
                "properties": {
                    "id": {
                        "type": "string",
                        "description": "Record identifier, stable across revisions.",
                        "example": "record_example_1"
                    },
                    "instrument_id": {
                        "type": "string",
                        "description": "Opaque stable public identifier; never an internal database key.",
                        "example": "inst_example_aapl",
                        "minLength": 1,
                        "maxLength": 128,
                        "pattern": "^[A-Za-z0-9][A-Za-z0-9_.:-]{0,127}$"
                    },
                    "symbol": {
                        "type": "string",
                        "description": "Effective MIC:TICKER.",
                        "example": "XNAS:AAPL"
                    },
                    "valid_from": {
                        "type": "string",
                        "format": "date-time",
                        "example": "2026-09-18T20:00:00Z"
                    },
                    "valid_to": {
                        "type": [
                            "string",
                            "null"
                        ],
                        "format": "date-time",
                        "example": null
                    }
                },
                "required": [
                    "id",
                    "instrument_id",
                    "symbol",
                    "valid_from",
                    "valid_to"
                ]
            },
            "InstrumentIdentifier": {
                "type": "object",
                "additionalProperties": false,
                "properties": {
                    "id": {
                        "type": "string",
                        "description": "Record identifier, stable across revisions.",
                        "example": "record_example_1"
                    },
                    "instrument_id": {
                        "type": "string",
                        "description": "Opaque stable public identifier; never an internal database key.",
                        "example": "inst_example_aapl",
                        "minLength": 1,
                        "maxLength": 128,
                        "pattern": "^[A-Za-z0-9][A-Za-z0-9_.:-]{0,127}$"
                    },
                    "type": {
                        "type": "string",
                        "enum": [
                            "isin",
                            "cusip",
                            "figi",
                            "cik",
                            "lei"
                        ],
                        "description": "Identifier namespace. CIK/LEI may identify the linked issuer rather than a listing.",
                        "example": "isin"
                    },
                    "value": {
                        "type": "string",
                        "description": "Identifier, preserving leading zeroes.",
                        "example": "US0378331005"
                    },
                    "entity_type": {
                        "type": "string",
                        "enum": [
                            "instrument",
                            "company"
                        ],
                        "description": "Entity identified.",
                        "example": "instrument"
                    },
                    "company_id": {
                        "type": [
                            "string",
                            "null"
                        ],
                        "description": "Opaque stable public identifier; never an internal database key.",
                        "example": "company_example_apple",
                        "minLength": 1,
                        "maxLength": 128,
                        "pattern": "^[A-Za-z0-9][A-Za-z0-9_.:-]{0,127}$"
                    },
                    "valid_from": {
                        "type": [
                            "string",
                            "null"
                        ],
                        "format": "date",
                        "example": "2026-09-18"
                    },
                    "valid_to": {
                        "type": [
                            "string",
                            "null"
                        ],
                        "format": "date",
                        "example": null
                    }
                },
                "required": [
                    "id",
                    "instrument_id",
                    "type",
                    "value",
                    "entity_type",
                    "company_id",
                    "valid_from",
                    "valid_to"
                ]
            },
            "Company": {
                "type": "object",
                "additionalProperties": false,
                "properties": {
                    "id": {
                        "type": "string",
                        "description": "Opaque stable public identifier; never an internal database key.",
                        "example": "company_example_apple",
                        "minLength": 1,
                        "maxLength": 128,
                        "pattern": "^[A-Za-z0-9][A-Za-z0-9_.:-]{0,127}$"
                    },
                    "name": {
                        "type": "string",
                        "description": "Legal/display company name.",
                        "example": "Example Corporation"
                    },
                    "description": {
                        "type": [
                            "string",
                            "null"
                        ],
                        "description": "Business description.",
                        "example": "Manufactures consumer products."
                    },
                    "country_code": {
                        "type": "string",
                        "pattern": "^[A-Z]{2}$",
                        "example": "US"
                    },
                    "sector": {
                        "type": [
                            "string",
                            "null"
                        ],
                        "description": "Sector name, in the connected source's own categories. Null for funds (ETFs and mutual funds), units, warrants and rights, which the source does not classify.",
                        "example": "Technology"
                    },
                    "industry": {
                        "type": [
                            "string",
                            "null"
                        ],
                        "description": "Industry name, in the connected source's own categories. Null where sector is.",
                        "example": "Consumer electronics"
                    },
                    "classifications": {
                        "type": "array",
                        "items": {
                            "type": "object",
                            "additionalProperties": false,
                            "properties": {
                                "scheme": {
                                    "type": "string",
                                    "description": "Classification scheme.",
                                    "example": "GICS"
                                },
                                "code": {
                                    "type": "string",
                                    "description": "Classification code.",
                                    "example": "45202030"
                                },
                                "name": {
                                    "type": "string",
                                    "description": "Classification name.",
                                    "example": "Technology Hardware"
                                }
                            },
                            "required": [
                                "scheme",
                                "code",
                                "name"
                            ]
                        },
                        "description": "Coded industry classifications. No coded scheme is connected yet, so the list is empty on every company; sector and industry carry the names."
                    },
                    "website_url": {
                        "type": [
                            "string",
                            "null"
                        ],
                        "format": "uri",
                        "example": "https://example.com"
                    },
                    "logo_url": {
                        "type": [
                            "string",
                            "null"
                        ],
                        "format": "uri",
                        "description": "Company logo hosted by OHLC, SVG or PNG from the best-ranked source, so read the format from the file extension or Content-Type. It is always the current logo, whatever as_of. The URL changes when the logo changes, so it can be cached indefinitely.",
                        "example": "https://api.ohlc.io/logos/01J8Z3Q4R5S6T7V8W9X0Y1Z2A3/9b1e4d2c6a7f3e80.svg"
                    },
                    "employees": {
                        "type": [
                            "integer",
                            "null"
                        ],
                        "minimum": 0,
                        "description": "Reported employee count.",
                        "example": 10000
                    },
                    "address": {
                        "type": [
                            "object",
                            "null"
                        ],
                        "additionalProperties": false,
                        "properties": {
                            "street": {
                                "type": "string",
                                "description": "Street.",
                                "example": "example"
                            },
                            "city": {
                                "type": "string",
                                "description": "City.",
                                "example": "example"
                            },
                            "region": {
                                "type": [
                                    "string",
                                    "null"
                                ],
                                "description": "Region.",
                                "example": "example"
                            },
                            "postal_code": {
                                "type": [
                                    "string",
                                    "null"
                                ],
                                "description": "Postal code.",
                                "example": "example"
                            },
                            "country_code": {
                                "type": "string",
                                "pattern": "^[A-Z]{2}$",
                                "example": "US"
                            }
                        },
                        "required": [
                            "street",
                            "city",
                            "region",
                            "postal_code",
                            "country_code"
                        ]
                    },
                    "officers": {
                        "type": "array",
                        "items": {
                            "type": "object",
                            "additionalProperties": false,
                            "properties": {
                                "name": {
                                    "type": "string",
                                    "description": "Officer name.",
                                    "example": "example"
                                },
                                "title": {
                                    "type": "string",
                                    "description": "Officer role.",
                                    "example": "CEO"
                                }
                            },
                            "required": [
                                "name",
                                "title"
                            ]
                        }
                    },
                    "instruments": {
                        "type": "array",
                        "items": {
                            "$ref": "#/components/schemas/InstrumentLink"
                        }
                    }
                },
                "required": [
                    "id",
                    "name",
                    "description",
                    "country_code",
                    "sector",
                    "industry",
                    "classifications",
                    "website_url",
                    "logo_url",
                    "employees",
                    "address",
                    "officers",
                    "instruments"
                ]
            },
            "InstrumentLink": {
                "type": "object",
                "additionalProperties": false,
                "properties": {
                    "instrument_id": {
                        "type": "string",
                        "description": "Opaque stable public identifier; never an internal database key.",
                        "example": "inst_example_aapl",
                        "minLength": 1,
                        "maxLength": 128,
                        "pattern": "^[A-Za-z0-9][A-Za-z0-9_.:-]{0,127}$"
                    },
                    "symbol": {
                        "type": [
                            "string",
                            "null"
                        ],
                        "description": "Effective MIC:TICKER alias; null when not exchange-listed.",
                        "example": "XNAS:AAPL"
                    },
                    "name": {
                        "type": "string",
                        "description": "Display name.",
                        "example": "Example Corporation"
                    }
                },
                "required": [
                    "instrument_id",
                    "symbol",
                    "name"
                ]
            },
            "NewsArticle": {
                "type": "object",
                "additionalProperties": false,
                "properties": {
                    "id": {
                        "type": "string",
                        "description": "Record identifier, stable across revisions.",
                        "example": "record_example_1"
                    },
                    "title": {
                        "type": "string",
                        "description": "Headline.",
                        "example": "Example Corporation announces quarterly results"
                    },
                    "summary": {
                        "type": [
                            "string",
                            "null"
                        ],
                        "description": "Summary the source supplies and licenses for republication: an official publisher's feed description, or the teaser a paywalled article arrived as (is_paywalled). Null otherwise, including articles delivered with their full text; no summary is generated.",
                        "example": "Quarterly results were announced today."
                    },
                    "content": {
                        "type": [
                            "string",
                            "null"
                        ],
                        "description": "Licensed article text. Null when unavailable under the source agreement, when the source delivered a paywall notice or teaser instead (is_paywalled), and for articles published more than 90 days ago except each instrument's ten newest.",
                        "example": "example"
                    },
                    "is_paywalled": {
                        "type": "boolean",
                        "description": "True when the source delivered a subscription notice or a teaser (\"Continue Reading\") in place of the article text; content is then null and the teaser, if any, is in summary.",
                        "example": false
                    },
                    "url": {
                        "type": "string",
                        "format": "uri",
                        "description": "Link to the full article on the publisher's site.",
                        "example": "https://finance.yahoo.com/news/example-corporation-results.html"
                    },
                    "publisher": {
                        "type": "object",
                        "additionalProperties": false,
                        "properties": {
                            "name": {
                                "type": "string",
                                "description": "Publisher display name.",
                                "example": "Yahoo Finance"
                            },
                            "domain": {
                                "type": "string",
                                "description": "Host of the article link, without www.",
                                "example": "finance.yahoo.com"
                            }
                        },
                        "required": [
                            "name",
                            "domain"
                        ],
                        "description": "Outlet that published the article."
                    },
                    "published_at": {
                        "type": "string",
                        "format": "date-time",
                        "example": "2026-09-18T20:00:00Z"
                    },
                    "updated_at": {
                        "type": [
                            "string",
                            "null"
                        ],
                        "format": "date-time",
                        "example": "2026-09-18T20:00:00Z",
                        "description": "Instant the publisher last updated the article. The connected sources do not report it: always null."
                    },
                    "language": {
                        "type": "string",
                        "description": "BCP 47 primary language subtag: the feed's declared language, else detected from the headline and text (English, German, French, Spanish, Italian, Portuguese or Dutch). und when it cannot be determined: short or mixed text, another language, and articles published before early July 2026, whose text was no longer held when detection began. Over 99% of articles with a determined language are English.",
                        "example": "en"
                    },
                    "authors": {
                        "type": "array",
                        "items": {
                            "type": "string",
                            "description": "Author name.",
                            "example": "example"
                        },
                        "description": "Author names. The connected sources do not report them: always empty."
                    },
                    "topics": {
                        "type": "array",
                        "items": {
                            "type": "string",
                            "description": "Normalized topic.",
                            "example": "earnings"
                        }
                    },
                    "instruments": {
                        "type": "array",
                        "items": {
                            "$ref": "#/components/schemas/InstrumentLink"
                        },
                        "description": "Listings the article is tagged to, among the markets OHLC covers. Empty for general market and macro news and for articles about companies listed only elsewhere (about one article in ten)."
                    },
                    "sentiment": {
                        "$ref": "#/components/schemas/SentimentScore"
                    }
                },
                "required": [
                    "id",
                    "title",
                    "summary",
                    "content",
                    "is_paywalled",
                    "url",
                    "publisher",
                    "published_at",
                    "updated_at",
                    "language",
                    "authors",
                    "topics",
                    "instruments",
                    "sentiment"
                ]
            },
            "SentimentScore": {
                "type": "object",
                "additionalProperties": false,
                "properties": {
                    "score": {
                        "type": [
                            "string",
                            "null"
                        ],
                        "pattern": "^-?[0-9]+(?:\\.[0-9]+)?$",
                        "description": "Tone from -1 (negative) to 1 (positive), as the source's word-list model scores the full article text. The score adds up over the whole text, so full-length articles sit close to -1 or 1 (most above 0.9) and short items near 0: it separates negative from positive coverage and ranks articles, but it is not a confidence value or a calibrated probability. Null when the source supplied none.",
                        "example": "0.35"
                    },
                    "label": {
                        "type": "string",
                        "enum": [
                            "positive",
                            "neutral",
                            "negative",
                            "unknown"
                        ],
                        "description": "Sign of the score: positive above 0, negative below 0, neutral at exactly 0, unknown without a score. Most full-length articles are positive by this measure, so compare scores rather than counting labels.",
                        "example": "positive"
                    }
                },
                "required": [
                    "score",
                    "label"
                ]
            },
            "NewsSentiment": {
                "type": "object",
                "additionalProperties": false,
                "properties": {
                    "id": {
                        "type": "string",
                        "description": "Record identifier, stable across revisions.",
                        "example": "record_example_1"
                    },
                    "instrument_id": {
                        "type": "string",
                        "description": "Opaque stable public identifier; never an internal database key.",
                        "example": "inst_example_aapl",
                        "minLength": 1,
                        "maxLength": 128,
                        "pattern": "^[A-Za-z0-9][A-Za-z0-9_.:-]{0,127}$"
                    },
                    "date": {
                        "type": "string",
                        "format": "date",
                        "example": "2026-09-18",
                        "description": "UTC bucket start date; the Monday for weekly buckets."
                    },
                    "interval": {
                        "type": "string",
                        "enum": [
                            "1d",
                            "1w"
                        ],
                        "description": "Bucket length.",
                        "example": "1d"
                    },
                    "article_count": {
                        "type": "integer",
                        "minimum": 0,
                        "description": "Number of scored articles averaged; articles without a score are not counted.",
                        "example": 12
                    },
                    "sentiment": {
                        "$ref": "#/components/schemas/SentimentScore"
                    },
                    "aggregation": {
                        "type": "string",
                        "enum": [
                            "mean"
                        ],
                        "description": "Arithmetic mean of available article scores, with one contribution per article/instrument.",
                        "example": "mean"
                    }
                },
                "required": [
                    "id",
                    "instrument_id",
                    "date",
                    "interval",
                    "article_count",
                    "sentiment",
                    "aggregation"
                ]
            },
            "FinancialConcept": {
                "type": "object",
                "additionalProperties": false,
                "properties": {
                    "id": {
                        "type": "string",
                        "description": "Stable normalized concept.",
                        "example": "revenue"
                    },
                    "label": {
                        "type": "string",
                        "description": "Display label.",
                        "example": "Revenue"
                    },
                    "description": {
                        "type": "string",
                        "description": "Economic meaning.",
                        "example": "Revenue recognized during the fiscal period."
                    },
                    "statement": {
                        "type": "string",
                        "enum": [
                            "income",
                            "balance_sheet",
                            "cash_flow"
                        ],
                        "description": "Statement family.",
                        "example": "income"
                    },
                    "unit": {
                        "type": "string",
                        "description": "Canonical measurement unit.",
                        "example": "currency"
                    },
                    "period_type": {
                        "type": "string",
                        "enum": [
                            "duration",
                            "instant"
                        ],
                        "description": "Whether the concept measures a period or a point in time.",
                        "example": "duration"
                    }
                },
                "required": [
                    "id",
                    "label",
                    "description",
                    "statement",
                    "unit",
                    "period_type"
                ]
            },
            "FinancialStatement": {
                "type": "object",
                "additionalProperties": false,
                "properties": {
                    "id": {
                        "type": "string",
                        "description": "Record identifier, stable across revisions.",
                        "example": "record_example_1"
                    },
                    "company_id": {
                        "type": "string",
                        "description": "Opaque stable public identifier; never an internal database key.",
                        "example": "company_example_apple",
                        "minLength": 1,
                        "maxLength": 128,
                        "pattern": "^[A-Za-z0-9][A-Za-z0-9_.:-]{0,127}$"
                    },
                    "period_start": {
                        "type": [
                            "string",
                            "null"
                        ],
                        "format": "date",
                        "example": "2026-09-18",
                        "description": "Null when the source does not establish the fiscal start."
                    },
                    "period_end": {
                        "type": "string",
                        "format": "date",
                        "example": "2026-09-18"
                    },
                    "fiscal_year": {
                        "type": [
                            "integer",
                            "null"
                        ],
                        "minimum": 0,
                        "description": "Issuer fiscal year; null when not supplied.",
                        "example": 2026
                    },
                    "fiscal_quarter": {
                        "type": [
                            "integer",
                            "null"
                        ],
                        "minimum": 1,
                        "maximum": 4,
                        "example": 3
                    },
                    "period": {
                        "type": "string",
                        "enum": [
                            "quarterly",
                            "annual"
                        ],
                        "description": "Issuer fiscal period, not calendar quarter.",
                        "example": "quarterly"
                    },
                    "statement": {
                        "type": "string",
                        "enum": [
                            "income",
                            "balance_sheet",
                            "cash_flow"
                        ],
                        "description": "Statement family.",
                        "example": "income"
                    },
                    "currency_code": {
                        "type": "string",
                        "pattern": "^[A-Z]{3}$",
                        "example": "USD",
                        "description": "ISO 4217 currency. Crypto quote assets use instrument IDs, not invented ISO codes."
                    },
                    "filing_ids": {
                        "type": "array",
                        "items": {
                            "type": "string",
                            "description": "Accession number of the SEC filing that reports the period, as /v1/filings lists it.",
                            "example": "0000320193-24-000123"
                        }
                    },
                    "reported_period_end": {
                        "type": [
                            "string",
                            "null"
                        ],
                        "format": "date",
                        "example": "2024-09-28",
                        "description": "The period end the issuer reported in that filing (2024-09-28 for Apple's fiscal 2024); null when no stored filing matches."
                    },
                    "lines": {
                        "type": "array",
                        "items": {
                            "$ref": "#/components/schemas/FinancialLine"
                        }
                    },
                    "restated": {
                        "type": [
                            "boolean",
                            "null"
                        ],
                        "description": "Null when restatement status is not supplied.",
                        "example": false
                    },
                    "quality_issues": {
                        "type": "array",
                        "items": {
                            "$ref": "#/components/schemas/QualityIssue"
                        },
                        "description": "Lines OHLC withheld, flagged or corrected after checking the statement's internal consistency; empty when none."
                    }
                },
                "required": [
                    "id",
                    "company_id",
                    "period_start",
                    "period_end",
                    "fiscal_year",
                    "fiscal_quarter",
                    "period",
                    "statement",
                    "currency_code",
                    "filing_ids",
                    "lines",
                    "restated"
                ]
            },
            "FinancialLine": {
                "type": "object",
                "additionalProperties": false,
                "properties": {
                    "concept": {
                        "type": "string",
                        "description": "ID from financials/concepts.",
                        "example": "revenue"
                    },
                    "value": {
                        "$ref": "#/components/schemas/Measure"
                    }
                },
                "required": [
                    "concept",
                    "value"
                ]
            },
            "Measure": {
                "type": "object",
                "additionalProperties": false,
                "properties": {
                    "value": {
                        "type": [
                            "string",
                            "null"
                        ],
                        "pattern": "^-?[0-9]+(?:\\.[0-9]+)?$",
                        "description": "Value in the declared unit.",
                        "example": "1.25"
                    },
                    "unit": {
                        "type": "string",
                        "description": "Canonical unit, e.g. currency, shares, ratio, percent, index_points or days.",
                        "example": "ratio"
                    },
                    "currency_code": {
                        "type": [
                            "string",
                            "null"
                        ],
                        "pattern": "^[A-Z]{3}$",
                        "example": "USD",
                        "description": "ISO 4217 currency. Crypto quote assets use instrument IDs, not invented ISO codes."
                    }
                },
                "required": [
                    "value",
                    "unit",
                    "currency_code"
                ],
                "description": "currency_code is required when unit=currency and null otherwise. Null value means unavailable, not zero.",
                "example": {
                    "value": "1.25",
                    "unit": "ratio",
                    "currency_code": null
                }
            },
            "QualityIssue": {
                "type": "object",
                "additionalProperties": false,
                "properties": {
                    "code": {
                        "type": "string",
                        "enum": [
                            "copied-value",
                            "negative-total",
                            "income-identity",
                            "gross-identity",
                            "balance-identity",
                            "exceeds-revenue",
                            "exceeds-total",
                            "operator-review"
                        ],
                        "description": "copied-value: the line repeats, negates or doubles another line of the statement, which a reported figure does not; negative-total: a total that cannot be negative is; income-identity: income before tax less income tax misses net income by more than half; gross-identity: revenue less cost of revenue misses gross profit by more than a twentieth of revenue, so one of the three is wrong; balance-identity: total assets miss liabilities plus equity by more than a tenth; exceeds-revenue: gross profit or operating income exceeds revenue; exceeds-total: current assets or liabilities exceed their total; operator-review: OHLC reviewed the line against the issuer's filing.",
                        "example": "copied-value"
                    },
                    "action": {
                        "type": "string",
                        "enum": [
                            "withheld",
                            "flagged",
                            "corrected"
                        ],
                        "description": "withheld: the line is left out of lines; flagged: the line is kept as the source reported it and should be used with care; corrected: the line's value is OHLC's correction of the source's.",
                        "example": "withheld"
                    },
                    "concepts": {
                        "type": "array",
                        "items": {
                            "type": "string",
                            "description": "Concept of a line the issue concerns; the first is the one withheld or corrected.",
                            "example": "income_tax_expense"
                        }
                    },
                    "detail": {
                        "type": "string",
                        "description": "What was found, with the values compared.",
                        "example": "Income tax expense equals income before tax (-2722600000); the source repeated one line in the other."
                    }
                },
                "required": [
                    "code",
                    "action",
                    "concepts",
                    "detail"
                ]
            },
            "MetricDefinition": {
                "type": "object",
                "additionalProperties": false,
                "properties": {
                    "id": {
                        "type": "string",
                        "description": "Metric ID.",
                        "example": "market_capitalization"
                    },
                    "name": {
                        "type": "string",
                        "description": "Metric name.",
                        "example": "Market capitalization"
                    },
                    "description": {
                        "type": "string",
                        "description": "Definition and formula.",
                        "example": "Closing price multiplied by the eligible shares outstanding."
                    },
                    "unit": {
                        "type": "string",
                        "description": "Unit.",
                        "example": "currency"
                    },
                    "input_concepts": {
                        "type": "array",
                        "items": {
                            "type": "string",
                            "description": "Required source concepts.",
                            "example": "shares_outstanding"
                        }
                    }
                },
                "required": [
                    "id",
                    "name",
                    "description",
                    "unit",
                    "input_concepts"
                ]
            },
            "FinancialMetric": {
                "type": "object",
                "additionalProperties": false,
                "properties": {
                    "id": {
                        "type": "string",
                        "description": "Record identifier, stable across revisions.",
                        "example": "record_example_1"
                    },
                    "company_id": {
                        "type": "string",
                        "description": "Opaque stable public identifier; never an internal database key.",
                        "example": "company_example_apple",
                        "minLength": 1,
                        "maxLength": 128,
                        "pattern": "^[A-Za-z0-9][A-Za-z0-9_.:-]{0,127}$"
                    },
                    "instrument_id": {
                        "type": [
                            "string",
                            "null"
                        ],
                        "description": "Opaque stable public identifier; never an internal database key.",
                        "example": "inst_example_aapl",
                        "minLength": 1,
                        "maxLength": 128,
                        "pattern": "^[A-Za-z0-9][A-Za-z0-9_.:-]{0,127}$"
                    },
                    "metric": {
                        "type": "string",
                        "description": "Metric ID from financials/metric-definitions.",
                        "example": "market_capitalization"
                    },
                    "observed_on": {
                        "type": "string",
                        "format": "date",
                        "example": "2026-09-18"
                    },
                    "period_start": {
                        "type": [
                            "string",
                            "null"
                        ],
                        "format": "date",
                        "example": "2026-09-18"
                    },
                    "period_end": {
                        "type": [
                            "string",
                            "null"
                        ],
                        "format": "date",
                        "example": "2026-09-18"
                    },
                    "value": {
                        "$ref": "#/components/schemas/Measure"
                    },
                    "input_record_ids": {
                        "type": "array",
                        "items": {
                            "type": "string",
                            "description": "ID of a record this value was calculated from, such as the market capitalization and balance sheet statement of an enterprise value; empty for a value the source reported as is.",
                            "example": "record_example_1"
                        }
                    }
                },
                "required": [
                    "id",
                    "company_id",
                    "instrument_id",
                    "metric",
                    "observed_on",
                    "period_start",
                    "period_end",
                    "value",
                    "input_record_ids"
                ]
            },
            "RevenueSegment": {
                "type": "object",
                "additionalProperties": false,
                "properties": {
                    "id": {
                        "type": "string",
                        "description": "Record identifier, stable across revisions.",
                        "example": "record_example_1"
                    },
                    "company_id": {
                        "type": "string",
                        "description": "Opaque stable public identifier; never an internal database key.",
                        "example": "company_example_apple",
                        "minLength": 1,
                        "maxLength": 128,
                        "pattern": "^[A-Za-z0-9][A-Za-z0-9_.:-]{0,127}$"
                    },
                    "period_start": {
                        "type": [
                            "string",
                            "null"
                        ],
                        "format": "date",
                        "example": "2026-09-18",
                        "description": "First day of the fiscal year, from the duration of the same annual report's consolidated facts; null when they do not establish it."
                    },
                    "period_end": {
                        "type": "string",
                        "format": "date",
                        "example": "2026-09-18"
                    },
                    "fiscal_year": {
                        "type": [
                            "integer",
                            "null"
                        ],
                        "minimum": 0,
                        "description": "Fiscal year, named by the calendar year in which it ends (fiscal 2026 ends 2026-09-30, or 2026-01-31); a year ending in the first week of January is named by the year before.",
                        "example": 2025
                    },
                    "fiscal_quarter": {
                        "type": [
                            "integer",
                            "null"
                        ],
                        "minimum": 1,
                        "maximum": 4,
                        "example": null,
                        "description": "Always null: segment figures are the fiscal year's."
                    },
                    "period": {
                        "type": "string",
                        "enum": [
                            "annual"
                        ],
                        "description": "Fiscal period of the figures: the issuer's annual report.",
                        "example": "annual"
                    },
                    "dimension": {
                        "type": "string",
                        "enum": [
                            "business",
                            "geography"
                        ],
                        "description": "Segment axis: business for operating segments and product or service lines, geography for regions and countries.",
                        "example": "business"
                    },
                    "breakdown": {
                        "type": "string",
                        "enum": [
                            "operating_segment",
                            "product_or_service",
                            "geographic_area"
                        ],
                        "description": "The disclosure the figure comes from: the issuer's reportable operating segments, its revenue by product or service line, or its revenue by region or country. One issuer may report several, and a product or service breakdown may hold totals (Product, Service) beside their parts.",
                        "example": "operating_segment"
                    },
                    "segment": {
                        "type": "string",
                        "description": "Segment name, from the member the issuer tagged the figure with, words separated (IPhone, Intelligent Cloud, US); not assumed comparable across companies.",
                        "example": "Americas"
                    },
                    "segment_key": {
                        "type": "string",
                        "description": "The segment name normalized: lower case, words joined by underscores. Stable across a company's years while the issuer keeps the member.",
                        "example": "americas"
                    },
                    "revenue": {
                        "$ref": "#/components/schemas/Money",
                        "description": "Segment revenue for the fiscal year."
                    },
                    "operating_income": {
                        "anyOf": [
                            {
                                "$ref": "#/components/schemas/Money",
                                "description": "Segment operating income or loss for the fiscal year, where the issuer reports it (operating segments); null otherwise."
                            },
                            {
                                "type": "null"
                            }
                        ]
                    },
                    "xbrl_concepts": {
                        "type": "array",
                        "items": {
                            "type": "string",
                            "description": "Taxonomy-qualified XBRL concept.",
                            "example": "us-gaap:RevenueFromContractWithCustomerExcludingAssessedTax"
                        },
                        "description": "The concepts the issuer tagged the revenue and, when present, the operating income with: revenue first."
                    },
                    "filing_id": {
                        "type": "string",
                        "description": "SEC accession number of the annual report (10-K) the figures come from, as accession_number in /v1/filings.",
                        "example": "0000320193-25-000079"
                    }
                },
                "required": [
                    "id",
                    "company_id",
                    "period_start",
                    "period_end",
                    "fiscal_year",
                    "fiscal_quarter",
                    "period",
                    "dimension",
                    "breakdown",
                    "segment",
                    "segment_key",
                    "revenue",
                    "operating_income",
                    "xbrl_concepts",
                    "filing_id"
                ]
            },
            "EarningsEvent": {
                "type": "object",
                "additionalProperties": false,
                "properties": {
                    "id": {
                        "type": "string",
                        "description": "Record identifier, stable across revisions.",
                        "example": "record_example_1"
                    },
                    "company_id": {
                        "type": "string",
                        "description": "Opaque stable public identifier; never an internal database key.",
                        "example": "company_example_apple",
                        "minLength": 1,
                        "maxLength": 128,
                        "pattern": "^[A-Za-z0-9][A-Za-z0-9_.:-]{0,127}$"
                    },
                    "instruments": {
                        "type": "array",
                        "items": {
                            "$ref": "#/components/schemas/InstrumentLink"
                        }
                    },
                    "period_start": {
                        "type": [
                            "string",
                            "null"
                        ],
                        "format": "date",
                        "example": "2026-09-18",
                        "description": "First day of the fiscal period. The connected source does not establish it: always null."
                    },
                    "period_end": {
                        "type": "string",
                        "format": "date",
                        "example": "2026-09-18"
                    },
                    "fiscal_year": {
                        "type": [
                            "integer",
                            "null"
                        ],
                        "minimum": 0,
                        "description": "Fiscal year the quarter belongs to, named by the calendar year in which that fiscal year ends (fiscal 2026 ends 2026-09-30, or 2026-01-31); an issuer that names a year ending in January or February after the year it began in calls it one less. Derived from the fiscal year ends of the company's annual statements; null when they do not place the quarter.",
                        "example": 2026
                    },
                    "fiscal_quarter": {
                        "type": [
                            "integer",
                            "null"
                        ],
                        "minimum": 1,
                        "maximum": 4,
                        "example": 3,
                        "description": "Quarter of the fiscal year, 1 to 4, from the analyst consensus for the quarter or the company's annual statements; null when neither places the quarter."
                    },
                    "period": {
                        "type": [
                            "string",
                            "null"
                        ],
                        "enum": [
                            "quarterly",
                            "annual",
                            null
                        ],
                        "description": "quarterly when the company's statements or consensus describe the quarter; null for an event known only from the earnings calendar.",
                        "example": "quarterly"
                    },
                    "report_date": {
                        "type": [
                            "string",
                            "null"
                        ],
                        "format": "date",
                        "example": "2026-09-18",
                        "description": "Date the results were released; null when the release date is unknown, and the event is then timed by period_end."
                    },
                    "report_at": {
                        "type": [
                            "string",
                            "null"
                        ],
                        "format": "date-time",
                        "example": "2026-09-18T20:00:00Z",
                        "description": "Instant the results were released. The connected sources give the release date and session (report_date and timing), not the instant: always null. A company's Form 8-K is accepted minutes to hours after its release, so its acceptance time is not substituted."
                    },
                    "timing": {
                        "type": "string",
                        "enum": [
                            "before_market",
                            "during_market",
                            "after_market",
                            "unknown"
                        ],
                        "description": "Time relative to the primary listing's session: before_market, after_market or unknown; the connected source reports no during_market releases.",
                        "example": "before_market"
                    },
                    "status": {
                        "type": "string",
                        "enum": [
                            "estimated",
                            "confirmed",
                            "reported",
                            "cancelled"
                        ],
                        "description": "Event status: reported once the source gives the quarter's actual EPS, estimated before that. The connected source reports neither confirmed nor cancelled announcements, so those values never occur.",
                        "example": "estimated"
                    },
                    "eps_actual": {
                        "anyOf": [
                            {
                                "$ref": "#/components/schemas/Money"
                            },
                            {
                                "type": "null"
                            }
                        ]
                    },
                    "eps_estimate": {
                        "anyOf": [
                            {
                                "$ref": "#/components/schemas/Money"
                            },
                            {
                                "type": "null"
                            }
                        ]
                    },
                    "eps_surprise": {
                        "anyOf": [
                            {
                                "$ref": "#/components/schemas/Money"
                            },
                            {
                                "type": "null"
                            }
                        ]
                    },
                    "eps_surprise_ratio": {
                        "type": [
                            "string",
                            "null"
                        ],
                        "pattern": "^-?[0-9]+(?:\\.[0-9]+)?$",
                        "description": "Dimensionless ratio; 0.05 means 5%.",
                        "example": "0.05"
                    },
                    "revenue_actual": {
                        "anyOf": [
                            {
                                "$ref": "#/components/schemas/Money"
                            },
                            {
                                "type": "null"
                            }
                        ],
                        "description": "Revenue of the quarter from the company's quarterly income statement, once reported; null when no statement for the quarter is held."
                    },
                    "revenue_estimate": {
                        "anyOf": [
                            {
                                "$ref": "#/components/schemas/Money"
                            },
                            {
                                "type": "null"
                            }
                        ],
                        "description": "Analyst consensus revenue for the quarter. The consensus history begins in 2017; null for earlier quarters and for events known only from the earnings calendar."
                    }
                },
                "required": [
                    "id",
                    "company_id",
                    "instruments",
                    "period_start",
                    "period_end",
                    "fiscal_year",
                    "fiscal_quarter",
                    "period",
                    "report_date",
                    "report_at",
                    "timing",
                    "status",
                    "eps_actual",
                    "eps_estimate",
                    "eps_surprise",
                    "eps_surprise_ratio",
                    "revenue_actual",
                    "revenue_estimate"
                ]
            },
            "AnalystEstimate": {
                "type": "object",
                "additionalProperties": false,
                "properties": {
                    "id": {
                        "type": "string",
                        "description": "Record identifier, stable across revisions.",
                        "example": "record_example_1"
                    },
                    "company_id": {
                        "type": "string",
                        "description": "Opaque stable public identifier; never an internal database key.",
                        "example": "company_example_apple",
                        "minLength": 1,
                        "maxLength": 128,
                        "pattern": "^[A-Za-z0-9][A-Za-z0-9_.:-]{0,127}$"
                    },
                    "period_start": {
                        "type": [
                            "string",
                            "null"
                        ],
                        "format": "date",
                        "example": "2026-09-18",
                        "description": "Null when the source does not establish the fiscal start."
                    },
                    "period_end": {
                        "type": "string",
                        "format": "date",
                        "example": "2026-09-18"
                    },
                    "fiscal_year": {
                        "type": [
                            "integer",
                            "null"
                        ],
                        "minimum": 0,
                        "description": "Issuer fiscal year; null when not supplied.",
                        "example": 2026
                    },
                    "fiscal_quarter": {
                        "type": [
                            "integer",
                            "null"
                        ],
                        "minimum": 1,
                        "maximum": 4,
                        "example": 3
                    },
                    "period": {
                        "type": "string",
                        "enum": [
                            "quarterly",
                            "annual"
                        ],
                        "description": "Issuer fiscal period, not calendar quarter.",
                        "example": "quarterly"
                    },
                    "metric": {
                        "type": "string",
                        "enum": [
                            "eps",
                            "revenue",
                            "ebitda"
                        ],
                        "description": "Estimated metric: eps or revenue. The connected source gives no EBITDA consensus, so ebitda never occurs.",
                        "example": "eps"
                    },
                    "observed_on": {
                        "type": "string",
                        "format": "date",
                        "example": "2026-09-18"
                    },
                    "analyst_count": {
                        "type": [
                            "integer",
                            "null"
                        ],
                        "minimum": 0,
                        "description": "Contributing estimates.",
                        "example": 15
                    },
                    "mean": {
                        "$ref": "#/components/schemas/Measure"
                    },
                    "low": {
                        "$ref": "#/components/schemas/Measure"
                    },
                    "high": {
                        "$ref": "#/components/schemas/Measure"
                    },
                    "median": {
                        "$ref": "#/components/schemas/Measure",
                        "description": "Median estimate. The connected source gives none: value is always null."
                    },
                    "revisions_up": {
                        "type": [
                            "integer",
                            "null"
                        ],
                        "minimum": 0,
                        "description": "Upward revisions during revision_window_days.",
                        "example": 1
                    },
                    "revisions_down": {
                        "type": [
                            "integer",
                            "null"
                        ],
                        "minimum": 0,
                        "description": "Downward revisions during revision_window_days.",
                        "example": 1
                    },
                    "revision_window_days": {
                        "type": [
                            "integer",
                            "null"
                        ],
                        "minimum": 0,
                        "description": "Revision lookback days.",
                        "example": 30
                    }
                },
                "required": [
                    "id",
                    "company_id",
                    "period_start",
                    "period_end",
                    "fiscal_year",
                    "fiscal_quarter",
                    "period",
                    "metric",
                    "observed_on",
                    "analyst_count",
                    "mean",
                    "low",
                    "high",
                    "median",
                    "revisions_up",
                    "revisions_down",
                    "revision_window_days"
                ]
            },
            "AnalystRating": {
                "type": "object",
                "additionalProperties": false,
                "properties": {
                    "id": {
                        "type": "string",
                        "description": "Record identifier, stable across revisions.",
                        "example": "record_example_1"
                    },
                    "company_id": {
                        "type": "string",
                        "description": "Opaque stable public identifier; never an internal database key.",
                        "example": "company_example_apple",
                        "minLength": 1,
                        "maxLength": 128,
                        "pattern": "^[A-Za-z0-9][A-Za-z0-9_.:-]{0,127}$"
                    },
                    "instrument_id": {
                        "type": "string",
                        "description": "Opaque stable public identifier; never an internal database key.",
                        "example": "inst_example_aapl",
                        "minLength": 1,
                        "maxLength": 128,
                        "pattern": "^[A-Za-z0-9][A-Za-z0-9_.:-]{0,127}$"
                    },
                    "published_at": {
                        "type": "string",
                        "format": "date-time",
                        "example": "2026-09-18T20:00:00Z",
                        "description": "Publication timestamp for individual actions; retained provider fetch timestamp for consensus snapshots whose upstream publication time is unknown."
                    },
                    "firm": {
                        "type": [
                            "string",
                            "null"
                        ],
                        "description": "Research firm of an individual rating. The connected source reports the consensus only: always null.",
                        "example": "example"
                    },
                    "analyst": {
                        "type": [
                            "string",
                            "null"
                        ],
                        "description": "Analyst name of an individual rating. The connected source reports the consensus only: always null.",
                        "example": "example"
                    },
                    "rating": {
                        "type": [
                            "string",
                            "null"
                        ],
                        "description": "Original provider rating; consensus records retain the numeric score as a decimal string, or null when absent.",
                        "example": "Buy"
                    },
                    "previous_rating": {
                        "type": [
                            "string",
                            "null"
                        ],
                        "description": "Rating before an individual rating change. The connected source reports the consensus only: always null.",
                        "example": "Hold"
                    },
                    "normalized_rating": {
                        "type": "string",
                        "enum": [
                            "strong_buy",
                            "buy",
                            "hold",
                            "sell",
                            "strong_sell",
                            "unrated"
                        ],
                        "description": "Normalized rating.",
                        "example": "strong_buy"
                    },
                    "target_price": {
                        "anyOf": [
                            {
                                "$ref": "#/components/schemas/Money"
                            },
                            {
                                "type": "null"
                            }
                        ]
                    },
                    "previous_target_price": {
                        "anyOf": [
                            {
                                "$ref": "#/components/schemas/Money"
                            },
                            {
                                "type": "null"
                            }
                        ]
                    },
                    "rating_type": {
                        "type": "string",
                        "enum": [
                            "individual",
                            "consensus"
                        ],
                        "description": "Consensus records are aggregate snapshots, not individual analyst actions."
                    },
                    "observed_on": {
                        "type": "string",
                        "format": "date",
                        "description": "UTC date the consensus snapshot was fetched."
                    },
                    "consensus_score": {
                        "type": [
                            "string",
                            "null"
                        ],
                        "pattern": "^-?\\d+(?:\\.\\d+)?$",
                        "description": "Provider consensus score, from 1 (strong sell) to 5 (strong buy). No categorical rounding is applied."
                    },
                    "rating_counts": {
                        "type": "object",
                        "additionalProperties": false,
                        "properties": {
                            "strong_buy": {
                                "type": [
                                    "integer",
                                    "null"
                                ],
                                "minimum": 0
                            },
                            "buy": {
                                "type": [
                                    "integer",
                                    "null"
                                ],
                                "minimum": 0
                            },
                            "hold": {
                                "type": [
                                    "integer",
                                    "null"
                                ],
                                "minimum": 0
                            },
                            "sell": {
                                "type": [
                                    "integer",
                                    "null"
                                ],
                                "minimum": 0
                            },
                            "strong_sell": {
                                "type": [
                                    "integer",
                                    "null"
                                ],
                                "minimum": 0
                            }
                        },
                        "required": [
                            "strong_buy",
                            "buy",
                            "hold",
                            "sell",
                            "strong_sell"
                        ]
                    }
                },
                "required": [
                    "id",
                    "company_id",
                    "instrument_id",
                    "published_at",
                    "firm",
                    "analyst",
                    "rating",
                    "previous_rating",
                    "normalized_rating",
                    "target_price",
                    "previous_target_price"
                ]
            },
            "OwnershipPosition": {
                "type": "object",
                "additionalProperties": false,
                "properties": {
                    "id": {
                        "type": "string",
                        "description": "Record identifier, stable across revisions.",
                        "example": "record_example_1"
                    },
                    "instrument_id": {
                        "type": "string",
                        "description": "Opaque stable public identifier; never an internal database key.",
                        "example": "inst_example_aapl",
                        "minLength": 1,
                        "maxLength": 128,
                        "pattern": "^[A-Za-z0-9][A-Za-z0-9_.:-]{0,127}$"
                    },
                    "holder_id": {
                        "type": "string",
                        "description": "Stable holder ID.",
                        "example": "holder_example"
                    },
                    "holder_name": {
                        "type": "string",
                        "description": "Holder name.",
                        "example": "Example Asset Management"
                    },
                    "holder_type": {
                        "type": "string",
                        "enum": [
                            "institution",
                            "fund"
                        ],
                        "description": "Holder type. Insiders' holdings are in /v1/insider-transactions (shares_after).",
                        "example": "institution"
                    },
                    "reported_on": {
                        "type": "string",
                        "format": "date",
                        "example": "2026-09-18",
                        "description": "Date the holder reported the position for: a quarter end for institutions, a month end for funds."
                    },
                    "shares": {
                        "type": "string",
                        "pattern": "^-?[0-9]+(?:\\.[0-9]+)?$",
                        "description": "Shares held.",
                        "example": "1000000"
                    },
                    "ownership_ratio": {
                        "type": [
                            "string",
                            "null"
                        ],
                        "pattern": "^-?[0-9]+(?:\\.[0-9]+)?$",
                        "description": "Dimensionless ratio; 0.05 means 5%.",
                        "example": "0.05"
                    },
                    "change_in_shares": {
                        "type": [
                            "string",
                            "null"
                        ],
                        "pattern": "^-?[0-9]+(?:\\.[0-9]+)?$",
                        "description": "Change since previous reported position.",
                        "example": "10000"
                    },
                    "filing_id": {
                        "type": [
                            "string",
                            "null"
                        ],
                        "description": "Filing the position was reported in. The connected source does not name it: always null.",
                        "example": "0001193125-26-405351"
                    }
                },
                "required": [
                    "id",
                    "instrument_id",
                    "holder_id",
                    "holder_name",
                    "holder_type",
                    "reported_on",
                    "shares",
                    "ownership_ratio",
                    "change_in_shares",
                    "filing_id"
                ]
            },
            "InsiderTransaction": {
                "type": "object",
                "additionalProperties": false,
                "properties": {
                    "id": {
                        "type": "string",
                        "description": "Record identifier, stable across revisions.",
                        "example": "record_example_1"
                    },
                    "company_id": {
                        "type": "string",
                        "description": "Opaque stable public identifier; never an internal database key.",
                        "example": "company_example_apple",
                        "minLength": 1,
                        "maxLength": 128,
                        "pattern": "^[A-Za-z0-9][A-Za-z0-9_.:-]{0,127}$"
                    },
                    "instrument_id": {
                        "type": [
                            "string",
                            "null"
                        ],
                        "description": "Listing the disclosed security trades as, when security_title identifies it: the company's one listed common stock for plain common or ordinary shares, or the listed share class the title names. Null for any other security (preferred shares, notes, awards, an unlisted class) and when several listed classes could be meant; company_id always names the issuer.",
                        "example": "inst_example_aapl",
                        "minLength": 1,
                        "maxLength": 128,
                        "pattern": "^[A-Za-z0-9][A-Za-z0-9_.:-]{0,127}$"
                    },
                    "security_title": {
                        "type": [
                            "string",
                            "null"
                        ],
                        "description": "Security title supplied by the disclosure.",
                        "example": "example"
                    },
                    "owner_id": {
                        "type": "string",
                        "description": "Stable owner ID.",
                        "example": "owner_example"
                    },
                    "owner_name": {
                        "type": "string",
                        "description": "Owner name.",
                        "example": "example"
                    },
                    "relationship": {
                        "type": [
                            "string",
                            "null"
                        ],
                        "description": "Issuer relationship.",
                        "example": "Director"
                    },
                    "transaction_date": {
                        "type": "string",
                        "format": "date",
                        "example": "2026-09-18"
                    },
                    "filed_at": {
                        "type": [
                            "string",
                            "null"
                        ],
                        "format": "date-time",
                        "example": "2026-09-18T20:00:00Z",
                        "description": "Instant the disclosure was accepted. Not available from the connected source, which gives the filing date only: always null, use filed_on."
                    },
                    "filed_on": {
                        "type": [
                            "string",
                            "null"
                        ],
                        "format": "date",
                        "example": "2026-09-18",
                        "description": "Date the disclosure was filed."
                    },
                    "transaction_code": {
                        "type": "string",
                        "description": "Source transaction code.",
                        "example": "P"
                    },
                    "side": {
                        "type": "string",
                        "enum": [
                            "acquisition",
                            "disposition"
                        ],
                        "description": "Whether shares were acquired or disposed; does not imply open-market trading.",
                        "example": "acquisition"
                    },
                    "shares": {
                        "type": "string",
                        "pattern": "^-?[0-9]+(?:\\.[0-9]+)?$",
                        "description": "Transaction shares.",
                        "example": "100"
                    },
                    "price": {
                        "anyOf": [
                            {
                                "$ref": "#/components/schemas/Money"
                            },
                            {
                                "type": "null"
                            }
                        ]
                    },
                    "shares_after": {
                        "type": [
                            "string",
                            "null"
                        ],
                        "pattern": "^-?[0-9]+(?:\\.[0-9]+)?$",
                        "description": "Shares after transaction.",
                        "example": "1100"
                    },
                    "ownership_type": {
                        "type": "string",
                        "enum": [
                            "direct",
                            "indirect",
                            "unknown"
                        ],
                        "description": "Ownership form. The connected source does not state it: always unknown.",
                        "example": "direct"
                    },
                    "filing_id": {
                        "type": [
                            "string",
                            "null"
                        ],
                        "description": "SEC accession number of the Form 4 or 5 that disclosed the transaction. Ownership forms are not listed by /v1/filings, which carries periodic and current reports.",
                        "example": "0001193125-26-405351"
                    }
                },
                "required": [
                    "id",
                    "company_id",
                    "instrument_id",
                    "security_title",
                    "owner_id",
                    "owner_name",
                    "relationship",
                    "transaction_date",
                    "filed_at",
                    "filed_on",
                    "transaction_code",
                    "side",
                    "shares",
                    "price",
                    "shares_after",
                    "ownership_type",
                    "filing_id"
                ]
            },
            "ShareStatistics": {
                "type": "object",
                "additionalProperties": false,
                "properties": {
                    "id": {
                        "type": "string",
                        "description": "Record identifier, stable across revisions.",
                        "example": "record_example_1"
                    },
                    "instrument_id": {
                        "type": "string",
                        "description": "Opaque stable public identifier; never an internal database key.",
                        "example": "inst_example_aapl",
                        "minLength": 1,
                        "maxLength": 128,
                        "pattern": "^[A-Za-z0-9][A-Za-z0-9_.:-]{0,127}$"
                    },
                    "observed_on": {
                        "type": "string",
                        "format": "date",
                        "example": "2026-09-18"
                    },
                    "shares_outstanding": {
                        "type": [
                            "string",
                            "null"
                        ],
                        "pattern": "^-?[0-9]+(?:\\.[0-9]+)?$",
                        "description": "Shares outstanding of the listing's share class.",
                        "example": "1000000"
                    },
                    "float_shares": {
                        "type": [
                            "string",
                            "null"
                        ],
                        "pattern": "^-?[0-9]+(?:\\.[0-9]+)?$",
                        "description": "Public float of the listing's share class. Null where the source states one float for every listed class of the company; never larger than shares_outstanding.",
                        "example": "800000"
                    },
                    "insider_ownership_ratio": {
                        "type": [
                            "string",
                            "null"
                        ],
                        "pattern": "^-?[0-9]+(?:\\.[0-9]+)?$",
                        "description": "Dimensionless ratio; 0.05 means 5%.",
                        "example": "0.05"
                    },
                    "institutional_ownership_ratio": {
                        "type": [
                            "string",
                            "null"
                        ],
                        "pattern": "^-?[0-9]+(?:\\.[0-9]+)?$",
                        "description": "Dimensionless ratio; 0.05 means 5%.",
                        "example": "0.05"
                    }
                },
                "required": [
                    "id",
                    "instrument_id",
                    "observed_on",
                    "shares_outstanding",
                    "float_shares",
                    "insider_ownership_ratio",
                    "institutional_ownership_ratio"
                ]
            },
            "ShortInterest": {
                "type": "object",
                "additionalProperties": false,
                "properties": {
                    "id": {
                        "type": "string",
                        "description": "Record identifier, stable across revisions.",
                        "example": "record_example_1"
                    },
                    "instrument_id": {
                        "type": "string",
                        "description": "Opaque stable public identifier; never an internal database key.",
                        "example": "inst_example_aapl",
                        "minLength": 1,
                        "maxLength": 128,
                        "pattern": "^[A-Za-z0-9][A-Za-z0-9_.:-]{0,127}$"
                    },
                    "settlement_date": {
                        "type": [
                            "string",
                            "null"
                        ],
                        "format": "date",
                        "example": "2026-09-18",
                        "description": "Settlement date the positions were reported for. The connected source does not date its figures: always null."
                    },
                    "observed_on": {
                        "type": "string",
                        "format": "date",
                        "example": "2026-09-18",
                        "description": "Date OHLC first observed this report."
                    },
                    "published_at": {
                        "type": [
                            "string",
                            "null"
                        ],
                        "format": "date-time",
                        "example": "2026-09-18T20:00:00Z",
                        "description": "Instant the exchange published the report. Not available from the connected source: always null."
                    },
                    "shares_short": {
                        "type": "string",
                        "pattern": "^-?[0-9]+(?:\\.[0-9]+)?$",
                        "description": "Shares sold short.",
                        "example": "10000"
                    },
                    "previous_shares_short": {
                        "type": [
                            "string",
                            "null"
                        ],
                        "pattern": "^-?[0-9]+(?:\\.[0-9]+)?$",
                        "description": "Shares short in the report before this one, as the source states it.",
                        "example": "9000"
                    },
                    "short_float_ratio": {
                        "type": [
                            "string",
                            "null"
                        ],
                        "pattern": "^-?[0-9]+(?:\\.[0-9]+)?$",
                        "description": "Dimensionless ratio; 0.05 means 5%.",
                        "example": "0.05"
                    },
                    "days_to_cover": {
                        "type": [
                            "string",
                            "null"
                        ],
                        "pattern": "^-?[0-9]+(?:\\.[0-9]+)?$",
                        "description": "Shares short divided by average daily volume; days.",
                        "example": "2.5"
                    }
                },
                "required": [
                    "id",
                    "instrument_id",
                    "settlement_date",
                    "observed_on",
                    "published_at",
                    "shares_short",
                    "previous_shares_short",
                    "short_float_ratio",
                    "days_to_cover"
                ]
            },
            "Fund": {
                "type": "object",
                "additionalProperties": false,
                "properties": {
                    "id": {
                        "type": "string",
                        "description": "Record identifier, stable across revisions.",
                        "example": "record_example_1"
                    },
                    "instrument_id": {
                        "type": "string",
                        "description": "Opaque stable public identifier; never an internal database key.",
                        "example": "inst_example_aapl",
                        "minLength": 1,
                        "maxLength": 128,
                        "pattern": "^[A-Za-z0-9][A-Za-z0-9_.:-]{0,127}$"
                    },
                    "name": {
                        "type": "string",
                        "description": "Fund name.",
                        "example": "SPDR S&P 500 ETF Trust"
                    },
                    "fund_type": {
                        "type": "string",
                        "enum": [
                            "etf",
                            "mutual_fund"
                        ],
                        "description": "Fund type.",
                        "example": "etf"
                    },
                    "domicile": {
                        "type": [
                            "string",
                            "null"
                        ],
                        "pattern": "^[A-Z]{2}$",
                        "example": "US"
                    },
                    "inception_date": {
                        "type": [
                            "string",
                            "null"
                        ],
                        "format": "date",
                        "example": "2026-09-18"
                    },
                    "benchmark_instrument_id": {
                        "type": [
                            "string",
                            "null"
                        ],
                        "description": "Instrument ID of the benchmark index. Not yet linked: always null; benchmark_name names it.",
                        "example": "inst_example_aapl",
                        "minLength": 1,
                        "maxLength": 128,
                        "pattern": "^[A-Za-z0-9][A-Za-z0-9_.:-]{0,127}$"
                    },
                    "benchmark_name": {
                        "type": [
                            "string",
                            "null"
                        ],
                        "description": "Index the fund tracks or measures itself against, as the fund names it. ETFs only, where reported; null for mutual funds.",
                        "example": "S&P 500 Index"
                    },
                    "expense_ratio": {
                        "type": [
                            "string",
                            "null"
                        ],
                        "pattern": "^-?[0-9]+(?:\\.[0-9]+)?$",
                        "description": "Dimensionless ratio; 0.05 means 5%.",
                        "example": "0.05"
                    },
                    "turnover_ratio": {
                        "type": [
                            "string",
                            "null"
                        ],
                        "pattern": "^-?[0-9]+(?:\\.[0-9]+)?$",
                        "description": "Annual portfolio turnover, as a ratio; 0.0205 means 2.05% of holdings replaced in a year. ETFs only, where reported.",
                        "example": "0.05"
                    },
                    "assets_under_management": {
                        "anyOf": [
                            {
                                "$ref": "#/components/schemas/Money"
                            },
                            {
                                "type": "null"
                            }
                        ]
                    },
                    "net_asset_value": {
                        "anyOf": [
                            {
                                "$ref": "#/components/schemas/Money"
                            },
                            {
                                "type": "null"
                            }
                        ],
                        "description": "Net asset value per share as the source reports it for a mutual fund; null for ETFs."
                    },
                    "fixed_income": {
                        "type": [
                            "object",
                            "null"
                        ],
                        "additionalProperties": false,
                        "properties": {
                            "effective_duration": {
                                "type": [
                                    "string",
                                    "null"
                                ],
                                "pattern": "^-?[0-9]+(?:\\.[0-9]+)?$",
                                "description": "Effective duration in years.",
                                "example": "5.7158"
                            },
                            "modified_duration": {
                                "type": [
                                    "string",
                                    "null"
                                ],
                                "pattern": "^-?[0-9]+(?:\\.[0-9]+)?$",
                                "description": "Modified duration in years.",
                                "example": "5.4984"
                            },
                            "effective_maturity": {
                                "type": [
                                    "string",
                                    "null"
                                ],
                                "pattern": "^-?[0-9]+(?:\\.[0-9]+)?$",
                                "description": "Average effective maturity in years.",
                                "example": "8.2812"
                            },
                            "average_coupon": {
                                "type": [
                                    "string",
                                    "null"
                                ],
                                "pattern": "^-?[0-9]+(?:\\.[0-9]+)?$",
                                "description": "Average coupon rate, as a ratio; 0.039 means 3.9%.",
                                "example": "0.039035"
                            },
                            "average_price": {
                                "type": [
                                    "string",
                                    "null"
                                ],
                                "pattern": "^-?[0-9]+(?:\\.[0-9]+)?$",
                                "description": "Average bond price per 100 of par.",
                                "example": "94.1396"
                            },
                            "yield_to_maturity": {
                                "type": [
                                    "string",
                                    "null"
                                ],
                                "pattern": "^-?[0-9]+(?:\\.[0-9]+)?$",
                                "description": "Average yield to maturity, as a ratio, as the sponsor reports it.",
                                "example": "0.05"
                            }
                        },
                        "required": [
                            "effective_duration",
                            "modified_duration",
                            "effective_maturity",
                            "average_coupon",
                            "average_price",
                            "yield_to_maturity"
                        ],
                        "description": "Portfolio statistics of a bond ETF as its sponsor reports them; null for an equity fund, a mutual fund, or a fund that reports none. A statistic the fund does not report is null."
                    },
                    "observed_on": {
                        "type": "string",
                        "format": "date",
                        "example": "2026-09-18"
                    }
                },
                "required": [
                    "id",
                    "instrument_id",
                    "name",
                    "fund_type",
                    "domicile",
                    "inception_date",
                    "benchmark_instrument_id",
                    "benchmark_name",
                    "expense_ratio",
                    "turnover_ratio",
                    "assets_under_management",
                    "net_asset_value",
                    "fixed_income",
                    "observed_on"
                ]
            },
            "FundHolding": {
                "type": "object",
                "additionalProperties": false,
                "properties": {
                    "id": {
                        "type": "string",
                        "description": "Record identifier, stable across revisions.",
                        "example": "record_example_1"
                    },
                    "fund_id": {
                        "type": "string",
                        "description": "Opaque stable public identifier; never an internal database key.",
                        "example": "inst_example_aapl",
                        "minLength": 1,
                        "maxLength": 128,
                        "pattern": "^[A-Za-z0-9][A-Za-z0-9_.:-]{0,127}$"
                    },
                    "snapshot_date": {
                        "type": "string",
                        "format": "date",
                        "example": "2026-09-18"
                    },
                    "holding": {
                        "anyOf": [
                            {
                                "$ref": "#/components/schemas/InstrumentLink"
                            },
                            {
                                "type": "null"
                            }
                        ]
                    },
                    "provider_symbol": {
                        "type": [
                            "string",
                            "null"
                        ],
                        "description": "The code the fund's holdings list gives the position: a ticker with its market (2330.TW, SHEL.LSE, AAPL.US) or a bond's ISIN (US16411QAN16.BOND). Set whether or not holding links a listing, so a position on a market OHLC does not carry can still be identified; null for one listed by name only (cash, and a mutual fund's positions).",
                        "example": "AAPL.US"
                    },
                    "name": {
                        "type": "string",
                        "description": "Position name, including unlisted assets or cash.",
                        "example": "Example Corporation"
                    },
                    "asset_type": {
                        "type": "string",
                        "description": "Position asset type.",
                        "example": "equity"
                    },
                    "quantity": {
                        "type": [
                            "string",
                            "null"
                        ],
                        "pattern": "^-?[0-9]+(?:\\.[0-9]+)?$",
                        "description": "Shares or units held. The connected source reports position weights only: always null.",
                        "example": "1000"
                    },
                    "market_value": {
                        "anyOf": [
                            {
                                "$ref": "#/components/schemas/Money"
                            },
                            {
                                "type": "null"
                            }
                        ],
                        "description": "Market value of the position. The connected source reports position weights only: always null."
                    },
                    "weight": {
                        "type": [
                            "string",
                            "null"
                        ],
                        "pattern": "^-?[0-9]+(?:\\.[0-9]+)?$",
                        "description": "Share of the fund's net assets, as a ratio; 0.0738 means 7.38%. Null for a position the source lists without a weight.",
                        "example": "0.05"
                    }
                },
                "required": [
                    "id",
                    "fund_id",
                    "snapshot_date",
                    "holding",
                    "provider_symbol",
                    "name",
                    "asset_type",
                    "quantity",
                    "market_value",
                    "weight"
                ]
            },
            "FundAllocation": {
                "type": "object",
                "additionalProperties": false,
                "properties": {
                    "id": {
                        "type": "string",
                        "description": "Record identifier, stable across revisions.",
                        "example": "record_example_1"
                    },
                    "fund_id": {
                        "type": "string",
                        "description": "Opaque stable public identifier; never an internal database key.",
                        "example": "inst_example_aapl",
                        "minLength": 1,
                        "maxLength": 128,
                        "pattern": "^[A-Za-z0-9][A-Za-z0-9_.:-]{0,127}$"
                    },
                    "snapshot_date": {
                        "type": "string",
                        "format": "date",
                        "example": "2026-09-18"
                    },
                    "dimension": {
                        "type": "string",
                        "enum": [
                            "sector",
                            "country",
                            "region",
                            "asset_class",
                            "market_cap",
                            "currency"
                        ],
                        "description": "Allocation axis. sector, region, asset_class and market_cap are reported for ETFs and mutual funds, country for mutual funds only; the connected source reports no currency allocations.",
                        "example": "sector"
                    },
                    "category": {
                        "type": "string",
                        "description": "Category within axis.",
                        "example": "Technology"
                    },
                    "weight": {
                        "type": "string",
                        "pattern": "^-?[0-9]+(?:\\.[0-9]+)?$",
                        "description": "Dimensionless ratio; 0.05 means 5%.",
                        "example": "0.05"
                    }
                },
                "required": [
                    "id",
                    "fund_id",
                    "snapshot_date",
                    "dimension",
                    "category",
                    "weight"
                ]
            },
            "Index": {
                "type": "object",
                "additionalProperties": false,
                "properties": {
                    "id": {
                        "type": "string",
                        "description": "Record identifier, stable across revisions.",
                        "example": "record_example_1"
                    },
                    "instrument_id": {
                        "type": "string",
                        "description": "Opaque stable public identifier; never an internal database key.",
                        "example": "inst_example_aapl",
                        "minLength": 1,
                        "maxLength": 128,
                        "pattern": "^[A-Za-z0-9][A-Za-z0-9_.:-]{0,127}$"
                    },
                    "name": {
                        "type": "string",
                        "description": "Index name.",
                        "example": "Example 500"
                    },
                    "currency_code": {
                        "type": [
                            "string",
                            "null"
                        ],
                        "pattern": "^[A-Z]{3}$",
                        "example": "USD",
                        "description": "ISO 4217 currency. Crypto quote assets use instrument IDs, not invented ISO codes."
                    }
                },
                "required": [
                    "id",
                    "instrument_id",
                    "name",
                    "currency_code"
                ]
            },
            "IndexConstituent": {
                "type": "object",
                "additionalProperties": false,
                "properties": {
                    "id": {
                        "type": "string",
                        "description": "Record identifier, stable across revisions.",
                        "example": "record_example_1"
                    },
                    "index_id": {
                        "type": "string",
                        "description": "Opaque stable public identifier; never an internal database key.",
                        "example": "inst_example_aapl",
                        "minLength": 1,
                        "maxLength": 128,
                        "pattern": "^[A-Za-z0-9][A-Za-z0-9_.:-]{0,127}$"
                    },
                    "snapshot_date": {
                        "type": "string",
                        "format": "date",
                        "example": "2026-09-18"
                    },
                    "constituent": {
                        "$ref": "#/components/schemas/InstrumentLink"
                    },
                    "weight": {
                        "type": [
                            "string",
                            "null"
                        ],
                        "pattern": "^-?[0-9]+(?:\\.[0-9]+)?$",
                        "description": "Dimensionless ratio; 0.05 means 5%.",
                        "example": "0.05"
                    },
                    "member_since": {
                        "type": [
                            "string",
                            "null"
                        ],
                        "format": "date",
                        "example": "2026-09-18"
                    }
                },
                "required": [
                    "id",
                    "index_id",
                    "snapshot_date",
                    "constituent",
                    "weight",
                    "member_since"
                ]
            },
            "OptionContract": {
                "type": "object",
                "additionalProperties": false,
                "properties": {
                    "id": {
                        "type": "string",
                        "description": "Record identifier, stable across revisions.",
                        "example": "record_example_1"
                    },
                    "instrument_id": {
                        "type": "string",
                        "description": "Opaque stable public identifier; never an internal database key.",
                        "example": "inst_example_aapl",
                        "minLength": 1,
                        "maxLength": 128,
                        "pattern": "^[A-Za-z0-9][A-Za-z0-9_.:-]{0,127}$"
                    },
                    "underlying_instrument_id": {
                        "type": "string",
                        "description": "Opaque stable public identifier; never an internal database key.",
                        "example": "inst_example_aapl",
                        "minLength": 1,
                        "maxLength": 128,
                        "pattern": "^[A-Za-z0-9][A-Za-z0-9_.:-]{0,127}$"
                    },
                    "contract_symbol": {
                        "type": "string",
                        "description": "Canonical option symbol.",
                        "example": "AAPL261218C00250000"
                    },
                    "type": {
                        "type": "string",
                        "enum": [
                            "call",
                            "put"
                        ],
                        "description": "Option right.",
                        "example": "call"
                    },
                    "strike": {
                        "$ref": "#/components/schemas/Money"
                    },
                    "expiration_date": {
                        "type": "string",
                        "format": "date",
                        "example": "2026-12-18"
                    },
                    "exercise_style": {
                        "type": "string",
                        "enum": [
                            "american",
                            "european",
                            "bermudan",
                            "unknown"
                        ],
                        "description": "Exercise style.",
                        "example": "american"
                    },
                    "settlement": {
                        "type": "string",
                        "enum": [
                            "physical",
                            "cash",
                            "unknown"
                        ],
                        "description": "Settlement method.",
                        "example": "physical"
                    },
                    "multiplier": {
                        "type": "string",
                        "pattern": "^-?[0-9]+(?:\\.[0-9]+)?$",
                        "description": "Underlying units per standard contract.",
                        "example": "100"
                    },
                    "deliverables": {
                        "type": "array",
                        "items": {
                            "type": "object",
                            "additionalProperties": false,
                            "properties": {
                                "instrument_id": {
                                    "type": [
                                        "string",
                                        "null"
                                    ],
                                    "description": "Opaque stable public identifier; never an internal database key.",
                                    "example": "inst_example_aapl",
                                    "minLength": 1,
                                    "maxLength": 128,
                                    "pattern": "^[A-Za-z0-9][A-Za-z0-9_.:-]{0,127}$"
                                },
                                "quantity": {
                                    "type": [
                                        "string",
                                        "null"
                                    ],
                                    "pattern": "^-?[0-9]+(?:\\.[0-9]+)?$",
                                    "description": "Deliverable units.",
                                    "example": "100"
                                },
                                "cash": {
                                    "anyOf": [
                                        {
                                            "$ref": "#/components/schemas/Money"
                                        },
                                        {
                                            "type": "null"
                                        }
                                    ]
                                }
                            },
                            "required": [
                                "instrument_id",
                                "quantity",
                                "cash"
                            ]
                        }
                    },
                    "status": {
                        "type": "string",
                        "enum": [
                            "active",
                            "expired",
                            "inactive"
                        ],
                        "description": "Contract status: active until its expiration date, then expired; inactive is not used.",
                        "example": "active"
                    }
                },
                "required": [
                    "id",
                    "instrument_id",
                    "underlying_instrument_id",
                    "contract_symbol",
                    "type",
                    "strike",
                    "expiration_date",
                    "exercise_style",
                    "settlement",
                    "multiplier",
                    "deliverables",
                    "status"
                ]
            },
            "OptionQuote": {
                "type": "object",
                "additionalProperties": false,
                "properties": {
                    "id": {
                        "type": "string",
                        "description": "Record identifier, stable across revisions.",
                        "example": "record_example_1"
                    },
                    "instrument_id": {
                        "type": "string",
                        "description": "Opaque stable public identifier; never an internal database key.",
                        "example": "inst_example_aapl",
                        "minLength": 1,
                        "maxLength": 128,
                        "pattern": "^[A-Za-z0-9][A-Za-z0-9_.:-]{0,127}$"
                    },
                    "event_at": {
                        "type": "string",
                        "format": "date-time",
                        "example": "2026-09-18T20:00:00Z"
                    },
                    "bid": {
                        "anyOf": [
                            {
                                "$ref": "#/components/schemas/Money"
                            },
                            {
                                "type": "null"
                            }
                        ]
                    },
                    "ask": {
                        "anyOf": [
                            {
                                "$ref": "#/components/schemas/Money"
                            },
                            {
                                "type": "null"
                            }
                        ]
                    },
                    "last": {
                        "anyOf": [
                            {
                                "$ref": "#/components/schemas/Money"
                            },
                            {
                                "type": "null"
                            }
                        ]
                    },
                    "volume": {
                        "type": [
                            "string",
                            "null"
                        ],
                        "pattern": "^-?[0-9]+(?:\\.[0-9]+)?$",
                        "description": "Contracts traded in the session.",
                        "example": "123"
                    },
                    "open_interest": {
                        "type": [
                            "string",
                            "null"
                        ],
                        "pattern": "^-?[0-9]+(?:\\.[0-9]+)?$",
                        "description": "Open contracts.",
                        "example": "2000"
                    },
                    "open_interest_date": {
                        "type": [
                            "string",
                            "null"
                        ],
                        "format": "date",
                        "example": "2026-09-18",
                        "description": "Date the open interest was measured. The connected source does not report it: always null."
                    },
                    "implied_volatility": {
                        "type": [
                            "string",
                            "null"
                        ],
                        "pattern": "^-?[0-9]+(?:\\.[0-9]+)?$",
                        "description": "Dimensionless ratio; 0.05 means 5%.",
                        "example": "0.05"
                    },
                    "delta": {
                        "type": [
                            "string",
                            "null"
                        ],
                        "pattern": "^-?[0-9]+(?:\\.[0-9]+)?$",
                        "description": "Price sensitivity to a one-unit underlying move.",
                        "example": "0.52"
                    },
                    "gamma": {
                        "type": [
                            "string",
                            "null"
                        ],
                        "pattern": "^-?[0-9]+(?:\\.[0-9]+)?$",
                        "description": "Delta sensitivity per underlying unit.",
                        "example": "0.02"
                    },
                    "theta": {
                        "type": [
                            "string",
                            "null"
                        ],
                        "pattern": "^-?[0-9]+(?:\\.[0-9]+)?$",
                        "description": "Option value change per calendar day.",
                        "example": "-0.04"
                    },
                    "vega": {
                        "type": [
                            "string",
                            "null"
                        ],
                        "pattern": "^-?[0-9]+(?:\\.[0-9]+)?$",
                        "description": "Option value change per one percentage point of volatility.",
                        "example": "0.15"
                    },
                    "rho": {
                        "type": [
                            "string",
                            "null"
                        ],
                        "pattern": "^-?[0-9]+(?:\\.[0-9]+)?$",
                        "description": "Option value change per one percentage point of interest rate.",
                        "example": "0.03"
                    }
                },
                "required": [
                    "id",
                    "instrument_id",
                    "event_at",
                    "bid",
                    "ask",
                    "last",
                    "volume",
                    "open_interest",
                    "open_interest_date",
                    "implied_volatility",
                    "delta",
                    "gamma",
                    "theta",
                    "vega",
                    "rho"
                ]
            },
            "OptionBar": {
                "type": "object",
                "additionalProperties": false,
                "properties": {
                    "id": {
                        "type": "string",
                        "description": "Record identifier, stable across revisions.",
                        "example": "record_example_1"
                    },
                    "instrument_id": {
                        "type": "string",
                        "description": "Opaque stable public identifier; never an internal database key.",
                        "example": "inst_example_aapl",
                        "minLength": 1,
                        "maxLength": 128,
                        "pattern": "^[A-Za-z0-9][A-Za-z0-9_.:-]{0,127}$"
                    },
                    "date": {
                        "type": "string",
                        "format": "date",
                        "example": "2026-09-18",
                        "description": "Exchange-local trading date."
                    },
                    "currency_code": {
                        "type": [
                            "string",
                            "null"
                        ],
                        "pattern": "^[A-Z]{3}$",
                        "example": "USD",
                        "description": "ISO 4217 currency. Crypto quote assets use instrument IDs, not invented ISO codes."
                    },
                    "open": {
                        "type": "string",
                        "pattern": "^-?[0-9]+(?:\\.[0-9]+)?$",
                        "description": "Open.",
                        "example": "5.10"
                    },
                    "high": {
                        "type": "string",
                        "pattern": "^-?[0-9]+(?:\\.[0-9]+)?$",
                        "description": "High.",
                        "example": "5.50"
                    },
                    "low": {
                        "type": "string",
                        "pattern": "^-?[0-9]+(?:\\.[0-9]+)?$",
                        "description": "Low.",
                        "example": "4.90"
                    },
                    "close": {
                        "type": "string",
                        "pattern": "^-?[0-9]+(?:\\.[0-9]+)?$",
                        "description": "Close.",
                        "example": "5.25"
                    },
                    "volume": {
                        "type": [
                            "string",
                            "null"
                        ],
                        "pattern": "^-?[0-9]+(?:\\.[0-9]+)?$",
                        "description": "Contracts.",
                        "example": "1000"
                    }
                },
                "required": [
                    "id",
                    "instrument_id",
                    "date",
                    "currency_code",
                    "open",
                    "high",
                    "low",
                    "close",
                    "volume"
                ]
            },
            "InstrumentBar": {
                "type": "object",
                "additionalProperties": false,
                "properties": {
                    "id": {
                        "type": "string",
                        "description": "Record identifier, stable across revisions.",
                        "example": "record_example_1"
                    },
                    "instrument_id": {
                        "type": "string",
                        "description": "Opaque stable public identifier; never an internal database key.",
                        "example": "inst_example_aapl",
                        "minLength": 1,
                        "maxLength": 128,
                        "pattern": "^[A-Za-z0-9][A-Za-z0-9_.:-]{0,127}$"
                    },
                    "window_start": {
                        "type": "string",
                        "format": "date-time",
                        "example": "2026-09-18T20:00:00Z"
                    },
                    "window_end": {
                        "type": "string",
                        "format": "date-time",
                        "example": "2026-09-18T20:00:00Z"
                    },
                    "interval": {
                        "type": "string",
                        "enum": [
                            "1d",
                            "5m",
                            "1h",
                            "1m"
                        ],
                        "description": "Bar interval: 1d, 5m or 1h for exchange listings; 1m only for listings collected at one minute (crypto and currency pairs).",
                        "example": "1d"
                    },
                    "session": {
                        "type": "string",
                        "enum": [
                            "regular",
                            "all"
                        ],
                        "description": "Trading session: regular for exchange listings; all only for continuous markets (crypto and currency pairs), where it is the same bars as regular.",
                        "example": "regular"
                    },
                    "currency_code": {
                        "type": [
                            "string",
                            "null"
                        ],
                        "pattern": "^[A-Z]{3}$",
                        "example": "USD",
                        "description": "ISO 4217 currency. Crypto quote assets use instrument IDs, not invented ISO codes."
                    },
                    "quote_instrument_id": {
                        "type": [
                            "string",
                            "null"
                        ],
                        "description": "Opaque stable public identifier; never an internal database key.",
                        "example": "inst_example_aapl",
                        "minLength": 1,
                        "maxLength": 128,
                        "pattern": "^[A-Za-z0-9][A-Za-z0-9_.:-]{0,127}$"
                    },
                    "open": {
                        "type": "string",
                        "pattern": "^-?[0-9]+(?:\\.[0-9]+)?$",
                        "description": "Open.",
                        "example": "224.18"
                    },
                    "high": {
                        "type": "string",
                        "pattern": "^-?[0-9]+(?:\\.[0-9]+)?$",
                        "description": "High.",
                        "example": "228.34"
                    },
                    "low": {
                        "type": "string",
                        "pattern": "^-?[0-9]+(?:\\.[0-9]+)?$",
                        "description": "Low.",
                        "example": "223.72"
                    },
                    "close": {
                        "type": "string",
                        "pattern": "^-?[0-9]+(?:\\.[0-9]+)?$",
                        "description": "Close.",
                        "example": "227.63"
                    },
                    "volume": {
                        "type": [
                            "string",
                            "null"
                        ],
                        "pattern": "^-?[0-9]+(?:\\.[0-9]+)?$",
                        "description": "Native units: whole shares for exchange listings (a source that counts fractional-share executions is rounded half up), contracts for options; for crypto pairs, US dollars traded on daily bars and coins traded on intraday bars (the provider's separate intraday aggregation, which does not add up to the daily bar); null for currency pairs, whose over-the-counter market reports no traded amount, and for indices, whose level is not traded. A US daily bar carries the consolidated tape's volume wherever that source has the session and its prices agree with the bar's, and the end-of-day provider's otherwise.",
                        "example": "1000"
                    },
                    "trade_count": {
                        "type": [
                            "integer",
                            "null"
                        ],
                        "minimum": 0,
                        "description": "Number of trades in the bar; null when no source of the bar counts them, which is not missing data. A daily bar carries the consolidated-tape source's count, with its volume, where that source has the session and its prices agree with the bar's: from the 2026-10-02 session on, for the US-listed symbols it covers. Most earlier daily bars, intraday bars, crypto and currency pairs and indices are null.",
                        "example": 1250
                    },
                    "adjustment": {
                        "type": "string",
                        "enum": [
                            "raw",
                            "split",
                            "total_return"
                        ],
                        "description": "Adjustment basis. Only raw is supported for crypto and currency pairs, indices, bonds and OTC listings. Split-adjusted and total-return prices are rounded half up to 6 decimal places and adjusted volume to whole shares.",
                        "example": "raw"
                    }
                },
                "required": [
                    "id",
                    "instrument_id",
                    "window_start",
                    "window_end",
                    "interval",
                    "session",
                    "currency_code",
                    "quote_instrument_id",
                    "open",
                    "high",
                    "low",
                    "close",
                    "volume",
                    "trade_count",
                    "adjustment"
                ]
            },
            "Trade": {
                "type": "object",
                "additionalProperties": false,
                "properties": {
                    "id": {
                        "type": "string",
                        "description": "Record identifier, stable across revisions.",
                        "example": "record_example_1"
                    },
                    "instrument_id": {
                        "type": "string",
                        "description": "Opaque stable public identifier; never an internal database key.",
                        "example": "inst_example_aapl",
                        "minLength": 1,
                        "maxLength": 128,
                        "pattern": "^[A-Za-z0-9][A-Za-z0-9_.:-]{0,127}$"
                    },
                    "event_at": {
                        "type": "string",
                        "format": "date-time",
                        "example": "2026-09-18T13:30:00.002Z",
                        "description": "Execution time as the consolidated tape reports it, to the millisecond."
                    },
                    "price": {
                        "type": "string",
                        "pattern": "^-?[0-9]+(?:\\.[0-9]+)?$",
                        "description": "Trade price in currency_code or quote instrument.",
                        "example": "227.63"
                    },
                    "currency_code": {
                        "type": [
                            "string",
                            "null"
                        ],
                        "pattern": "^[A-Z]{3}$",
                        "example": "USD",
                        "description": "ISO 4217 currency. Crypto quote assets use instrument IDs, not invented ISO codes."
                    },
                    "quote_instrument_id": {
                        "type": [
                            "string",
                            "null"
                        ],
                        "description": "Opaque stable public identifier; never an internal database key.",
                        "example": "inst_example_aapl",
                        "minLength": 1,
                        "maxLength": 128,
                        "pattern": "^[A-Za-z0-9][A-Za-z0-9_.:-]{0,127}$"
                    },
                    "size": {
                        "type": "string",
                        "pattern": "^-?[0-9]+(?:\\.[0-9]+)?$",
                        "description": "Native instrument units: shares for a stock or ETF.",
                        "example": "100"
                    },
                    "venue_mic": {
                        "type": [
                            "string",
                            "null"
                        ],
                        "description": "MIC of the executing exchange, or of the FINRA facility an off-exchange trade was reported to: FINN and FINC (the Nasdaq trade reporting facilities in Carteret and Chicago), FINY (the NYSE trade reporting facility) or XADF (the Alternative Display Facility). Null when the tape names no venue.",
                        "example": "XNAS"
                    },
                    "conditions": {
                        "type": "array",
                        "items": {
                            "type": "string",
                            "enum": [
                                "regular",
                                "cash_sale",
                                "next_day",
                                "seller",
                                "intermarket_sweep",
                                "opening_print",
                                "reopening_print",
                                "closing_print",
                                "derivatively_priced",
                                "qualified_contingent",
                                "corrected_consolidated_close",
                                "form_t",
                                "extended_hours_out_of_sequence",
                                "out_of_sequence",
                                "odd_lot",
                                "average_price",
                                "contingent",
                                "prior_reference_price",
                                "official_open",
                                "official_close",
                                "cross",
                                "price_variation",
                                "sold_last",
                                "rule_155",
                                "rule_127",
                                "acquisition",
                                "distribution",
                                "split",
                                "yellow_flag",
                                "bunched",
                                "bunched_sold",
                                "automatic_execution"
                            ],
                            "description": "Normalized sale condition code.",
                            "example": "regular"
                        },
                        "description": "Sale conditions of the trade, normalized from the consolidated tape's codes. Each code except regular (a regular-way settlement) names a sale_condition of /v1/conditions: form_t is Form T/Extended Hours, odd_lot Odd Lot Trade, intermarket_sweep Intermarket Sweep, and so on. Its update_rules say whether such a trade updates the high, low, open, close and volume."
                    },
                    "correction_of_id": {
                        "type": [
                            "string",
                            "null"
                        ],
                        "description": "Corrected trade ID.",
                        "example": "trade_previous"
                    },
                    "cancelled": {
                        "type": "boolean",
                        "example": false
                    }
                },
                "required": [
                    "id",
                    "instrument_id",
                    "event_at",
                    "price",
                    "currency_code",
                    "quote_instrument_id",
                    "size",
                    "venue_mic",
                    "conditions",
                    "correction_of_id",
                    "cancelled"
                ]
            },
            "IndicatorDefinition": {
                "type": "object",
                "additionalProperties": false,
                "properties": {
                    "id": {
                        "type": "string",
                        "description": "Indicator code.",
                        "example": "sma"
                    },
                    "name": {
                        "type": "string",
                        "description": "Indicator name.",
                        "example": "Simple moving average"
                    },
                    "description": {
                        "type": "string",
                        "description": "Calculation definition.",
                        "example": "Arithmetic mean of close prices over period bars."
                    },
                    "inputs": {
                        "type": "array",
                        "items": {
                            "type": "string",
                            "description": "Required bar fields.",
                            "example": "close"
                        }
                    },
                    "parameters": {
                        "type": "array",
                        "items": {
                            "type": "object",
                            "additionalProperties": false,
                            "properties": {
                                "name": {
                                    "type": "string",
                                    "description": "Parameter name.",
                                    "example": "period"
                                },
                                "minimum": {
                                    "type": "integer",
                                    "minimum": 0,
                                    "description": "Minimum.",
                                    "example": 1
                                },
                                "maximum": {
                                    "type": "integer",
                                    "minimum": 0,
                                    "description": "Maximum.",
                                    "example": 1000
                                },
                                "default": {
                                    "type": "integer",
                                    "minimum": 0,
                                    "description": "Default.",
                                    "example": 20
                                }
                            },
                            "required": [
                                "name",
                                "minimum",
                                "maximum",
                                "default"
                            ]
                        }
                    },
                    "outputs": {
                        "type": "array",
                        "items": {
                            "type": "string",
                            "description": "Output series name.",
                            "example": "value"
                        }
                    },
                    "warmup_bars": {
                        "type": "integer",
                        "minimum": 0,
                        "description": "Minimum preceding bars at default parameters.",
                        "example": 19
                    }
                },
                "required": [
                    "id",
                    "name",
                    "description",
                    "inputs",
                    "parameters",
                    "outputs",
                    "warmup_bars"
                ]
            },
            "IndicatorValue": {
                "type": "object",
                "additionalProperties": false,
                "properties": {
                    "id": {
                        "type": "string",
                        "description": "Record identifier, stable across revisions.",
                        "example": "record_example_1"
                    },
                    "instrument_id": {
                        "type": "string",
                        "description": "Opaque stable public identifier; never an internal database key.",
                        "example": "inst_example_aapl",
                        "minLength": 1,
                        "maxLength": 128,
                        "pattern": "^[A-Za-z0-9][A-Za-z0-9_.:-]{0,127}$"
                    },
                    "event_at": {
                        "type": "string",
                        "format": "date-time",
                        "example": "2026-09-18T20:00:00Z"
                    },
                    "indicator": {
                        "type": "string",
                        "description": "Indicator code.",
                        "example": "sma"
                    },
                    "interval": {
                        "type": "string",
                        "enum": [
                            "1d",
                            "5m",
                            "1h",
                            "1m"
                        ],
                        "description": "Source bar interval: 1d, 5m or 1h for exchange listings; 1m only for crypto and currency pairs.",
                        "example": "1d"
                    },
                    "session": {
                        "type": "string",
                        "enum": [
                            "regular",
                            "all"
                        ],
                        "description": "Source bar session: regular for exchange listings; all only for crypto and currency pairs.",
                        "example": "regular"
                    },
                    "adjustment": {
                        "type": "string",
                        "enum": [
                            "raw",
                            "split",
                            "total_return"
                        ],
                        "description": "Adjustment of the bars this value was calculated from: the one requested, or without one the listing's default.",
                        "example": "raw"
                    },
                    "parameters": {
                        "type": "object",
                        "additionalProperties": false,
                        "properties": {
                            "period": {
                                "type": [
                                    "integer",
                                    "null"
                                ],
                                "minimum": 0,
                                "description": "Lookback bars.",
                                "example": 20
                            },
                            "fast_period": {
                                "type": [
                                    "integer",
                                    "null"
                                ],
                                "minimum": 0,
                                "description": "Fast period.",
                                "example": 12
                            },
                            "slow_period": {
                                "type": [
                                    "integer",
                                    "null"
                                ],
                                "minimum": 0,
                                "description": "Slow period.",
                                "example": 26
                            },
                            "signal_period": {
                                "type": [
                                    "integer",
                                    "null"
                                ],
                                "minimum": 0,
                                "description": "Signal period.",
                                "example": 9
                            }
                        },
                        "required": [
                            "period",
                            "fast_period",
                            "slow_period",
                            "signal_period"
                        ]
                    },
                    "output": {
                        "type": "string",
                        "description": "Output name: e.g. value, signal, histogram, upper, lower.",
                        "example": "value"
                    },
                    "value": {
                        "$ref": "#/components/schemas/Measure"
                    }
                },
                "required": [
                    "id",
                    "instrument_id",
                    "event_at",
                    "indicator",
                    "interval",
                    "session",
                    "adjustment",
                    "parameters",
                    "output",
                    "value"
                ]
            },
            "EconomicSeries": {
                "type": "object",
                "additionalProperties": false,
                "properties": {
                    "id": {
                        "type": "string",
                        "description": "Stable series ID.",
                        "example": "us.cpi.all_items"
                    },
                    "name": {
                        "type": "string",
                        "description": "Series display name.",
                        "example": "US consumer price index"
                    },
                    "category": {
                        "type": "string",
                        "enum": [
                            "economy",
                            "rates",
                            "yields",
                            "credit",
                            "fx",
                            "commodity",
                            "real_estate"
                        ],
                        "description": "Economic dataset family.",
                        "example": "economy"
                    },
                    "country_code": {
                        "type": [
                            "string",
                            "null"
                        ],
                        "pattern": "^[A-Z]{2}$",
                        "example": "US"
                    },
                    "region": {
                        "type": [
                            "string",
                            "null"
                        ],
                        "description": "Geographic region.",
                        "example": "example"
                    },
                    "frequency": {
                        "type": "string",
                        "enum": [
                            "daily",
                            "weekly",
                            "monthly",
                            "quarterly",
                            "annual",
                            "irregular"
                        ],
                        "description": "Observation frequency.",
                        "example": "daily"
                    },
                    "unit": {
                        "type": "string",
                        "description": "Declared unit, including scale.",
                        "example": "index_points"
                    },
                    "currency_code": {
                        "type": [
                            "string",
                            "null"
                        ],
                        "pattern": "^[A-Z]{3}$",
                        "example": "USD",
                        "description": "ISO 4217 currency. Crypto quote assets use instrument IDs, not invented ISO codes."
                    },
                    "seasonal_adjustment": {
                        "type": "string",
                        "enum": [
                            "adjusted",
                            "unadjusted",
                            "not_applicable",
                            "unknown"
                        ],
                        "description": "Seasonal adjustment.",
                        "example": "adjusted"
                    },
                    "maturity": {
                        "type": [
                            "string",
                            "null"
                        ],
                        "description": "Tenor for yield/credit series, ISO 8601 duration.",
                        "example": "P10Y"
                    },
                    "publisher": {
                        "type": [
                            "string",
                            "null"
                        ],
                        "description": "Agency that compiles and first publishes the series.",
                        "example": "U.S. Bureau of Labor Statistics"
                    }
                },
                "required": [
                    "id",
                    "name",
                    "category",
                    "country_code",
                    "region",
                    "frequency",
                    "unit",
                    "currency_code",
                    "seasonal_adjustment",
                    "maturity",
                    "publisher"
                ]
            },
            "EconomicObservation": {
                "type": "object",
                "additionalProperties": false,
                "properties": {
                    "id": {
                        "type": "string",
                        "description": "Record identifier, stable across revisions.",
                        "example": "record_example_1"
                    },
                    "series_id": {
                        "type": "string",
                        "description": "Series ID.",
                        "example": "us.cpi.all_items"
                    },
                    "observation_date": {
                        "type": "string",
                        "format": "date",
                        "example": "2026-09-18"
                    },
                    "period_start": {
                        "type": [
                            "string",
                            "null"
                        ],
                        "format": "date",
                        "example": "2026-09-18"
                    },
                    "period_end": {
                        "type": [
                            "string",
                            "null"
                        ],
                        "format": "date",
                        "example": "2026-09-18"
                    },
                    "value": {
                        "$ref": "#/components/schemas/Measure"
                    },
                    "published_at": {
                        "type": [
                            "string",
                            "null"
                        ],
                        "format": "date-time",
                        "example": "2026-09-18T20:00:00Z"
                    },
                    "status": {
                        "type": "string",
                        "enum": [
                            "preliminary",
                            "revised",
                            "final",
                            "missing",
                            "reported"
                        ],
                        "description": "Observation status. reported: the value as the source published it, whose revision state is not established; revised: the value replaced one published earlier for the same date.",
                        "example": "preliminary"
                    }
                },
                "required": [
                    "id",
                    "series_id",
                    "observation_date",
                    "period_start",
                    "period_end",
                    "value",
                    "published_at",
                    "status"
                ]
            },
            "EconomicEvent": {
                "type": "object",
                "additionalProperties": false,
                "properties": {
                    "id": {
                        "type": "string",
                        "description": "Record identifier, stable across revisions.",
                        "example": "record_example_1"
                    },
                    "series_id": {
                        "type": [
                            "string",
                            "null"
                        ],
                        "description": "Associated series ID from economic/series. Null when the release is not linked to a published series; the current calendar source links none, so it is null on every event.",
                        "example": "us.cpi.all_items"
                    },
                    "name": {
                        "type": "string",
                        "description": "Release name.",
                        "example": "Consumer price index"
                    },
                    "country_code": {
                        "type": "string",
                        "pattern": "^[A-Z]{2}$",
                        "example": "US"
                    },
                    "release_date": {
                        "type": "string",
                        "format": "date",
                        "example": "2026-09-18",
                        "description": "UTC date of the scheduled release; a release early in the morning in Asia falls on the previous UTC date."
                    },
                    "scheduled_at": {
                        "type": [
                            "string",
                            "null"
                        ],
                        "format": "date-time",
                        "example": "2026-09-18T20:00:00Z",
                        "description": "Instant the release is scheduled for, in UTC. Null for an entry the source lists without a time of day (elections, meetings, some auctions)."
                    },
                    "released_at": {
                        "type": [
                            "string",
                            "null"
                        ],
                        "format": "date-time",
                        "example": "2026-09-18T20:00:00Z",
                        "description": "Instant the figure was actually released. The connected source does not report it: always null. status tells whether the actual value has arrived."
                    },
                    "reference_period": {
                        "type": [
                            "string",
                            "null"
                        ],
                        "description": "Source reference period.",
                        "example": "2026-08"
                    },
                    "importance": {
                        "type": "string",
                        "enum": [
                            "low",
                            "medium",
                            "high",
                            "unknown"
                        ],
                        "description": "Source-assigned importance. The connected source assigns none: always unknown.",
                        "example": "low"
                    },
                    "actual": {
                        "$ref": "#/components/schemas/Measure"
                    },
                    "forecast": {
                        "$ref": "#/components/schemas/Measure"
                    },
                    "previous": {
                        "$ref": "#/components/schemas/Measure"
                    },
                    "revised_previous": {
                        "$ref": "#/components/schemas/Measure"
                    },
                    "status": {
                        "type": "string",
                        "enum": [
                            "scheduled",
                            "released",
                            "postponed",
                            "cancelled"
                        ],
                        "description": "Release status: released once the source reports an actual value, otherwise scheduled, including past entries that carry no figure (speeches, meetings); the connected source reports no postponed or cancelled releases.",
                        "example": "scheduled"
                    }
                },
                "required": [
                    "id",
                    "series_id",
                    "name",
                    "country_code",
                    "release_date",
                    "scheduled_at",
                    "released_at",
                    "reference_period",
                    "importance",
                    "actual",
                    "forecast",
                    "previous",
                    "revised_previous",
                    "status"
                ]
            },
            "Ipo": {
                "type": "object",
                "additionalProperties": false,
                "properties": {
                    "id": {
                        "type": "string",
                        "description": "Record identifier, stable across revisions.",
                        "example": "record_example_1"
                    },
                    "company_id": {
                        "type": [
                            "string",
                            "null"
                        ],
                        "description": "Opaque stable public identifier; never an internal database key.",
                        "example": "company_example_apple",
                        "minLength": 1,
                        "maxLength": 128,
                        "pattern": "^[A-Za-z0-9][A-Za-z0-9_.:-]{0,127}$"
                    },
                    "company_name": {
                        "type": "string",
                        "description": "Issuer name.",
                        "example": "example"
                    },
                    "instrument_id": {
                        "type": [
                            "string",
                            "null"
                        ],
                        "description": "Opaque stable public identifier; never an internal database key.",
                        "example": "inst_example_aapl",
                        "minLength": 1,
                        "maxLength": 128,
                        "pattern": "^[A-Za-z0-9][A-Za-z0-9_.:-]{0,127}$"
                    },
                    "expected_symbol": {
                        "type": [
                            "string",
                            "null"
                        ],
                        "description": "Expected MIC:TICKER.",
                        "example": "XNAS:EXAMPLE"
                    },
                    "exchange_mic": {
                        "type": [
                            "string",
                            "null"
                        ],
                        "description": "Expected listing MIC.",
                        "example": "XNAS"
                    },
                    "listing_date": {
                        "type": "string",
                        "format": "date",
                        "example": "2026-09-18"
                    },
                    "status": {
                        "type": "string",
                        "enum": [
                            "expected",
                            "priced",
                            "listed",
                            "postponed",
                            "withdrawn"
                        ],
                        "description": "Offering status.",
                        "example": "expected"
                    },
                    "price_low": {
                        "anyOf": [
                            {
                                "$ref": "#/components/schemas/Money"
                            },
                            {
                                "type": "null"
                            }
                        ]
                    },
                    "price_high": {
                        "anyOf": [
                            {
                                "$ref": "#/components/schemas/Money"
                            },
                            {
                                "type": "null"
                            }
                        ]
                    },
                    "offer_price": {
                        "anyOf": [
                            {
                                "$ref": "#/components/schemas/Money"
                            },
                            {
                                "type": "null"
                            }
                        ]
                    },
                    "shares_offered": {
                        "type": [
                            "string",
                            "null"
                        ],
                        "pattern": "^-?[0-9]+(?:\\.[0-9]+)?$",
                        "description": "Offered shares.",
                        "example": "10000000"
                    }
                },
                "required": [
                    "id",
                    "company_id",
                    "company_name",
                    "instrument_id",
                    "expected_symbol",
                    "exchange_mic",
                    "listing_date",
                    "status",
                    "price_low",
                    "price_high",
                    "offer_price",
                    "shares_offered"
                ]
            },
            "FilingSection": {
                "type": "object",
                "additionalProperties": false,
                "properties": {
                    "id": {
                        "type": "string",
                        "description": "Record identifier, stable across revisions.",
                        "example": "record_example_1"
                    },
                    "filing_id": {
                        "type": "string",
                        "description": "SEC accession number of the filing.",
                        "example": "0000320193-24-000123"
                    },
                    "code": {
                        "type": "string",
                        "description": "Regulator section/item code.",
                        "example": "2.02"
                    },
                    "title": {
                        "type": "string",
                        "description": "Section title.",
                        "example": "Results of Operations"
                    },
                    "text": {
                        "type": "string",
                        "description": "Plain text; no executable markup.",
                        "example": "Example filing text."
                    },
                    "truncated": {
                        "type": "boolean",
                        "description": "True when text was cut at the stored size limit; the full section is in the filing on SEC EDGAR.",
                        "example": false
                    },
                    "order": {
                        "type": "integer",
                        "minimum": 0,
                        "description": "Document order.",
                        "example": 1
                    }
                },
                "required": [
                    "id",
                    "filing_id",
                    "code",
                    "title",
                    "text",
                    "truncated",
                    "order"
                ]
            },
            "FilingExhibit": {
                "type": "object",
                "additionalProperties": false,
                "properties": {
                    "id": {
                        "type": "string",
                        "description": "Record identifier, stable across revisions.",
                        "example": "record_example_1"
                    },
                    "filing_id": {
                        "type": "string",
                        "description": "SEC accession number of the filing.",
                        "example": "0000320193-24-000123"
                    },
                    "number": {
                        "type": "string",
                        "description": "Exhibit number.",
                        "example": "99.1"
                    },
                    "description": {
                        "type": "string",
                        "description": "Exhibit description.",
                        "example": "Earnings release"
                    },
                    "url": {
                        "type": "string",
                        "format": "uri",
                        "example": "https://example.com/filings/exhibit"
                    },
                    "media_type": {
                        "type": "string",
                        "description": "MIME type.",
                        "example": "text/html"
                    }
                },
                "required": [
                    "id",
                    "filing_id",
                    "number",
                    "description",
                    "url",
                    "media_type"
                ]
            },
            "EsgRating": {
                "type": "object",
                "additionalProperties": false,
                "properties": {
                    "id": {
                        "type": "string",
                        "description": "Record identifier, stable across revisions.",
                        "example": "record_example_1"
                    },
                    "instrument_id": {
                        "type": "string",
                        "description": "Opaque stable public identifier; never an internal database key.",
                        "example": "inst_example_aapl",
                        "minLength": 1,
                        "maxLength": 128,
                        "pattern": "^[A-Za-z0-9][A-Za-z0-9_.:-]{0,127}$"
                    },
                    "observed_on": {
                        "type": "string",
                        "format": "date",
                        "example": "2026-09-18"
                    },
                    "overall": {
                        "type": [
                            "string",
                            "null"
                        ],
                        "pattern": "^-?[0-9]+(?:\\.[0-9]+)?$",
                        "description": "Provider score.",
                        "example": "75"
                    },
                    "environmental": {
                        "type": [
                            "string",
                            "null"
                        ],
                        "pattern": "^-?[0-9]+(?:\\.[0-9]+)?$",
                        "description": "Environmental score.",
                        "example": "70"
                    },
                    "social": {
                        "type": [
                            "string",
                            "null"
                        ],
                        "pattern": "^-?[0-9]+(?:\\.[0-9]+)?$",
                        "description": "Social score.",
                        "example": "80"
                    },
                    "governance": {
                        "type": [
                            "string",
                            "null"
                        ],
                        "pattern": "^-?[0-9]+(?:\\.[0-9]+)?$",
                        "description": "Governance score.",
                        "example": "75"
                    },
                    "scale_min": {
                        "type": "string",
                        "pattern": "^-?[0-9]+(?:\\.[0-9]+)?$",
                        "description": "Minimum score.",
                        "example": "0"
                    },
                    "scale_max": {
                        "type": "string",
                        "pattern": "^-?[0-9]+(?:\\.[0-9]+)?$",
                        "description": "Maximum score.",
                        "example": "100"
                    },
                    "higher_is_better": {
                        "type": "boolean",
                        "example": true
                    }
                },
                "required": [
                    "id",
                    "instrument_id",
                    "observed_on",
                    "overall",
                    "environmental",
                    "social",
                    "governance",
                    "scale_min",
                    "scale_max",
                    "higher_is_better"
                ]
            },
            "RiskAnalytics": {
                "type": "object",
                "additionalProperties": false,
                "properties": {
                    "id": {
                        "type": "string",
                        "description": "Record identifier, stable across revisions.",
                        "example": "record_example_1"
                    },
                    "instrument_id": {
                        "type": "string",
                        "description": "Opaque stable public identifier; never an internal database key.",
                        "example": "inst_example_aapl",
                        "minLength": 1,
                        "maxLength": 128,
                        "pattern": "^[A-Za-z0-9][A-Za-z0-9_.:-]{0,127}$"
                    },
                    "observed_on": {
                        "type": "string",
                        "format": "date",
                        "example": "2026-09-18"
                    },
                    "window_start": {
                        "type": "string",
                        "format": "date",
                        "example": "2026-09-18"
                    },
                    "window_end": {
                        "type": "string",
                        "format": "date",
                        "example": "2026-09-18"
                    },
                    "benchmark_instrument_id": {
                        "type": [
                            "string",
                            "null"
                        ],
                        "description": "Opaque stable public identifier; never an internal database key.",
                        "example": "inst_example_aapl",
                        "minLength": 1,
                        "maxLength": 128,
                        "pattern": "^[A-Za-z0-9][A-Za-z0-9_.:-]{0,127}$"
                    },
                    "annualized_volatility": {
                        "type": [
                            "string",
                            "null"
                        ],
                        "pattern": "^-?[0-9]+(?:\\.[0-9]+)?$",
                        "description": "Dimensionless ratio; 0.05 means 5%.",
                        "example": "0.05"
                    },
                    "maximum_drawdown": {
                        "type": [
                            "string",
                            "null"
                        ],
                        "pattern": "^-?[0-9]+(?:\\.[0-9]+)?$",
                        "description": "Signed peak-to-trough return, between -1 and 0.",
                        "example": "-0.2"
                    },
                    "sharpe_ratio": {
                        "type": [
                            "string",
                            "null"
                        ],
                        "pattern": "^-?[0-9]+(?:\\.[0-9]+)?$",
                        "description": "Annualized excess return / annualized volatility.",
                        "example": "1.1"
                    },
                    "beta": {
                        "type": [
                            "string",
                            "null"
                        ],
                        "pattern": "^-?[0-9]+(?:\\.[0-9]+)?$",
                        "description": "Beta against the stated benchmark.",
                        "example": "0.95"
                    },
                    "total_return": {
                        "type": [
                            "string",
                            "null"
                        ],
                        "pattern": "^-?[0-9]+(?:\\.[0-9]+)?$",
                        "description": "Dimensionless ratio; 0.05 means 5%.",
                        "example": "0.05"
                    },
                    "risk_score": {
                        "type": [
                            "string",
                            "null"
                        ],
                        "pattern": "^-?[0-9]+(?:\\.[0-9]+)?$",
                        "description": "Provider-specific score; null for OHLC's computed analytics.",
                        "example": "3"
                    },
                    "score_scale_min": {
                        "type": [
                            "string",
                            "null"
                        ],
                        "pattern": "^-?[0-9]+(?:\\.[0-9]+)?$",
                        "description": "Provider score minimum.",
                        "example": "1"
                    },
                    "score_scale_max": {
                        "type": [
                            "string",
                            "null"
                        ],
                        "pattern": "^-?[0-9]+(?:\\.[0-9]+)?$",
                        "description": "Provider score maximum.",
                        "example": "5"
                    }
                },
                "required": [
                    "id",
                    "instrument_id",
                    "observed_on",
                    "window_start",
                    "window_end",
                    "benchmark_instrument_id",
                    "annualized_volatility",
                    "maximum_drawdown",
                    "sharpe_ratio",
                    "beta",
                    "total_return",
                    "risk_score",
                    "score_scale_min",
                    "score_scale_max"
                ]
            },
            "CongressionalTrade": {
                "type": "object",
                "additionalProperties": false,
                "properties": {
                    "id": {
                        "type": "string",
                        "description": "Record identifier, stable across revisions.",
                        "example": "record_example_1"
                    },
                    "official_id": {
                        "type": "string",
                        "description": "Stable identifier of the member: the Biographical Directory of the U.S. Congress (Bioguide) ID when one is known, otherwise chamber:surname-forename from the name as filed.",
                        "example": "S000250"
                    },
                    "bioguide_id": {
                        "type": [
                            "string",
                            "null"
                        ],
                        "description": "Bioguide ID of the member, as the report names it or as another report from the same chamber names a member of the same name; null when none does.",
                        "example": "S000250"
                    },
                    "official_name": {
                        "type": "string",
                        "description": "Member name as filed.",
                        "example": "Pete Sessions"
                    },
                    "chamber": {
                        "type": "string",
                        "enum": [
                            "house",
                            "senate"
                        ],
                        "description": "US chamber.",
                        "example": "house"
                    },
                    "state": {
                        "type": [
                            "string",
                            "null"
                        ],
                        "pattern": "^[A-Z]{2}$",
                        "example": "TX",
                        "description": "Two-letter USPS code of the state or territory a representative serves; null when the report does not state it, as Senate reports do not."
                    },
                    "district": {
                        "type": [
                            "integer",
                            "null"
                        ],
                        "minimum": 0,
                        "description": "Congressional district a representative serves; null for senators and when not stated.",
                        "example": 17
                    },
                    "owner": {
                        "type": "string",
                        "enum": [
                            "self",
                            "spouse",
                            "dependent",
                            "joint",
                            "unknown"
                        ],
                        "description": "Reported owner: the member, the spouse, a dependent child, jointly held, or not stated.",
                        "example": "self"
                    },
                    "instrument": {
                        "anyOf": [
                            {
                                "$ref": "#/components/schemas/InstrumentLink"
                            },
                            {
                                "type": "null"
                            }
                        ]
                    },
                    "company_id": {
                        "type": [
                            "string",
                            "null"
                        ],
                        "description": "Issuer of the linked instrument; null when instrument is null.",
                        "example": "company_example_apple",
                        "minLength": 1,
                        "maxLength": 128,
                        "pattern": "^[A-Za-z0-9][A-Za-z0-9_.:-]{0,127}$"
                    },
                    "asset_description": {
                        "type": "string",
                        "description": "Original asset description as filed.",
                        "example": "International Business Machines"
                    },
                    "asset_type": {
                        "type": "string",
                        "enum": [
                            "stock",
                            "stock_option",
                            "bond",
                            "other"
                        ],
                        "description": "Reported asset class. Exchange-traded and mutual funds are reported as stock; other covers private funds, partnerships and assets the report does not classify.",
                        "example": "stock"
                    },
                    "transaction_date": {
                        "type": "string",
                        "format": "date",
                        "example": "2026-09-18"
                    },
                    "disclosed_on": {
                        "type": "string",
                        "format": "date",
                        "example": "2026-09-18",
                        "description": "Date the report was filed, when the transaction became public."
                    },
                    "disclosure_delay_days": {
                        "type": [
                            "integer",
                            "null"
                        ],
                        "minimum": 0,
                        "description": "Calendar days from transaction_date to disclosed_on; the STOCK Act allows 45. Null when the filed transaction date follows the disclosure.",
                        "example": 21
                    },
                    "type": {
                        "type": "string",
                        "enum": [
                            "purchase",
                            "sale",
                            "exchange",
                            "other"
                        ],
                        "description": "Reported transaction type; partial sales are sale.",
                        "example": "purchase"
                    },
                    "amount_min": {
                        "anyOf": [
                            {
                                "$ref": "#/components/schemas/Money"
                            },
                            {
                                "type": "null"
                            }
                        ]
                    },
                    "amount_max": {
                        "anyOf": [
                            {
                                "$ref": "#/components/schemas/Money"
                            },
                            {
                                "type": "null"
                            }
                        ]
                    },
                    "comment": {
                        "type": [
                            "string",
                            "null"
                        ],
                        "description": "Free-text note filed with the transaction.",
                        "example": "Dividend reinvestment"
                    }
                },
                "required": [
                    "id",
                    "official_id",
                    "bioguide_id",
                    "official_name",
                    "chamber",
                    "state",
                    "district",
                    "owner",
                    "instrument",
                    "company_id",
                    "asset_description",
                    "asset_type",
                    "transaction_date",
                    "disclosed_on",
                    "disclosure_delay_days",
                    "type",
                    "amount_min",
                    "amount_max",
                    "comment"
                ]
            },
            "SanctionedEntity": {
                "type": "object",
                "additionalProperties": false,
                "properties": {
                    "id": {
                        "type": "string",
                        "description": "Record identifier, stable across revisions.",
                        "example": "record_example_1"
                    },
                    "name": {
                        "type": "string",
                        "description": "Listed name.",
                        "example": "example"
                    },
                    "entity_type": {
                        "type": "string",
                        "enum": [
                            "person",
                            "organization",
                            "vessel",
                            "aircraft"
                        ],
                        "description": "Listed entity type.",
                        "example": "person"
                    },
                    "aliases": {
                        "type": "array",
                        "items": {
                            "type": "string",
                            "description": "Alias.",
                            "example": "example"
                        }
                    },
                    "countries": {
                        "type": "array",
                        "items": {
                            "type": "string",
                            "pattern": "^[A-Z]{2}$",
                            "example": "US"
                        }
                    },
                    "programs": {
                        "type": "array",
                        "items": {
                            "type": "string",
                            "description": "Sanctions program.",
                            "example": "example"
                        }
                    },
                    "identifiers": {
                        "type": "array",
                        "items": {
                            "type": "object",
                            "additionalProperties": false,
                            "properties": {
                                "type": {
                                    "type": "string",
                                    "description": "Identifier namespace.",
                                    "example": "imo"
                                },
                                "value": {
                                    "type": "string",
                                    "description": "Identifier value.",
                                    "example": "1234567"
                                }
                            },
                            "required": [
                                "type",
                                "value"
                            ]
                        }
                    },
                    "listed_on": {
                        "type": [
                            "string",
                            "null"
                        ],
                        "format": "date",
                        "example": "2026-09-18"
                    },
                    "removed_on": {
                        "type": [
                            "string",
                            "null"
                        ],
                        "format": "date",
                        "example": "2026-09-18"
                    },
                    "status": {
                        "type": "string",
                        "enum": [
                            "active",
                            "removed"
                        ],
                        "description": "List membership status; a name match alone does not establish identity.",
                        "example": "active"
                    }
                },
                "required": [
                    "id",
                    "name",
                    "entity_type",
                    "aliases",
                    "countries",
                    "programs",
                    "identifiers",
                    "listed_on",
                    "removed_on",
                    "status"
                ]
            },
            "Dataset": {
                "type": "object",
                "additionalProperties": false,
                "properties": {
                    "id": {
                        "type": "string",
                        "description": "Dataset slug.",
                        "example": "news"
                    },
                    "name": {
                        "type": "string",
                        "description": "Dataset name.",
                        "example": "Financial news"
                    },
                    "description": {
                        "type": "string",
                        "description": "Scope.",
                        "example": "example"
                    },
                    "resource_paths": {
                        "type": "array",
                        "items": {
                            "type": "string",
                            "description": "REST collection path.",
                            "example": "/v1/news"
                        }
                    },
                    "implementation_status": {
                        "type": "string",
                        "enum": [
                            "planned",
                            "implemented"
                        ],
                        "description": "planned: no data source is connected yet, so the dataset's endpoints return 501 dataset-unavailable and its description starts with \"Not yet available\" (x-availability unavailable in the contract). implemented: a source is connected; availability reports readiness for this account.",
                        "example": "planned"
                    },
                    "availability": {
                        "type": "string",
                        "enum": [
                            "unavailable",
                            "partial",
                            "ready"
                        ],
                        "description": "Delivery readiness for this account.",
                        "example": "unavailable"
                    },
                    "supports_point_in_time": {
                        "type": "boolean",
                        "example": false
                    },
                    "earliest_as_of": {
                        "type": [
                            "string",
                            "null"
                        ],
                        "format": "date",
                        "example": "2026-09-23",
                        "description": "First UTC date as_of can name for this dataset and key: the day its knowledge history starts. An earlier as_of returns 422 point-in-time-unavailable naming this date. Null when the dataset keeps no knowledge history or has nothing published."
                    },
                    "filters": {
                        "type": "array",
                        "items": {
                            "type": "string",
                            "description": "Request parameter the dataset's endpoint takes: every query or path parameter, or for the screener the members of its JSON body. Any other name returns 422.",
                            "example": "topics"
                        }
                    },
                    "capability": {
                        "type": "string",
                        "description": "Required capability.",
                        "example": "news.read"
                    }
                },
                "required": [
                    "id",
                    "name",
                    "description",
                    "resource_paths",
                    "implementation_status",
                    "availability",
                    "supports_point_in_time",
                    "earliest_as_of",
                    "filters",
                    "capability"
                ]
            },
            "DatasetCoverage": {
                "type": "object",
                "additionalProperties": false,
                "properties": {
                    "dataset": {
                        "type": "string",
                        "description": "Dataset slug.",
                        "example": "news"
                    },
                    "asset_type": {
                        "type": [
                            "string",
                            "null"
                        ],
                        "enum": [
                            "equity",
                            "etf",
                            "mutual_fund",
                            "index",
                            "bond",
                            "option",
                            "forex",
                            "crypto",
                            "commodity",
                            null
                        ],
                        "description": "Asset type when applicable.",
                        "example": "equity"
                    },
                    "exchange_mic": {
                        "type": [
                            "string",
                            "null"
                        ],
                        "description": "MIC if applicable.",
                        "example": "XNAS"
                    },
                    "country_code": {
                        "type": [
                            "string",
                            "null"
                        ],
                        "pattern": "^[A-Z]{2}$",
                        "example": "US"
                    },
                    "instrument_id": {
                        "type": [
                            "string",
                            "null"
                        ],
                        "description": "Opaque stable public identifier; never an internal database key.",
                        "example": "inst_example_aapl",
                        "minLength": 1,
                        "maxLength": 128,
                        "pattern": "^[A-Za-z0-9][A-Za-z0-9_.:-]{0,127}$"
                    },
                    "series_id": {
                        "type": [
                            "string",
                            "null"
                        ],
                        "description": "Series identifier.",
                        "example": "example"
                    },
                    "history_from": {
                        "type": [
                            "string",
                            "null"
                        ],
                        "format": "date",
                        "example": "2026-09-18",
                        "description": "First date of the scope's history, where known. For calendar, the first exchange-local date /v1/calendar answers for the exchange."
                    },
                    "history_to": {
                        "type": [
                            "string",
                            "null"
                        ],
                        "format": "date",
                        "example": "2026-09-18",
                        "description": "Last date of the scope's history, where known. For calendar, the last exchange-local date /v1/calendar answers for the exchange, which is ahead of today; null for a venue that trades continuously, whose calendar has no last date."
                    },
                    "knowledge_from": {
                        "type": [
                            "string",
                            "null"
                        ],
                        "format": "date-time",
                        "example": "2026-09-18T20:00:00Z"
                    },
                    "latest_event_at": {
                        "type": [
                            "string",
                            "null"
                        ],
                        "format": "date-time",
                        "example": "2026-09-18T20:00:00Z"
                    },
                    "checked_at": {
                        "type": "string",
                        "format": "date-time",
                        "example": "2026-09-18T20:00:00Z"
                    },
                    "status": {
                        "type": "string",
                        "enum": [
                            "unavailable",
                            "partial",
                            "ready"
                        ],
                        "description": "Readiness for this scope.",
                        "example": "unavailable"
                    },
                    "reason": {
                        "type": [
                            "string",
                            "null"
                        ],
                        "description": "Coverage limitation.",
                        "example": "example"
                    },
                    "delay_seconds": {
                        "type": [
                            "integer",
                            "null"
                        ],
                        "minimum": 0,
                        "description": "Expected delivery delay.",
                        "example": 1
                    },
                    "intervals": {
                        "type": "array",
                        "items": {
                            "type": "string",
                            "description": "Supported bar intervals.",
                            "example": "1d"
                        }
                    },
                    "gaps": {
                        "type": [
                            "object",
                            "null"
                        ],
                        "additionalProperties": false,
                        "properties": {
                            "count": {
                                "type": "integer",
                                "minimum": 0,
                                "description": "Runs of consecutive open sessions with no bar between history_from and history_to.",
                                "example": 1
                            },
                            "missing_sessions": {
                                "type": "integer",
                                "minimum": 0,
                                "description": "Open sessions with no bar between history_from and history_to.",
                                "example": 2040
                            },
                            "largest": {
                                "type": [
                                    "object",
                                    "null"
                                ],
                                "additionalProperties": false,
                                "properties": {
                                    "from": {
                                        "type": "string",
                                        "format": "date",
                                        "example": "2018-08-16"
                                    },
                                    "to": {
                                        "type": "string",
                                        "format": "date",
                                        "example": "2026-09-21"
                                    },
                                    "sessions": {
                                        "type": "integer",
                                        "minimum": 0,
                                        "description": "Open sessions the gap spans.",
                                        "example": 2040
                                    }
                                },
                                "required": [
                                    "from",
                                    "to",
                                    "sessions"
                                ],
                                "description": "The longest gap; null when there is none."
                            }
                        },
                        "required": [
                            "count",
                            "missing_sessions",
                            "largest"
                        ],
                        "description": "Interior gaps in end-of-day history: open exchange sessions between the first and last bar that have no bar. Measured for eod (and bars served from it) per instrument; null for other datasets and scopes, and for an instrument whose gaps the request had no time left to measure (its reason says so; measurements are cached, so repeating the request reports them)."
                    }
                },
                "required": [
                    "dataset",
                    "asset_type",
                    "exchange_mic",
                    "country_code",
                    "instrument_id",
                    "series_id",
                    "history_from",
                    "history_to",
                    "knowledge_from",
                    "latest_event_at",
                    "checked_at",
                    "status",
                    "reason",
                    "delay_seconds",
                    "intervals",
                    "gaps"
                ]
            },
            "CryptoAsset": {
                "type": "object",
                "additionalProperties": false,
                "properties": {
                    "id": {
                        "type": "string",
                        "description": "Record identifier, stable across revisions.",
                        "example": "record_example_1"
                    },
                    "instrument_id": {
                        "type": "string",
                        "description": "Opaque stable public identifier; never an internal database key.",
                        "example": "inst_example_aapl",
                        "minLength": 1,
                        "maxLength": 128,
                        "pattern": "^[A-Za-z0-9][A-Za-z0-9_.:-]{0,127}$"
                    },
                    "name": {
                        "type": "string",
                        "description": "Asset name.",
                        "example": "Example Coin"
                    },
                    "code": {
                        "type": "string",
                        "description": "Native asset code.",
                        "example": "EXC"
                    },
                    "network": {
                        "type": [
                            "string",
                            "null"
                        ],
                        "description": "Name of the network a token is issued on (Ethereum for an ERC-20 token); null for a coin native to its own chain and where no source names one.",
                        "example": "Example Network"
                    },
                    "contract_address": {
                        "type": [
                            "string",
                            "null"
                        ],
                        "description": "Contract address of the token on network; null for a native coin and where no source gives one.",
                        "example": "example"
                    },
                    "website_url": {
                        "type": [
                            "string",
                            "null"
                        ],
                        "format": "uri",
                        "example": "https://example.com"
                    },
                    "whitepaper_url": {
                        "type": [
                            "string",
                            "null"
                        ],
                        "format": "uri",
                        "example": "https://example.com/whitepaper"
                    },
                    "circulating_supply": {
                        "type": [
                            "string",
                            "null"
                        ],
                        "pattern": "^-?[0-9]+(?:\\.[0-9]+)?$",
                        "description": "Circulating native units; null when the source reports no circulating supply (or zero) for the asset.",
                        "example": "20000000"
                    },
                    "total_supply": {
                        "type": [
                            "string",
                            "null"
                        ],
                        "pattern": "^-?[0-9]+(?:\\.[0-9]+)?$",
                        "description": "Total issued native units.",
                        "example": "20000000"
                    },
                    "max_supply": {
                        "type": [
                            "string",
                            "null"
                        ],
                        "pattern": "^-?[0-9]+(?:\\.[0-9]+)?$",
                        "description": "Maximum supply; null if unknown or unbounded.",
                        "example": "21000000"
                    },
                    "market_cap": {
                        "type": [
                            "string",
                            "null"
                        ],
                        "pattern": "^-?[0-9]+(?:\\.[0-9]+)?$",
                        "description": "Market capitalization in US dollars on observed_on: circulating supply at the USD price. Between a source's reads OHLC carries it to each day's close, the supply as last read.",
                        "example": "1727580677399.2"
                    },
                    "fully_diluted_market_cap": {
                        "type": [
                            "string",
                            "null"
                        ],
                        "pattern": "^-?[0-9]+(?:\\.[0-9]+)?$",
                        "description": "Market capitalization in US dollars on observed_on if the maximum (else total) supply were circulating.",
                        "example": "1805628720913.8"
                    },
                    "observed_on": {
                        "type": "string",
                        "format": "date",
                        "example": "2026-09-18"
                    }
                },
                "required": [
                    "id",
                    "instrument_id",
                    "name",
                    "code",
                    "network",
                    "contract_address",
                    "website_url",
                    "whitepaper_url",
                    "circulating_supply",
                    "total_supply",
                    "max_supply",
                    "market_cap",
                    "fully_diluted_market_cap",
                    "observed_on"
                ]
            },
            "ScreenMatch": {
                "type": "object",
                "additionalProperties": false,
                "properties": {
                    "instrument": {
                        "$ref": "#/components/schemas/InstrumentLink"
                    },
                    "company_id": {
                        "type": [
                            "string",
                            "null"
                        ],
                        "description": "Opaque stable public identifier; never an internal database key.",
                        "example": "company_example_apple",
                        "minLength": 1,
                        "maxLength": 128,
                        "pattern": "^[A-Za-z0-9][A-Za-z0-9_.:-]{0,127}$"
                    },
                    "observed_at": {
                        "type": "string",
                        "format": "date-time",
                        "example": "2026-09-18T20:00:00Z"
                    },
                    "values": {
                        "type": "array",
                        "items": {
                            "type": "object",
                            "additionalProperties": false,
                            "properties": {
                                "field": {
                                    "type": "string",
                                    "description": "Requested filter/sort field.",
                                    "example": "market_capitalization"
                                },
                                "value": {
                                    "$ref": "#/components/schemas/Measure"
                                }
                            },
                            "required": [
                                "field",
                                "value"
                            ]
                        }
                    },
                    "classifications": {
                        "type": "array",
                        "items": {
                            "type": "object",
                            "additionalProperties": false,
                            "properties": {
                                "field": {
                                    "type": "string",
                                    "description": "Categorical filter field.",
                                    "example": "sector"
                                },
                                "value": {
                                    "type": "string",
                                    "description": "Category.",
                                    "example": "Technology"
                                }
                            },
                            "required": [
                                "field",
                                "value"
                            ]
                        }
                    }
                },
                "required": [
                    "instrument",
                    "company_id",
                    "observed_at",
                    "values",
                    "classifications"
                ]
            },
            "ScreenRequest": {
                "type": "object",
                "additionalProperties": false,
                "required": [
                    "filters"
                ],
                "properties": {
                    "filters": {
                        "type": "array",
                        "minItems": 1,
                        "maxItems": 20,
                        "items": {
                            "$ref": "#/components/schemas/ScreenFilter"
                        },
                        "description": "All conditions are ANDed. Set values are ORed. Missing field values never match, including not_in."
                    },
                    "currency_code": {
                        "type": "string",
                        "pattern": "^[A-Z]{3}$",
                        "example": "USD",
                        "description": "Currency for market-capitalization and close comparisons; the materialized screener currently supports USD only and rejects other currencies with 422. Amounts in other currencies are not converted and are absent from the snapshot, so listings quoted outside US dollars (Toronto, London, Paris, Amsterdam, the ASX, most currency pairs and indices) have no close, market_capitalization or enterprise_value to match or sort on; their ratios, percentages and volume remain.",
                        "default": "USD"
                    },
                    "as_of": {
                        "type": "string",
                        "format": "date-time",
                        "example": "2026-09-18T20:00:00Z",
                        "description": "Knowledge cutoff as an RFC 3339 instant with a timezone; up to nine fractional-second digits are accepted and read to the microsecond. Defaults to now. An instant more than a minute in the future returns 422 invalid-date, and one before the earliest snapshot kept returns 422 point-in-time-unavailable naming the earliest available as_of."
                    },
                    "sort": {
                        "type": "object",
                        "additionalProperties": false,
                        "properties": {
                            "field": {
                                "type": "string",
                                "enum": [
                                    "market_capitalization",
                                    "pe_ratio",
                                    "dividend_yield",
                                    "revenue_growth",
                                    "volume",
                                    "close",
                                    "change_percent",
                                    "forward_dividend_yield",
                                    "price_to_book",
                                    "profit_margin",
                                    "return_on_equity",
                                    "payout_ratio",
                                    "enterprise_value"
                                ],
                                "description": "Sort field.",
                                "example": "market_capitalization"
                            },
                            "direction": {
                                "type": "string",
                                "enum": [
                                    "asc",
                                    "desc"
                                ],
                                "description": "Direction; instrument ID ascending breaks ties. Matches without the sort field (an ETF, an index or a crypto or currency pair has no market_capitalization) come after those that have it, in instrument ID order, in either direction.",
                                "example": "asc"
                            }
                        },
                        "required": [
                            "field",
                            "direction"
                        ],
                        "default": {
                            "field": "market_capitalization",
                            "direction": "desc"
                        }
                    },
                    "limit": {
                        "type": "integer",
                        "minimum": 1,
                        "maximum": 500,
                        "default": 100
                    },
                    "cursor": {
                        "type": "string",
                        "maxLength": 4096
                    }
                }
            },
            "ScreenFilter": {
                "oneOf": [
                    {
                        "type": "object",
                        "additionalProperties": false,
                        "properties": {
                            "field": {
                                "type": "string",
                                "enum": [
                                    "market_capitalization",
                                    "pe_ratio",
                                    "dividend_yield",
                                    "revenue_growth",
                                    "volume",
                                    "close",
                                    "change_percent",
                                    "forward_dividend_yield",
                                    "price_to_book",
                                    "profit_margin",
                                    "return_on_equity",
                                    "payout_ratio",
                                    "enterprise_value"
                                ],
                                "description": "Numeric screening field. close, volume and change_percent (percent change from the previous session close; absent for a crypto pair whose session had no volume, since its close is a stale level rather than a trade) come from the latest completed daily bar; the others are the latest financials/metrics value of the same name.",
                                "example": "market_capitalization"
                            },
                            "operator": {
                                "type": "string",
                                "enum": [
                                    "gt",
                                    "gte",
                                    "lt",
                                    "lte",
                                    "eq"
                                ],
                                "description": "Numeric comparison.",
                                "example": "gt"
                            },
                            "value": {
                                "type": "string",
                                "pattern": "^-?[0-9]+(?:\\.[0-9]+)?$",
                                "description": "Comparison value in the field unit.",
                                "example": "1000000000"
                            }
                        },
                        "required": [
                            "field",
                            "operator",
                            "value"
                        ]
                    },
                    {
                        "type": "object",
                        "additionalProperties": false,
                        "properties": {
                            "field": {
                                "type": "string",
                                "enum": [
                                    "sector",
                                    "industry",
                                    "country",
                                    "exchange",
                                    "asset_type"
                                ],
                                "description": "Categorical screening field.",
                                "example": "sector"
                            },
                            "operator": {
                                "type": "string",
                                "enum": [
                                    "in",
                                    "not_in"
                                ],
                                "description": "Set comparison.",
                                "example": "in"
                            },
                            "values": {
                                "type": "array",
                                "minItems": 1,
                                "maxItems": 100,
                                "uniqueItems": true,
                                "items": {
                                    "type": "string",
                                    "description": "Exact normalized category.",
                                    "example": "Technology"
                                }
                            }
                        },
                        "required": [
                            "field",
                            "operator",
                            "values"
                        ]
                    }
                ]
            },
            "ShortVolume": {
                "type": "object",
                "additionalProperties": false,
                "properties": {
                    "id": {
                        "type": "string",
                        "description": "Record identifier, stable across revisions.",
                        "example": "record_example_1"
                    },
                    "instrument_id": {
                        "type": "string",
                        "description": "Opaque stable public identifier; never an internal database key.",
                        "example": "inst_example_aapl",
                        "minLength": 1,
                        "maxLength": 128,
                        "pattern": "^[A-Za-z0-9][A-Za-z0-9_.:-]{0,127}$"
                    },
                    "date": {
                        "type": "string",
                        "format": "date",
                        "example": "2026-09-18",
                        "description": "Trade date the volume was reported for."
                    },
                    "short_volume": {
                        "type": "string",
                        "pattern": "^-?[0-9]+(?:\\.[0-9]+)?$",
                        "description": "Shares sold short on the trade date across the reporting facilities, including exempt volume. Fractional shares are reported as decimals.",
                        "example": "420830.989754"
                    },
                    "short_exempt_volume": {
                        "type": "string",
                        "pattern": "^-?[0-9]+(?:\\.[0-9]+)?$",
                        "description": "Portion of short_volume marked exempt from Regulation SHO.",
                        "example": "0"
                    },
                    "total_volume": {
                        "type": "string",
                        "pattern": "^-?[0-9]+(?:\\.[0-9]+)?$",
                        "description": "Total volume reported to the same facilities; not consolidated exchange volume.",
                        "example": "1173148.600045"
                    },
                    "short_volume_ratio": {
                        "type": [
                            "string",
                            "null"
                        ],
                        "pattern": "^-?[0-9]+(?:\\.[0-9]+)?$",
                        "description": "short_volume divided by total_volume as reported; 0.3587 means 35.87%. Null when total_volume is zero.",
                        "example": "0.3587"
                    },
                    "venues": {
                        "type": "object",
                        "additionalProperties": false,
                        "properties": {
                            "nyse": {
                                "type": "object",
                                "additionalProperties": false,
                                "properties": {
                                    "short_volume": {
                                        "type": "string",
                                        "pattern": "^-?[0-9]+(?:\\.[0-9]+)?$",
                                        "description": "Short volume reported through the NYSE trade reporting facility, excluding exempt volume.",
                                        "example": "395584"
                                    },
                                    "short_exempt_volume": {
                                        "type": "string",
                                        "pattern": "^-?[0-9]+(?:\\.[0-9]+)?$",
                                        "description": "Short volume reported through the NYSE trade reporting facility and marked exempt from Regulation SHO.",
                                        "example": "0"
                                    }
                                },
                                "required": [
                                    "short_volume",
                                    "short_exempt_volume"
                                ],
                                "description": "Short volume reported through the NYSE trade reporting facility."
                            },
                            "nasdaq_carteret": {
                                "type": "object",
                                "additionalProperties": false,
                                "properties": {
                                    "short_volume": {
                                        "type": "string",
                                        "pattern": "^-?[0-9]+(?:\\.[0-9]+)?$",
                                        "description": "Short volume reported through the Nasdaq trade reporting facility in Carteret, excluding exempt volume.",
                                        "example": "395584"
                                    },
                                    "short_exempt_volume": {
                                        "type": "string",
                                        "pattern": "^-?[0-9]+(?:\\.[0-9]+)?$",
                                        "description": "Short volume reported through the Nasdaq trade reporting facility in Carteret and marked exempt from Regulation SHO.",
                                        "example": "0"
                                    }
                                },
                                "required": [
                                    "short_volume",
                                    "short_exempt_volume"
                                ],
                                "description": "Short volume reported through the Nasdaq trade reporting facility in Carteret."
                            },
                            "nasdaq_chicago": {
                                "type": "object",
                                "additionalProperties": false,
                                "properties": {
                                    "short_volume": {
                                        "type": "string",
                                        "pattern": "^-?[0-9]+(?:\\.[0-9]+)?$",
                                        "description": "Short volume reported through the Nasdaq trade reporting facility in Chicago, excluding exempt volume.",
                                        "example": "395584"
                                    },
                                    "short_exempt_volume": {
                                        "type": "string",
                                        "pattern": "^-?[0-9]+(?:\\.[0-9]+)?$",
                                        "description": "Short volume reported through the Nasdaq trade reporting facility in Chicago and marked exempt from Regulation SHO.",
                                        "example": "0"
                                    }
                                },
                                "required": [
                                    "short_volume",
                                    "short_exempt_volume"
                                ],
                                "description": "Short volume reported through the Nasdaq trade reporting facility in Chicago."
                            },
                            "adf": {
                                "type": "object",
                                "additionalProperties": false,
                                "properties": {
                                    "short_volume": {
                                        "type": "string",
                                        "pattern": "^-?[0-9]+(?:\\.[0-9]+)?$",
                                        "description": "Short volume reported through the FINRA Alternative Display Facility, excluding exempt volume.",
                                        "example": "395584"
                                    },
                                    "short_exempt_volume": {
                                        "type": "string",
                                        "pattern": "^-?[0-9]+(?:\\.[0-9]+)?$",
                                        "description": "Short volume reported through the FINRA Alternative Display Facility and marked exempt from Regulation SHO.",
                                        "example": "0"
                                    }
                                },
                                "required": [
                                    "short_volume",
                                    "short_exempt_volume"
                                ],
                                "description": "Short volume reported through the FINRA Alternative Display Facility."
                            }
                        },
                        "required": [
                            "nyse",
                            "nasdaq_carteret",
                            "nasdaq_chicago",
                            "adf"
                        ],
                        "description": "Short volume by FINRA reporting facility."
                    }
                },
                "required": [
                    "id",
                    "instrument_id",
                    "date",
                    "short_volume",
                    "short_exempt_volume",
                    "total_volume",
                    "short_volume_ratio",
                    "venues"
                ]
            },
            "Ticker": {
                "type": "object",
                "additionalProperties": false,
                "properties": {
                    "symbol": {
                        "type": "string",
                        "description": "Exchange-qualified MIC:TICKER at date.",
                        "example": "XNAS:AAPL"
                    },
                    "ticker": {
                        "type": "string",
                        "description": "Ticker at date. Share classes, preferred series and warrants use OHLC spellings, such as BRK-B, BAC-PL and ACHR-WS.",
                        "example": "AAPL"
                    },
                    "name": {
                        "type": [
                            "string",
                            "null"
                        ],
                        "description": "Listing name. Names are held from when OHLC first recorded them (September 2026 for most listings), not reconstructed for earlier dates, so a past date returns the earliest recorded name, usually the current one: XNYS:AA on 1990-01-01 is named Howmet Aerospace, the company that traded as AA then.",
                        "example": "Apple Inc"
                    },
                    "instrument_id": {
                        "type": "string",
                        "description": "Opaque stable public identifier; never an internal database key.",
                        "example": "inst_example_aapl",
                        "minLength": 1,
                        "maxLength": 128,
                        "pattern": "^[A-Za-z0-9][A-Za-z0-9_.:-]{0,127}$"
                    },
                    "company_id": {
                        "type": [
                            "string",
                            "null"
                        ],
                        "description": "Opaque stable public identifier; never an internal database key.",
                        "example": "company_example_apple",
                        "minLength": 1,
                        "maxLength": 128,
                        "pattern": "^[A-Za-z0-9][A-Za-z0-9_.:-]{0,127}$"
                    },
                    "exchange_mic": {
                        "type": "string",
                        "pattern": "^(?:[A-Z0-9]{4}|CRYPTO|FOREX|INDEX)$",
                        "example": "XNAS"
                    },
                    "asset_type": {
                        "type": [
                            "string",
                            "null"
                        ],
                        "enum": [
                            "equity",
                            "etf",
                            "mutual_fund",
                            "crypto",
                            "forex",
                            "index",
                            "bond",
                            null
                        ],
                        "description": "Asset class, as in /v1/instruments.",
                        "example": "equity"
                    },
                    "type": {
                        "type": [
                            "string",
                            "null"
                        ],
                        "description": "Security type code, such as CS, PFD, ETF, ADRC, WARRANT, UNIT or RIGHT; /v1/ticker-types lists the stock codes, and crypto and currency pairs, indices, mutual funds and bonds are CRYPTO, FOREX, INDEX, FUND and BOND.",
                        "example": "CS"
                    },
                    "active": {
                        "type": "boolean",
                        "description": "Whether the listing trades under this ticker at date.",
                        "example": true
                    },
                    "currency_code": {
                        "type": [
                            "string",
                            "null"
                        ],
                        "pattern": "^[A-Z]{3}$",
                        "example": "USD",
                        "description": "ISO 4217 currency. Crypto quote assets use instrument IDs, not invented ISO codes."
                    },
                    "country_code": {
                        "type": [
                            "string",
                            "null"
                        ],
                        "pattern": "^[A-Z]{2}$",
                        "example": "US"
                    },
                    "cik": {
                        "type": [
                            "string",
                            "null"
                        ],
                        "pattern": "^[0-9]{10}$",
                        "description": "SEC Central Index Key of the issuer, zero-padded to ten digits. Null where none is linked: most OTC listings, international listings, crypto and currency pairs, indices, bonds, mutual funds, and some funds and foreign issuers.",
                        "example": "0000320193"
                    },
                    "composite_figi": {
                        "type": [
                            "string",
                            "null"
                        ],
                        "pattern": "^[A-Z0-9]{12}$",
                        "description": "Composite FIGI of the listing. FIGIs and list dates come from US reference data that covers exchange-listed stocks and funds; they are null for OTC listings, international listings, crypto and currency pairs, indices, bonds and mutual funds.",
                        "example": "BBG000B9XRY4"
                    },
                    "share_class_figi": {
                        "type": [
                            "string",
                            "null"
                        ],
                        "pattern": "^[A-Z0-9]{12}$",
                        "description": "Share-class FIGI, shared by listings of one share class.",
                        "example": "BBG001S5N8V8"
                    },
                    "isin": {
                        "type": [
                            "string",
                            "null"
                        ],
                        "pattern": "^[A-Z]{2}[A-Z0-9]{9}[0-9]$",
                        "description": "ISIN of the security.",
                        "example": "US0378331005"
                    },
                    "list_date": {
                        "type": [
                            "string",
                            "null"
                        ],
                        "format": "date",
                        "example": "1980-12-12",
                        "description": "Date the listing began trading, when known. Null for OTC listings, international listings, crypto and currency pairs, indices, bonds and mutual funds; it is never derived from where OHLC's own data starts, which history_from gives."
                    },
                    "history_from": {
                        "type": [
                            "string",
                            "null"
                        ],
                        "format": "date",
                        "example": "1980-12-12",
                        "description": "First UTC date of the listing's history in OHLC on this exchange: where its daily bars begin when its history was loaded, or the date OHLC first listed it. OTC listings are held forward only, from the day each was added (2026-10-03 for most), with no earlier bars. For crypto and currency pairs, indices and bonds it is the venue's start (2010-07-01, 1970-01-01, 1900-01-01 and 2000-01-01), not the first bar of the pair, index or bond; /v1/datasets/eod/coverage gives each listing's history_from. Not the listing date."
                    },
                    "delisted_date": {
                        "type": [
                            "string",
                            "null"
                        ],
                        "format": "date",
                        "example": null,
                        "description": "Date an inactive listing stopped trading under this ticker (its last trading date when OHLC ended the listing from its daily bars); null while active."
                    },
                    "last_updated_at": {
                        "type": [
                            "string",
                            "null"
                        ],
                        "format": "date-time",
                        "example": "2026-09-18T20:00:00Z",
                        "description": "When OHLC last changed this listing's reference data."
                    },
                    "logo_url": {
                        "type": [
                            "string",
                            "null"
                        ],
                        "format": "uri",
                        "description": "Logo hosted by OHLC for the listing's company, or for a fund without its own, its sponsor's: SVG when a vector logo exists, otherwise PNG. The URL changes when the logo changes, so it can be cached indefinitely.",
                        "example": "https://api.ohlc.io/logos/01J8Z3Q4R5S6T7V8W9X0Y1Z2A3/9b1e4d2c6a7f3e80.svg"
                    }
                },
                "required": [
                    "symbol",
                    "ticker",
                    "name",
                    "instrument_id",
                    "company_id",
                    "exchange_mic",
                    "asset_type",
                    "type",
                    "active",
                    "currency_code",
                    "country_code",
                    "cik",
                    "composite_figi",
                    "share_class_figi",
                    "isin",
                    "list_date",
                    "history_from",
                    "delisted_date",
                    "last_updated_at",
                    "logo_url"
                ]
            },
            "TickerType": {
                "type": "object",
                "additionalProperties": false,
                "properties": {
                    "code": {
                        "type": "string",
                        "description": "Security type code used by /v1/tickers type.",
                        "example": "CS"
                    },
                    "description": {
                        "type": "string",
                        "description": "Type name.",
                        "example": "Common Stock"
                    },
                    "asset_class": {
                        "type": "string",
                        "description": "Asset class the code applies to.",
                        "example": "stocks"
                    },
                    "locale": {
                        "type": "string",
                        "description": "Market locale.",
                        "example": "us"
                    }
                },
                "required": [
                    "code",
                    "description",
                    "asset_class",
                    "locale"
                ]
            },
            "Condition": {
                "type": "object",
                "additionalProperties": false,
                "properties": {
                    "id": {
                        "type": "integer",
                        "minimum": 0,
                        "description": "Condition ID as it appears on trades and quotes. Trade and quote conditions reuse IDs, so read it with type.",
                        "example": 2
                    },
                    "type": {
                        "type": "string",
                        "description": "Condition type, such as sale_condition, quote_condition or financial_status_indicator.",
                        "example": "sale_condition"
                    },
                    "name": {
                        "type": "string",
                        "description": "Condition name.",
                        "example": "Average Price Trade"
                    },
                    "description": {
                        "type": [
                            "string",
                            "null"
                        ],
                        "description": "What the condition means.",
                        "example": "The trade price is an average of several executions."
                    },
                    "asset_class": {
                        "type": "string",
                        "description": "Asset class.",
                        "example": "stocks"
                    },
                    "data_types": {
                        "type": "array",
                        "items": {
                            "type": "string",
                            "enum": [
                                "trade",
                                "bbo",
                                "nbbo"
                            ],
                            "description": "Data type.",
                            "example": "trade"
                        },
                        "description": "Data the condition appears on: trade prints, exchange best bid and offer, or the national best bid and offer."
                    },
                    "sip_mapping": {
                        "type": "object",
                        "additionalProperties": {
                            "type": "string"
                        },
                        "description": "Code each securities information processor (CTA, UTP, FINRA_TDDS) uses for the condition.",
                        "example": {
                            "CTA": "B",
                            "UTP": "W"
                        }
                    },
                    "exchange": {
                        "type": [
                            "integer",
                            "null"
                        ],
                        "minimum": 0,
                        "description": "Exchange the condition is specific to; null for all.",
                        "example": null
                    },
                    "legacy": {
                        "type": "boolean",
                        "description": "Whether the condition is no longer in use.",
                        "example": false
                    },
                    "update_rules": {
                        "type": [
                            "object",
                            "null"
                        ],
                        "additionalProperties": false,
                        "properties": {
                            "consolidated": {
                                "type": "object",
                                "additionalProperties": false,
                                "properties": {
                                    "updates_high_low": {
                                        "type": "boolean",
                                        "example": false
                                    },
                                    "updates_open_close": {
                                        "type": "boolean",
                                        "example": false
                                    },
                                    "updates_volume": {
                                        "type": "boolean",
                                        "example": true
                                    }
                                },
                                "required": [
                                    "updates_high_low",
                                    "updates_open_close",
                                    "updates_volume"
                                ]
                            },
                            "market_center": {
                                "type": "object",
                                "additionalProperties": false,
                                "properties": {
                                    "updates_high_low": {
                                        "type": "boolean",
                                        "example": false
                                    },
                                    "updates_open_close": {
                                        "type": "boolean",
                                        "example": false
                                    },
                                    "updates_volume": {
                                        "type": "boolean",
                                        "example": true
                                    }
                                },
                                "required": [
                                    "updates_high_low",
                                    "updates_open_close",
                                    "updates_volume"
                                ]
                            }
                        },
                        "required": [
                            "consolidated",
                            "market_center"
                        ],
                        "description": "Whether a trade with the condition updates the consolidated and market-center high/low, open/close and volume; null for quote conditions."
                    }
                },
                "required": [
                    "id",
                    "type",
                    "name",
                    "description",
                    "asset_class",
                    "data_types",
                    "sip_mapping",
                    "exchange",
                    "legacy",
                    "update_rules"
                ]
            },
            "MarketStatus": {
                "type": "object",
                "additionalProperties": false,
                "properties": {
                    "exchange_mic": {
                        "type": "string",
                        "pattern": "^(?:[A-Z0-9]{4}|CRYPTO|FOREX|INDEX)$",
                        "example": "XNAS"
                    },
                    "exchange_timezone": {
                        "type": "string",
                        "description": "IANA timezone of the exchange.",
                        "example": "America/New_York"
                    },
                    "local_date": {
                        "type": "string",
                        "format": "date",
                        "example": "2026-09-18",
                        "description": "Exchange-local date at server_time."
                    },
                    "status": {
                        "type": "string",
                        "enum": [
                            "open",
                            "pre_market",
                            "after_hours",
                            "closed",
                            "holiday",
                            "unknown"
                        ],
                        "description": "Trading state at server_time. holiday is a weekday the exchange is closed; unknown means no calendar is published for local_date.",
                        "example": "open"
                    },
                    "session": {
                        "type": [
                            "object",
                            "null"
                        ],
                        "additionalProperties": false,
                        "properties": {
                            "date": {
                                "type": "string",
                                "format": "date",
                                "example": "2026-09-18",
                                "description": "Exchange-local trading date."
                            },
                            "opens_at": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2026-09-18T13:30:00Z",
                                "description": "Regular session open."
                            },
                            "closes_at": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2026-09-18T20:00:00Z",
                                "description": "Regular session close; earlier on early-close days."
                            },
                            "pre_market_opens_at": {
                                "type": [
                                    "string",
                                    "null"
                                ],
                                "format": "date-time",
                                "example": "2026-09-18T08:00:00Z",
                                "description": "Pre-market open; null where the exchange has no extended hours."
                            },
                            "after_hours_closes_at": {
                                "type": [
                                    "string",
                                    "null"
                                ],
                                "format": "date-time",
                                "example": "2026-09-19T00:00:00Z",
                                "description": "After-hours close; null where the exchange has no extended hours."
                            }
                        },
                        "required": [
                            "date",
                            "opens_at",
                            "closes_at",
                            "pre_market_opens_at",
                            "after_hours_closes_at"
                        ],
                        "description": "Today's trading session; null when the exchange does not trade on local_date."
                    },
                    "next_open_at": {
                        "type": [
                            "string",
                            "null"
                        ],
                        "format": "date-time",
                        "example": "2026-09-18T20:00:00Z",
                        "description": "Next regular session open after server_time; null when not yet in the published calendar."
                    },
                    "next_close_at": {
                        "type": [
                            "string",
                            "null"
                        ],
                        "format": "date-time",
                        "example": "2026-09-18T20:00:00Z",
                        "description": "Next regular session close after server_time."
                    },
                    "server_time": {
                        "type": "string",
                        "format": "date-time",
                        "example": "2026-09-18T20:00:00Z",
                        "description": "Instant the status describes."
                    }
                },
                "required": [
                    "exchange_mic",
                    "exchange_timezone",
                    "local_date",
                    "status",
                    "session",
                    "next_open_at",
                    "next_close_at",
                    "server_time"
                ]
            },
            "InstrumentEvent": {
                "type": "object",
                "additionalProperties": false,
                "properties": {
                    "id": {
                        "type": "string",
                        "description": "Event identifier, stable across requests.",
                        "example": "record_example_1"
                    },
                    "instrument_id": {
                        "type": "string",
                        "description": "Opaque stable public identifier; never an internal database key.",
                        "example": "inst_example_aapl",
                        "minLength": 1,
                        "maxLength": 128,
                        "pattern": "^[A-Za-z0-9][A-Za-z0-9_.:-]{0,127}$"
                    },
                    "type": {
                        "type": "string",
                        "enum": [
                            "ticker_change"
                        ],
                        "description": "Event type.",
                        "example": "ticker_change"
                    },
                    "date": {
                        "type": "string",
                        "format": "date",
                        "example": "2026-09-18",
                        "description": "Date the new ticker took effect."
                    },
                    "ticker": {
                        "type": "string",
                        "description": "Ticker from date.",
                        "example": "META"
                    },
                    "previous_ticker": {
                        "type": [
                            "string",
                            "null"
                        ],
                        "description": "Ticker it replaced.",
                        "example": "FB"
                    },
                    "symbol": {
                        "type": "string",
                        "description": "MIC:TICKER from date.",
                        "example": "XNAS:META"
                    },
                    "previous_symbol": {
                        "type": [
                            "string",
                            "null"
                        ],
                        "description": "MIC:TICKER it replaced.",
                        "example": "XNAS:FB"
                    }
                },
                "required": [
                    "id",
                    "instrument_id",
                    "type",
                    "date",
                    "ticker",
                    "previous_ticker",
                    "symbol",
                    "previous_symbol"
                ]
            },
            "Bond": {
                "type": "object",
                "additionalProperties": false,
                "properties": {
                    "id": {
                        "type": "string",
                        "description": "Record identifier, stable across revisions.",
                        "example": "record_example_1"
                    },
                    "instrument_id": {
                        "type": "string",
                        "description": "Opaque stable public identifier; never an internal database key.",
                        "example": "inst_example_aapl",
                        "minLength": 1,
                        "maxLength": 128,
                        "pattern": "^[A-Za-z0-9][A-Za-z0-9_.:-]{0,127}$"
                    },
                    "symbol": {
                        "type": "string",
                        "description": "Listing symbol, BOND: and the ISIN.",
                        "example": "BOND:US00037BAF94"
                    },
                    "name": {
                        "type": "string",
                        "description": "Bond name as the source describes it, often the issuer, coupon and maturity in its own spelling; the ISIN where it gives none.",
                        "example": "ABB FIN USA INC 3.8% 03Apr2028"
                    },
                    "isin": {
                        "type": "string",
                        "pattern": "^[A-Z]{2}[A-Z0-9]{9}[0-9]$",
                        "example": "US00037BAF94"
                    },
                    "cusip": {
                        "type": [
                            "string",
                            "null"
                        ],
                        "pattern": "^[0-9A-Z]{9}$",
                        "description": "CUSIP; for a US or Canadian ISIN, its nine middle characters.",
                        "example": "00037BAF9"
                    },
                    "figi": {
                        "type": [
                            "string",
                            "null"
                        ],
                        "pattern": "^BBG[0-9A-Z]{9}$",
                        "description": "FIGI, where the source states one (rarely).",
                        "example": "BBG0000000A1"
                    },
                    "issuer_name": {
                        "type": [
                            "string",
                            "null"
                        ],
                        "description": "Issuer as the source names it, often abbreviated (ABB FIN USA INC); taken from the bond name where the source states no issuer.",
                        "example": "ABB FIN USA INC"
                    },
                    "issuer_country_code": {
                        "type": [
                            "string",
                            "null"
                        ],
                        "pattern": "^[A-Z]{2}$",
                        "example": "US",
                        "description": "Issuer's country of domicile, where the source states it."
                    },
                    "company_id": {
                        "type": [
                            "string",
                            "null"
                        ],
                        "description": "The company that issued the bond, in /v1/companies: set only where the stated issuer name equals one listed company's name once legal forms (Inc, Corp, Co, Ltd, PLC, SA) and punctuation are set aside. Abbreviated issuers and finance subsidiaries (BERKSHIRE HATHAWAY FIN CORP) are null, never a guess.",
                        "example": "company_example_apple",
                        "minLength": 1,
                        "maxLength": 128,
                        "pattern": "^[A-Za-z0-9][A-Za-z0-9_.:-]{0,127}$"
                    },
                    "currency_code": {
                        "type": "string",
                        "pattern": "^[A-Z]{3}$",
                        "example": "USD",
                        "description": "ISO 4217 currency. Crypto quote assets use instrument IDs, not invented ISO codes."
                    },
                    "coupon_rate": {
                        "type": [
                            "string",
                            "null"
                        ],
                        "pattern": "^-?[0-9]+(?:\\.[0-9]+)?$",
                        "description": "Annual coupon rate, as stated, or read from the bond name where the terms leave it out. In percent: 4.375 means 4.375%.",
                        "example": "3.8"
                    },
                    "coupon_frequency": {
                        "type": [
                            "string",
                            "null"
                        ],
                        "enum": [
                            "annual",
                            "semiannual",
                            "quarterly",
                            "monthly",
                            "zero",
                            null
                        ],
                        "description": "Coupon payments a year: zero for a zero-coupon bond.",
                        "example": "annual"
                    },
                    "maturity_date": {
                        "type": [
                            "string",
                            "null"
                        ],
                        "format": "date",
                        "example": "2028-04-03",
                        "description": "Maturity date: from the terms, or read from the bond name where the terms leave it out (maturity_date_from_name). Null where neither states it."
                    },
                    "maturity_date_from_name": {
                        "type": "boolean",
                        "description": "Whether maturity_date was read from the bond name rather than stated in its terms."
                    },
                    "callable": {
                        "type": [
                            "boolean",
                            "null"
                        ],
                        "description": "Whether the issuer may redeem the bond before maturity; null when the source does not say."
                    },
                    "next_call_date": {
                        "type": [
                            "string",
                            "null"
                        ],
                        "format": "date",
                        "example": "2028-02-15",
                        "description": "Next date the bond may be called, where the source states one; it can lie in the past."
                    },
                    "debt_type": {
                        "type": [
                            "string",
                            "null"
                        ],
                        "description": "Seniority and form, as the source classifies the bond.",
                        "example": "Senior Unsecured Note"
                    },
                    "sector": {
                        "type": [
                            "string",
                            "null"
                        ],
                        "description": "Issuer's industry group, as the source classifies it.",
                        "example": "Industrial"
                    },
                    "industry": {
                        "type": [
                            "string",
                            "null"
                        ],
                        "description": "Issuer's industry subgroup, as the source classifies it.",
                        "example": "Manufacturing"
                    },
                    "offering_date": {
                        "type": [
                            "string",
                            "null"
                        ],
                        "format": "date",
                        "example": "2012-05-03"
                    },
                    "price": {
                        "type": [
                            "string",
                            "null"
                        ],
                        "pattern": "^-?[0-9]+(?:\\.[0-9]+)?$",
                        "description": "Latest price, clean, per 100 of face value: the evaluated or last-trade price of price_date. The same figure is the close of that date in /v1/eod.",
                        "example": "82.43"
                    },
                    "yield_to_maturity": {
                        "type": [
                            "string",
                            "null"
                        ],
                        "pattern": "^-?[0-9]+(?:\\.[0-9]+)?$",
                        "description": "Yield to maturity at price, as the source calculates it; null where it gives none. In percent: 4.375 means 4.375%.",
                        "example": "6.1438"
                    },
                    "price_date": {
                        "type": [
                            "string",
                            "null"
                        ],
                        "format": "date",
                        "example": "2026-09-18",
                        "description": "Date of price and yield_to_maturity: the bond's latest traded day. Null before any price is held."
                    },
                    "terms_observed_on": {
                        "type": [
                            "string",
                            "null"
                        ],
                        "format": "date",
                        "example": "2026-09-18",
                        "description": "Date OHLC last read the bond's terms; null before they are first read."
                    },
                    "observed_on": {
                        "type": "string",
                        "format": "date",
                        "example": "2026-09-18",
                        "description": "The day OHLC published what this record says: on or after price_date and terms_observed_on."
                    }
                },
                "required": [
                    "id",
                    "instrument_id",
                    "symbol",
                    "name",
                    "isin",
                    "cusip",
                    "figi",
                    "issuer_name",
                    "issuer_country_code",
                    "company_id",
                    "currency_code",
                    "coupon_rate",
                    "coupon_frequency",
                    "maturity_date",
                    "maturity_date_from_name",
                    "callable",
                    "next_call_date",
                    "debt_type",
                    "sector",
                    "industry",
                    "offering_date",
                    "price",
                    "yield_to_maturity",
                    "price_date",
                    "terms_observed_on",
                    "observed_on"
                ]
            },
            "BondYield": {
                "type": "object",
                "additionalProperties": false,
                "properties": {
                    "id": {
                        "type": "string",
                        "description": "Record identifier, stable across revisions.",
                        "example": "record_example_1"
                    },
                    "instrument_id": {
                        "type": "string",
                        "description": "Opaque stable public identifier; never an internal database key.",
                        "example": "inst_example_aapl",
                        "minLength": 1,
                        "maxLength": 128,
                        "pattern": "^[A-Za-z0-9][A-Za-z0-9_.:-]{0,127}$"
                    },
                    "symbol": {
                        "type": "string",
                        "description": "Listing symbol, BOND: and the ISIN.",
                        "example": "BOND:US00037BAF94"
                    },
                    "date": {
                        "type": "string",
                        "format": "date",
                        "example": "2026-09-18",
                        "description": "Day the price was evaluated: a US business day the bond traded."
                    },
                    "currency_code": {
                        "type": "string",
                        "pattern": "^[A-Z]{3}$",
                        "example": "USD",
                        "description": "ISO 4217 currency. Crypto quote assets use instrument IDs, not invented ISO codes."
                    },
                    "price": {
                        "type": "string",
                        "pattern": "^-?[0-9]+(?:\\.[0-9]+)?$",
                        "description": "Clean price per 100 of face value; the close of that date in /v1/eod.",
                        "example": "82.43"
                    },
                    "yield_to_maturity": {
                        "type": [
                            "string",
                            "null"
                        ],
                        "pattern": "^-?[0-9]+(?:\\.[0-9]+)?$",
                        "description": "Yield to maturity at price, as the source calculates it; null where it gives none. In percent: 4.375 means 4.375%.",
                        "example": "6.1438"
                    }
                },
                "required": [
                    "id",
                    "instrument_id",
                    "symbol",
                    "date",
                    "currency_code",
                    "price",
                    "yield_to_maturity"
                ]
            },
            "SovereignRating": {
                "type": "object",
                "additionalProperties": false,
                "properties": {
                    "id": {
                        "type": "string",
                        "description": "Record identifier, stable across revisions.",
                        "example": "record_example_1"
                    },
                    "country_code": {
                        "type": "string",
                        "pattern": "^[A-Z]{2}$",
                        "example": "US"
                    },
                    "agency": {
                        "type": "string",
                        "enum": [
                            "moodys",
                            "sp",
                            "fitch"
                        ],
                        "description": "Rating agency: Moody's, S&P Global Ratings or Fitch Ratings.",
                        "example": "moodys"
                    },
                    "rating": {
                        "type": "string",
                        "description": "Long-term foreign-currency sovereign rating on the agency's own scale.",
                        "example": "Aa1"
                    },
                    "notch": {
                        "type": "integer",
                        "minimum": 1,
                        "description": "The rating on one scale for all three agencies: 1 is Aaa/AAA, 10 is Baa3/BBB-, the lowest investment grade, 21 is C, and 22 a default (SD, RD or D).",
                        "example": 2,
                        "maximum": 22
                    },
                    "investment_grade": {
                        "type": "boolean",
                        "description": "Whether the rating is investment grade: notch 10 (Baa3/BBB-) or better."
                    },
                    "observation_date": {
                        "type": "string",
                        "format": "date",
                        "example": "2026-01-01",
                        "description": "Date of the edition the rating is taken from: the first of January of each year."
                    }
                },
                "required": [
                    "id",
                    "country_code",
                    "agency",
                    "rating",
                    "notch",
                    "investment_grade",
                    "observation_date"
                ]
            },
            "ResourceExportRequest": {
                "oneOf": [
                    {
                        "type": "object",
                        "additionalProperties": false,
                        "required": [
                            "resource",
                            "parameters"
                        ],
                        "properties": {
                            "resource": {
                                "type": "string",
                                "const": "/v1/instruments"
                            },
                            "parameters": {
                                "type": "object",
                                "additionalProperties": false,
                                "properties": {
                                    "instrument_ids": {
                                        "type": "array",
                                        "minItems": 1,
                                        "maxItems": 100,
                                        "uniqueItems": true,
                                        "items": {
                                            "type": "string",
                                            "description": "Opaque stable public identifier; never an internal database key.",
                                            "example": "inst_example_aapl",
                                            "minLength": 1,
                                            "maxLength": 128,
                                            "pattern": "^[A-Za-z0-9][A-Za-z0-9_.:-]{0,127}$"
                                        },
                                        "description": "Filter by stable instrument IDs. IDs and symbols may not be combined."
                                    },
                                    "symbols": {
                                        "type": "array",
                                        "minItems": 1,
                                        "maxItems": 100,
                                        "uniqueItems": true,
                                        "items": {
                                            "type": "string",
                                            "pattern": "^(?:(?:[A-Za-z0-9]{4}|[Cc][Rr][Yy][Pp][Tt][Oo]|[Ff][Oo][Rr][Ee][Xx]|[Ii][Nn][Dd][Ee][Xx]):|\\^)?[A-Za-z0-9](?:[A-Za-z0-9./_^= -]{0,62}[A-Za-z0-9./_^=-])?$",
                                            "example": "XNAS:AAPL"
                                        },
                                        "description": "Convenience lookup for exchange-listed instruments as MIC:TICKER or a bare ticker, which resolves to the exchange listing that ticker; resolves at symbol_at. The MIC and the ticker are case-insensitive, and two spellings of one listing (AAPL and XNAS:AAPL) count as a repeated value. A bare ticker that names no listing as written is also read in the common vendor spellings: with an exchange suffix (RY.TO, SHEL.L, VOD.LSE, BHP.AX), ^GSPC for INDEX:GSPC, and EURUSD=X or EURUSD for FOREX:EUR-USD. A ticker may contain a space (BAC PRL) but not start or end with one. A request in which no symbol resolves returns 404 symbol-not-resolved; otherwise each symbol that does not resolve, or resolves to a listing with no rows for the request (no-data), is an entry of meta.errors. IDs and symbols may not be combined."
                                    },
                                    "symbol_at": {
                                        "description": "Resolve symbols as they were assigned at the end of this UTC date (YYYY-MM-DD); defaults to as_of. Only listings the security master holds resolve: it was built in September 2026 and records delistings from then on, so most issuers delisted earlier, such as TWTR or SIVB, resolve at no date. Only valid with symbols.",
                                        "type": "string",
                                        "format": "date"
                                    },
                                    "asset_type": {
                                        "type": "string",
                                        "enum": [
                                            "equity",
                                            "etf",
                                            "mutual_fund",
                                            "crypto",
                                            "forex",
                                            "index",
                                            "bond"
                                        ],
                                        "description": "Asset class.",
                                        "example": "equity"
                                    },
                                    "status": {
                                        "type": "string",
                                        "enum": [
                                            "active",
                                            "delisted",
                                            "expired",
                                            "inactive",
                                            "all"
                                        ],
                                        "description": "Default active. The security master was built in September 2026 from the listings its sources still carried and records delistings from then on, so nearly every delisted listing it holds stopped trading in 2026, and most issuers delisted earlier, such as TWTR or SIVB, are not held. all is therefore not a survivorship-free historical universe.",
                                        "example": "active"
                                    },
                                    "countries": {
                                        "type": "array",
                                        "minItems": 1,
                                        "maxItems": 100,
                                        "uniqueItems": true,
                                        "items": {
                                            "type": "string",
                                            "pattern": "^[A-Z]{2}$",
                                            "example": "US"
                                        },
                                        "description": "ISO 3166-1 alpha-2 country codes of the listing's exchange; with exchanges, the exchanges in these countries. The CRYPTO, FOREX, INDEX and BOND venues have no country (ZZ)."
                                    },
                                    "exchanges": {
                                        "type": "array",
                                        "minItems": 1,
                                        "maxItems": 100,
                                        "uniqueItems": true,
                                        "items": {
                                            "type": "string",
                                            "pattern": "^(?:[A-Z0-9]{4}|CRYPTO|FOREX|INDEX)$"
                                        },
                                        "description": "Listing MICs. A malformed or repeated code returns 422 invalid-exchanges, a MIC the API does not serve 404 exchange-not-found, and one outside the key's markets 403 market-not-entitled."
                                    },
                                    "q": {
                                        "type": "string",
                                        "minLength": 1,
                                        "maxLength": 200,
                                        "pattern": "\\S",
                                        "description": "Case-insensitive name or symbol search. Without order, the best matches come first: an exact ticker, then an exact name, then names that start with the text, then other matches, the most traded first within each. A value that is empty or only whitespace returns 422."
                                    },
                                    "identifier_type": {
                                        "type": "string",
                                        "enum": [
                                            "isin",
                                            "cusip",
                                            "figi",
                                            "cik",
                                            "lei"
                                        ],
                                        "description": "Must be supplied together with identifier.",
                                        "example": "isin"
                                    },
                                    "identifier": {
                                        "type": "string",
                                        "minLength": 1,
                                        "maxLength": 64,
                                        "description": "Exact identifier; requires identifier_type. May return multiple related listings. A CIK's leading zeroes are optional. Only listings with a provider profile match, so OTC listings, crypto and currency pairs, indices and bonds are not found this way (a bond is BOND:<ISIN> in symbols)."
                                    },
                                    "effective_date": {
                                        "type": "string",
                                        "format": "date",
                                        "example": "2026-09-18",
                                        "description": "Effective date, defaults to the UTC date of as_of. Returns the latest eligible snapshot on or before this date; response retains its actual snapshot date."
                                    },
                                    "as_of": {
                                        "description": "Knowledge cutoff as a UTC date (YYYY-MM-DD): the response reflects what was known by the end of that day. Defaults to now; cannot be in the future. A date from before the dataset's knowledge history returns 422 point-in-time-unavailable naming the earliest one, which GET /v1/datasets lists as earliest_as_of.",
                                        "type": "string",
                                        "format": "date"
                                    },
                                    "known_from": {
                                        "description": "First UTC date (YYYY-MM-DD, inclusive) on which a revision became known.",
                                        "type": "string",
                                        "format": "date"
                                    },
                                    "known_to": {
                                        "description": "Last UTC date (YYYY-MM-DD, inclusive) on which a revision became known; on or after known_from.",
                                        "type": "string",
                                        "format": "date"
                                    },
                                    "order": {
                                        "type": "string",
                                        "enum": [
                                            "asc",
                                            "desc"
                                        ],
                                        "description": "Direction on id; ties use ID ascending.",
                                        "example": "asc",
                                        "default": "asc"
                                    }
                                },
                                "x-query-constraints": [
                                    {
                                        "rule": "mutually_exclusive",
                                        "parameters": [
                                            "instrument_ids",
                                            "symbols"
                                        ]
                                    },
                                    {
                                        "rule": "requires",
                                        "parameter": "symbol_at",
                                        "required": [
                                            "symbols"
                                        ]
                                    },
                                    {
                                        "rule": "all_or_none",
                                        "parameters": [
                                            "identifier",
                                            "identifier_type"
                                        ]
                                    },
                                    {
                                        "rule": "less_than",
                                        "lower": "known_from",
                                        "upper": "known_to"
                                    }
                                ],
                                "required": []
                            }
                        }
                    },
                    {
                        "type": "object",
                        "additionalProperties": false,
                        "required": [
                            "resource",
                            "parameters"
                        ],
                        "properties": {
                            "resource": {
                                "type": "string",
                                "const": "/v1/instruments/{instrument_id}/symbols"
                            },
                            "parameters": {
                                "type": "object",
                                "additionalProperties": false,
                                "properties": {
                                    "instrument_id": {
                                        "type": "string",
                                        "description": "Stable public identifier.",
                                        "example": "inst_example_aapl",
                                        "minLength": 1,
                                        "maxLength": 128,
                                        "pattern": "^[A-Za-z0-9][A-Za-z0-9_.:-]{0,127}$"
                                    },
                                    "from": {
                                        "type": "string",
                                        "format": "date",
                                        "example": "2026-09-18",
                                        "description": "First date (YYYY-MM-DD, inclusive) on which a symbol took effect, on the exchange's local calendar."
                                    },
                                    "to": {
                                        "type": "string",
                                        "format": "date",
                                        "example": "2026-09-18",
                                        "description": "Last date (YYYY-MM-DD, inclusive) on which a symbol took effect; on or after from."
                                    },
                                    "as_of": {
                                        "description": "Knowledge cutoff as a UTC date (YYYY-MM-DD): the response reflects what was known by the end of that day. Defaults to now; cannot be in the future. A date from before the dataset's knowledge history returns 422 point-in-time-unavailable naming the earliest one, which GET /v1/datasets lists as earliest_as_of.",
                                        "type": "string",
                                        "format": "date"
                                    },
                                    "known_from": {
                                        "description": "First UTC date (YYYY-MM-DD, inclusive) on which a revision became known.",
                                        "type": "string",
                                        "format": "date"
                                    },
                                    "known_to": {
                                        "description": "Last UTC date (YYYY-MM-DD, inclusive) on which a revision became known; on or after known_from.",
                                        "type": "string",
                                        "format": "date"
                                    },
                                    "order": {
                                        "type": "string",
                                        "enum": [
                                            "asc",
                                            "desc"
                                        ],
                                        "description": "Direction on valid_from; ties use ID ascending.",
                                        "example": "asc",
                                        "default": "asc"
                                    }
                                },
                                "required": [
                                    "instrument_id"
                                ],
                                "x-query-constraints": [
                                    {
                                        "rule": "less_than",
                                        "lower": "from",
                                        "upper": "to"
                                    },
                                    {
                                        "rule": "less_than",
                                        "lower": "known_from",
                                        "upper": "known_to"
                                    }
                                ]
                            }
                        }
                    },
                    {
                        "type": "object",
                        "additionalProperties": false,
                        "required": [
                            "resource",
                            "parameters"
                        ],
                        "properties": {
                            "resource": {
                                "type": "string",
                                "const": "/v1/instruments/{instrument_id}/identifiers"
                            },
                            "parameters": {
                                "type": "object",
                                "additionalProperties": false,
                                "properties": {
                                    "instrument_id": {
                                        "type": "string",
                                        "description": "Stable public identifier.",
                                        "example": "inst_example_aapl",
                                        "minLength": 1,
                                        "maxLength": 128,
                                        "pattern": "^[A-Za-z0-9][A-Za-z0-9_.:-]{0,127}$"
                                    },
                                    "effective_date": {
                                        "type": "string",
                                        "format": "date",
                                        "example": "2026-09-18",
                                        "description": "Effective date, defaults to the UTC date of as_of. Returns the latest eligible snapshot on or before this date; response retains its actual snapshot date."
                                    },
                                    "as_of": {
                                        "description": "Knowledge cutoff as a UTC date (YYYY-MM-DD): the response reflects what was known by the end of that day. Defaults to now; cannot be in the future. A date from before the dataset's knowledge history returns 422 point-in-time-unavailable naming the earliest one, which GET /v1/datasets lists as earliest_as_of.",
                                        "type": "string",
                                        "format": "date"
                                    },
                                    "known_from": {
                                        "description": "First UTC date (YYYY-MM-DD, inclusive) on which a revision became known.",
                                        "type": "string",
                                        "format": "date"
                                    },
                                    "known_to": {
                                        "description": "Last UTC date (YYYY-MM-DD, inclusive) on which a revision became known; on or after known_from.",
                                        "type": "string",
                                        "format": "date"
                                    },
                                    "order": {
                                        "type": "string",
                                        "enum": [
                                            "asc",
                                            "desc"
                                        ],
                                        "description": "Direction on id; ties use ID ascending.",
                                        "example": "asc",
                                        "default": "asc"
                                    }
                                },
                                "required": [
                                    "instrument_id"
                                ],
                                "x-query-constraints": [
                                    {
                                        "rule": "less_than",
                                        "lower": "known_from",
                                        "upper": "known_to"
                                    }
                                ]
                            }
                        }
                    },
                    {
                        "type": "object",
                        "additionalProperties": false,
                        "required": [
                            "resource",
                            "parameters"
                        ],
                        "properties": {
                            "resource": {
                                "type": "string",
                                "const": "/v1/instruments/{instrument_id}/events"
                            },
                            "parameters": {
                                "type": "object",
                                "additionalProperties": false,
                                "properties": {
                                    "instrument_id": {
                                        "type": "string",
                                        "description": "Stable public identifier.",
                                        "example": "inst_example_aapl",
                                        "minLength": 1,
                                        "maxLength": 128,
                                        "pattern": "^[A-Za-z0-9][A-Za-z0-9_.:-]{0,127}$"
                                    },
                                    "from": {
                                        "type": "string",
                                        "format": "date",
                                        "example": "2026-09-18",
                                        "description": "Inclusive lower bound on date."
                                    },
                                    "to": {
                                        "type": "string",
                                        "format": "date",
                                        "example": "2026-09-18",
                                        "description": "Inclusive upper bound on date; must be on or after from, so from equal to to selects one day."
                                    },
                                    "as_of": {
                                        "description": "Knowledge cutoff as a UTC date (YYYY-MM-DD): the response reflects what was known by the end of that day. Defaults to now; cannot be in the future. A date from before the dataset's knowledge history returns 422 point-in-time-unavailable naming the earliest one, which GET /v1/datasets lists as earliest_as_of.",
                                        "type": "string",
                                        "format": "date"
                                    },
                                    "order": {
                                        "type": "string",
                                        "enum": [
                                            "asc",
                                            "desc"
                                        ],
                                        "description": "Direction on date; ties use ID ascending.",
                                        "example": "asc",
                                        "default": "asc"
                                    }
                                },
                                "required": [
                                    "instrument_id"
                                ],
                                "x-query-constraints": [
                                    {
                                        "rule": "less_than",
                                        "lower": "from",
                                        "upper": "to"
                                    }
                                ]
                            }
                        }
                    },
                    {
                        "type": "object",
                        "additionalProperties": false,
                        "required": [
                            "resource",
                            "parameters"
                        ],
                        "properties": {
                            "resource": {
                                "type": "string",
                                "const": "/v1/companies"
                            },
                            "parameters": {
                                "type": "object",
                                "additionalProperties": false,
                                "properties": {
                                    "company_ids": {
                                        "type": "array",
                                        "minItems": 1,
                                        "maxItems": 100,
                                        "uniqueItems": true,
                                        "items": {
                                            "type": "string",
                                            "description": "Opaque stable public identifier; never an internal database key.",
                                            "example": "company_example_apple",
                                            "minLength": 1,
                                            "maxLength": 128,
                                            "pattern": "^[A-Za-z0-9][A-Za-z0-9_.:-]{0,127}$"
                                        },
                                        "description": "Filter by issuer IDs. May be combined with instrument selectors; filters intersect, except on issuer-level datasets (statements, segments, estimates, earnings, insider transactions), where an instrument selector is read as its company and takes the place of company_ids, so results cover every share class."
                                    },
                                    "instrument_ids": {
                                        "type": "array",
                                        "minItems": 1,
                                        "maxItems": 100,
                                        "uniqueItems": true,
                                        "items": {
                                            "type": "string",
                                            "description": "Opaque stable public identifier; never an internal database key.",
                                            "example": "inst_example_aapl",
                                            "minLength": 1,
                                            "maxLength": 128,
                                            "pattern": "^[A-Za-z0-9][A-Za-z0-9_.:-]{0,127}$"
                                        },
                                        "description": "Filter by stable instrument IDs. IDs and symbols may not be combined."
                                    },
                                    "symbols": {
                                        "type": "array",
                                        "minItems": 1,
                                        "maxItems": 100,
                                        "uniqueItems": true,
                                        "items": {
                                            "type": "string",
                                            "pattern": "^(?:(?:[A-Za-z0-9]{4}|[Cc][Rr][Yy][Pp][Tt][Oo]|[Ff][Oo][Rr][Ee][Xx]|[Ii][Nn][Dd][Ee][Xx]):|\\^)?[A-Za-z0-9](?:[A-Za-z0-9./_^= -]{0,62}[A-Za-z0-9./_^=-])?$",
                                            "example": "XNAS:AAPL"
                                        },
                                        "description": "Convenience lookup for exchange-listed instruments as MIC:TICKER or a bare ticker, which resolves to the exchange listing that ticker; resolves at symbol_at. The MIC and the ticker are case-insensitive, and two spellings of one listing (AAPL and XNAS:AAPL) count as a repeated value. A bare ticker that names no listing as written is also read in the common vendor spellings: with an exchange suffix (RY.TO, SHEL.L, VOD.LSE, BHP.AX), ^GSPC for INDEX:GSPC, and EURUSD=X or EURUSD for FOREX:EUR-USD. A ticker may contain a space (BAC PRL) but not start or end with one. A request in which no symbol resolves returns 404 symbol-not-resolved; otherwise each symbol that does not resolve, or resolves to a listing with no rows for the request (no-data), is an entry of meta.errors. IDs and symbols may not be combined."
                                    },
                                    "symbol_at": {
                                        "description": "Resolve symbols as they were assigned at the end of this UTC date (YYYY-MM-DD); defaults to as_of. Only listings the security master holds resolve: it was built in September 2026 and records delistings from then on, so most issuers delisted earlier, such as TWTR or SIVB, resolve at no date. Only valid with symbols.",
                                        "type": "string",
                                        "format": "date"
                                    },
                                    "countries": {
                                        "type": "array",
                                        "minItems": 1,
                                        "maxItems": 100,
                                        "uniqueItems": true,
                                        "items": {
                                            "type": "string",
                                            "pattern": "^[A-Z]{2}$",
                                            "example": "US"
                                        },
                                        "description": "ISO 3166-1 alpha-2 country codes."
                                    },
                                    "q": {
                                        "type": "string",
                                        "minLength": 1,
                                        "maxLength": 200,
                                        "pattern": "\\S",
                                        "description": "Case-insensitive company name search. Without order, the best matches come first: an exact name, then names that start with the text, then other matches, the company with the most traded listing first within each. A value that is empty or only whitespace returns 422."
                                    },
                                    "effective_date": {
                                        "type": "string",
                                        "format": "date",
                                        "example": "2026-09-18",
                                        "description": "Effective date, defaults to the UTC date of as_of. Returns the latest eligible snapshot on or before this date; response retains its actual snapshot date."
                                    },
                                    "as_of": {
                                        "description": "Knowledge cutoff as a UTC date (YYYY-MM-DD): the response reflects what was known by the end of that day. Defaults to now; cannot be in the future. A date from before the dataset's knowledge history returns 422 point-in-time-unavailable naming the earliest one, which GET /v1/datasets lists as earliest_as_of.",
                                        "type": "string",
                                        "format": "date"
                                    },
                                    "known_from": {
                                        "description": "First UTC date (YYYY-MM-DD, inclusive) on which a revision became known.",
                                        "type": "string",
                                        "format": "date"
                                    },
                                    "known_to": {
                                        "description": "Last UTC date (YYYY-MM-DD, inclusive) on which a revision became known; on or after known_from.",
                                        "type": "string",
                                        "format": "date"
                                    },
                                    "order": {
                                        "type": "string",
                                        "enum": [
                                            "asc",
                                            "desc"
                                        ],
                                        "description": "Direction on id; ties use ID ascending.",
                                        "example": "asc",
                                        "default": "asc"
                                    }
                                },
                                "x-query-constraints": [
                                    {
                                        "rule": "mutually_exclusive",
                                        "parameters": [
                                            "instrument_ids",
                                            "symbols"
                                        ]
                                    },
                                    {
                                        "rule": "requires",
                                        "parameter": "symbol_at",
                                        "required": [
                                            "symbols"
                                        ]
                                    },
                                    {
                                        "rule": "less_than",
                                        "lower": "known_from",
                                        "upper": "known_to"
                                    }
                                ],
                                "required": []
                            }
                        }
                    },
                    {
                        "type": "object",
                        "additionalProperties": false,
                        "required": [
                            "resource",
                            "parameters"
                        ],
                        "properties": {
                            "resource": {
                                "type": "string",
                                "const": "/v1/news"
                            },
                            "parameters": {
                                "type": "object",
                                "additionalProperties": false,
                                "properties": {
                                    "instrument_ids": {
                                        "type": "array",
                                        "minItems": 1,
                                        "maxItems": 100,
                                        "uniqueItems": true,
                                        "items": {
                                            "type": "string",
                                            "description": "Opaque stable public identifier; never an internal database key.",
                                            "example": "inst_example_aapl",
                                            "minLength": 1,
                                            "maxLength": 128,
                                            "pattern": "^[A-Za-z0-9][A-Za-z0-9_.:-]{0,127}$"
                                        },
                                        "description": "Filter by stable instrument IDs. IDs and symbols may not be combined."
                                    },
                                    "symbols": {
                                        "type": "array",
                                        "minItems": 1,
                                        "maxItems": 100,
                                        "uniqueItems": true,
                                        "items": {
                                            "type": "string",
                                            "pattern": "^(?:(?:[A-Za-z0-9]{4}|[Cc][Rr][Yy][Pp][Tt][Oo]|[Ff][Oo][Rr][Ee][Xx]|[Ii][Nn][Dd][Ee][Xx]):|\\^)?[A-Za-z0-9](?:[A-Za-z0-9./_^= -]{0,62}[A-Za-z0-9./_^=-])?$",
                                            "example": "XNAS:AAPL"
                                        },
                                        "description": "Convenience lookup for exchange-listed instruments as MIC:TICKER or a bare ticker, which resolves to the exchange listing that ticker; resolves at symbol_at. The MIC and the ticker are case-insensitive, and two spellings of one listing (AAPL and XNAS:AAPL) count as a repeated value. A bare ticker that names no listing as written is also read in the common vendor spellings: with an exchange suffix (RY.TO, SHEL.L, VOD.LSE, BHP.AX), ^GSPC for INDEX:GSPC, and EURUSD=X or EURUSD for FOREX:EUR-USD. A ticker may contain a space (BAC PRL) but not start or end with one. A request in which no symbol resolves returns 404 symbol-not-resolved; otherwise each symbol that does not resolve, or resolves to a listing with no rows for the request (no-data), is an entry of meta.errors. IDs and symbols may not be combined."
                                    },
                                    "symbol_at": {
                                        "description": "Resolve symbols as they were assigned at the end of this UTC date (YYYY-MM-DD); defaults to as_of. Only listings the security master holds resolve: it was built in September 2026 and records delistings from then on, so most issuers delisted earlier, such as TWTR or SIVB, resolve at no date. Only valid with symbols.",
                                        "type": "string",
                                        "format": "date"
                                    },
                                    "from": {
                                        "type": "string",
                                        "format": "date",
                                        "example": "2026-09-18",
                                        "description": "First UTC date (YYYY-MM-DD, inclusive) of published_at."
                                    },
                                    "to": {
                                        "type": "string",
                                        "format": "date",
                                        "example": "2026-09-18",
                                        "description": "Last UTC date (YYYY-MM-DD, inclusive) of published_at; on or after from."
                                    },
                                    "q": {
                                        "type": "string",
                                        "minLength": 3,
                                        "maxLength": 256,
                                        "pattern": "^\\s*[\\p{L}\\p{N}]{3,}(?:\\s+[\\p{L}\\p{N}]{3,}){0,9}\\s*$",
                                        "description": "Indexed word-prefix search across title and summary: 1 to 10 whitespace-separated words of at least 3 letters or digits each, at most 256 characters in all. Punctuation, shorter words and more than 10 words return 422. Every word must match. No provider query language."
                                    },
                                    "topics": {
                                        "type": "array",
                                        "minItems": 1,
                                        "maxItems": 100,
                                        "uniqueItems": true,
                                        "items": {
                                            "type": "string",
                                            "minLength": 1,
                                            "maxLength": 100,
                                            "pattern": "^\\S(?:.*\\S)?$",
                                            "description": "Topic.",
                                            "example": "earnings"
                                        },
                                        "description": "Topics, matched exactly and case-sensitively against each article's topics, which are the publisher's own tags (an open set, such as earnings). Each is 1 to 100 characters without leading or trailing whitespace; anything else returns 422."
                                    },
                                    "languages": {
                                        "type": "array",
                                        "minItems": 1,
                                        "maxItems": 100,
                                        "uniqueItems": true,
                                        "items": {
                                            "type": "string",
                                            "pattern": "^(?:[A-Za-z]{2}|[Uu][Nn][Dd])$",
                                            "description": "Language.",
                                            "example": "en"
                                        },
                                        "description": "Article languages as ISO 639-1 two-letter codes, such as en; case-insensitive. und selects articles whose language was not determined, which is most articles published before early July 2026, so add it to include them (languages=en,und). A value that is not an ISO 639-1 code or und returns 422."
                                    },
                                    "as_of": {
                                        "description": "Knowledge cutoff as a UTC date (YYYY-MM-DD): the response reflects what was known by the end of that day. Defaults to now; cannot be in the future. A date from before the dataset's knowledge history returns 422 point-in-time-unavailable naming the earliest one, which GET /v1/datasets lists as earliest_as_of.",
                                        "type": "string",
                                        "format": "date"
                                    },
                                    "known_from": {
                                        "description": "First UTC date (YYYY-MM-DD, inclusive) on which a revision became known.",
                                        "type": "string",
                                        "format": "date"
                                    },
                                    "known_to": {
                                        "description": "Last UTC date (YYYY-MM-DD, inclusive) on which a revision became known; on or after known_from.",
                                        "type": "string",
                                        "format": "date"
                                    },
                                    "order": {
                                        "type": "string",
                                        "enum": [
                                            "asc",
                                            "desc"
                                        ],
                                        "description": "Direction on published_at; ties use ID ascending.",
                                        "example": "asc",
                                        "default": "desc"
                                    }
                                },
                                "x-query-constraints": [
                                    {
                                        "rule": "mutually_exclusive",
                                        "parameters": [
                                            "instrument_ids",
                                            "symbols"
                                        ]
                                    },
                                    {
                                        "rule": "requires",
                                        "parameter": "symbol_at",
                                        "required": [
                                            "symbols"
                                        ]
                                    },
                                    {
                                        "rule": "less_than",
                                        "lower": "from",
                                        "upper": "to"
                                    },
                                    {
                                        "rule": "less_than",
                                        "lower": "known_from",
                                        "upper": "known_to"
                                    }
                                ],
                                "required": []
                            }
                        }
                    },
                    {
                        "type": "object",
                        "additionalProperties": false,
                        "required": [
                            "resource",
                            "parameters"
                        ],
                        "properties": {
                            "resource": {
                                "type": "string",
                                "const": "/v1/news/sentiment"
                            },
                            "parameters": {
                                "type": "object",
                                "additionalProperties": false,
                                "properties": {
                                    "instrument_ids": {
                                        "type": "array",
                                        "minItems": 1,
                                        "maxItems": 100,
                                        "uniqueItems": true,
                                        "items": {
                                            "type": "string",
                                            "description": "Opaque stable public identifier; never an internal database key.",
                                            "example": "inst_example_aapl",
                                            "minLength": 1,
                                            "maxLength": 128,
                                            "pattern": "^[A-Za-z0-9][A-Za-z0-9_.:-]{0,127}$"
                                        },
                                        "description": "Filter by stable instrument IDs. IDs and symbols may not be combined."
                                    },
                                    "symbols": {
                                        "type": "array",
                                        "minItems": 1,
                                        "maxItems": 100,
                                        "uniqueItems": true,
                                        "items": {
                                            "type": "string",
                                            "pattern": "^(?:(?:[A-Za-z0-9]{4}|[Cc][Rr][Yy][Pp][Tt][Oo]|[Ff][Oo][Rr][Ee][Xx]|[Ii][Nn][Dd][Ee][Xx]):|\\^)?[A-Za-z0-9](?:[A-Za-z0-9./_^= -]{0,62}[A-Za-z0-9./_^=-])?$",
                                            "example": "XNAS:AAPL"
                                        },
                                        "description": "Convenience lookup for exchange-listed instruments as MIC:TICKER or a bare ticker, which resolves to the exchange listing that ticker; resolves at symbol_at. The MIC and the ticker are case-insensitive, and two spellings of one listing (AAPL and XNAS:AAPL) count as a repeated value. A bare ticker that names no listing as written is also read in the common vendor spellings: with an exchange suffix (RY.TO, SHEL.L, VOD.LSE, BHP.AX), ^GSPC for INDEX:GSPC, and EURUSD=X or EURUSD for FOREX:EUR-USD. A ticker may contain a space (BAC PRL) but not start or end with one. A request in which no symbol resolves returns 404 symbol-not-resolved; otherwise each symbol that does not resolve, or resolves to a listing with no rows for the request (no-data), is an entry of meta.errors. IDs and symbols may not be combined."
                                    },
                                    "symbol_at": {
                                        "description": "Resolve symbols as they were assigned at the end of this UTC date (YYYY-MM-DD); defaults to as_of. Only listings the security master holds resolve: it was built in September 2026 and records delistings from then on, so most issuers delisted earlier, such as TWTR or SIVB, resolve at no date. Only valid with symbols.",
                                        "type": "string",
                                        "format": "date"
                                    },
                                    "from": {
                                        "type": "string",
                                        "format": "date",
                                        "example": "2026-09-18",
                                        "description": "Inclusive lower bound on date."
                                    },
                                    "to": {
                                        "type": "string",
                                        "format": "date",
                                        "example": "2026-09-18",
                                        "description": "Inclusive upper bound on date; must be on or after from, so from equal to to selects one day."
                                    },
                                    "interval": {
                                        "type": "string",
                                        "enum": [
                                            "1d",
                                            "1w"
                                        ],
                                        "description": "UTC buckets; default 1d.",
                                        "example": "1d"
                                    },
                                    "as_of": {
                                        "description": "Knowledge cutoff as a UTC date (YYYY-MM-DD): the response reflects what was known by the end of that day. Defaults to now; cannot be in the future. A date from before the dataset's knowledge history returns 422 point-in-time-unavailable naming the earliest one, which GET /v1/datasets lists as earliest_as_of.",
                                        "type": "string",
                                        "format": "date"
                                    },
                                    "known_from": {
                                        "description": "First UTC date (YYYY-MM-DD, inclusive) on which a revision became known.",
                                        "type": "string",
                                        "format": "date"
                                    },
                                    "known_to": {
                                        "description": "Last UTC date (YYYY-MM-DD, inclusive) on which a revision became known; on or after known_from.",
                                        "type": "string",
                                        "format": "date"
                                    },
                                    "order": {
                                        "type": "string",
                                        "enum": [
                                            "asc",
                                            "desc"
                                        ],
                                        "description": "Direction on date; ties use ID ascending.",
                                        "example": "asc",
                                        "default": "asc"
                                    }
                                },
                                "x-query-constraints": [
                                    {
                                        "rule": "mutually_exclusive",
                                        "parameters": [
                                            "instrument_ids",
                                            "symbols"
                                        ]
                                    },
                                    {
                                        "rule": "requires",
                                        "parameter": "symbol_at",
                                        "required": [
                                            "symbols"
                                        ]
                                    },
                                    {
                                        "rule": "less_than",
                                        "lower": "from",
                                        "upper": "to"
                                    },
                                    {
                                        "rule": "less_than",
                                        "lower": "known_from",
                                        "upper": "known_to"
                                    }
                                ],
                                "required": []
                            }
                        }
                    },
                    {
                        "type": "object",
                        "additionalProperties": false,
                        "required": [
                            "resource",
                            "parameters"
                        ],
                        "properties": {
                            "resource": {
                                "type": "string",
                                "const": "/v1/financials/concepts"
                            },
                            "parameters": {
                                "type": "object",
                                "additionalProperties": false,
                                "properties": {
                                    "statement": {
                                        "type": "string",
                                        "enum": [
                                            "income",
                                            "balance_sheet",
                                            "cash_flow"
                                        ],
                                        "description": "Statement family.",
                                        "example": "income"
                                    },
                                    "as_of": {
                                        "description": "Knowledge cutoff as a UTC date (YYYY-MM-DD): the response reflects what was known by the end of that day. Defaults to now; cannot be in the future. A date from before the dataset's knowledge history returns 422 point-in-time-unavailable naming the earliest one, which GET /v1/datasets lists as earliest_as_of.",
                                        "type": "string",
                                        "format": "date"
                                    },
                                    "known_from": {
                                        "description": "First UTC date (YYYY-MM-DD, inclusive) on which a revision became known.",
                                        "type": "string",
                                        "format": "date"
                                    },
                                    "known_to": {
                                        "description": "Last UTC date (YYYY-MM-DD, inclusive) on which a revision became known; on or after known_from.",
                                        "type": "string",
                                        "format": "date"
                                    },
                                    "order": {
                                        "type": "string",
                                        "enum": [
                                            "asc",
                                            "desc"
                                        ],
                                        "description": "Direction on id; ties use ID ascending.",
                                        "example": "asc",
                                        "default": "asc"
                                    }
                                },
                                "x-query-constraints": [
                                    {
                                        "rule": "less_than",
                                        "lower": "known_from",
                                        "upper": "known_to"
                                    }
                                ],
                                "required": []
                            }
                        }
                    },
                    {
                        "type": "object",
                        "additionalProperties": false,
                        "required": [
                            "resource",
                            "parameters"
                        ],
                        "properties": {
                            "resource": {
                                "type": "string",
                                "const": "/v1/financials/statements"
                            },
                            "parameters": {
                                "type": "object",
                                "additionalProperties": false,
                                "properties": {
                                    "company_ids": {
                                        "type": "array",
                                        "minItems": 1,
                                        "maxItems": 100,
                                        "uniqueItems": true,
                                        "items": {
                                            "type": "string",
                                            "description": "Opaque stable public identifier; never an internal database key.",
                                            "example": "company_example_apple",
                                            "minLength": 1,
                                            "maxLength": 128,
                                            "pattern": "^[A-Za-z0-9][A-Za-z0-9_.:-]{0,127}$"
                                        },
                                        "description": "Filter by issuer IDs. May be combined with instrument selectors; filters intersect, except on issuer-level datasets (statements, segments, estimates, earnings, insider transactions), where an instrument selector is read as its company and takes the place of company_ids, so results cover every share class."
                                    },
                                    "instrument_ids": {
                                        "type": "array",
                                        "minItems": 1,
                                        "maxItems": 100,
                                        "uniqueItems": true,
                                        "items": {
                                            "type": "string",
                                            "description": "Opaque stable public identifier; never an internal database key.",
                                            "example": "inst_example_aapl",
                                            "minLength": 1,
                                            "maxLength": 128,
                                            "pattern": "^[A-Za-z0-9][A-Za-z0-9_.:-]{0,127}$"
                                        },
                                        "description": "Filter by stable instrument IDs. IDs and symbols may not be combined."
                                    },
                                    "symbols": {
                                        "type": "array",
                                        "minItems": 1,
                                        "maxItems": 100,
                                        "uniqueItems": true,
                                        "items": {
                                            "type": "string",
                                            "pattern": "^(?:(?:[A-Za-z0-9]{4}|[Cc][Rr][Yy][Pp][Tt][Oo]|[Ff][Oo][Rr][Ee][Xx]|[Ii][Nn][Dd][Ee][Xx]):|\\^)?[A-Za-z0-9](?:[A-Za-z0-9./_^= -]{0,62}[A-Za-z0-9./_^=-])?$",
                                            "example": "XNAS:AAPL"
                                        },
                                        "description": "Convenience lookup for exchange-listed instruments as MIC:TICKER or a bare ticker, which resolves to the exchange listing that ticker; resolves at symbol_at. The MIC and the ticker are case-insensitive, and two spellings of one listing (AAPL and XNAS:AAPL) count as a repeated value. A bare ticker that names no listing as written is also read in the common vendor spellings: with an exchange suffix (RY.TO, SHEL.L, VOD.LSE, BHP.AX), ^GSPC for INDEX:GSPC, and EURUSD=X or EURUSD for FOREX:EUR-USD. A ticker may contain a space (BAC PRL) but not start or end with one. A request in which no symbol resolves returns 404 symbol-not-resolved; otherwise each symbol that does not resolve, or resolves to a listing with no rows for the request (no-data), is an entry of meta.errors. IDs and symbols may not be combined."
                                    },
                                    "symbol_at": {
                                        "description": "Resolve symbols as they were assigned at the end of this UTC date (YYYY-MM-DD); defaults to as_of. Only listings the security master holds resolve: it was built in September 2026 and records delistings from then on, so most issuers delisted earlier, such as TWTR or SIVB, resolve at no date. Only valid with symbols.",
                                        "type": "string",
                                        "format": "date"
                                    },
                                    "statement": {
                                        "type": "string",
                                        "enum": [
                                            "income",
                                            "balance_sheet",
                                            "cash_flow"
                                        ],
                                        "description": "Statement family.",
                                        "example": "income"
                                    },
                                    "period": {
                                        "type": "string",
                                        "enum": [
                                            "quarterly",
                                            "annual"
                                        ],
                                        "description": "Fiscal period; defaults to quarterly.",
                                        "example": "quarterly"
                                    },
                                    "from": {
                                        "type": "string",
                                        "format": "date",
                                        "example": "2026-09-18",
                                        "description": "Inclusive lower bound on period_end."
                                    },
                                    "to": {
                                        "type": "string",
                                        "format": "date",
                                        "example": "2026-09-18",
                                        "description": "Inclusive upper bound on period_end; must be on or after from, so from equal to to selects one day."
                                    },
                                    "as_of": {
                                        "description": "Knowledge cutoff as a UTC date (YYYY-MM-DD): the response reflects what was known by the end of that day. Defaults to now; cannot be in the future. A date from before the dataset's knowledge history returns 422 point-in-time-unavailable naming the earliest one, which GET /v1/datasets lists as earliest_as_of.",
                                        "type": "string",
                                        "format": "date"
                                    },
                                    "known_from": {
                                        "description": "First UTC date (YYYY-MM-DD, inclusive) on which a revision became known.",
                                        "type": "string",
                                        "format": "date"
                                    },
                                    "known_to": {
                                        "description": "Last UTC date (YYYY-MM-DD, inclusive) on which a revision became known; on or after known_from.",
                                        "type": "string",
                                        "format": "date"
                                    },
                                    "order": {
                                        "type": "string",
                                        "enum": [
                                            "asc",
                                            "desc"
                                        ],
                                        "description": "Direction on period_end; ties use ID ascending.",
                                        "example": "asc",
                                        "default": "asc"
                                    }
                                },
                                "x-query-constraints": [
                                    {
                                        "rule": "mutually_exclusive",
                                        "parameters": [
                                            "instrument_ids",
                                            "symbols"
                                        ]
                                    },
                                    {
                                        "rule": "requires",
                                        "parameter": "symbol_at",
                                        "required": [
                                            "symbols"
                                        ]
                                    },
                                    {
                                        "rule": "less_than",
                                        "lower": "from",
                                        "upper": "to"
                                    },
                                    {
                                        "rule": "less_than",
                                        "lower": "known_from",
                                        "upper": "known_to"
                                    }
                                ],
                                "required": []
                            }
                        }
                    },
                    {
                        "type": "object",
                        "additionalProperties": false,
                        "required": [
                            "resource",
                            "parameters"
                        ],
                        "properties": {
                            "resource": {
                                "type": "string",
                                "const": "/v1/financials/metric-definitions"
                            },
                            "parameters": {
                                "type": "object",
                                "additionalProperties": false,
                                "properties": {
                                    "as_of": {
                                        "description": "Knowledge cutoff as a UTC date (YYYY-MM-DD): the response reflects what was known by the end of that day. Defaults to now; cannot be in the future. A date from before the dataset's knowledge history returns 422 point-in-time-unavailable naming the earliest one, which GET /v1/datasets lists as earliest_as_of.",
                                        "type": "string",
                                        "format": "date"
                                    },
                                    "known_from": {
                                        "description": "First UTC date (YYYY-MM-DD, inclusive) on which a revision became known.",
                                        "type": "string",
                                        "format": "date"
                                    },
                                    "known_to": {
                                        "description": "Last UTC date (YYYY-MM-DD, inclusive) on which a revision became known; on or after known_from.",
                                        "type": "string",
                                        "format": "date"
                                    },
                                    "order": {
                                        "type": "string",
                                        "enum": [
                                            "asc",
                                            "desc"
                                        ],
                                        "description": "Direction on id; ties use ID ascending.",
                                        "example": "asc",
                                        "default": "asc"
                                    }
                                },
                                "x-query-constraints": [
                                    {
                                        "rule": "less_than",
                                        "lower": "known_from",
                                        "upper": "known_to"
                                    }
                                ],
                                "required": []
                            }
                        }
                    },
                    {
                        "type": "object",
                        "additionalProperties": false,
                        "required": [
                            "resource",
                            "parameters"
                        ],
                        "properties": {
                            "resource": {
                                "type": "string",
                                "const": "/v1/financials/metrics"
                            },
                            "parameters": {
                                "type": "object",
                                "additionalProperties": false,
                                "properties": {
                                    "company_ids": {
                                        "type": "array",
                                        "minItems": 1,
                                        "maxItems": 100,
                                        "uniqueItems": true,
                                        "items": {
                                            "type": "string",
                                            "description": "Opaque stable public identifier; never an internal database key.",
                                            "example": "company_example_apple",
                                            "minLength": 1,
                                            "maxLength": 128,
                                            "pattern": "^[A-Za-z0-9][A-Za-z0-9_.:-]{0,127}$"
                                        },
                                        "description": "Filter by issuer IDs. May be combined with instrument selectors; filters intersect, except on issuer-level datasets (statements, segments, estimates, earnings, insider transactions), where an instrument selector is read as its company and takes the place of company_ids, so results cover every share class."
                                    },
                                    "instrument_ids": {
                                        "type": "array",
                                        "minItems": 1,
                                        "maxItems": 100,
                                        "uniqueItems": true,
                                        "items": {
                                            "type": "string",
                                            "description": "Opaque stable public identifier; never an internal database key.",
                                            "example": "inst_example_aapl",
                                            "minLength": 1,
                                            "maxLength": 128,
                                            "pattern": "^[A-Za-z0-9][A-Za-z0-9_.:-]{0,127}$"
                                        },
                                        "description": "Filter by stable instrument IDs. IDs and symbols may not be combined."
                                    },
                                    "symbols": {
                                        "type": "array",
                                        "minItems": 1,
                                        "maxItems": 100,
                                        "uniqueItems": true,
                                        "items": {
                                            "type": "string",
                                            "pattern": "^(?:(?:[A-Za-z0-9]{4}|[Cc][Rr][Yy][Pp][Tt][Oo]|[Ff][Oo][Rr][Ee][Xx]|[Ii][Nn][Dd][Ee][Xx]):|\\^)?[A-Za-z0-9](?:[A-Za-z0-9./_^= -]{0,62}[A-Za-z0-9./_^=-])?$",
                                            "example": "XNAS:AAPL"
                                        },
                                        "description": "Convenience lookup for exchange-listed instruments as MIC:TICKER or a bare ticker, which resolves to the exchange listing that ticker; resolves at symbol_at. The MIC and the ticker are case-insensitive, and two spellings of one listing (AAPL and XNAS:AAPL) count as a repeated value. A bare ticker that names no listing as written is also read in the common vendor spellings: with an exchange suffix (RY.TO, SHEL.L, VOD.LSE, BHP.AX), ^GSPC for INDEX:GSPC, and EURUSD=X or EURUSD for FOREX:EUR-USD. A ticker may contain a space (BAC PRL) but not start or end with one. A request in which no symbol resolves returns 404 symbol-not-resolved; otherwise each symbol that does not resolve, or resolves to a listing with no rows for the request (no-data), is an entry of meta.errors. IDs and symbols may not be combined."
                                    },
                                    "symbol_at": {
                                        "description": "Resolve symbols as they were assigned at the end of this UTC date (YYYY-MM-DD); defaults to as_of. Only listings the security master holds resolve: it was built in September 2026 and records delistings from then on, so most issuers delisted earlier, such as TWTR or SIVB, resolve at no date. Only valid with symbols.",
                                        "type": "string",
                                        "format": "date"
                                    },
                                    "metrics": {
                                        "type": "array",
                                        "minItems": 1,
                                        "maxItems": 100,
                                        "uniqueItems": true,
                                        "items": {
                                            "minLength": 1,
                                            "maxLength": 128,
                                            "type": "string",
                                            "description": "Metric.",
                                            "example": "market_capitalization"
                                        },
                                        "description": "IDs from financials/metric-definitions."
                                    },
                                    "from": {
                                        "type": "string",
                                        "format": "date",
                                        "example": "2026-09-18",
                                        "description": "Inclusive lower bound on observed_on."
                                    },
                                    "to": {
                                        "type": "string",
                                        "format": "date",
                                        "example": "2026-09-18",
                                        "description": "Inclusive upper bound on observed_on; must be on or after from, so from equal to to selects one day."
                                    },
                                    "as_of": {
                                        "description": "Knowledge cutoff as a UTC date (YYYY-MM-DD): the response reflects what was known by the end of that day. Defaults to now; cannot be in the future. A date from before the dataset's knowledge history returns 422 point-in-time-unavailable naming the earliest one, which GET /v1/datasets lists as earliest_as_of.",
                                        "type": "string",
                                        "format": "date"
                                    },
                                    "known_from": {
                                        "description": "First UTC date (YYYY-MM-DD, inclusive) on which a revision became known.",
                                        "type": "string",
                                        "format": "date"
                                    },
                                    "known_to": {
                                        "description": "Last UTC date (YYYY-MM-DD, inclusive) on which a revision became known; on or after known_from.",
                                        "type": "string",
                                        "format": "date"
                                    },
                                    "order": {
                                        "type": "string",
                                        "enum": [
                                            "asc",
                                            "desc"
                                        ],
                                        "description": "Direction on observed_on; ties use ID ascending.",
                                        "example": "asc",
                                        "default": "asc"
                                    }
                                },
                                "x-query-constraints": [
                                    {
                                        "rule": "mutually_exclusive",
                                        "parameters": [
                                            "instrument_ids",
                                            "symbols"
                                        ]
                                    },
                                    {
                                        "rule": "requires",
                                        "parameter": "symbol_at",
                                        "required": [
                                            "symbols"
                                        ]
                                    },
                                    {
                                        "rule": "less_than",
                                        "lower": "from",
                                        "upper": "to"
                                    },
                                    {
                                        "rule": "less_than",
                                        "lower": "known_from",
                                        "upper": "known_to"
                                    }
                                ],
                                "required": []
                            }
                        }
                    },
                    {
                        "type": "object",
                        "additionalProperties": false,
                        "required": [
                            "resource",
                            "parameters"
                        ],
                        "properties": {
                            "resource": {
                                "type": "string",
                                "const": "/v1/financials/segments"
                            },
                            "parameters": {
                                "type": "object",
                                "additionalProperties": false,
                                "properties": {
                                    "company_ids": {
                                        "type": "array",
                                        "minItems": 1,
                                        "maxItems": 100,
                                        "uniqueItems": true,
                                        "items": {
                                            "type": "string",
                                            "description": "Opaque stable public identifier; never an internal database key.",
                                            "example": "company_example_apple",
                                            "minLength": 1,
                                            "maxLength": 128,
                                            "pattern": "^[A-Za-z0-9][A-Za-z0-9_.:-]{0,127}$"
                                        },
                                        "description": "Filter by issuer IDs. May be combined with instrument selectors; filters intersect, except on issuer-level datasets (statements, segments, estimates, earnings, insider transactions), where an instrument selector is read as its company and takes the place of company_ids, so results cover every share class."
                                    },
                                    "instrument_ids": {
                                        "type": "array",
                                        "minItems": 1,
                                        "maxItems": 100,
                                        "uniqueItems": true,
                                        "items": {
                                            "type": "string",
                                            "description": "Opaque stable public identifier; never an internal database key.",
                                            "example": "inst_example_aapl",
                                            "minLength": 1,
                                            "maxLength": 128,
                                            "pattern": "^[A-Za-z0-9][A-Za-z0-9_.:-]{0,127}$"
                                        },
                                        "description": "Filter by stable instrument IDs. IDs and symbols may not be combined."
                                    },
                                    "symbols": {
                                        "type": "array",
                                        "minItems": 1,
                                        "maxItems": 100,
                                        "uniqueItems": true,
                                        "items": {
                                            "type": "string",
                                            "pattern": "^(?:(?:[A-Za-z0-9]{4}|[Cc][Rr][Yy][Pp][Tt][Oo]|[Ff][Oo][Rr][Ee][Xx]|[Ii][Nn][Dd][Ee][Xx]):|\\^)?[A-Za-z0-9](?:[A-Za-z0-9./_^= -]{0,62}[A-Za-z0-9./_^=-])?$",
                                            "example": "XNAS:AAPL"
                                        },
                                        "description": "Convenience lookup for exchange-listed instruments as MIC:TICKER or a bare ticker, which resolves to the exchange listing that ticker; resolves at symbol_at. The MIC and the ticker are case-insensitive, and two spellings of one listing (AAPL and XNAS:AAPL) count as a repeated value. A bare ticker that names no listing as written is also read in the common vendor spellings: with an exchange suffix (RY.TO, SHEL.L, VOD.LSE, BHP.AX), ^GSPC for INDEX:GSPC, and EURUSD=X or EURUSD for FOREX:EUR-USD. A ticker may contain a space (BAC PRL) but not start or end with one. A request in which no symbol resolves returns 404 symbol-not-resolved; otherwise each symbol that does not resolve, or resolves to a listing with no rows for the request (no-data), is an entry of meta.errors. IDs and symbols may not be combined."
                                    },
                                    "symbol_at": {
                                        "description": "Resolve symbols as they were assigned at the end of this UTC date (YYYY-MM-DD); defaults to as_of. Only listings the security master holds resolve: it was built in September 2026 and records delistings from then on, so most issuers delisted earlier, such as TWTR or SIVB, resolve at no date. Only valid with symbols.",
                                        "type": "string",
                                        "format": "date"
                                    },
                                    "dimension": {
                                        "type": "string",
                                        "enum": [
                                            "business",
                                            "geography"
                                        ],
                                        "description": "Segment axis.",
                                        "example": "business"
                                    },
                                    "from": {
                                        "type": "string",
                                        "format": "date",
                                        "example": "2026-09-18",
                                        "description": "Inclusive lower bound on period_end."
                                    },
                                    "to": {
                                        "type": "string",
                                        "format": "date",
                                        "example": "2026-09-18",
                                        "description": "Inclusive upper bound on period_end; must be on or after from, so from equal to to selects one day."
                                    },
                                    "as_of": {
                                        "description": "Knowledge cutoff as a UTC date (YYYY-MM-DD): the response reflects what was known by the end of that day. Defaults to now; cannot be in the future. A date from before the dataset's knowledge history returns 422 point-in-time-unavailable naming the earliest one, which GET /v1/datasets lists as earliest_as_of.",
                                        "type": "string",
                                        "format": "date"
                                    },
                                    "known_from": {
                                        "description": "First UTC date (YYYY-MM-DD, inclusive) on which a revision became known.",
                                        "type": "string",
                                        "format": "date"
                                    },
                                    "known_to": {
                                        "description": "Last UTC date (YYYY-MM-DD, inclusive) on which a revision became known; on or after known_from.",
                                        "type": "string",
                                        "format": "date"
                                    },
                                    "order": {
                                        "type": "string",
                                        "enum": [
                                            "asc",
                                            "desc"
                                        ],
                                        "description": "Direction on period_end; ties use ID ascending.",
                                        "example": "asc",
                                        "default": "asc"
                                    }
                                },
                                "x-query-constraints": [
                                    {
                                        "rule": "mutually_exclusive",
                                        "parameters": [
                                            "instrument_ids",
                                            "symbols"
                                        ]
                                    },
                                    {
                                        "rule": "requires",
                                        "parameter": "symbol_at",
                                        "required": [
                                            "symbols"
                                        ]
                                    },
                                    {
                                        "rule": "less_than",
                                        "lower": "from",
                                        "upper": "to"
                                    },
                                    {
                                        "rule": "less_than",
                                        "lower": "known_from",
                                        "upper": "known_to"
                                    }
                                ],
                                "required": []
                            }
                        }
                    },
                    {
                        "type": "object",
                        "additionalProperties": false,
                        "required": [
                            "resource",
                            "parameters"
                        ],
                        "properties": {
                            "resource": {
                                "type": "string",
                                "const": "/v1/earnings"
                            },
                            "parameters": {
                                "type": "object",
                                "additionalProperties": false,
                                "properties": {
                                    "company_ids": {
                                        "type": "array",
                                        "minItems": 1,
                                        "maxItems": 100,
                                        "uniqueItems": true,
                                        "items": {
                                            "type": "string",
                                            "description": "Opaque stable public identifier; never an internal database key.",
                                            "example": "company_example_apple",
                                            "minLength": 1,
                                            "maxLength": 128,
                                            "pattern": "^[A-Za-z0-9][A-Za-z0-9_.:-]{0,127}$"
                                        },
                                        "description": "Filter by issuer IDs. May be combined with instrument selectors; filters intersect, except on issuer-level datasets (statements, segments, estimates, earnings, insider transactions), where an instrument selector is read as its company and takes the place of company_ids, so results cover every share class."
                                    },
                                    "instrument_ids": {
                                        "type": "array",
                                        "minItems": 1,
                                        "maxItems": 100,
                                        "uniqueItems": true,
                                        "items": {
                                            "type": "string",
                                            "description": "Opaque stable public identifier; never an internal database key.",
                                            "example": "inst_example_aapl",
                                            "minLength": 1,
                                            "maxLength": 128,
                                            "pattern": "^[A-Za-z0-9][A-Za-z0-9_.:-]{0,127}$"
                                        },
                                        "description": "Filter by stable instrument IDs. IDs and symbols may not be combined."
                                    },
                                    "symbols": {
                                        "type": "array",
                                        "minItems": 1,
                                        "maxItems": 100,
                                        "uniqueItems": true,
                                        "items": {
                                            "type": "string",
                                            "pattern": "^(?:(?:[A-Za-z0-9]{4}|[Cc][Rr][Yy][Pp][Tt][Oo]|[Ff][Oo][Rr][Ee][Xx]|[Ii][Nn][Dd][Ee][Xx]):|\\^)?[A-Za-z0-9](?:[A-Za-z0-9./_^= -]{0,62}[A-Za-z0-9./_^=-])?$",
                                            "example": "XNAS:AAPL"
                                        },
                                        "description": "Convenience lookup for exchange-listed instruments as MIC:TICKER or a bare ticker, which resolves to the exchange listing that ticker; resolves at symbol_at. The MIC and the ticker are case-insensitive, and two spellings of one listing (AAPL and XNAS:AAPL) count as a repeated value. A bare ticker that names no listing as written is also read in the common vendor spellings: with an exchange suffix (RY.TO, SHEL.L, VOD.LSE, BHP.AX), ^GSPC for INDEX:GSPC, and EURUSD=X or EURUSD for FOREX:EUR-USD. A ticker may contain a space (BAC PRL) but not start or end with one. A request in which no symbol resolves returns 404 symbol-not-resolved; otherwise each symbol that does not resolve, or resolves to a listing with no rows for the request (no-data), is an entry of meta.errors. IDs and symbols may not be combined."
                                    },
                                    "symbol_at": {
                                        "description": "Resolve symbols as they were assigned at the end of this UTC date (YYYY-MM-DD); defaults to as_of. Only listings the security master holds resolve: it was built in September 2026 and records delistings from then on, so most issuers delisted earlier, such as TWTR or SIVB, resolve at no date. Only valid with symbols.",
                                        "type": "string",
                                        "format": "date"
                                    },
                                    "from": {
                                        "type": "string",
                                        "format": "date",
                                        "example": "2026-09-18",
                                        "description": "Inclusive lower bound on report_date."
                                    },
                                    "to": {
                                        "type": "string",
                                        "format": "date",
                                        "example": "2026-09-18",
                                        "description": "Inclusive upper bound on report_date; must be on or after from, so from equal to to selects one day."
                                    },
                                    "status": {
                                        "type": "string",
                                        "enum": [
                                            "estimated",
                                            "confirmed",
                                            "reported",
                                            "cancelled"
                                        ],
                                        "description": "Announcement status: estimated (results not yet reported) or reported. The connected source reports neither confirmed nor cancelled announcements, so those match nothing.",
                                        "example": "estimated"
                                    },
                                    "as_of": {
                                        "description": "Knowledge cutoff as a UTC date (YYYY-MM-DD): the response reflects what was known by the end of that day. Defaults to now; cannot be in the future. A date from before the dataset's knowledge history returns 422 point-in-time-unavailable naming the earliest one, which GET /v1/datasets lists as earliest_as_of.",
                                        "type": "string",
                                        "format": "date"
                                    },
                                    "known_from": {
                                        "description": "First UTC date (YYYY-MM-DD, inclusive) on which a revision became known.",
                                        "type": "string",
                                        "format": "date"
                                    },
                                    "known_to": {
                                        "description": "Last UTC date (YYYY-MM-DD, inclusive) on which a revision became known; on or after known_from.",
                                        "type": "string",
                                        "format": "date"
                                    },
                                    "order": {
                                        "type": "string",
                                        "enum": [
                                            "asc",
                                            "desc"
                                        ],
                                        "description": "Direction on report_date; ties use ID ascending.",
                                        "example": "asc",
                                        "default": "desc"
                                    }
                                },
                                "x-query-constraints": [
                                    {
                                        "rule": "mutually_exclusive",
                                        "parameters": [
                                            "instrument_ids",
                                            "symbols"
                                        ]
                                    },
                                    {
                                        "rule": "requires",
                                        "parameter": "symbol_at",
                                        "required": [
                                            "symbols"
                                        ]
                                    },
                                    {
                                        "rule": "less_than",
                                        "lower": "from",
                                        "upper": "to"
                                    },
                                    {
                                        "rule": "less_than",
                                        "lower": "known_from",
                                        "upper": "known_to"
                                    }
                                ],
                                "required": []
                            }
                        }
                    },
                    {
                        "type": "object",
                        "additionalProperties": false,
                        "required": [
                            "resource",
                            "parameters"
                        ],
                        "properties": {
                            "resource": {
                                "type": "string",
                                "const": "/v1/estimates"
                            },
                            "parameters": {
                                "type": "object",
                                "additionalProperties": false,
                                "properties": {
                                    "company_ids": {
                                        "type": "array",
                                        "minItems": 1,
                                        "maxItems": 100,
                                        "uniqueItems": true,
                                        "items": {
                                            "type": "string",
                                            "description": "Opaque stable public identifier; never an internal database key.",
                                            "example": "company_example_apple",
                                            "minLength": 1,
                                            "maxLength": 128,
                                            "pattern": "^[A-Za-z0-9][A-Za-z0-9_.:-]{0,127}$"
                                        },
                                        "description": "Filter by issuer IDs. May be combined with instrument selectors; filters intersect, except on issuer-level datasets (statements, segments, estimates, earnings, insider transactions), where an instrument selector is read as its company and takes the place of company_ids, so results cover every share class."
                                    },
                                    "instrument_ids": {
                                        "type": "array",
                                        "minItems": 1,
                                        "maxItems": 100,
                                        "uniqueItems": true,
                                        "items": {
                                            "type": "string",
                                            "description": "Opaque stable public identifier; never an internal database key.",
                                            "example": "inst_example_aapl",
                                            "minLength": 1,
                                            "maxLength": 128,
                                            "pattern": "^[A-Za-z0-9][A-Za-z0-9_.:-]{0,127}$"
                                        },
                                        "description": "Filter by stable instrument IDs. IDs and symbols may not be combined."
                                    },
                                    "symbols": {
                                        "type": "array",
                                        "minItems": 1,
                                        "maxItems": 100,
                                        "uniqueItems": true,
                                        "items": {
                                            "type": "string",
                                            "pattern": "^(?:(?:[A-Za-z0-9]{4}|[Cc][Rr][Yy][Pp][Tt][Oo]|[Ff][Oo][Rr][Ee][Xx]|[Ii][Nn][Dd][Ee][Xx]):|\\^)?[A-Za-z0-9](?:[A-Za-z0-9./_^= -]{0,62}[A-Za-z0-9./_^=-])?$",
                                            "example": "XNAS:AAPL"
                                        },
                                        "description": "Convenience lookup for exchange-listed instruments as MIC:TICKER or a bare ticker, which resolves to the exchange listing that ticker; resolves at symbol_at. The MIC and the ticker are case-insensitive, and two spellings of one listing (AAPL and XNAS:AAPL) count as a repeated value. A bare ticker that names no listing as written is also read in the common vendor spellings: with an exchange suffix (RY.TO, SHEL.L, VOD.LSE, BHP.AX), ^GSPC for INDEX:GSPC, and EURUSD=X or EURUSD for FOREX:EUR-USD. A ticker may contain a space (BAC PRL) but not start or end with one. A request in which no symbol resolves returns 404 symbol-not-resolved; otherwise each symbol that does not resolve, or resolves to a listing with no rows for the request (no-data), is an entry of meta.errors. IDs and symbols may not be combined."
                                    },
                                    "symbol_at": {
                                        "description": "Resolve symbols as they were assigned at the end of this UTC date (YYYY-MM-DD); defaults to as_of. Only listings the security master holds resolve: it was built in September 2026 and records delistings from then on, so most issuers delisted earlier, such as TWTR or SIVB, resolve at no date. Only valid with symbols.",
                                        "type": "string",
                                        "format": "date"
                                    },
                                    "metric": {
                                        "type": "string",
                                        "enum": [
                                            "eps",
                                            "revenue",
                                            "ebitda"
                                        ],
                                        "description": "Estimated metric: eps or revenue; ebitda matches nothing, as the connected source gives no EBITDA consensus.",
                                        "example": "eps"
                                    },
                                    "period": {
                                        "type": "string",
                                        "enum": [
                                            "quarterly",
                                            "annual"
                                        ],
                                        "description": "Forecast fiscal period.",
                                        "example": "quarterly"
                                    },
                                    "from": {
                                        "type": "string",
                                        "format": "date",
                                        "example": "2026-09-18",
                                        "description": "Inclusive lower bound on period_end."
                                    },
                                    "to": {
                                        "type": "string",
                                        "format": "date",
                                        "example": "2026-09-18",
                                        "description": "Inclusive upper bound on period_end; must be on or after from, so from equal to to selects one day."
                                    },
                                    "effective_date": {
                                        "type": "string",
                                        "format": "date",
                                        "example": "2026-09-18",
                                        "description": "Effective date, defaults to the UTC date of as_of. Returns the latest eligible snapshot on or before this date; response retains its actual snapshot date."
                                    },
                                    "as_of": {
                                        "description": "Knowledge cutoff as a UTC date (YYYY-MM-DD): the response reflects what was known by the end of that day. Defaults to now; cannot be in the future. A date from before the dataset's knowledge history returns 422 point-in-time-unavailable naming the earliest one, which GET /v1/datasets lists as earliest_as_of.",
                                        "type": "string",
                                        "format": "date"
                                    },
                                    "known_from": {
                                        "description": "First UTC date (YYYY-MM-DD, inclusive) on which a revision became known.",
                                        "type": "string",
                                        "format": "date"
                                    },
                                    "known_to": {
                                        "description": "Last UTC date (YYYY-MM-DD, inclusive) on which a revision became known; on or after known_from.",
                                        "type": "string",
                                        "format": "date"
                                    },
                                    "order": {
                                        "type": "string",
                                        "enum": [
                                            "asc",
                                            "desc"
                                        ],
                                        "description": "Direction on period_end; ties use ID ascending.",
                                        "example": "asc",
                                        "default": "asc"
                                    }
                                },
                                "x-query-constraints": [
                                    {
                                        "rule": "mutually_exclusive",
                                        "parameters": [
                                            "instrument_ids",
                                            "symbols"
                                        ]
                                    },
                                    {
                                        "rule": "requires",
                                        "parameter": "symbol_at",
                                        "required": [
                                            "symbols"
                                        ]
                                    },
                                    {
                                        "rule": "less_than",
                                        "lower": "from",
                                        "upper": "to"
                                    },
                                    {
                                        "rule": "less_than",
                                        "lower": "known_from",
                                        "upper": "known_to"
                                    }
                                ],
                                "required": []
                            }
                        }
                    },
                    {
                        "type": "object",
                        "additionalProperties": false,
                        "required": [
                            "resource",
                            "parameters"
                        ],
                        "properties": {
                            "resource": {
                                "type": "string",
                                "const": "/v1/analyst-ratings"
                            },
                            "parameters": {
                                "type": "object",
                                "additionalProperties": false,
                                "properties": {
                                    "company_ids": {
                                        "type": "array",
                                        "minItems": 1,
                                        "maxItems": 100,
                                        "uniqueItems": true,
                                        "items": {
                                            "type": "string",
                                            "description": "Opaque stable public identifier; never an internal database key.",
                                            "example": "company_example_apple",
                                            "minLength": 1,
                                            "maxLength": 128,
                                            "pattern": "^[A-Za-z0-9][A-Za-z0-9_.:-]{0,127}$"
                                        },
                                        "description": "Filter by issuer IDs. May be combined with instrument selectors; filters intersect, except on issuer-level datasets (statements, segments, estimates, earnings, insider transactions), where an instrument selector is read as its company and takes the place of company_ids, so results cover every share class."
                                    },
                                    "instrument_ids": {
                                        "type": "array",
                                        "minItems": 1,
                                        "maxItems": 100,
                                        "uniqueItems": true,
                                        "items": {
                                            "type": "string",
                                            "description": "Opaque stable public identifier; never an internal database key.",
                                            "example": "inst_example_aapl",
                                            "minLength": 1,
                                            "maxLength": 128,
                                            "pattern": "^[A-Za-z0-9][A-Za-z0-9_.:-]{0,127}$"
                                        },
                                        "description": "Filter by stable instrument IDs. IDs and symbols may not be combined."
                                    },
                                    "symbols": {
                                        "type": "array",
                                        "minItems": 1,
                                        "maxItems": 100,
                                        "uniqueItems": true,
                                        "items": {
                                            "type": "string",
                                            "pattern": "^(?:(?:[A-Za-z0-9]{4}|[Cc][Rr][Yy][Pp][Tt][Oo]|[Ff][Oo][Rr][Ee][Xx]|[Ii][Nn][Dd][Ee][Xx]):|\\^)?[A-Za-z0-9](?:[A-Za-z0-9./_^= -]{0,62}[A-Za-z0-9./_^=-])?$",
                                            "example": "XNAS:AAPL"
                                        },
                                        "description": "Convenience lookup for exchange-listed instruments as MIC:TICKER or a bare ticker, which resolves to the exchange listing that ticker; resolves at symbol_at. The MIC and the ticker are case-insensitive, and two spellings of one listing (AAPL and XNAS:AAPL) count as a repeated value. A bare ticker that names no listing as written is also read in the common vendor spellings: with an exchange suffix (RY.TO, SHEL.L, VOD.LSE, BHP.AX), ^GSPC for INDEX:GSPC, and EURUSD=X or EURUSD for FOREX:EUR-USD. A ticker may contain a space (BAC PRL) but not start or end with one. A request in which no symbol resolves returns 404 symbol-not-resolved; otherwise each symbol that does not resolve, or resolves to a listing with no rows for the request (no-data), is an entry of meta.errors. IDs and symbols may not be combined."
                                    },
                                    "symbol_at": {
                                        "description": "Resolve symbols as they were assigned at the end of this UTC date (YYYY-MM-DD); defaults to as_of. Only listings the security master holds resolve: it was built in September 2026 and records delistings from then on, so most issuers delisted earlier, such as TWTR or SIVB, resolve at no date. Only valid with symbols.",
                                        "type": "string",
                                        "format": "date"
                                    },
                                    "from": {
                                        "type": "string",
                                        "format": "date",
                                        "example": "2026-09-18",
                                        "description": "First UTC date (YYYY-MM-DD, inclusive) of published_at."
                                    },
                                    "to": {
                                        "type": "string",
                                        "format": "date",
                                        "example": "2026-09-18",
                                        "description": "Last UTC date (YYYY-MM-DD, inclusive) of published_at; on or after from."
                                    },
                                    "as_of": {
                                        "description": "Knowledge cutoff as a UTC date (YYYY-MM-DD): the response reflects what was known by the end of that day. Defaults to now; cannot be in the future. A date from before the dataset's knowledge history returns 422 point-in-time-unavailable naming the earliest one, which GET /v1/datasets lists as earliest_as_of.",
                                        "type": "string",
                                        "format": "date"
                                    },
                                    "known_from": {
                                        "description": "First UTC date (YYYY-MM-DD, inclusive) on which a revision became known.",
                                        "type": "string",
                                        "format": "date"
                                    },
                                    "known_to": {
                                        "description": "Last UTC date (YYYY-MM-DD, inclusive) on which a revision became known; on or after known_from.",
                                        "type": "string",
                                        "format": "date"
                                    },
                                    "order": {
                                        "type": "string",
                                        "enum": [
                                            "asc",
                                            "desc"
                                        ],
                                        "description": "Direction on published_at; ties use ID ascending.",
                                        "example": "asc",
                                        "default": "asc"
                                    }
                                },
                                "x-query-constraints": [
                                    {
                                        "rule": "mutually_exclusive",
                                        "parameters": [
                                            "instrument_ids",
                                            "symbols"
                                        ]
                                    },
                                    {
                                        "rule": "requires",
                                        "parameter": "symbol_at",
                                        "required": [
                                            "symbols"
                                        ]
                                    },
                                    {
                                        "rule": "less_than",
                                        "lower": "from",
                                        "upper": "to"
                                    },
                                    {
                                        "rule": "less_than",
                                        "lower": "known_from",
                                        "upper": "known_to"
                                    }
                                ],
                                "required": []
                            }
                        }
                    },
                    {
                        "type": "object",
                        "additionalProperties": false,
                        "required": [
                            "resource",
                            "parameters"
                        ],
                        "properties": {
                            "resource": {
                                "type": "string",
                                "const": "/v1/ownership"
                            },
                            "parameters": {
                                "type": "object",
                                "additionalProperties": false,
                                "properties": {
                                    "instrument_ids": {
                                        "type": "array",
                                        "minItems": 1,
                                        "maxItems": 100,
                                        "uniqueItems": true,
                                        "items": {
                                            "type": "string",
                                            "description": "Opaque stable public identifier; never an internal database key.",
                                            "example": "inst_example_aapl",
                                            "minLength": 1,
                                            "maxLength": 128,
                                            "pattern": "^[A-Za-z0-9][A-Za-z0-9_.:-]{0,127}$"
                                        },
                                        "description": "Filter by stable instrument IDs. IDs and symbols may not be combined."
                                    },
                                    "symbols": {
                                        "type": "array",
                                        "minItems": 1,
                                        "maxItems": 100,
                                        "uniqueItems": true,
                                        "items": {
                                            "type": "string",
                                            "pattern": "^(?:(?:[A-Za-z0-9]{4}|[Cc][Rr][Yy][Pp][Tt][Oo]|[Ff][Oo][Rr][Ee][Xx]|[Ii][Nn][Dd][Ee][Xx]):|\\^)?[A-Za-z0-9](?:[A-Za-z0-9./_^= -]{0,62}[A-Za-z0-9./_^=-])?$",
                                            "example": "XNAS:AAPL"
                                        },
                                        "description": "Convenience lookup for exchange-listed instruments as MIC:TICKER or a bare ticker, which resolves to the exchange listing that ticker; resolves at symbol_at. The MIC and the ticker are case-insensitive, and two spellings of one listing (AAPL and XNAS:AAPL) count as a repeated value. A bare ticker that names no listing as written is also read in the common vendor spellings: with an exchange suffix (RY.TO, SHEL.L, VOD.LSE, BHP.AX), ^GSPC for INDEX:GSPC, and EURUSD=X or EURUSD for FOREX:EUR-USD. A ticker may contain a space (BAC PRL) but not start or end with one. A request in which no symbol resolves returns 404 symbol-not-resolved; otherwise each symbol that does not resolve, or resolves to a listing with no rows for the request (no-data), is an entry of meta.errors. IDs and symbols may not be combined."
                                    },
                                    "symbol_at": {
                                        "description": "Resolve symbols as they were assigned at the end of this UTC date (YYYY-MM-DD); defaults to as_of. Only listings the security master holds resolve: it was built in September 2026 and records delistings from then on, so most issuers delisted earlier, such as TWTR or SIVB, resolve at no date. Only valid with symbols.",
                                        "type": "string",
                                        "format": "date"
                                    },
                                    "holder_ids": {
                                        "type": "array",
                                        "minItems": 1,
                                        "maxItems": 100,
                                        "uniqueItems": true,
                                        "items": {
                                            "type": "string",
                                            "description": "Opaque stable public identifier; never an internal database key.",
                                            "example": "holder_example",
                                            "minLength": 1,
                                            "maxLength": 128,
                                            "pattern": "^[A-Za-z0-9][A-Za-z0-9_.:-]{0,127}$"
                                        },
                                        "description": "Holder IDs."
                                    },
                                    "holder_type": {
                                        "type": "string",
                                        "enum": [
                                            "institution",
                                            "fund"
                                        ],
                                        "description": "Holder category.",
                                        "example": "institution"
                                    },
                                    "effective_date": {
                                        "type": "string",
                                        "format": "date",
                                        "example": "2026-09-18",
                                        "description": "Effective date, defaults to the UTC date of as_of. Returns the latest eligible snapshot on or before this date; response retains its actual snapshot date."
                                    },
                                    "as_of": {
                                        "description": "Knowledge cutoff as a UTC date (YYYY-MM-DD): the response reflects what was known by the end of that day. Defaults to now; cannot be in the future. A date from before the dataset's knowledge history returns 422 point-in-time-unavailable naming the earliest one, which GET /v1/datasets lists as earliest_as_of.",
                                        "type": "string",
                                        "format": "date"
                                    },
                                    "known_from": {
                                        "description": "First UTC date (YYYY-MM-DD, inclusive) on which a revision became known.",
                                        "type": "string",
                                        "format": "date"
                                    },
                                    "known_to": {
                                        "description": "Last UTC date (YYYY-MM-DD, inclusive) on which a revision became known; on or after known_from.",
                                        "type": "string",
                                        "format": "date"
                                    },
                                    "order": {
                                        "type": "string",
                                        "enum": [
                                            "asc",
                                            "desc"
                                        ],
                                        "description": "Direction on reported_on; ties use ID ascending.",
                                        "example": "asc",
                                        "default": "asc"
                                    }
                                },
                                "x-query-constraints": [
                                    {
                                        "rule": "mutually_exclusive",
                                        "parameters": [
                                            "instrument_ids",
                                            "symbols"
                                        ]
                                    },
                                    {
                                        "rule": "requires",
                                        "parameter": "symbol_at",
                                        "required": [
                                            "symbols"
                                        ]
                                    },
                                    {
                                        "rule": "less_than",
                                        "lower": "known_from",
                                        "upper": "known_to"
                                    }
                                ],
                                "required": []
                            }
                        }
                    },
                    {
                        "type": "object",
                        "additionalProperties": false,
                        "required": [
                            "resource",
                            "parameters"
                        ],
                        "properties": {
                            "resource": {
                                "type": "string",
                                "const": "/v1/insider-transactions"
                            },
                            "parameters": {
                                "type": "object",
                                "additionalProperties": false,
                                "properties": {
                                    "company_ids": {
                                        "type": "array",
                                        "minItems": 1,
                                        "maxItems": 100,
                                        "uniqueItems": true,
                                        "items": {
                                            "type": "string",
                                            "description": "Opaque stable public identifier; never an internal database key.",
                                            "example": "company_example_apple",
                                            "minLength": 1,
                                            "maxLength": 128,
                                            "pattern": "^[A-Za-z0-9][A-Za-z0-9_.:-]{0,127}$"
                                        },
                                        "description": "Filter by issuer IDs. May be combined with instrument selectors; filters intersect, except on issuer-level datasets (statements, segments, estimates, earnings, insider transactions), where an instrument selector is read as its company and takes the place of company_ids, so results cover every share class."
                                    },
                                    "instrument_ids": {
                                        "type": "array",
                                        "minItems": 1,
                                        "maxItems": 100,
                                        "uniqueItems": true,
                                        "items": {
                                            "type": "string",
                                            "description": "Opaque stable public identifier; never an internal database key.",
                                            "example": "inst_example_aapl",
                                            "minLength": 1,
                                            "maxLength": 128,
                                            "pattern": "^[A-Za-z0-9][A-Za-z0-9_.:-]{0,127}$"
                                        },
                                        "description": "Filter by stable instrument IDs. IDs and symbols may not be combined."
                                    },
                                    "symbols": {
                                        "type": "array",
                                        "minItems": 1,
                                        "maxItems": 100,
                                        "uniqueItems": true,
                                        "items": {
                                            "type": "string",
                                            "pattern": "^(?:(?:[A-Za-z0-9]{4}|[Cc][Rr][Yy][Pp][Tt][Oo]|[Ff][Oo][Rr][Ee][Xx]|[Ii][Nn][Dd][Ee][Xx]):|\\^)?[A-Za-z0-9](?:[A-Za-z0-9./_^= -]{0,62}[A-Za-z0-9./_^=-])?$",
                                            "example": "XNAS:AAPL"
                                        },
                                        "description": "Convenience lookup for exchange-listed instruments as MIC:TICKER or a bare ticker, which resolves to the exchange listing that ticker; resolves at symbol_at. The MIC and the ticker are case-insensitive, and two spellings of one listing (AAPL and XNAS:AAPL) count as a repeated value. A bare ticker that names no listing as written is also read in the common vendor spellings: with an exchange suffix (RY.TO, SHEL.L, VOD.LSE, BHP.AX), ^GSPC for INDEX:GSPC, and EURUSD=X or EURUSD for FOREX:EUR-USD. A ticker may contain a space (BAC PRL) but not start or end with one. A request in which no symbol resolves returns 404 symbol-not-resolved; otherwise each symbol that does not resolve, or resolves to a listing with no rows for the request (no-data), is an entry of meta.errors. IDs and symbols may not be combined."
                                    },
                                    "symbol_at": {
                                        "description": "Resolve symbols as they were assigned at the end of this UTC date (YYYY-MM-DD); defaults to as_of. Only listings the security master holds resolve: it was built in September 2026 and records delistings from then on, so most issuers delisted earlier, such as TWTR or SIVB, resolve at no date. Only valid with symbols.",
                                        "type": "string",
                                        "format": "date"
                                    },
                                    "from": {
                                        "type": "string",
                                        "format": "date",
                                        "example": "2026-09-18",
                                        "description": "Inclusive lower bound on transaction_date."
                                    },
                                    "to": {
                                        "type": "string",
                                        "format": "date",
                                        "example": "2026-09-18",
                                        "description": "Inclusive upper bound on transaction_date; must be on or after from, so from equal to to selects one day."
                                    },
                                    "side": {
                                        "type": "string",
                                        "enum": [
                                            "acquisition",
                                            "disposition"
                                        ],
                                        "description": "Transaction direction.",
                                        "example": "acquisition"
                                    },
                                    "as_of": {
                                        "description": "Knowledge cutoff as a UTC date (YYYY-MM-DD): the response reflects what was known by the end of that day. Defaults to now; cannot be in the future. A date from before the dataset's knowledge history returns 422 point-in-time-unavailable naming the earliest one, which GET /v1/datasets lists as earliest_as_of.",
                                        "type": "string",
                                        "format": "date"
                                    },
                                    "known_from": {
                                        "description": "First UTC date (YYYY-MM-DD, inclusive) on which a revision became known.",
                                        "type": "string",
                                        "format": "date"
                                    },
                                    "known_to": {
                                        "description": "Last UTC date (YYYY-MM-DD, inclusive) on which a revision became known; on or after known_from.",
                                        "type": "string",
                                        "format": "date"
                                    },
                                    "order": {
                                        "type": "string",
                                        "enum": [
                                            "asc",
                                            "desc"
                                        ],
                                        "description": "Direction on transaction_date; ties use ID ascending.",
                                        "example": "asc",
                                        "default": "asc"
                                    }
                                },
                                "x-query-constraints": [
                                    {
                                        "rule": "mutually_exclusive",
                                        "parameters": [
                                            "instrument_ids",
                                            "symbols"
                                        ]
                                    },
                                    {
                                        "rule": "requires",
                                        "parameter": "symbol_at",
                                        "required": [
                                            "symbols"
                                        ]
                                    },
                                    {
                                        "rule": "less_than",
                                        "lower": "from",
                                        "upper": "to"
                                    },
                                    {
                                        "rule": "less_than",
                                        "lower": "known_from",
                                        "upper": "known_to"
                                    }
                                ],
                                "required": []
                            }
                        }
                    },
                    {
                        "type": "object",
                        "additionalProperties": false,
                        "required": [
                            "resource",
                            "parameters"
                        ],
                        "properties": {
                            "resource": {
                                "type": "string",
                                "const": "/v1/share-statistics"
                            },
                            "parameters": {
                                "type": "object",
                                "additionalProperties": false,
                                "properties": {
                                    "instrument_ids": {
                                        "type": "array",
                                        "minItems": 1,
                                        "maxItems": 100,
                                        "uniqueItems": true,
                                        "items": {
                                            "type": "string",
                                            "description": "Opaque stable public identifier; never an internal database key.",
                                            "example": "inst_example_aapl",
                                            "minLength": 1,
                                            "maxLength": 128,
                                            "pattern": "^[A-Za-z0-9][A-Za-z0-9_.:-]{0,127}$"
                                        },
                                        "description": "Filter by stable instrument IDs. IDs and symbols may not be combined."
                                    },
                                    "symbols": {
                                        "type": "array",
                                        "minItems": 1,
                                        "maxItems": 100,
                                        "uniqueItems": true,
                                        "items": {
                                            "type": "string",
                                            "pattern": "^(?:(?:[A-Za-z0-9]{4}|[Cc][Rr][Yy][Pp][Tt][Oo]|[Ff][Oo][Rr][Ee][Xx]|[Ii][Nn][Dd][Ee][Xx]):|\\^)?[A-Za-z0-9](?:[A-Za-z0-9./_^= -]{0,62}[A-Za-z0-9./_^=-])?$",
                                            "example": "XNAS:AAPL"
                                        },
                                        "description": "Convenience lookup for exchange-listed instruments as MIC:TICKER or a bare ticker, which resolves to the exchange listing that ticker; resolves at symbol_at. The MIC and the ticker are case-insensitive, and two spellings of one listing (AAPL and XNAS:AAPL) count as a repeated value. A bare ticker that names no listing as written is also read in the common vendor spellings: with an exchange suffix (RY.TO, SHEL.L, VOD.LSE, BHP.AX), ^GSPC for INDEX:GSPC, and EURUSD=X or EURUSD for FOREX:EUR-USD. A ticker may contain a space (BAC PRL) but not start or end with one. A request in which no symbol resolves returns 404 symbol-not-resolved; otherwise each symbol that does not resolve, or resolves to a listing with no rows for the request (no-data), is an entry of meta.errors. IDs and symbols may not be combined."
                                    },
                                    "symbol_at": {
                                        "description": "Resolve symbols as they were assigned at the end of this UTC date (YYYY-MM-DD); defaults to as_of. Only listings the security master holds resolve: it was built in September 2026 and records delistings from then on, so most issuers delisted earlier, such as TWTR or SIVB, resolve at no date. Only valid with symbols.",
                                        "type": "string",
                                        "format": "date"
                                    },
                                    "from": {
                                        "type": "string",
                                        "format": "date",
                                        "example": "2026-09-18",
                                        "description": "Inclusive lower bound on observed_on."
                                    },
                                    "to": {
                                        "type": "string",
                                        "format": "date",
                                        "example": "2026-09-18",
                                        "description": "Inclusive upper bound on observed_on; must be on or after from, so from equal to to selects one day."
                                    },
                                    "as_of": {
                                        "description": "Knowledge cutoff as a UTC date (YYYY-MM-DD): the response reflects what was known by the end of that day. Defaults to now; cannot be in the future. A date from before the dataset's knowledge history returns 422 point-in-time-unavailable naming the earliest one, which GET /v1/datasets lists as earliest_as_of.",
                                        "type": "string",
                                        "format": "date"
                                    },
                                    "known_from": {
                                        "description": "First UTC date (YYYY-MM-DD, inclusive) on which a revision became known.",
                                        "type": "string",
                                        "format": "date"
                                    },
                                    "known_to": {
                                        "description": "Last UTC date (YYYY-MM-DD, inclusive) on which a revision became known; on or after known_from.",
                                        "type": "string",
                                        "format": "date"
                                    },
                                    "order": {
                                        "type": "string",
                                        "enum": [
                                            "asc",
                                            "desc"
                                        ],
                                        "description": "Direction on observed_on; ties use ID ascending.",
                                        "example": "asc",
                                        "default": "asc"
                                    }
                                },
                                "x-query-constraints": [
                                    {
                                        "rule": "mutually_exclusive",
                                        "parameters": [
                                            "instrument_ids",
                                            "symbols"
                                        ]
                                    },
                                    {
                                        "rule": "requires",
                                        "parameter": "symbol_at",
                                        "required": [
                                            "symbols"
                                        ]
                                    },
                                    {
                                        "rule": "less_than",
                                        "lower": "from",
                                        "upper": "to"
                                    },
                                    {
                                        "rule": "less_than",
                                        "lower": "known_from",
                                        "upper": "known_to"
                                    }
                                ],
                                "required": []
                            }
                        }
                    },
                    {
                        "type": "object",
                        "additionalProperties": false,
                        "required": [
                            "resource",
                            "parameters"
                        ],
                        "properties": {
                            "resource": {
                                "type": "string",
                                "const": "/v1/short-interest"
                            },
                            "parameters": {
                                "type": "object",
                                "additionalProperties": false,
                                "properties": {
                                    "instrument_ids": {
                                        "type": "array",
                                        "minItems": 1,
                                        "maxItems": 100,
                                        "uniqueItems": true,
                                        "items": {
                                            "type": "string",
                                            "description": "Opaque stable public identifier; never an internal database key.",
                                            "example": "inst_example_aapl",
                                            "minLength": 1,
                                            "maxLength": 128,
                                            "pattern": "^[A-Za-z0-9][A-Za-z0-9_.:-]{0,127}$"
                                        },
                                        "description": "Filter by stable instrument IDs. IDs and symbols may not be combined."
                                    },
                                    "symbols": {
                                        "type": "array",
                                        "minItems": 1,
                                        "maxItems": 100,
                                        "uniqueItems": true,
                                        "items": {
                                            "type": "string",
                                            "pattern": "^(?:(?:[A-Za-z0-9]{4}|[Cc][Rr][Yy][Pp][Tt][Oo]|[Ff][Oo][Rr][Ee][Xx]|[Ii][Nn][Dd][Ee][Xx]):|\\^)?[A-Za-z0-9](?:[A-Za-z0-9./_^= -]{0,62}[A-Za-z0-9./_^=-])?$",
                                            "example": "XNAS:AAPL"
                                        },
                                        "description": "Convenience lookup for exchange-listed instruments as MIC:TICKER or a bare ticker, which resolves to the exchange listing that ticker; resolves at symbol_at. The MIC and the ticker are case-insensitive, and two spellings of one listing (AAPL and XNAS:AAPL) count as a repeated value. A bare ticker that names no listing as written is also read in the common vendor spellings: with an exchange suffix (RY.TO, SHEL.L, VOD.LSE, BHP.AX), ^GSPC for INDEX:GSPC, and EURUSD=X or EURUSD for FOREX:EUR-USD. A ticker may contain a space (BAC PRL) but not start or end with one. A request in which no symbol resolves returns 404 symbol-not-resolved; otherwise each symbol that does not resolve, or resolves to a listing with no rows for the request (no-data), is an entry of meta.errors. IDs and symbols may not be combined."
                                    },
                                    "symbol_at": {
                                        "description": "Resolve symbols as they were assigned at the end of this UTC date (YYYY-MM-DD); defaults to as_of. Only listings the security master holds resolve: it was built in September 2026 and records delistings from then on, so most issuers delisted earlier, such as TWTR or SIVB, resolve at no date. Only valid with symbols.",
                                        "type": "string",
                                        "format": "date"
                                    },
                                    "from": {
                                        "type": "string",
                                        "format": "date",
                                        "example": "2026-09-18",
                                        "description": "Inclusive lower bound on observed_on."
                                    },
                                    "to": {
                                        "type": "string",
                                        "format": "date",
                                        "example": "2026-09-18",
                                        "description": "Inclusive upper bound on observed_on; must be on or after from, so from equal to to selects one day."
                                    },
                                    "as_of": {
                                        "description": "Knowledge cutoff as a UTC date (YYYY-MM-DD): the response reflects what was known by the end of that day. Defaults to now; cannot be in the future. A date from before the dataset's knowledge history returns 422 point-in-time-unavailable naming the earliest one, which GET /v1/datasets lists as earliest_as_of.",
                                        "type": "string",
                                        "format": "date"
                                    },
                                    "known_from": {
                                        "description": "First UTC date (YYYY-MM-DD, inclusive) on which a revision became known.",
                                        "type": "string",
                                        "format": "date"
                                    },
                                    "known_to": {
                                        "description": "Last UTC date (YYYY-MM-DD, inclusive) on which a revision became known; on or after known_from.",
                                        "type": "string",
                                        "format": "date"
                                    },
                                    "order": {
                                        "type": "string",
                                        "enum": [
                                            "asc",
                                            "desc"
                                        ],
                                        "description": "Direction on observed_on; ties use ID ascending.",
                                        "example": "asc",
                                        "default": "asc"
                                    }
                                },
                                "x-query-constraints": [
                                    {
                                        "rule": "mutually_exclusive",
                                        "parameters": [
                                            "instrument_ids",
                                            "symbols"
                                        ]
                                    },
                                    {
                                        "rule": "requires",
                                        "parameter": "symbol_at",
                                        "required": [
                                            "symbols"
                                        ]
                                    },
                                    {
                                        "rule": "less_than",
                                        "lower": "from",
                                        "upper": "to"
                                    },
                                    {
                                        "rule": "less_than",
                                        "lower": "known_from",
                                        "upper": "known_to"
                                    }
                                ],
                                "required": []
                            }
                        }
                    },
                    {
                        "type": "object",
                        "additionalProperties": false,
                        "required": [
                            "resource",
                            "parameters"
                        ],
                        "properties": {
                            "resource": {
                                "type": "string",
                                "const": "/v1/short-volume"
                            },
                            "parameters": {
                                "type": "object",
                                "additionalProperties": false,
                                "properties": {
                                    "instrument_ids": {
                                        "type": "array",
                                        "minItems": 1,
                                        "maxItems": 100,
                                        "uniqueItems": true,
                                        "items": {
                                            "type": "string",
                                            "description": "Opaque stable public identifier; never an internal database key.",
                                            "example": "inst_example_aapl",
                                            "minLength": 1,
                                            "maxLength": 128,
                                            "pattern": "^[A-Za-z0-9][A-Za-z0-9_.:-]{0,127}$"
                                        },
                                        "description": "Filter by stable instrument IDs. IDs and symbols may not be combined."
                                    },
                                    "symbols": {
                                        "type": "array",
                                        "minItems": 1,
                                        "maxItems": 100,
                                        "uniqueItems": true,
                                        "items": {
                                            "type": "string",
                                            "pattern": "^(?:(?:[A-Za-z0-9]{4}|[Cc][Rr][Yy][Pp][Tt][Oo]|[Ff][Oo][Rr][Ee][Xx]|[Ii][Nn][Dd][Ee][Xx]):|\\^)?[A-Za-z0-9](?:[A-Za-z0-9./_^= -]{0,62}[A-Za-z0-9./_^=-])?$",
                                            "example": "XNAS:AAPL"
                                        },
                                        "description": "Convenience lookup for exchange-listed instruments as MIC:TICKER or a bare ticker, which resolves to the exchange listing that ticker; resolves at symbol_at. The MIC and the ticker are case-insensitive, and two spellings of one listing (AAPL and XNAS:AAPL) count as a repeated value. A bare ticker that names no listing as written is also read in the common vendor spellings: with an exchange suffix (RY.TO, SHEL.L, VOD.LSE, BHP.AX), ^GSPC for INDEX:GSPC, and EURUSD=X or EURUSD for FOREX:EUR-USD. A ticker may contain a space (BAC PRL) but not start or end with one. A request in which no symbol resolves returns 404 symbol-not-resolved; otherwise each symbol that does not resolve, or resolves to a listing with no rows for the request (no-data), is an entry of meta.errors. IDs and symbols may not be combined."
                                    },
                                    "symbol_at": {
                                        "description": "Resolve symbols as they were assigned at the end of this UTC date (YYYY-MM-DD); defaults to as_of. Only listings the security master holds resolve: it was built in September 2026 and records delistings from then on, so most issuers delisted earlier, such as TWTR or SIVB, resolve at no date. Only valid with symbols.",
                                        "type": "string",
                                        "format": "date"
                                    },
                                    "from": {
                                        "type": "string",
                                        "format": "date",
                                        "example": "2026-09-18",
                                        "description": "Inclusive lower bound on date."
                                    },
                                    "to": {
                                        "type": "string",
                                        "format": "date",
                                        "example": "2026-09-18",
                                        "description": "Inclusive upper bound on date; must be on or after from, so from equal to to selects one day."
                                    },
                                    "as_of": {
                                        "description": "Knowledge cutoff as a UTC date (YYYY-MM-DD): the response reflects what was known by the end of that day. Defaults to now; cannot be in the future. A date from before the dataset's knowledge history returns 422 point-in-time-unavailable naming the earliest one, which GET /v1/datasets lists as earliest_as_of.",
                                        "type": "string",
                                        "format": "date"
                                    },
                                    "known_from": {
                                        "description": "First UTC date (YYYY-MM-DD, inclusive) on which a revision became known.",
                                        "type": "string",
                                        "format": "date"
                                    },
                                    "known_to": {
                                        "description": "Last UTC date (YYYY-MM-DD, inclusive) on which a revision became known; on or after known_from.",
                                        "type": "string",
                                        "format": "date"
                                    },
                                    "order": {
                                        "type": "string",
                                        "enum": [
                                            "asc",
                                            "desc"
                                        ],
                                        "description": "Direction on date; ties use ID ascending.",
                                        "example": "asc",
                                        "default": "asc"
                                    }
                                },
                                "x-query-constraints": [
                                    {
                                        "rule": "mutually_exclusive",
                                        "parameters": [
                                            "instrument_ids",
                                            "symbols"
                                        ]
                                    },
                                    {
                                        "rule": "requires",
                                        "parameter": "symbol_at",
                                        "required": [
                                            "symbols"
                                        ]
                                    },
                                    {
                                        "rule": "less_than",
                                        "lower": "from",
                                        "upper": "to"
                                    },
                                    {
                                        "rule": "less_than",
                                        "lower": "known_from",
                                        "upper": "known_to"
                                    }
                                ],
                                "required": []
                            }
                        }
                    },
                    {
                        "type": "object",
                        "additionalProperties": false,
                        "required": [
                            "resource",
                            "parameters"
                        ],
                        "properties": {
                            "resource": {
                                "type": "string",
                                "const": "/v1/funds"
                            },
                            "parameters": {
                                "type": "object",
                                "additionalProperties": false,
                                "properties": {
                                    "instrument_ids": {
                                        "type": "array",
                                        "minItems": 1,
                                        "maxItems": 100,
                                        "uniqueItems": true,
                                        "items": {
                                            "type": "string",
                                            "description": "Opaque stable public identifier; never an internal database key.",
                                            "example": "inst_example_aapl",
                                            "minLength": 1,
                                            "maxLength": 128,
                                            "pattern": "^[A-Za-z0-9][A-Za-z0-9_.:-]{0,127}$"
                                        },
                                        "description": "Filter by stable instrument IDs. IDs and symbols may not be combined."
                                    },
                                    "symbols": {
                                        "type": "array",
                                        "minItems": 1,
                                        "maxItems": 100,
                                        "uniqueItems": true,
                                        "items": {
                                            "type": "string",
                                            "pattern": "^(?:(?:[A-Za-z0-9]{4}|[Cc][Rr][Yy][Pp][Tt][Oo]|[Ff][Oo][Rr][Ee][Xx]|[Ii][Nn][Dd][Ee][Xx]):|\\^)?[A-Za-z0-9](?:[A-Za-z0-9./_^= -]{0,62}[A-Za-z0-9./_^=-])?$",
                                            "example": "XNAS:AAPL"
                                        },
                                        "description": "Convenience lookup for exchange-listed instruments as MIC:TICKER or a bare ticker, which resolves to the exchange listing that ticker; resolves at symbol_at. The MIC and the ticker are case-insensitive, and two spellings of one listing (AAPL and XNAS:AAPL) count as a repeated value. A bare ticker that names no listing as written is also read in the common vendor spellings: with an exchange suffix (RY.TO, SHEL.L, VOD.LSE, BHP.AX), ^GSPC for INDEX:GSPC, and EURUSD=X or EURUSD for FOREX:EUR-USD. A ticker may contain a space (BAC PRL) but not start or end with one. A request in which no symbol resolves returns 404 symbol-not-resolved; otherwise each symbol that does not resolve, or resolves to a listing with no rows for the request (no-data), is an entry of meta.errors. IDs and symbols may not be combined."
                                    },
                                    "symbol_at": {
                                        "description": "Resolve symbols as they were assigned at the end of this UTC date (YYYY-MM-DD); defaults to as_of. Only listings the security master holds resolve: it was built in September 2026 and records delistings from then on, so most issuers delisted earlier, such as TWTR or SIVB, resolve at no date. Only valid with symbols.",
                                        "type": "string",
                                        "format": "date"
                                    },
                                    "fund_type": {
                                        "type": "string",
                                        "enum": [
                                            "etf",
                                            "mutual_fund"
                                        ],
                                        "description": "Fund type.",
                                        "example": "etf"
                                    },
                                    "countries": {
                                        "type": "array",
                                        "minItems": 1,
                                        "maxItems": 100,
                                        "uniqueItems": true,
                                        "items": {
                                            "type": "string",
                                            "pattern": "^[A-Z]{2}$",
                                            "example": "US"
                                        },
                                        "description": "ISO 3166-1 alpha-2 country codes."
                                    },
                                    "effective_date": {
                                        "type": "string",
                                        "format": "date",
                                        "example": "2026-09-18",
                                        "description": "Effective date, defaults to the UTC date of as_of. Returns the latest eligible snapshot on or before this date; response retains its actual snapshot date."
                                    },
                                    "as_of": {
                                        "description": "Knowledge cutoff as a UTC date (YYYY-MM-DD): the response reflects what was known by the end of that day. Defaults to now; cannot be in the future. A date from before the dataset's knowledge history returns 422 point-in-time-unavailable naming the earliest one, which GET /v1/datasets lists as earliest_as_of.",
                                        "type": "string",
                                        "format": "date"
                                    },
                                    "known_from": {
                                        "description": "First UTC date (YYYY-MM-DD, inclusive) on which a revision became known.",
                                        "type": "string",
                                        "format": "date"
                                    },
                                    "known_to": {
                                        "description": "Last UTC date (YYYY-MM-DD, inclusive) on which a revision became known; on or after known_from.",
                                        "type": "string",
                                        "format": "date"
                                    },
                                    "order": {
                                        "type": "string",
                                        "enum": [
                                            "asc",
                                            "desc"
                                        ],
                                        "description": "Direction on id; ties use ID ascending.",
                                        "example": "asc",
                                        "default": "asc"
                                    }
                                },
                                "x-query-constraints": [
                                    {
                                        "rule": "mutually_exclusive",
                                        "parameters": [
                                            "instrument_ids",
                                            "symbols"
                                        ]
                                    },
                                    {
                                        "rule": "requires",
                                        "parameter": "symbol_at",
                                        "required": [
                                            "symbols"
                                        ]
                                    },
                                    {
                                        "rule": "less_than",
                                        "lower": "known_from",
                                        "upper": "known_to"
                                    }
                                ],
                                "required": []
                            }
                        }
                    },
                    {
                        "type": "object",
                        "additionalProperties": false,
                        "required": [
                            "resource",
                            "parameters"
                        ],
                        "properties": {
                            "resource": {
                                "type": "string",
                                "const": "/v1/funds/{instrument_id}/holdings"
                            },
                            "parameters": {
                                "type": "object",
                                "additionalProperties": false,
                                "properties": {
                                    "instrument_id": {
                                        "type": "string",
                                        "description": "Stable public identifier.",
                                        "example": "inst_example_aapl",
                                        "minLength": 1,
                                        "maxLength": 128,
                                        "pattern": "^[A-Za-z0-9][A-Za-z0-9_.:-]{0,127}$"
                                    },
                                    "effective_date": {
                                        "type": "string",
                                        "format": "date",
                                        "example": "2026-09-18",
                                        "description": "Effective date, defaults to the UTC date of as_of. Returns the latest eligible snapshot on or before this date; response retains its actual snapshot date."
                                    },
                                    "as_of": {
                                        "description": "Knowledge cutoff as a UTC date (YYYY-MM-DD): the response reflects what was known by the end of that day. Defaults to now; cannot be in the future. A date from before the dataset's knowledge history returns 422 point-in-time-unavailable naming the earliest one, which GET /v1/datasets lists as earliest_as_of.",
                                        "type": "string",
                                        "format": "date"
                                    },
                                    "known_from": {
                                        "description": "First UTC date (YYYY-MM-DD, inclusive) on which a revision became known.",
                                        "type": "string",
                                        "format": "date"
                                    },
                                    "known_to": {
                                        "description": "Last UTC date (YYYY-MM-DD, inclusive) on which a revision became known; on or after known_from.",
                                        "type": "string",
                                        "format": "date"
                                    },
                                    "order": {
                                        "type": "string",
                                        "enum": [
                                            "asc",
                                            "desc"
                                        ],
                                        "description": "Direction on snapshot_date; ties use ID ascending.",
                                        "example": "asc",
                                        "default": "asc"
                                    }
                                },
                                "required": [
                                    "instrument_id"
                                ],
                                "x-query-constraints": [
                                    {
                                        "rule": "less_than",
                                        "lower": "known_from",
                                        "upper": "known_to"
                                    }
                                ]
                            }
                        }
                    },
                    {
                        "type": "object",
                        "additionalProperties": false,
                        "required": [
                            "resource",
                            "parameters"
                        ],
                        "properties": {
                            "resource": {
                                "type": "string",
                                "const": "/v1/funds/{instrument_id}/allocations"
                            },
                            "parameters": {
                                "type": "object",
                                "additionalProperties": false,
                                "properties": {
                                    "instrument_id": {
                                        "type": "string",
                                        "description": "Stable public identifier.",
                                        "example": "inst_example_aapl",
                                        "minLength": 1,
                                        "maxLength": 128,
                                        "pattern": "^[A-Za-z0-9][A-Za-z0-9_.:-]{0,127}$"
                                    },
                                    "effective_date": {
                                        "type": "string",
                                        "format": "date",
                                        "example": "2026-09-18",
                                        "description": "Effective date, defaults to the UTC date of as_of. Returns the latest eligible snapshot on or before this date; response retains its actual snapshot date."
                                    },
                                    "dimension": {
                                        "type": "string",
                                        "enum": [
                                            "sector",
                                            "country",
                                            "region",
                                            "asset_class",
                                            "market_cap",
                                            "currency"
                                        ],
                                        "description": "Allocation axis. sector, region, asset_class and market_cap are reported for ETFs and mutual funds, country for mutual funds only; the connected source reports no currency allocations, so currency returns an empty list.",
                                        "example": "sector"
                                    },
                                    "as_of": {
                                        "description": "Knowledge cutoff as a UTC date (YYYY-MM-DD): the response reflects what was known by the end of that day. Defaults to now; cannot be in the future. A date from before the dataset's knowledge history returns 422 point-in-time-unavailable naming the earliest one, which GET /v1/datasets lists as earliest_as_of.",
                                        "type": "string",
                                        "format": "date"
                                    },
                                    "known_from": {
                                        "description": "First UTC date (YYYY-MM-DD, inclusive) on which a revision became known.",
                                        "type": "string",
                                        "format": "date"
                                    },
                                    "known_to": {
                                        "description": "Last UTC date (YYYY-MM-DD, inclusive) on which a revision became known; on or after known_from.",
                                        "type": "string",
                                        "format": "date"
                                    },
                                    "order": {
                                        "type": "string",
                                        "enum": [
                                            "asc",
                                            "desc"
                                        ],
                                        "description": "Direction on snapshot_date; ties use ID ascending.",
                                        "example": "asc",
                                        "default": "asc"
                                    }
                                },
                                "required": [
                                    "instrument_id"
                                ],
                                "x-query-constraints": [
                                    {
                                        "rule": "less_than",
                                        "lower": "known_from",
                                        "upper": "known_to"
                                    }
                                ]
                            }
                        }
                    },
                    {
                        "type": "object",
                        "additionalProperties": false,
                        "required": [
                            "resource",
                            "parameters"
                        ],
                        "properties": {
                            "resource": {
                                "type": "string",
                                "const": "/v1/indices"
                            },
                            "parameters": {
                                "type": "object",
                                "additionalProperties": false,
                                "properties": {
                                    "instrument_ids": {
                                        "type": "array",
                                        "minItems": 1,
                                        "maxItems": 100,
                                        "uniqueItems": true,
                                        "items": {
                                            "type": "string",
                                            "description": "Opaque stable public identifier; never an internal database key.",
                                            "example": "inst_example_aapl",
                                            "minLength": 1,
                                            "maxLength": 128,
                                            "pattern": "^[A-Za-z0-9][A-Za-z0-9_.:-]{0,127}$"
                                        },
                                        "description": "Filter by stable instrument IDs. IDs and symbols may not be combined."
                                    },
                                    "symbols": {
                                        "type": "array",
                                        "minItems": 1,
                                        "maxItems": 100,
                                        "uniqueItems": true,
                                        "items": {
                                            "type": "string",
                                            "pattern": "^(?:(?:[A-Za-z0-9]{4}|[Cc][Rr][Yy][Pp][Tt][Oo]|[Ff][Oo][Rr][Ee][Xx]|[Ii][Nn][Dd][Ee][Xx]):|\\^)?[A-Za-z0-9](?:[A-Za-z0-9./_^= -]{0,62}[A-Za-z0-9./_^=-])?$",
                                            "example": "XNAS:AAPL"
                                        },
                                        "description": "Convenience lookup for exchange-listed instruments as MIC:TICKER or a bare ticker, which resolves to the exchange listing that ticker; resolves at symbol_at. The MIC and the ticker are case-insensitive, and two spellings of one listing (AAPL and XNAS:AAPL) count as a repeated value. A bare ticker that names no listing as written is also read in the common vendor spellings: with an exchange suffix (RY.TO, SHEL.L, VOD.LSE, BHP.AX), ^GSPC for INDEX:GSPC, and EURUSD=X or EURUSD for FOREX:EUR-USD. A ticker may contain a space (BAC PRL) but not start or end with one. A request in which no symbol resolves returns 404 symbol-not-resolved; otherwise each symbol that does not resolve, or resolves to a listing with no rows for the request (no-data), is an entry of meta.errors. IDs and symbols may not be combined."
                                    },
                                    "symbol_at": {
                                        "description": "Resolve symbols as they were assigned at the end of this UTC date (YYYY-MM-DD); defaults to as_of. Only listings the security master holds resolve: it was built in September 2026 and records delistings from then on, so most issuers delisted earlier, such as TWTR or SIVB, resolve at no date. Only valid with symbols.",
                                        "type": "string",
                                        "format": "date"
                                    },
                                    "effective_date": {
                                        "type": "string",
                                        "format": "date",
                                        "example": "2026-09-18",
                                        "description": "Effective date, defaults to the UTC date of as_of. Returns the latest eligible snapshot on or before this date; response retains its actual snapshot date."
                                    },
                                    "as_of": {
                                        "description": "Knowledge cutoff as a UTC date (YYYY-MM-DD): the response reflects what was known by the end of that day. Defaults to now; cannot be in the future. A date from before the dataset's knowledge history returns 422 point-in-time-unavailable naming the earliest one, which GET /v1/datasets lists as earliest_as_of.",
                                        "type": "string",
                                        "format": "date"
                                    },
                                    "known_from": {
                                        "description": "First UTC date (YYYY-MM-DD, inclusive) on which a revision became known.",
                                        "type": "string",
                                        "format": "date"
                                    },
                                    "known_to": {
                                        "description": "Last UTC date (YYYY-MM-DD, inclusive) on which a revision became known; on or after known_from.",
                                        "type": "string",
                                        "format": "date"
                                    },
                                    "order": {
                                        "type": "string",
                                        "enum": [
                                            "asc",
                                            "desc"
                                        ],
                                        "description": "Direction on id; ties use ID ascending.",
                                        "example": "asc",
                                        "default": "asc"
                                    }
                                },
                                "x-query-constraints": [
                                    {
                                        "rule": "mutually_exclusive",
                                        "parameters": [
                                            "instrument_ids",
                                            "symbols"
                                        ]
                                    },
                                    {
                                        "rule": "requires",
                                        "parameter": "symbol_at",
                                        "required": [
                                            "symbols"
                                        ]
                                    },
                                    {
                                        "rule": "less_than",
                                        "lower": "known_from",
                                        "upper": "known_to"
                                    }
                                ],
                                "required": []
                            }
                        }
                    },
                    {
                        "type": "object",
                        "additionalProperties": false,
                        "required": [
                            "resource",
                            "parameters"
                        ],
                        "properties": {
                            "resource": {
                                "type": "string",
                                "const": "/v1/bonds"
                            },
                            "parameters": {
                                "type": "object",
                                "additionalProperties": false,
                                "properties": {
                                    "company_ids": {
                                        "type": "array",
                                        "minItems": 1,
                                        "maxItems": 100,
                                        "uniqueItems": true,
                                        "items": {
                                            "type": "string",
                                            "description": "Opaque stable public identifier; never an internal database key.",
                                            "example": "company_example_apple",
                                            "minLength": 1,
                                            "maxLength": 128,
                                            "pattern": "^[A-Za-z0-9][A-Za-z0-9_.:-]{0,127}$"
                                        },
                                        "description": "Filter by issuer IDs. May be combined with instrument selectors; filters intersect, except on issuer-level datasets (statements, segments, estimates, earnings, insider transactions), where an instrument selector is read as its company and takes the place of company_ids, so results cover every share class."
                                    },
                                    "instrument_ids": {
                                        "type": "array",
                                        "minItems": 1,
                                        "maxItems": 100,
                                        "uniqueItems": true,
                                        "items": {
                                            "type": "string",
                                            "description": "Opaque stable public identifier; never an internal database key.",
                                            "example": "inst_example_aapl",
                                            "minLength": 1,
                                            "maxLength": 128,
                                            "pattern": "^[A-Za-z0-9][A-Za-z0-9_.:-]{0,127}$"
                                        },
                                        "description": "Filter by stable instrument IDs. IDs and symbols may not be combined."
                                    },
                                    "symbols": {
                                        "type": "array",
                                        "minItems": 1,
                                        "maxItems": 100,
                                        "uniqueItems": true,
                                        "items": {
                                            "type": "string",
                                            "pattern": "^(?:(?:[A-Za-z0-9]{4}|[Cc][Rr][Yy][Pp][Tt][Oo]|[Ff][Oo][Rr][Ee][Xx]|[Ii][Nn][Dd][Ee][Xx]):|\\^)?[A-Za-z0-9](?:[A-Za-z0-9./_^= -]{0,62}[A-Za-z0-9./_^=-])?$",
                                            "example": "XNAS:AAPL"
                                        },
                                        "description": "Convenience lookup for exchange-listed instruments as MIC:TICKER or a bare ticker, which resolves to the exchange listing that ticker; resolves at symbol_at. The MIC and the ticker are case-insensitive, and two spellings of one listing (AAPL and XNAS:AAPL) count as a repeated value. A bare ticker that names no listing as written is also read in the common vendor spellings: with an exchange suffix (RY.TO, SHEL.L, VOD.LSE, BHP.AX), ^GSPC for INDEX:GSPC, and EURUSD=X or EURUSD for FOREX:EUR-USD. A ticker may contain a space (BAC PRL) but not start or end with one. A request in which no symbol resolves returns 404 symbol-not-resolved; otherwise each symbol that does not resolve, or resolves to a listing with no rows for the request (no-data), is an entry of meta.errors. IDs and symbols may not be combined."
                                    },
                                    "symbol_at": {
                                        "description": "Resolve symbols as they were assigned at the end of this UTC date (YYYY-MM-DD); defaults to as_of. Only listings the security master holds resolve: it was built in September 2026 and records delistings from then on, so most issuers delisted earlier, such as TWTR or SIVB, resolve at no date. Only valid with symbols.",
                                        "type": "string",
                                        "format": "date"
                                    },
                                    "q": {
                                        "type": "string",
                                        "minLength": 1,
                                        "maxLength": 200,
                                        "pattern": "\\S",
                                        "description": "Case-insensitive search of the bond name and symbol. A value that is empty or only whitespace returns 422."
                                    },
                                    "as_of": {
                                        "description": "Knowledge cutoff as a UTC date (YYYY-MM-DD): the response reflects what was known by the end of that day. Defaults to now; cannot be in the future. A date from before the dataset's knowledge history returns 422 point-in-time-unavailable naming the earliest one, which GET /v1/datasets lists as earliest_as_of.",
                                        "type": "string",
                                        "format": "date"
                                    },
                                    "known_from": {
                                        "description": "First UTC date (YYYY-MM-DD, inclusive) on which a revision became known.",
                                        "type": "string",
                                        "format": "date"
                                    },
                                    "known_to": {
                                        "description": "Last UTC date (YYYY-MM-DD, inclusive) on which a revision became known; on or after known_from.",
                                        "type": "string",
                                        "format": "date"
                                    },
                                    "order": {
                                        "type": "string",
                                        "enum": [
                                            "asc",
                                            "desc"
                                        ],
                                        "description": "Direction on id; ties use ID ascending.",
                                        "example": "asc",
                                        "default": "asc"
                                    }
                                },
                                "x-query-constraints": [
                                    {
                                        "rule": "mutually_exclusive",
                                        "parameters": [
                                            "instrument_ids",
                                            "symbols"
                                        ]
                                    },
                                    {
                                        "rule": "requires",
                                        "parameter": "symbol_at",
                                        "required": [
                                            "symbols"
                                        ]
                                    },
                                    {
                                        "rule": "less_than",
                                        "lower": "known_from",
                                        "upper": "known_to"
                                    }
                                ],
                                "required": []
                            }
                        }
                    },
                    {
                        "type": "object",
                        "additionalProperties": false,
                        "required": [
                            "resource",
                            "parameters"
                        ],
                        "properties": {
                            "resource": {
                                "type": "string",
                                "const": "/v1/bonds/yields"
                            },
                            "parameters": {
                                "type": "object",
                                "additionalProperties": false,
                                "properties": {
                                    "instrument_ids": {
                                        "type": "array",
                                        "minItems": 1,
                                        "maxItems": 100,
                                        "uniqueItems": true,
                                        "items": {
                                            "type": "string",
                                            "description": "Opaque stable public identifier; never an internal database key.",
                                            "example": "inst_example_aapl",
                                            "minLength": 1,
                                            "maxLength": 128,
                                            "pattern": "^[A-Za-z0-9][A-Za-z0-9_.:-]{0,127}$"
                                        },
                                        "description": "Filter by stable instrument IDs. IDs and symbols may not be combined."
                                    },
                                    "symbols": {
                                        "type": "array",
                                        "minItems": 1,
                                        "maxItems": 100,
                                        "uniqueItems": true,
                                        "items": {
                                            "type": "string",
                                            "pattern": "^(?:(?:[A-Za-z0-9]{4}|[Cc][Rr][Yy][Pp][Tt][Oo]|[Ff][Oo][Rr][Ee][Xx]|[Ii][Nn][Dd][Ee][Xx]):|\\^)?[A-Za-z0-9](?:[A-Za-z0-9./_^= -]{0,62}[A-Za-z0-9./_^=-])?$",
                                            "example": "XNAS:AAPL"
                                        },
                                        "description": "Convenience lookup for exchange-listed instruments as MIC:TICKER or a bare ticker, which resolves to the exchange listing that ticker; resolves at symbol_at. The MIC and the ticker are case-insensitive, and two spellings of one listing (AAPL and XNAS:AAPL) count as a repeated value. A bare ticker that names no listing as written is also read in the common vendor spellings: with an exchange suffix (RY.TO, SHEL.L, VOD.LSE, BHP.AX), ^GSPC for INDEX:GSPC, and EURUSD=X or EURUSD for FOREX:EUR-USD. A ticker may contain a space (BAC PRL) but not start or end with one. A request in which no symbol resolves returns 404 symbol-not-resolved; otherwise each symbol that does not resolve, or resolves to a listing with no rows for the request (no-data), is an entry of meta.errors. IDs and symbols may not be combined."
                                    },
                                    "symbol_at": {
                                        "description": "Resolve symbols as they were assigned at the end of this UTC date (YYYY-MM-DD); defaults to as_of. Only listings the security master holds resolve: it was built in September 2026 and records delistings from then on, so most issuers delisted earlier, such as TWTR or SIVB, resolve at no date. Only valid with symbols.",
                                        "type": "string",
                                        "format": "date"
                                    },
                                    "from": {
                                        "type": "string",
                                        "format": "date",
                                        "example": "2026-09-18",
                                        "description": "Inclusive lower bound on date."
                                    },
                                    "to": {
                                        "type": "string",
                                        "format": "date",
                                        "example": "2026-09-18",
                                        "description": "Inclusive upper bound on date; must be on or after from, so from equal to to selects one day."
                                    },
                                    "as_of": {
                                        "description": "Knowledge cutoff as a UTC date (YYYY-MM-DD): the response reflects what was known by the end of that day. Defaults to now; cannot be in the future. A date from before the dataset's knowledge history returns 422 point-in-time-unavailable naming the earliest one, which GET /v1/datasets lists as earliest_as_of.",
                                        "type": "string",
                                        "format": "date"
                                    },
                                    "known_from": {
                                        "description": "First UTC date (YYYY-MM-DD, inclusive) on which a revision became known.",
                                        "type": "string",
                                        "format": "date"
                                    },
                                    "known_to": {
                                        "description": "Last UTC date (YYYY-MM-DD, inclusive) on which a revision became known; on or after known_from.",
                                        "type": "string",
                                        "format": "date"
                                    },
                                    "order": {
                                        "type": "string",
                                        "enum": [
                                            "asc",
                                            "desc"
                                        ],
                                        "description": "Direction on date; ties use ID ascending.",
                                        "example": "asc",
                                        "default": "desc"
                                    }
                                },
                                "x-query-constraints": [
                                    {
                                        "rule": "mutually_exclusive",
                                        "parameters": [
                                            "instrument_ids",
                                            "symbols"
                                        ]
                                    },
                                    {
                                        "rule": "requires",
                                        "parameter": "symbol_at",
                                        "required": [
                                            "symbols"
                                        ]
                                    },
                                    {
                                        "rule": "less_than",
                                        "lower": "from",
                                        "upper": "to"
                                    },
                                    {
                                        "rule": "less_than",
                                        "lower": "known_from",
                                        "upper": "known_to"
                                    }
                                ],
                                "required": []
                            }
                        }
                    },
                    {
                        "type": "object",
                        "additionalProperties": false,
                        "required": [
                            "resource",
                            "parameters"
                        ],
                        "properties": {
                            "resource": {
                                "type": "string",
                                "const": "/v1/indices/{instrument_id}/constituents"
                            },
                            "parameters": {
                                "type": "object",
                                "additionalProperties": false,
                                "properties": {
                                    "instrument_id": {
                                        "type": "string",
                                        "description": "Stable public identifier.",
                                        "example": "inst_example_aapl",
                                        "minLength": 1,
                                        "maxLength": 128,
                                        "pattern": "^[A-Za-z0-9][A-Za-z0-9_.:-]{0,127}$"
                                    },
                                    "effective_date": {
                                        "type": "string",
                                        "format": "date",
                                        "example": "2026-09-18",
                                        "description": "Effective date, defaults to the UTC date of as_of. Returns the latest eligible snapshot on or before this date; response retains its actual snapshot date."
                                    },
                                    "as_of": {
                                        "description": "Knowledge cutoff as a UTC date (YYYY-MM-DD): the response reflects what was known by the end of that day. Defaults to now; cannot be in the future. A date from before the dataset's knowledge history returns 422 point-in-time-unavailable naming the earliest one, which GET /v1/datasets lists as earliest_as_of.",
                                        "type": "string",
                                        "format": "date"
                                    },
                                    "known_from": {
                                        "description": "First UTC date (YYYY-MM-DD, inclusive) on which a revision became known.",
                                        "type": "string",
                                        "format": "date"
                                    },
                                    "known_to": {
                                        "description": "Last UTC date (YYYY-MM-DD, inclusive) on which a revision became known; on or after known_from.",
                                        "type": "string",
                                        "format": "date"
                                    },
                                    "order": {
                                        "type": "string",
                                        "enum": [
                                            "asc",
                                            "desc"
                                        ],
                                        "description": "Direction on snapshot_date; ties use ID ascending.",
                                        "example": "asc",
                                        "default": "asc"
                                    }
                                },
                                "required": [
                                    "instrument_id"
                                ],
                                "x-query-constraints": [
                                    {
                                        "rule": "less_than",
                                        "lower": "known_from",
                                        "upper": "known_to"
                                    }
                                ]
                            }
                        }
                    },
                    {
                        "type": "object",
                        "additionalProperties": false,
                        "required": [
                            "resource",
                            "parameters"
                        ],
                        "properties": {
                            "resource": {
                                "type": "string",
                                "const": "/v1/options/contracts"
                            },
                            "parameters": {
                                "type": "object",
                                "additionalProperties": false,
                                "properties": {
                                    "underlying_ids": {
                                        "type": "array",
                                        "minItems": 1,
                                        "maxItems": 100,
                                        "uniqueItems": true,
                                        "items": {
                                            "type": "string",
                                            "description": "Opaque stable public identifier; never an internal database key.",
                                            "example": "inst_example_aapl",
                                            "minLength": 1,
                                            "maxLength": 128,
                                            "pattern": "^[A-Za-z0-9][A-Za-z0-9_.:-]{0,127}$"
                                        },
                                        "description": "Underlying instrument IDs."
                                    },
                                    "contract_ids": {
                                        "type": "array",
                                        "minItems": 1,
                                        "maxItems": 100,
                                        "uniqueItems": true,
                                        "items": {
                                            "type": "string",
                                            "description": "Opaque stable public identifier; never an internal database key.",
                                            "example": "inst_example_aapl",
                                            "minLength": 1,
                                            "maxLength": 128,
                                            "pattern": "^[A-Za-z0-9][A-Za-z0-9_.:-]{0,127}$"
                                        },
                                        "description": "Option instrument IDs."
                                    },
                                    "type": {
                                        "type": "string",
                                        "enum": [
                                            "call",
                                            "put"
                                        ],
                                        "description": "Option right.",
                                        "example": "call"
                                    },
                                    "expiration_from": {
                                        "type": "string",
                                        "format": "date",
                                        "example": "2026-09-18",
                                        "description": "Inclusive expiration date."
                                    },
                                    "expiration_to": {
                                        "type": "string",
                                        "format": "date",
                                        "example": "2026-09-18",
                                        "description": "Inclusive expiration date; must be on or after expiration_from."
                                    },
                                    "strike_min": {
                                        "type": "string",
                                        "pattern": "^-?[0-9]+(?:\\.[0-9]+)?$",
                                        "description": "Inclusive strike in the contract currency.",
                                        "example": "1.25"
                                    },
                                    "strike_max": {
                                        "type": "string",
                                        "pattern": "^-?[0-9]+(?:\\.[0-9]+)?$",
                                        "description": "Inclusive strike; must be >= strike_min.",
                                        "example": "1.25"
                                    },
                                    "status": {
                                        "type": "string",
                                        "enum": [
                                            "active",
                                            "expired",
                                            "all"
                                        ],
                                        "description": "Defaults to active; all includes expired contracts.",
                                        "example": "active"
                                    },
                                    "effective_date": {
                                        "type": "string",
                                        "format": "date",
                                        "example": "2026-09-18",
                                        "description": "Effective date, defaults to the UTC date of as_of. Returns the latest eligible snapshot on or before this date; response retains its actual snapshot date."
                                    },
                                    "as_of": {
                                        "description": "Knowledge cutoff as a UTC date (YYYY-MM-DD): the response reflects what was known by the end of that day. Defaults to now; cannot be in the future. A date from before the dataset's knowledge history returns 422 point-in-time-unavailable naming the earliest one, which GET /v1/datasets lists as earliest_as_of.",
                                        "type": "string",
                                        "format": "date"
                                    },
                                    "known_from": {
                                        "description": "First UTC date (YYYY-MM-DD, inclusive) on which a revision became known.",
                                        "type": "string",
                                        "format": "date"
                                    },
                                    "known_to": {
                                        "description": "Last UTC date (YYYY-MM-DD, inclusive) on which a revision became known; on or after known_from.",
                                        "type": "string",
                                        "format": "date"
                                    },
                                    "order": {
                                        "type": "string",
                                        "enum": [
                                            "asc",
                                            "desc"
                                        ],
                                        "description": "Direction on id; ties use ID ascending.",
                                        "example": "asc",
                                        "default": "asc"
                                    }
                                },
                                "x-query-constraints": [
                                    {
                                        "rule": "less_than",
                                        "lower": "known_from",
                                        "upper": "known_to"
                                    },
                                    {
                                        "rule": "less_than",
                                        "lower": "expiration_from",
                                        "upper": "expiration_to"
                                    },
                                    {
                                        "rule": "less_than_or_equal",
                                        "lower": "strike_min",
                                        "upper": "strike_max"
                                    }
                                ],
                                "required": []
                            }
                        }
                    },
                    {
                        "type": "object",
                        "additionalProperties": false,
                        "required": [
                            "resource",
                            "parameters"
                        ],
                        "properties": {
                            "resource": {
                                "type": "string",
                                "const": "/v1/options/quotes"
                            },
                            "parameters": {
                                "type": "object",
                                "additionalProperties": false,
                                "properties": {
                                    "contract_ids": {
                                        "type": "array",
                                        "minItems": 1,
                                        "maxItems": 100,
                                        "uniqueItems": true,
                                        "items": {
                                            "type": "string",
                                            "description": "Opaque stable public identifier; never an internal database key.",
                                            "example": "inst_example_aapl",
                                            "minLength": 1,
                                            "maxLength": 128,
                                            "pattern": "^[A-Za-z0-9][A-Za-z0-9_.:-]{0,127}$"
                                        },
                                        "description": "Contract instrument IDs; mutually exclusive with underlying_ids."
                                    },
                                    "underlying_ids": {
                                        "type": "array",
                                        "minItems": 1,
                                        "maxItems": 100,
                                        "uniqueItems": true,
                                        "items": {
                                            "type": "string",
                                            "description": "Opaque stable public identifier; never an internal database key.",
                                            "example": "inst_example_aapl",
                                            "minLength": 1,
                                            "maxLength": 128,
                                            "pattern": "^[A-Za-z0-9][A-Za-z0-9_.:-]{0,127}$"
                                        },
                                        "description": "Underlying IDs for chain-wide snapshots; mutually exclusive with contract_ids."
                                    },
                                    "expiration": {
                                        "type": "string",
                                        "format": "date",
                                        "example": "2026-09-18",
                                        "description": "Contract expiration date."
                                    },
                                    "as_of": {
                                        "description": "Knowledge cutoff as a UTC date (YYYY-MM-DD): the response reflects what was known by the end of that day. Defaults to now; cannot be in the future. A date from before the dataset's knowledge history returns 422 point-in-time-unavailable naming the earliest one, which GET /v1/datasets lists as earliest_as_of.",
                                        "type": "string",
                                        "format": "date"
                                    },
                                    "known_from": {
                                        "description": "First UTC date (YYYY-MM-DD, inclusive) on which a revision became known.",
                                        "type": "string",
                                        "format": "date"
                                    },
                                    "known_to": {
                                        "description": "Last UTC date (YYYY-MM-DD, inclusive) on which a revision became known; on or after known_from.",
                                        "type": "string",
                                        "format": "date"
                                    },
                                    "order": {
                                        "type": "string",
                                        "enum": [
                                            "asc",
                                            "desc"
                                        ],
                                        "description": "Direction on event_at; ties use ID ascending.",
                                        "example": "asc",
                                        "default": "asc"
                                    }
                                },
                                "x-query-constraints": [
                                    {
                                        "rule": "exactly_one",
                                        "parameters": [
                                            "contract_ids",
                                            "underlying_ids"
                                        ]
                                    },
                                    {
                                        "rule": "less_than",
                                        "lower": "known_from",
                                        "upper": "known_to"
                                    }
                                ],
                                "required": []
                            }
                        }
                    },
                    {
                        "type": "object",
                        "additionalProperties": false,
                        "required": [
                            "resource",
                            "parameters"
                        ],
                        "properties": {
                            "resource": {
                                "type": "string",
                                "const": "/v1/options/bars"
                            },
                            "parameters": {
                                "type": "object",
                                "additionalProperties": false,
                                "properties": {
                                    "contract_ids": {
                                        "type": "array",
                                        "minItems": 1,
                                        "maxItems": 100,
                                        "uniqueItems": true,
                                        "items": {
                                            "type": "string",
                                            "description": "Opaque stable public identifier; never an internal database key.",
                                            "example": "inst_example_aapl",
                                            "minLength": 1,
                                            "maxLength": 128,
                                            "pattern": "^[A-Za-z0-9][A-Za-z0-9_.:-]{0,127}$"
                                        },
                                        "description": "Contract instrument IDs."
                                    },
                                    "from": {
                                        "type": "string",
                                        "format": "date",
                                        "example": "2026-09-18",
                                        "description": "Inclusive lower bound on date."
                                    },
                                    "to": {
                                        "type": "string",
                                        "format": "date",
                                        "example": "2026-09-18",
                                        "description": "Inclusive upper bound on date; must be on or after from, so from equal to to selects one day."
                                    },
                                    "as_of": {
                                        "description": "Knowledge cutoff as a UTC date (YYYY-MM-DD): the response reflects what was known by the end of that day. Defaults to now; cannot be in the future. A date from before the dataset's knowledge history returns 422 point-in-time-unavailable naming the earliest one, which GET /v1/datasets lists as earliest_as_of.",
                                        "type": "string",
                                        "format": "date"
                                    },
                                    "known_from": {
                                        "description": "First UTC date (YYYY-MM-DD, inclusive) on which a revision became known.",
                                        "type": "string",
                                        "format": "date"
                                    },
                                    "known_to": {
                                        "description": "Last UTC date (YYYY-MM-DD, inclusive) on which a revision became known; on or after known_from.",
                                        "type": "string",
                                        "format": "date"
                                    },
                                    "order": {
                                        "type": "string",
                                        "enum": [
                                            "asc",
                                            "desc"
                                        ],
                                        "description": "Direction on date; ties use ID ascending.",
                                        "example": "asc",
                                        "default": "desc"
                                    }
                                },
                                "required": [
                                    "contract_ids"
                                ],
                                "x-query-constraints": [
                                    {
                                        "rule": "less_than",
                                        "lower": "from",
                                        "upper": "to"
                                    },
                                    {
                                        "rule": "less_than",
                                        "lower": "known_from",
                                        "upper": "known_to"
                                    }
                                ]
                            }
                        }
                    },
                    {
                        "type": "object",
                        "additionalProperties": false,
                        "required": [
                            "resource",
                            "parameters"
                        ],
                        "properties": {
                            "resource": {
                                "type": "string",
                                "const": "/v1/bars"
                            },
                            "parameters": {
                                "type": "object",
                                "additionalProperties": false,
                                "properties": {
                                    "instrument_ids": {
                                        "type": "array",
                                        "minItems": 1,
                                        "maxItems": 100,
                                        "uniqueItems": true,
                                        "items": {
                                            "type": "string",
                                            "description": "Opaque stable public identifier; never an internal database key.",
                                            "example": "inst_example_aapl",
                                            "minLength": 1,
                                            "maxLength": 128,
                                            "pattern": "^[A-Za-z0-9][A-Za-z0-9_.:-]{0,127}$"
                                        },
                                        "description": "Filter by stable instrument IDs. IDs and symbols may not be combined."
                                    },
                                    "symbols": {
                                        "type": "array",
                                        "minItems": 1,
                                        "maxItems": 100,
                                        "uniqueItems": true,
                                        "items": {
                                            "type": "string",
                                            "pattern": "^(?:(?:[A-Za-z0-9]{4}|[Cc][Rr][Yy][Pp][Tt][Oo]|[Ff][Oo][Rr][Ee][Xx]|[Ii][Nn][Dd][Ee][Xx]):|\\^)?[A-Za-z0-9](?:[A-Za-z0-9./_^= -]{0,62}[A-Za-z0-9./_^=-])?$",
                                            "example": "XNAS:AAPL"
                                        },
                                        "description": "Convenience lookup for exchange-listed instruments as MIC:TICKER or a bare ticker, which resolves to the exchange listing that ticker; resolves at symbol_at. The MIC and the ticker are case-insensitive, and two spellings of one listing (AAPL and XNAS:AAPL) count as a repeated value. A bare ticker that names no listing as written is also read in the common vendor spellings: with an exchange suffix (RY.TO, SHEL.L, VOD.LSE, BHP.AX), ^GSPC for INDEX:GSPC, and EURUSD=X or EURUSD for FOREX:EUR-USD. A ticker may contain a space (BAC PRL) but not start or end with one. A request in which no symbol resolves returns 404 symbol-not-resolved; otherwise each symbol that does not resolve, or resolves to a listing with no rows for the request (no-data), is an entry of meta.errors. IDs and symbols may not be combined."
                                    },
                                    "symbol_at": {
                                        "description": "Resolve symbols as they were assigned at the end of this UTC date (YYYY-MM-DD); defaults to as_of. Only listings the security master holds resolve: it was built in September 2026 and records delistings from then on, so most issuers delisted earlier, such as TWTR or SIVB, resolve at no date. Only valid with symbols.",
                                        "type": "string",
                                        "format": "date"
                                    },
                                    "from": {
                                        "type": "string",
                                        "format": "date",
                                        "example": "2026-09-18",
                                        "description": "First date (YYYY-MM-DD, inclusive) of window_start, the exchange-local trading date."
                                    },
                                    "to": {
                                        "type": "string",
                                        "format": "date",
                                        "example": "2026-09-18",
                                        "description": "Last date (YYYY-MM-DD, inclusive) of window_start; on or after from."
                                    },
                                    "interval": {
                                        "type": "string",
                                        "enum": [
                                            "1d",
                                            "5m",
                                            "1h",
                                            "1m"
                                        ],
                                        "description": "Required. 1d comes from end-of-day prices (/v1/eod). 5m and 1h come from the retained intraday bars of /v1/intraday (about 30 days): exchange listings are collected as five-minute bars, and 1h is rolled up from them, each session cut into hours from its open. 1m is served only by listings collected at one minute, which today are crypto and currency pairs; an interval a listing is not collected at (1m for exchange listings) returns 422 unsupported-interval. Weekly and monthly bars are not served.",
                                        "example": "1d"
                                    },
                                    "session": {
                                        "type": "string",
                                        "enum": [
                                            "regular",
                                            "all"
                                        ],
                                        "description": "Default regular. Continuous markets (crypto and currency pairs) trade in one session a UTC day, so all selects the same bars as regular for them. Exchange listings have regular-session bars only, with no pre-market or after-hours bars; all returns 422 unsupported-session for them.",
                                        "example": "regular"
                                    },
                                    "adjustment": {
                                        "type": "string",
                                        "enum": [
                                            "raw",
                                            "split",
                                            "total_return"
                                        ],
                                        "description": "Defaults to raw. split and total_return prices are rounded half up to 6 decimal places and adjusted volume to whole shares; a listing whose corporate actions are not collected (crypto and currency pairs, indices, bonds, OTC) returns 422 adjustment-unsupported for them.",
                                        "example": "raw"
                                    },
                                    "as_of": {
                                        "description": "Knowledge cutoff as a UTC date (YYYY-MM-DD): the response reflects what was known by the end of that day. Defaults to now; cannot be in the future. A date from before the dataset's knowledge history returns 422 point-in-time-unavailable naming the earliest one, which GET /v1/datasets lists as earliest_as_of.",
                                        "type": "string",
                                        "format": "date"
                                    },
                                    "order": {
                                        "type": "string",
                                        "enum": [
                                            "asc",
                                            "desc"
                                        ],
                                        "description": "Direction on window_start; ties use ID ascending.",
                                        "example": "asc",
                                        "default": "desc"
                                    }
                                },
                                "required": [
                                    "interval"
                                ],
                                "x-query-constraints": [
                                    {
                                        "rule": "mutually_exclusive",
                                        "parameters": [
                                            "instrument_ids",
                                            "symbols"
                                        ]
                                    },
                                    {
                                        "rule": "requires",
                                        "parameter": "symbol_at",
                                        "required": [
                                            "symbols"
                                        ]
                                    },
                                    {
                                        "rule": "exactly_one",
                                        "parameters": [
                                            "instrument_ids",
                                            "symbols"
                                        ]
                                    },
                                    {
                                        "rule": "less_than",
                                        "lower": "from",
                                        "upper": "to"
                                    }
                                ]
                            }
                        }
                    },
                    {
                        "type": "object",
                        "additionalProperties": false,
                        "required": [
                            "resource",
                            "parameters"
                        ],
                        "properties": {
                            "resource": {
                                "type": "string",
                                "const": "/v1/trades"
                            },
                            "parameters": {
                                "type": "object",
                                "additionalProperties": false,
                                "properties": {
                                    "instrument_ids": {
                                        "type": "array",
                                        "minItems": 1,
                                        "maxItems": 100,
                                        "uniqueItems": true,
                                        "items": {
                                            "type": "string",
                                            "description": "Opaque stable public identifier; never an internal database key.",
                                            "example": "inst_example_aapl",
                                            "minLength": 1,
                                            "maxLength": 128,
                                            "pattern": "^[A-Za-z0-9][A-Za-z0-9_.:-]{0,127}$"
                                        },
                                        "description": "Filter by stable instrument IDs. IDs and symbols may not be combined."
                                    },
                                    "symbols": {
                                        "type": "array",
                                        "minItems": 1,
                                        "maxItems": 100,
                                        "uniqueItems": true,
                                        "items": {
                                            "type": "string",
                                            "pattern": "^(?:(?:[A-Za-z0-9]{4}|[Cc][Rr][Yy][Pp][Tt][Oo]|[Ff][Oo][Rr][Ee][Xx]|[Ii][Nn][Dd][Ee][Xx]):|\\^)?[A-Za-z0-9](?:[A-Za-z0-9./_^= -]{0,62}[A-Za-z0-9./_^=-])?$",
                                            "example": "XNAS:AAPL"
                                        },
                                        "description": "Convenience lookup for exchange-listed instruments as MIC:TICKER or a bare ticker, which resolves to the exchange listing that ticker; resolves at symbol_at. The MIC and the ticker are case-insensitive, and two spellings of one listing (AAPL and XNAS:AAPL) count as a repeated value. A bare ticker that names no listing as written is also read in the common vendor spellings: with an exchange suffix (RY.TO, SHEL.L, VOD.LSE, BHP.AX), ^GSPC for INDEX:GSPC, and EURUSD=X or EURUSD for FOREX:EUR-USD. A ticker may contain a space (BAC PRL) but not start or end with one. A request in which no symbol resolves returns 404 symbol-not-resolved; otherwise each symbol that does not resolve, or resolves to a listing with no rows for the request (no-data), is an entry of meta.errors. IDs and symbols may not be combined."
                                    },
                                    "symbol_at": {
                                        "description": "Resolve symbols as they were assigned at the end of this UTC date (YYYY-MM-DD); defaults to as_of. Only listings the security master holds resolve: it was built in September 2026 and records delistings from then on, so most issuers delisted earlier, such as TWTR or SIVB, resolve at no date. Only valid with symbols.",
                                        "type": "string",
                                        "format": "date"
                                    },
                                    "from": {
                                        "type": "string",
                                        "format": "date",
                                        "example": "2026-09-18",
                                        "description": "UTC date (YYYY-MM-DD) of event_at; a request reads one day."
                                    },
                                    "to": {
                                        "type": "string",
                                        "format": "date",
                                        "example": "2026-09-18",
                                        "description": "The same UTC date as from (YYYY-MM-DD)."
                                    },
                                    "as_of": {
                                        "description": "Knowledge cutoff as a UTC date (YYYY-MM-DD): the response reflects what was known by the end of that day. Defaults to now; cannot be in the future. A date from before the dataset's knowledge history returns 422 point-in-time-unavailable naming the earliest one, which GET /v1/datasets lists as earliest_as_of.",
                                        "type": "string",
                                        "format": "date"
                                    },
                                    "known_from": {
                                        "description": "First UTC date (YYYY-MM-DD, inclusive) on which a revision became known.",
                                        "type": "string",
                                        "format": "date"
                                    },
                                    "known_to": {
                                        "description": "Last UTC date (YYYY-MM-DD, inclusive) on which a revision became known; on or after known_from.",
                                        "type": "string",
                                        "format": "date"
                                    },
                                    "order": {
                                        "type": "string",
                                        "enum": [
                                            "asc",
                                            "desc"
                                        ],
                                        "description": "Direction on event_at; ties use ID ascending.",
                                        "example": "asc",
                                        "default": "asc"
                                    }
                                },
                                "x-query-constraints": [
                                    {
                                        "rule": "mutually_exclusive",
                                        "parameters": [
                                            "instrument_ids",
                                            "symbols"
                                        ]
                                    },
                                    {
                                        "rule": "requires",
                                        "parameter": "symbol_at",
                                        "required": [
                                            "symbols"
                                        ]
                                    },
                                    {
                                        "rule": "exactly_one",
                                        "parameters": [
                                            "instrument_ids",
                                            "symbols"
                                        ]
                                    },
                                    {
                                        "rule": "less_than",
                                        "lower": "from",
                                        "upper": "to"
                                    },
                                    {
                                        "rule": "less_than",
                                        "lower": "known_from",
                                        "upper": "known_to"
                                    },
                                    {
                                        "rule": "max_range_seconds",
                                        "lower": "from",
                                        "upper": "to",
                                        "value": 86400
                                    }
                                ],
                                "required": [
                                    "from",
                                    "to"
                                ]
                            }
                        }
                    },
                    {
                        "type": "object",
                        "additionalProperties": false,
                        "required": [
                            "resource",
                            "parameters"
                        ],
                        "properties": {
                            "resource": {
                                "type": "string",
                                "const": "/v1/indicators/definitions"
                            },
                            "parameters": {
                                "type": "object",
                                "additionalProperties": false,
                                "properties": {
                                    "as_of": {
                                        "description": "Knowledge cutoff as a UTC date (YYYY-MM-DD): the response reflects what was known by the end of that day. Defaults to now; cannot be in the future. A date from before the dataset's knowledge history returns 422 point-in-time-unavailable naming the earliest one, which GET /v1/datasets lists as earliest_as_of.",
                                        "type": "string",
                                        "format": "date"
                                    },
                                    "known_from": {
                                        "description": "First UTC date (YYYY-MM-DD, inclusive) on which a revision became known.",
                                        "type": "string",
                                        "format": "date"
                                    },
                                    "known_to": {
                                        "description": "Last UTC date (YYYY-MM-DD, inclusive) on which a revision became known; on or after known_from.",
                                        "type": "string",
                                        "format": "date"
                                    },
                                    "order": {
                                        "type": "string",
                                        "enum": [
                                            "asc",
                                            "desc"
                                        ],
                                        "description": "Direction on id; ties use ID ascending.",
                                        "example": "asc",
                                        "default": "asc"
                                    }
                                },
                                "x-query-constraints": [
                                    {
                                        "rule": "less_than",
                                        "lower": "known_from",
                                        "upper": "known_to"
                                    }
                                ],
                                "required": []
                            }
                        }
                    },
                    {
                        "type": "object",
                        "additionalProperties": false,
                        "required": [
                            "resource",
                            "parameters"
                        ],
                        "properties": {
                            "resource": {
                                "type": "string",
                                "const": "/v1/indicators"
                            },
                            "parameters": {
                                "type": "object",
                                "additionalProperties": false,
                                "properties": {
                                    "instrument_ids": {
                                        "type": "array",
                                        "minItems": 1,
                                        "maxItems": 100,
                                        "uniqueItems": true,
                                        "items": {
                                            "type": "string",
                                            "description": "Opaque stable public identifier; never an internal database key.",
                                            "example": "inst_example_aapl",
                                            "minLength": 1,
                                            "maxLength": 128,
                                            "pattern": "^[A-Za-z0-9][A-Za-z0-9_.:-]{0,127}$"
                                        },
                                        "description": "Filter by stable instrument IDs. IDs and symbols may not be combined."
                                    },
                                    "symbols": {
                                        "type": "array",
                                        "minItems": 1,
                                        "maxItems": 100,
                                        "uniqueItems": true,
                                        "items": {
                                            "type": "string",
                                            "pattern": "^(?:(?:[A-Za-z0-9]{4}|[Cc][Rr][Yy][Pp][Tt][Oo]|[Ff][Oo][Rr][Ee][Xx]|[Ii][Nn][Dd][Ee][Xx]):|\\^)?[A-Za-z0-9](?:[A-Za-z0-9./_^= -]{0,62}[A-Za-z0-9./_^=-])?$",
                                            "example": "XNAS:AAPL"
                                        },
                                        "description": "Convenience lookup for exchange-listed instruments as MIC:TICKER or a bare ticker, which resolves to the exchange listing that ticker; resolves at symbol_at. The MIC and the ticker are case-insensitive, and two spellings of one listing (AAPL and XNAS:AAPL) count as a repeated value. A bare ticker that names no listing as written is also read in the common vendor spellings: with an exchange suffix (RY.TO, SHEL.L, VOD.LSE, BHP.AX), ^GSPC for INDEX:GSPC, and EURUSD=X or EURUSD for FOREX:EUR-USD. A ticker may contain a space (BAC PRL) but not start or end with one. A request in which no symbol resolves returns 404 symbol-not-resolved; otherwise each symbol that does not resolve, or resolves to a listing with no rows for the request (no-data), is an entry of meta.errors. IDs and symbols may not be combined."
                                    },
                                    "symbol_at": {
                                        "description": "Resolve symbols as they were assigned at the end of this UTC date (YYYY-MM-DD); defaults to as_of. Only listings the security master holds resolve: it was built in September 2026 and records delistings from then on, so most issuers delisted earlier, such as TWTR or SIVB, resolve at no date. Only valid with symbols.",
                                        "type": "string",
                                        "format": "date"
                                    },
                                    "indicator": {
                                        "type": "string",
                                        "pattern": "^[a-z][a-z0-9_]*$",
                                        "example": "sma",
                                        "description": "Code from indicators/definitions."
                                    },
                                    "from": {
                                        "type": "string",
                                        "format": "date",
                                        "example": "2026-09-18",
                                        "description": "First UTC date (YYYY-MM-DD, inclusive) of event_at."
                                    },
                                    "to": {
                                        "type": "string",
                                        "format": "date",
                                        "example": "2026-09-18",
                                        "description": "Last UTC date (YYYY-MM-DD, inclusive) of event_at; on or after from."
                                    },
                                    "interval": {
                                        "type": "string",
                                        "enum": [
                                            "1d",
                                            "5m",
                                            "1h",
                                            "1m"
                                        ],
                                        "description": "Source bar interval, as /v1/bars serves it: 1d for every listing, 5m and 1h for exchange listings, and 1m only for listings collected at one minute (crypto and currency pairs); otherwise 422 unsupported-interval. Weekly and monthly bars are not served.",
                                        "example": "1d"
                                    },
                                    "period": {
                                        "type": "integer",
                                        "minimum": 1,
                                        "maximum": 1000,
                                        "description": "Lookback bars; only valid for indicators whose definition supports period. Without it, the definition's default applies: 20 for sma, ema and bollinger_bands, 14 for rsi, atr and stochastic, 12 for roc (GET /v1/indicators/definitions states each one's limits; rsi and bollinger_bands need at least 2)."
                                    },
                                    "fast_period": {
                                        "type": "integer",
                                        "minimum": 1,
                                        "maximum": 1000,
                                        "description": "Optional indicator-specific fast period; macd defaults to 12."
                                    },
                                    "slow_period": {
                                        "type": "integer",
                                        "minimum": 1,
                                        "maximum": 1000,
                                        "description": "Optional slow period, greater than fast_period; macd defaults to 26."
                                    },
                                    "signal_period": {
                                        "type": "integer",
                                        "minimum": 1,
                                        "maximum": 1000,
                                        "description": "Optional signal period; macd defaults to 9 and stochastic to 3."
                                    },
                                    "adjustment": {
                                        "type": "string",
                                        "enum": [
                                            "raw",
                                            "split",
                                            "total_return"
                                        ],
                                        "description": "Source-bar adjustment. Without it, bars are split-adjusted (meta.default_adjustment) for a listing with validated split adjustments, so a window that spans a split is on one share basis, and raw for a listing without them (crypto and currency pairs, indices, bonds, OTC), for which an explicit split or total_return returns 422 adjustment-unsupported. Each record's adjustment states what its bars had. raw reads bars as traded.",
                                        "example": "raw"
                                    },
                                    "session": {
                                        "type": "string",
                                        "enum": [
                                            "regular",
                                            "all"
                                        ],
                                        "description": "Source-bar session; default regular. Continuous markets (crypto and currency pairs) trade in one session a UTC day, so all selects the same bars as regular for them; exchange listings return 422 unsupported-session for anything but regular.",
                                        "example": "regular"
                                    },
                                    "as_of": {
                                        "description": "Knowledge cutoff as a UTC date (YYYY-MM-DD): the response reflects what was known by the end of that day. Defaults to now; cannot be in the future. A date from before the dataset's knowledge history returns 422 point-in-time-unavailable naming the earliest one, which GET /v1/datasets lists as earliest_as_of.",
                                        "type": "string",
                                        "format": "date"
                                    },
                                    "order": {
                                        "type": "string",
                                        "enum": [
                                            "asc",
                                            "desc"
                                        ],
                                        "description": "Direction on event_at; ties use ID ascending.",
                                        "example": "asc",
                                        "default": "desc"
                                    }
                                },
                                "required": [
                                    "indicator",
                                    "interval"
                                ],
                                "x-query-constraints": [
                                    {
                                        "rule": "mutually_exclusive",
                                        "parameters": [
                                            "instrument_ids",
                                            "symbols"
                                        ]
                                    },
                                    {
                                        "rule": "requires",
                                        "parameter": "symbol_at",
                                        "required": [
                                            "symbols"
                                        ]
                                    },
                                    {
                                        "rule": "exactly_one",
                                        "parameters": [
                                            "instrument_ids",
                                            "symbols"
                                        ]
                                    },
                                    {
                                        "rule": "less_than",
                                        "lower": "from",
                                        "upper": "to"
                                    }
                                ]
                            }
                        }
                    },
                    {
                        "type": "object",
                        "additionalProperties": false,
                        "required": [
                            "resource",
                            "parameters"
                        ],
                        "properties": {
                            "resource": {
                                "type": "string",
                                "const": "/v1/economic/series"
                            },
                            "parameters": {
                                "type": "object",
                                "additionalProperties": false,
                                "properties": {
                                    "countries": {
                                        "type": "array",
                                        "minItems": 1,
                                        "maxItems": 100,
                                        "uniqueItems": true,
                                        "items": {
                                            "type": "string",
                                            "pattern": "^[A-Z]{2}$",
                                            "example": "US"
                                        },
                                        "description": "ISO 3166-1 alpha-2 country codes."
                                    },
                                    "category": {
                                        "type": "string",
                                        "enum": [
                                            "economy",
                                            "rates",
                                            "yields",
                                            "credit",
                                            "fx",
                                            "commodity",
                                            "real_estate"
                                        ],
                                        "description": "Series category.",
                                        "example": "economy"
                                    },
                                    "q": {
                                        "type": "string",
                                        "minLength": 1,
                                        "maxLength": 200,
                                        "pattern": "\\S",
                                        "description": "Case-insensitive series name search. A value that is empty or only whitespace returns 422."
                                    },
                                    "as_of": {
                                        "description": "Knowledge cutoff as a UTC date (YYYY-MM-DD): the response reflects what was known by the end of that day. Defaults to now; cannot be in the future. A date from before the dataset's knowledge history returns 422 point-in-time-unavailable naming the earliest one, which GET /v1/datasets lists as earliest_as_of.",
                                        "type": "string",
                                        "format": "date"
                                    },
                                    "known_from": {
                                        "description": "First UTC date (YYYY-MM-DD, inclusive) on which a revision became known.",
                                        "type": "string",
                                        "format": "date"
                                    },
                                    "known_to": {
                                        "description": "Last UTC date (YYYY-MM-DD, inclusive) on which a revision became known; on or after known_from.",
                                        "type": "string",
                                        "format": "date"
                                    },
                                    "order": {
                                        "type": "string",
                                        "enum": [
                                            "asc",
                                            "desc"
                                        ],
                                        "description": "Direction on id; ties use ID ascending.",
                                        "example": "asc",
                                        "default": "asc"
                                    }
                                },
                                "x-query-constraints": [
                                    {
                                        "rule": "less_than",
                                        "lower": "known_from",
                                        "upper": "known_to"
                                    }
                                ],
                                "required": []
                            }
                        }
                    },
                    {
                        "type": "object",
                        "additionalProperties": false,
                        "required": [
                            "resource",
                            "parameters"
                        ],
                        "properties": {
                            "resource": {
                                "type": "string",
                                "const": "/v1/economic/observations"
                            },
                            "parameters": {
                                "type": "object",
                                "additionalProperties": false,
                                "properties": {
                                    "series_ids": {
                                        "type": "array",
                                        "minItems": 1,
                                        "maxItems": 100,
                                        "uniqueItems": true,
                                        "items": {
                                            "minLength": 1,
                                            "maxLength": 128,
                                            "type": "string",
                                            "description": "Series ID.",
                                            "example": "us.cpi.all_items"
                                        },
                                        "description": "Series IDs from economic/series."
                                    },
                                    "from": {
                                        "type": "string",
                                        "format": "date",
                                        "example": "2026-09-18",
                                        "description": "Inclusive lower bound on observation_date."
                                    },
                                    "to": {
                                        "type": "string",
                                        "format": "date",
                                        "example": "2026-09-18",
                                        "description": "Inclusive upper bound on observation_date; must be on or after from, so from equal to to selects one day."
                                    },
                                    "as_of": {
                                        "description": "Knowledge cutoff as a UTC date (YYYY-MM-DD): the response reflects what was known by the end of that day. Defaults to now; cannot be in the future. A date from before the dataset's knowledge history returns 422 point-in-time-unavailable naming the earliest one, which GET /v1/datasets lists as earliest_as_of.",
                                        "type": "string",
                                        "format": "date"
                                    },
                                    "known_from": {
                                        "description": "First UTC date (YYYY-MM-DD, inclusive) on which a revision became known.",
                                        "type": "string",
                                        "format": "date"
                                    },
                                    "known_to": {
                                        "description": "Last UTC date (YYYY-MM-DD, inclusive) on which a revision became known; on or after known_from.",
                                        "type": "string",
                                        "format": "date"
                                    },
                                    "order": {
                                        "type": "string",
                                        "enum": [
                                            "asc",
                                            "desc"
                                        ],
                                        "description": "Direction on observation_date; ties use ID ascending.",
                                        "example": "asc",
                                        "default": "asc"
                                    }
                                },
                                "required": [
                                    "series_ids"
                                ],
                                "x-query-constraints": [
                                    {
                                        "rule": "less_than",
                                        "lower": "from",
                                        "upper": "to"
                                    },
                                    {
                                        "rule": "less_than",
                                        "lower": "known_from",
                                        "upper": "known_to"
                                    }
                                ]
                            }
                        }
                    },
                    {
                        "type": "object",
                        "additionalProperties": false,
                        "required": [
                            "resource",
                            "parameters"
                        ],
                        "properties": {
                            "resource": {
                                "type": "string",
                                "const": "/v1/economic/sovereign-ratings"
                            },
                            "parameters": {
                                "type": "object",
                                "additionalProperties": false,
                                "properties": {
                                    "countries": {
                                        "type": "array",
                                        "minItems": 1,
                                        "maxItems": 100,
                                        "uniqueItems": true,
                                        "items": {
                                            "type": "string",
                                            "pattern": "^[A-Z]{2}$",
                                            "example": "US"
                                        },
                                        "description": "ISO 3166-1 alpha-2 country codes."
                                    },
                                    "agency": {
                                        "type": "string",
                                        "enum": [
                                            "moodys",
                                            "sp",
                                            "fitch"
                                        ],
                                        "description": "Rating agency.",
                                        "example": "moodys"
                                    },
                                    "from": {
                                        "type": "string",
                                        "format": "date",
                                        "example": "2026-09-18",
                                        "description": "Inclusive lower bound on observation_date."
                                    },
                                    "to": {
                                        "type": "string",
                                        "format": "date",
                                        "example": "2026-09-18",
                                        "description": "Inclusive upper bound on observation_date; must be on or after from, so from equal to to selects one day."
                                    },
                                    "as_of": {
                                        "description": "Knowledge cutoff as a UTC date (YYYY-MM-DD): the response reflects what was known by the end of that day. Defaults to now; cannot be in the future. A date from before the dataset's knowledge history returns 422 point-in-time-unavailable naming the earliest one, which GET /v1/datasets lists as earliest_as_of.",
                                        "type": "string",
                                        "format": "date"
                                    },
                                    "known_from": {
                                        "description": "First UTC date (YYYY-MM-DD, inclusive) on which a revision became known.",
                                        "type": "string",
                                        "format": "date"
                                    },
                                    "known_to": {
                                        "description": "Last UTC date (YYYY-MM-DD, inclusive) on which a revision became known; on or after known_from.",
                                        "type": "string",
                                        "format": "date"
                                    },
                                    "order": {
                                        "type": "string",
                                        "enum": [
                                            "asc",
                                            "desc"
                                        ],
                                        "description": "Direction on observation_date; ties use ID ascending.",
                                        "example": "asc",
                                        "default": "asc"
                                    }
                                },
                                "x-query-constraints": [
                                    {
                                        "rule": "less_than",
                                        "lower": "from",
                                        "upper": "to"
                                    },
                                    {
                                        "rule": "less_than",
                                        "lower": "known_from",
                                        "upper": "known_to"
                                    }
                                ],
                                "required": []
                            }
                        }
                    },
                    {
                        "type": "object",
                        "additionalProperties": false,
                        "required": [
                            "resource",
                            "parameters"
                        ],
                        "properties": {
                            "resource": {
                                "type": "string",
                                "const": "/v1/economic/events"
                            },
                            "parameters": {
                                "type": "object",
                                "additionalProperties": false,
                                "properties": {
                                    "countries": {
                                        "type": "array",
                                        "minItems": 1,
                                        "maxItems": 100,
                                        "uniqueItems": true,
                                        "items": {
                                            "type": "string",
                                            "pattern": "^[A-Z]{2}$",
                                            "example": "US"
                                        },
                                        "description": "ISO 3166-1 alpha-2 country codes."
                                    },
                                    "series_ids": {
                                        "type": "array",
                                        "minItems": 1,
                                        "maxItems": 100,
                                        "uniqueItems": true,
                                        "items": {
                                            "minLength": 1,
                                            "maxLength": 128,
                                            "type": "string",
                                            "description": "Series ID.",
                                            "example": "us.cpi.all_items"
                                        },
                                        "description": "Associated economic series. Events are not linked to series yet (series_id is null), so this filter matches none."
                                    },
                                    "from": {
                                        "type": "string",
                                        "format": "date",
                                        "example": "2026-09-18",
                                        "description": "Inclusive lower bound on release_date."
                                    },
                                    "to": {
                                        "type": "string",
                                        "format": "date",
                                        "example": "2026-09-18",
                                        "description": "Inclusive upper bound on release_date; must be on or after from, so from equal to to selects one day."
                                    },
                                    "as_of": {
                                        "description": "Knowledge cutoff as a UTC date (YYYY-MM-DD): the response reflects what was known by the end of that day. Defaults to now; cannot be in the future. A date from before the dataset's knowledge history returns 422 point-in-time-unavailable naming the earliest one, which GET /v1/datasets lists as earliest_as_of.",
                                        "type": "string",
                                        "format": "date"
                                    },
                                    "known_from": {
                                        "description": "First UTC date (YYYY-MM-DD, inclusive) on which a revision became known.",
                                        "type": "string",
                                        "format": "date"
                                    },
                                    "known_to": {
                                        "description": "Last UTC date (YYYY-MM-DD, inclusive) on which a revision became known; on or after known_from.",
                                        "type": "string",
                                        "format": "date"
                                    },
                                    "order": {
                                        "type": "string",
                                        "enum": [
                                            "asc",
                                            "desc"
                                        ],
                                        "description": "Direction on release_date; ties use ID ascending.",
                                        "example": "asc",
                                        "default": "asc"
                                    }
                                },
                                "x-query-constraints": [
                                    {
                                        "rule": "less_than",
                                        "lower": "from",
                                        "upper": "to"
                                    },
                                    {
                                        "rule": "less_than",
                                        "lower": "known_from",
                                        "upper": "known_to"
                                    }
                                ],
                                "required": []
                            }
                        }
                    },
                    {
                        "type": "object",
                        "additionalProperties": false,
                        "required": [
                            "resource",
                            "parameters"
                        ],
                        "properties": {
                            "resource": {
                                "type": "string",
                                "const": "/v1/ipos"
                            },
                            "parameters": {
                                "type": "object",
                                "additionalProperties": false,
                                "properties": {
                                    "from": {
                                        "type": "string",
                                        "format": "date",
                                        "example": "2026-09-18",
                                        "description": "Inclusive lower bound on listing_date."
                                    },
                                    "to": {
                                        "type": "string",
                                        "format": "date",
                                        "example": "2026-09-18",
                                        "description": "Inclusive upper bound on listing_date; must be on or after from, so from equal to to selects one day."
                                    },
                                    "exchanges": {
                                        "type": "array",
                                        "minItems": 1,
                                        "maxItems": 100,
                                        "uniqueItems": true,
                                        "items": {
                                            "type": "string",
                                            "pattern": "^(?:[A-Z0-9]{4}|CRYPTO|FOREX|INDEX)$"
                                        },
                                        "description": "Expected listing MICs. A malformed or repeated code returns 422 invalid-exchanges, a MIC the API does not serve 404 exchange-not-found, and one outside the key's markets 403 market-not-entitled."
                                    },
                                    "status": {
                                        "type": "string",
                                        "enum": [
                                            "expected",
                                            "priced",
                                            "listed",
                                            "postponed",
                                            "withdrawn"
                                        ],
                                        "description": "Offering status.",
                                        "example": "expected"
                                    },
                                    "as_of": {
                                        "description": "Knowledge cutoff as a UTC date (YYYY-MM-DD): the response reflects what was known by the end of that day. Defaults to now; cannot be in the future. A date from before the dataset's knowledge history returns 422 point-in-time-unavailable naming the earliest one, which GET /v1/datasets lists as earliest_as_of.",
                                        "type": "string",
                                        "format": "date"
                                    },
                                    "known_from": {
                                        "description": "First UTC date (YYYY-MM-DD, inclusive) on which a revision became known.",
                                        "type": "string",
                                        "format": "date"
                                    },
                                    "known_to": {
                                        "description": "Last UTC date (YYYY-MM-DD, inclusive) on which a revision became known; on or after known_from.",
                                        "type": "string",
                                        "format": "date"
                                    },
                                    "order": {
                                        "type": "string",
                                        "enum": [
                                            "asc",
                                            "desc"
                                        ],
                                        "description": "Direction on listing_date; ties use ID ascending.",
                                        "example": "asc",
                                        "default": "asc"
                                    }
                                },
                                "x-query-constraints": [
                                    {
                                        "rule": "less_than",
                                        "lower": "from",
                                        "upper": "to"
                                    },
                                    {
                                        "rule": "less_than",
                                        "lower": "known_from",
                                        "upper": "known_to"
                                    }
                                ],
                                "required": []
                            }
                        }
                    },
                    {
                        "type": "object",
                        "additionalProperties": false,
                        "required": [
                            "resource",
                            "parameters"
                        ],
                        "properties": {
                            "resource": {
                                "type": "string",
                                "const": "/v1/filings/{filing_id}/sections"
                            },
                            "parameters": {
                                "type": "object",
                                "additionalProperties": false,
                                "properties": {
                                    "filing_id": {
                                        "type": "string",
                                        "pattern": "^[0-9]{10}-[0-9]{2}-[0-9]{6}$",
                                        "example": "0000320193-24-000123",
                                        "description": "SEC accession number, as accession_number in /v1/filings."
                                    },
                                    "as_of": {
                                        "description": "Knowledge cutoff as a UTC date (YYYY-MM-DD): the response reflects what was known by the end of that day. Defaults to now; cannot be in the future. A date from before the dataset's knowledge history returns 422 point-in-time-unavailable naming the earliest one, which GET /v1/datasets lists as earliest_as_of.",
                                        "type": "string",
                                        "format": "date"
                                    },
                                    "known_from": {
                                        "description": "First UTC date (YYYY-MM-DD, inclusive) on which a revision became known.",
                                        "type": "string",
                                        "format": "date"
                                    },
                                    "known_to": {
                                        "description": "Last UTC date (YYYY-MM-DD, inclusive) on which a revision became known; on or after known_from.",
                                        "type": "string",
                                        "format": "date"
                                    },
                                    "order": {
                                        "type": "string",
                                        "enum": [
                                            "asc",
                                            "desc"
                                        ],
                                        "description": "Direction on id; ties use ID ascending.",
                                        "example": "asc",
                                        "default": "asc"
                                    }
                                },
                                "required": [
                                    "filing_id"
                                ],
                                "x-query-constraints": [
                                    {
                                        "rule": "less_than",
                                        "lower": "known_from",
                                        "upper": "known_to"
                                    }
                                ]
                            }
                        }
                    },
                    {
                        "type": "object",
                        "additionalProperties": false,
                        "required": [
                            "resource",
                            "parameters"
                        ],
                        "properties": {
                            "resource": {
                                "type": "string",
                                "const": "/v1/filings/{filing_id}/exhibits"
                            },
                            "parameters": {
                                "type": "object",
                                "additionalProperties": false,
                                "properties": {
                                    "filing_id": {
                                        "type": "string",
                                        "pattern": "^[0-9]{10}-[0-9]{2}-[0-9]{6}$",
                                        "example": "0000320193-24-000123",
                                        "description": "SEC accession number, as accession_number in /v1/filings."
                                    },
                                    "as_of": {
                                        "description": "Knowledge cutoff as a UTC date (YYYY-MM-DD): the response reflects what was known by the end of that day. Defaults to now; cannot be in the future. A date from before the dataset's knowledge history returns 422 point-in-time-unavailable naming the earliest one, which GET /v1/datasets lists as earliest_as_of.",
                                        "type": "string",
                                        "format": "date"
                                    },
                                    "known_from": {
                                        "description": "First UTC date (YYYY-MM-DD, inclusive) on which a revision became known.",
                                        "type": "string",
                                        "format": "date"
                                    },
                                    "known_to": {
                                        "description": "Last UTC date (YYYY-MM-DD, inclusive) on which a revision became known; on or after known_from.",
                                        "type": "string",
                                        "format": "date"
                                    },
                                    "order": {
                                        "type": "string",
                                        "enum": [
                                            "asc",
                                            "desc"
                                        ],
                                        "description": "Direction on id; ties use ID ascending.",
                                        "example": "asc",
                                        "default": "asc"
                                    }
                                },
                                "required": [
                                    "filing_id"
                                ],
                                "x-query-constraints": [
                                    {
                                        "rule": "less_than",
                                        "lower": "known_from",
                                        "upper": "known_to"
                                    }
                                ]
                            }
                        }
                    },
                    {
                        "type": "object",
                        "additionalProperties": false,
                        "required": [
                            "resource",
                            "parameters"
                        ],
                        "properties": {
                            "resource": {
                                "type": "string",
                                "const": "/v1/ratings/esg"
                            },
                            "parameters": {
                                "type": "object",
                                "additionalProperties": false,
                                "properties": {
                                    "instrument_ids": {
                                        "type": "array",
                                        "minItems": 1,
                                        "maxItems": 100,
                                        "uniqueItems": true,
                                        "items": {
                                            "type": "string",
                                            "description": "Opaque stable public identifier; never an internal database key.",
                                            "example": "inst_example_aapl",
                                            "minLength": 1,
                                            "maxLength": 128,
                                            "pattern": "^[A-Za-z0-9][A-Za-z0-9_.:-]{0,127}$"
                                        },
                                        "description": "Filter by stable instrument IDs. IDs and symbols may not be combined."
                                    },
                                    "symbols": {
                                        "type": "array",
                                        "minItems": 1,
                                        "maxItems": 100,
                                        "uniqueItems": true,
                                        "items": {
                                            "type": "string",
                                            "pattern": "^(?:(?:[A-Za-z0-9]{4}|[Cc][Rr][Yy][Pp][Tt][Oo]|[Ff][Oo][Rr][Ee][Xx]|[Ii][Nn][Dd][Ee][Xx]):|\\^)?[A-Za-z0-9](?:[A-Za-z0-9./_^= -]{0,62}[A-Za-z0-9./_^=-])?$",
                                            "example": "XNAS:AAPL"
                                        },
                                        "description": "Convenience lookup for exchange-listed instruments as MIC:TICKER or a bare ticker, which resolves to the exchange listing that ticker; resolves at symbol_at. The MIC and the ticker are case-insensitive, and two spellings of one listing (AAPL and XNAS:AAPL) count as a repeated value. A bare ticker that names no listing as written is also read in the common vendor spellings: with an exchange suffix (RY.TO, SHEL.L, VOD.LSE, BHP.AX), ^GSPC for INDEX:GSPC, and EURUSD=X or EURUSD for FOREX:EUR-USD. A ticker may contain a space (BAC PRL) but not start or end with one. A request in which no symbol resolves returns 404 symbol-not-resolved; otherwise each symbol that does not resolve, or resolves to a listing with no rows for the request (no-data), is an entry of meta.errors. IDs and symbols may not be combined."
                                    },
                                    "symbol_at": {
                                        "description": "Resolve symbols as they were assigned at the end of this UTC date (YYYY-MM-DD); defaults to as_of. Only listings the security master holds resolve: it was built in September 2026 and records delistings from then on, so most issuers delisted earlier, such as TWTR or SIVB, resolve at no date. Only valid with symbols.",
                                        "type": "string",
                                        "format": "date"
                                    },
                                    "from": {
                                        "type": "string",
                                        "format": "date",
                                        "example": "2026-09-18",
                                        "description": "Inclusive lower bound on observed_on."
                                    },
                                    "to": {
                                        "type": "string",
                                        "format": "date",
                                        "example": "2026-09-18",
                                        "description": "Inclusive upper bound on observed_on; must be on or after from, so from equal to to selects one day."
                                    },
                                    "as_of": {
                                        "description": "Knowledge cutoff as a UTC date (YYYY-MM-DD): the response reflects what was known by the end of that day. Defaults to now; cannot be in the future. A date from before the dataset's knowledge history returns 422 point-in-time-unavailable naming the earliest one, which GET /v1/datasets lists as earliest_as_of.",
                                        "type": "string",
                                        "format": "date"
                                    },
                                    "known_from": {
                                        "description": "First UTC date (YYYY-MM-DD, inclusive) on which a revision became known.",
                                        "type": "string",
                                        "format": "date"
                                    },
                                    "known_to": {
                                        "description": "Last UTC date (YYYY-MM-DD, inclusive) on which a revision became known; on or after known_from.",
                                        "type": "string",
                                        "format": "date"
                                    },
                                    "order": {
                                        "type": "string",
                                        "enum": [
                                            "asc",
                                            "desc"
                                        ],
                                        "description": "Direction on observed_on; ties use ID ascending.",
                                        "example": "asc",
                                        "default": "asc"
                                    }
                                },
                                "x-query-constraints": [
                                    {
                                        "rule": "mutually_exclusive",
                                        "parameters": [
                                            "instrument_ids",
                                            "symbols"
                                        ]
                                    },
                                    {
                                        "rule": "requires",
                                        "parameter": "symbol_at",
                                        "required": [
                                            "symbols"
                                        ]
                                    },
                                    {
                                        "rule": "less_than",
                                        "lower": "from",
                                        "upper": "to"
                                    },
                                    {
                                        "rule": "less_than",
                                        "lower": "known_from",
                                        "upper": "known_to"
                                    }
                                ],
                                "required": []
                            }
                        }
                    },
                    {
                        "type": "object",
                        "additionalProperties": false,
                        "required": [
                            "resource",
                            "parameters"
                        ],
                        "properties": {
                            "resource": {
                                "type": "string",
                                "const": "/v1/analytics/risk"
                            },
                            "parameters": {
                                "type": "object",
                                "additionalProperties": false,
                                "properties": {
                                    "instrument_ids": {
                                        "type": "array",
                                        "minItems": 1,
                                        "maxItems": 100,
                                        "uniqueItems": true,
                                        "items": {
                                            "type": "string",
                                            "description": "Opaque stable public identifier; never an internal database key.",
                                            "example": "inst_example_aapl",
                                            "minLength": 1,
                                            "maxLength": 128,
                                            "pattern": "^[A-Za-z0-9][A-Za-z0-9_.:-]{0,127}$"
                                        },
                                        "description": "Filter by stable instrument IDs. IDs and symbols may not be combined."
                                    },
                                    "symbols": {
                                        "type": "array",
                                        "minItems": 1,
                                        "maxItems": 100,
                                        "uniqueItems": true,
                                        "items": {
                                            "type": "string",
                                            "pattern": "^(?:(?:[A-Za-z0-9]{4}|[Cc][Rr][Yy][Pp][Tt][Oo]|[Ff][Oo][Rr][Ee][Xx]|[Ii][Nn][Dd][Ee][Xx]):|\\^)?[A-Za-z0-9](?:[A-Za-z0-9./_^= -]{0,62}[A-Za-z0-9./_^=-])?$",
                                            "example": "XNAS:AAPL"
                                        },
                                        "description": "Convenience lookup for exchange-listed instruments as MIC:TICKER or a bare ticker, which resolves to the exchange listing that ticker; resolves at symbol_at. The MIC and the ticker are case-insensitive, and two spellings of one listing (AAPL and XNAS:AAPL) count as a repeated value. A bare ticker that names no listing as written is also read in the common vendor spellings: with an exchange suffix (RY.TO, SHEL.L, VOD.LSE, BHP.AX), ^GSPC for INDEX:GSPC, and EURUSD=X or EURUSD for FOREX:EUR-USD. A ticker may contain a space (BAC PRL) but not start or end with one. A request in which no symbol resolves returns 404 symbol-not-resolved; otherwise each symbol that does not resolve, or resolves to a listing with no rows for the request (no-data), is an entry of meta.errors. IDs and symbols may not be combined."
                                    },
                                    "symbol_at": {
                                        "description": "Resolve symbols as they were assigned at the end of this UTC date (YYYY-MM-DD); defaults to as_of. Only listings the security master holds resolve: it was built in September 2026 and records delistings from then on, so most issuers delisted earlier, such as TWTR or SIVB, resolve at no date. Only valid with symbols.",
                                        "type": "string",
                                        "format": "date"
                                    },
                                    "from": {
                                        "type": "string",
                                        "format": "date",
                                        "example": "2026-09-18",
                                        "description": "Inclusive lower bound on observed_on."
                                    },
                                    "to": {
                                        "type": "string",
                                        "format": "date",
                                        "example": "2026-09-18",
                                        "description": "Inclusive upper bound on observed_on; must be on or after from, so from equal to to selects one day."
                                    },
                                    "as_of": {
                                        "description": "Knowledge cutoff as a UTC date (YYYY-MM-DD): the response reflects what was known by the end of that day. Defaults to now; cannot be in the future. A date from before the dataset's knowledge history returns 422 point-in-time-unavailable naming the earliest one, which GET /v1/datasets lists as earliest_as_of.",
                                        "type": "string",
                                        "format": "date"
                                    },
                                    "known_from": {
                                        "description": "First UTC date (YYYY-MM-DD, inclusive) on which a revision became known.",
                                        "type": "string",
                                        "format": "date"
                                    },
                                    "known_to": {
                                        "description": "Last UTC date (YYYY-MM-DD, inclusive) on which a revision became known; on or after known_from.",
                                        "type": "string",
                                        "format": "date"
                                    },
                                    "order": {
                                        "type": "string",
                                        "enum": [
                                            "asc",
                                            "desc"
                                        ],
                                        "description": "Direction on observed_on; ties use ID ascending.",
                                        "example": "asc",
                                        "default": "asc"
                                    }
                                },
                                "x-query-constraints": [
                                    {
                                        "rule": "mutually_exclusive",
                                        "parameters": [
                                            "instrument_ids",
                                            "symbols"
                                        ]
                                    },
                                    {
                                        "rule": "requires",
                                        "parameter": "symbol_at",
                                        "required": [
                                            "symbols"
                                        ]
                                    },
                                    {
                                        "rule": "less_than",
                                        "lower": "from",
                                        "upper": "to"
                                    },
                                    {
                                        "rule": "less_than",
                                        "lower": "known_from",
                                        "upper": "known_to"
                                    }
                                ],
                                "required": []
                            }
                        }
                    },
                    {
                        "type": "object",
                        "additionalProperties": false,
                        "required": [
                            "resource",
                            "parameters"
                        ],
                        "properties": {
                            "resource": {
                                "type": "string",
                                "const": "/v1/congressional-trades"
                            },
                            "parameters": {
                                "type": "object",
                                "additionalProperties": false,
                                "properties": {
                                    "company_ids": {
                                        "type": "array",
                                        "minItems": 1,
                                        "maxItems": 100,
                                        "uniqueItems": true,
                                        "items": {
                                            "type": "string",
                                            "description": "Opaque stable public identifier; never an internal database key.",
                                            "example": "company_example_apple",
                                            "minLength": 1,
                                            "maxLength": 128,
                                            "pattern": "^[A-Za-z0-9][A-Za-z0-9_.:-]{0,127}$"
                                        },
                                        "description": "Filter by issuer IDs. May be combined with instrument selectors; filters intersect, except on issuer-level datasets (statements, segments, estimates, earnings, insider transactions), where an instrument selector is read as its company and takes the place of company_ids, so results cover every share class."
                                    },
                                    "instrument_ids": {
                                        "type": "array",
                                        "minItems": 1,
                                        "maxItems": 100,
                                        "uniqueItems": true,
                                        "items": {
                                            "type": "string",
                                            "description": "Opaque stable public identifier; never an internal database key.",
                                            "example": "inst_example_aapl",
                                            "minLength": 1,
                                            "maxLength": 128,
                                            "pattern": "^[A-Za-z0-9][A-Za-z0-9_.:-]{0,127}$"
                                        },
                                        "description": "Filter by stable instrument IDs. IDs and symbols may not be combined."
                                    },
                                    "symbols": {
                                        "type": "array",
                                        "minItems": 1,
                                        "maxItems": 100,
                                        "uniqueItems": true,
                                        "items": {
                                            "type": "string",
                                            "pattern": "^(?:(?:[A-Za-z0-9]{4}|[Cc][Rr][Yy][Pp][Tt][Oo]|[Ff][Oo][Rr][Ee][Xx]|[Ii][Nn][Dd][Ee][Xx]):|\\^)?[A-Za-z0-9](?:[A-Za-z0-9./_^= -]{0,62}[A-Za-z0-9./_^=-])?$",
                                            "example": "XNAS:AAPL"
                                        },
                                        "description": "Convenience lookup for exchange-listed instruments as MIC:TICKER or a bare ticker, which resolves to the exchange listing that ticker; resolves at symbol_at. The MIC and the ticker are case-insensitive, and two spellings of one listing (AAPL and XNAS:AAPL) count as a repeated value. A bare ticker that names no listing as written is also read in the common vendor spellings: with an exchange suffix (RY.TO, SHEL.L, VOD.LSE, BHP.AX), ^GSPC for INDEX:GSPC, and EURUSD=X or EURUSD for FOREX:EUR-USD. A ticker may contain a space (BAC PRL) but not start or end with one. A request in which no symbol resolves returns 404 symbol-not-resolved; otherwise each symbol that does not resolve, or resolves to a listing with no rows for the request (no-data), is an entry of meta.errors. IDs and symbols may not be combined."
                                    },
                                    "symbol_at": {
                                        "description": "Resolve symbols as they were assigned at the end of this UTC date (YYYY-MM-DD); defaults to as_of. Only listings the security master holds resolve: it was built in September 2026 and records delistings from then on, so most issuers delisted earlier, such as TWTR or SIVB, resolve at no date. Only valid with symbols.",
                                        "type": "string",
                                        "format": "date"
                                    },
                                    "from": {
                                        "type": "string",
                                        "format": "date",
                                        "example": "2026-09-18",
                                        "description": "Inclusive lower bound on transaction_date."
                                    },
                                    "to": {
                                        "type": "string",
                                        "format": "date",
                                        "example": "2026-09-18",
                                        "description": "Inclusive upper bound on transaction_date; must be on or after from, so from equal to to selects one day."
                                    },
                                    "chamber": {
                                        "type": "string",
                                        "enum": [
                                            "house",
                                            "senate"
                                        ],
                                        "description": "Congressional chamber.",
                                        "example": "house"
                                    },
                                    "official_ids": {
                                        "type": "array",
                                        "minItems": 1,
                                        "maxItems": 100,
                                        "uniqueItems": true,
                                        "items": {
                                            "type": "string",
                                            "description": "Opaque stable public identifier; never an internal database key.",
                                            "example": "S000250",
                                            "minLength": 1,
                                            "maxLength": 128,
                                            "pattern": "^[A-Za-z0-9][A-Za-z0-9_.:-]{0,127}$"
                                        },
                                        "description": "Filter by member: Bioguide IDs or the official_id of the rows."
                                    },
                                    "type": {
                                        "type": "string",
                                        "enum": [
                                            "purchase",
                                            "sale",
                                            "exchange",
                                            "other"
                                        ],
                                        "description": "Reported transaction type.",
                                        "example": "purchase"
                                    },
                                    "as_of": {
                                        "description": "Knowledge cutoff as a UTC date (YYYY-MM-DD): the response reflects what was known by the end of that day. Defaults to now; cannot be in the future. A date from before the dataset's knowledge history returns 422 point-in-time-unavailable naming the earliest one, which GET /v1/datasets lists as earliest_as_of.",
                                        "type": "string",
                                        "format": "date"
                                    },
                                    "known_from": {
                                        "description": "First UTC date (YYYY-MM-DD, inclusive) on which a revision became known.",
                                        "type": "string",
                                        "format": "date"
                                    },
                                    "known_to": {
                                        "description": "Last UTC date (YYYY-MM-DD, inclusive) on which a revision became known; on or after known_from.",
                                        "type": "string",
                                        "format": "date"
                                    },
                                    "order": {
                                        "type": "string",
                                        "enum": [
                                            "asc",
                                            "desc"
                                        ],
                                        "description": "Direction on transaction_date; ties use ID ascending.",
                                        "example": "asc",
                                        "default": "asc"
                                    }
                                },
                                "x-query-constraints": [
                                    {
                                        "rule": "mutually_exclusive",
                                        "parameters": [
                                            "instrument_ids",
                                            "symbols"
                                        ]
                                    },
                                    {
                                        "rule": "requires",
                                        "parameter": "symbol_at",
                                        "required": [
                                            "symbols"
                                        ]
                                    },
                                    {
                                        "rule": "less_than",
                                        "lower": "from",
                                        "upper": "to"
                                    },
                                    {
                                        "rule": "less_than",
                                        "lower": "known_from",
                                        "upper": "known_to"
                                    }
                                ],
                                "required": []
                            }
                        }
                    },
                    {
                        "type": "object",
                        "additionalProperties": false,
                        "required": [
                            "resource",
                            "parameters"
                        ],
                        "properties": {
                            "resource": {
                                "type": "string",
                                "const": "/v1/sanctions"
                            },
                            "parameters": {
                                "type": "object",
                                "additionalProperties": false,
                                "properties": {
                                    "q": {
                                        "type": "string",
                                        "minLength": 1,
                                        "maxLength": 200,
                                        "pattern": "\\S",
                                        "description": "Case-insensitive word match over names and aliases, in id order; no identity-match score is implied. A value that is empty or only whitespace returns 422."
                                    },
                                    "countries": {
                                        "type": "array",
                                        "minItems": 1,
                                        "maxItems": 100,
                                        "uniqueItems": true,
                                        "items": {
                                            "type": "string",
                                            "pattern": "^[A-Z]{2}$",
                                            "example": "US"
                                        },
                                        "description": "ISO 3166-1 alpha-2 country codes."
                                    },
                                    "entity_type": {
                                        "type": "string",
                                        "enum": [
                                            "person",
                                            "organization",
                                            "vessel",
                                            "aircraft"
                                        ],
                                        "description": "Entity type.",
                                        "example": "person"
                                    },
                                    "status": {
                                        "type": "string",
                                        "enum": [
                                            "active",
                                            "removed",
                                            "all"
                                        ],
                                        "description": "Defaults to active.",
                                        "example": "active"
                                    },
                                    "effective_date": {
                                        "type": "string",
                                        "format": "date",
                                        "example": "2026-09-18",
                                        "description": "Effective date, defaults to the UTC date of as_of. Returns the latest eligible snapshot on or before this date; response retains its actual snapshot date."
                                    },
                                    "as_of": {
                                        "description": "Knowledge cutoff as a UTC date (YYYY-MM-DD): the response reflects what was known by the end of that day. Defaults to now; cannot be in the future. A date from before the dataset's knowledge history returns 422 point-in-time-unavailable naming the earliest one, which GET /v1/datasets lists as earliest_as_of.",
                                        "type": "string",
                                        "format": "date"
                                    },
                                    "known_from": {
                                        "description": "First UTC date (YYYY-MM-DD, inclusive) on which a revision became known.",
                                        "type": "string",
                                        "format": "date"
                                    },
                                    "known_to": {
                                        "description": "Last UTC date (YYYY-MM-DD, inclusive) on which a revision became known; on or after known_from.",
                                        "type": "string",
                                        "format": "date"
                                    },
                                    "order": {
                                        "type": "string",
                                        "enum": [
                                            "asc",
                                            "desc"
                                        ],
                                        "description": "Direction on id; ties use ID ascending.",
                                        "example": "asc",
                                        "default": "asc"
                                    }
                                },
                                "x-query-constraints": [
                                    {
                                        "rule": "less_than",
                                        "lower": "known_from",
                                        "upper": "known_to"
                                    }
                                ],
                                "required": []
                            }
                        }
                    },
                    {
                        "type": "object",
                        "additionalProperties": false,
                        "required": [
                            "resource",
                            "parameters"
                        ],
                        "properties": {
                            "resource": {
                                "type": "string",
                                "const": "/v1/crypto/assets"
                            },
                            "parameters": {
                                "type": "object",
                                "additionalProperties": false,
                                "properties": {
                                    "instrument_ids": {
                                        "type": "array",
                                        "minItems": 1,
                                        "maxItems": 100,
                                        "uniqueItems": true,
                                        "items": {
                                            "type": "string",
                                            "description": "Opaque stable public identifier; never an internal database key.",
                                            "example": "inst_example_aapl",
                                            "minLength": 1,
                                            "maxLength": 128,
                                            "pattern": "^[A-Za-z0-9][A-Za-z0-9_.:-]{0,127}$"
                                        },
                                        "description": "Crypto asset IDs: a coin's ID, which is a pair's base_instrument_id; a pair's own instrument_id matches no row."
                                    },
                                    "effective_date": {
                                        "type": "string",
                                        "format": "date",
                                        "example": "2026-09-18",
                                        "description": "Effective date, defaults to the UTC date of as_of. Returns the latest eligible snapshot on or before this date; response retains its actual snapshot date."
                                    },
                                    "as_of": {
                                        "description": "Knowledge cutoff as a UTC date (YYYY-MM-DD): the response reflects what was known by the end of that day. Defaults to now; cannot be in the future. A date from before the dataset's knowledge history returns 422 point-in-time-unavailable naming the earliest one, which GET /v1/datasets lists as earliest_as_of.",
                                        "type": "string",
                                        "format": "date"
                                    },
                                    "known_from": {
                                        "description": "First UTC date (YYYY-MM-DD, inclusive) on which a revision became known.",
                                        "type": "string",
                                        "format": "date"
                                    },
                                    "known_to": {
                                        "description": "Last UTC date (YYYY-MM-DD, inclusive) on which a revision became known; on or after known_from.",
                                        "type": "string",
                                        "format": "date"
                                    },
                                    "order": {
                                        "type": "string",
                                        "enum": [
                                            "asc",
                                            "desc"
                                        ],
                                        "description": "Direction on id; ties use ID ascending.",
                                        "example": "asc",
                                        "default": "asc"
                                    }
                                },
                                "x-query-constraints": [
                                    {
                                        "rule": "less_than",
                                        "lower": "known_from",
                                        "upper": "known_to"
                                    }
                                ],
                                "required": []
                            }
                        }
                    }
                ],
                "description": "Resource is the collection path template; path IDs are supplied in parameters. Query selector and date rules still apply. All pages of the pinned snapshot are exported. No page limit or cursor. Output is NDJSON dataset rows. Exports require bulk.download and the resource capability, and recheck access during generation/download. Availability follows the implementation status of the selected resource."
            }
        },
        "responses": {
            "NotModified": {
                "description": "Revalidated after current authorization checks. Costs no credits: X-Credits-Cost is 0.",
                "headers": {
                    "X-RateLimit-Limit": {
                        "$ref": "#/components/headers/X-RateLimit-Limit"
                    },
                    "X-RateLimit-Remaining": {
                        "$ref": "#/components/headers/X-RateLimit-Remaining"
                    },
                    "X-RateLimit-Reset": {
                        "$ref": "#/components/headers/X-RateLimit-Reset"
                    },
                    "X-Request-ID": {
                        "$ref": "#/components/headers/X-Request-ID"
                    },
                    "Cache-Control": {
                        "schema": {
                            "type": "string",
                            "const": "must-revalidate, no-cache, private"
                        },
                        "description": "Responses of this endpoint carry an ETag: a client may keep one, and revalidates it with If-None-Match before reuse."
                    },
                    "X-Credits-Limit": {
                        "$ref": "#/components/headers/X-Credits-Limit"
                    },
                    "X-Credits-Remaining": {
                        "$ref": "#/components/headers/X-Credits-Remaining"
                    },
                    "X-Credits-Cost": {
                        "$ref": "#/components/headers/X-Credits-Cost"
                    },
                    "X-Concurrency-Limit": {
                        "$ref": "#/components/headers/X-Concurrency-Limit"
                    },
                    "X-Concurrency-Remaining": {
                        "$ref": "#/components/headers/X-Concurrency-Remaining"
                    }
                }
            },
            "BadRequest": {
                "description": "RFC 9457 problem.",
                "headers": {
                    "X-RateLimit-Limit": {
                        "$ref": "#/components/headers/X-RateLimit-Limit"
                    },
                    "X-RateLimit-Remaining": {
                        "$ref": "#/components/headers/X-RateLimit-Remaining"
                    },
                    "X-RateLimit-Reset": {
                        "$ref": "#/components/headers/X-RateLimit-Reset"
                    },
                    "X-Request-ID": {
                        "$ref": "#/components/headers/X-Request-ID"
                    },
                    "Cache-Control": {
                        "$ref": "#/components/headers/Cache-Control"
                    },
                    "X-Credits-Limit": {
                        "$ref": "#/components/headers/X-Credits-Limit"
                    },
                    "X-Credits-Remaining": {
                        "$ref": "#/components/headers/X-Credits-Remaining"
                    },
                    "X-Credits-Cost": {
                        "$ref": "#/components/headers/X-Credits-Cost"
                    },
                    "X-Concurrency-Limit": {
                        "$ref": "#/components/headers/X-Concurrency-Limit"
                    },
                    "X-Concurrency-Remaining": {
                        "$ref": "#/components/headers/X-Concurrency-Remaining"
                    }
                },
                "content": {
                    "application/problem+json": {
                        "schema": {
                            "$ref": "#/components/schemas/Problem"
                        }
                    }
                }
            },
            "Unauthorized": {
                "description": "RFC 9457 problem. WWW-Authenticate carries the Bearer challenge.",
                "headers": {
                    "X-RateLimit-Limit": {
                        "$ref": "#/components/headers/X-RateLimit-Limit"
                    },
                    "X-RateLimit-Remaining": {
                        "$ref": "#/components/headers/X-RateLimit-Remaining"
                    },
                    "X-RateLimit-Reset": {
                        "$ref": "#/components/headers/X-RateLimit-Reset"
                    },
                    "WWW-Authenticate": {
                        "$ref": "#/components/headers/WWW-Authenticate"
                    },
                    "X-Request-ID": {
                        "$ref": "#/components/headers/X-Request-ID"
                    },
                    "Cache-Control": {
                        "$ref": "#/components/headers/Cache-Control"
                    },
                    "X-Credits-Limit": {
                        "$ref": "#/components/headers/X-Credits-Limit"
                    },
                    "X-Credits-Remaining": {
                        "$ref": "#/components/headers/X-Credits-Remaining"
                    },
                    "X-Credits-Cost": {
                        "$ref": "#/components/headers/X-Credits-Cost"
                    },
                    "X-Concurrency-Limit": {
                        "$ref": "#/components/headers/X-Concurrency-Limit"
                    },
                    "X-Concurrency-Remaining": {
                        "$ref": "#/components/headers/X-Concurrency-Remaining"
                    }
                },
                "content": {
                    "application/problem+json": {
                        "schema": {
                            "$ref": "#/components/schemas/Problem"
                        }
                    }
                }
            },
            "Forbidden": {
                "description": "RFC 9457 problem.",
                "headers": {
                    "X-RateLimit-Limit": {
                        "$ref": "#/components/headers/X-RateLimit-Limit"
                    },
                    "X-RateLimit-Remaining": {
                        "$ref": "#/components/headers/X-RateLimit-Remaining"
                    },
                    "X-RateLimit-Reset": {
                        "$ref": "#/components/headers/X-RateLimit-Reset"
                    },
                    "X-Request-ID": {
                        "$ref": "#/components/headers/X-Request-ID"
                    },
                    "Cache-Control": {
                        "$ref": "#/components/headers/Cache-Control"
                    },
                    "X-Credits-Limit": {
                        "$ref": "#/components/headers/X-Credits-Limit"
                    },
                    "X-Credits-Remaining": {
                        "$ref": "#/components/headers/X-Credits-Remaining"
                    },
                    "X-Credits-Cost": {
                        "$ref": "#/components/headers/X-Credits-Cost"
                    },
                    "X-Concurrency-Limit": {
                        "$ref": "#/components/headers/X-Concurrency-Limit"
                    },
                    "X-Concurrency-Remaining": {
                        "$ref": "#/components/headers/X-Concurrency-Remaining"
                    }
                },
                "content": {
                    "application/problem+json": {
                        "schema": {
                            "$ref": "#/components/schemas/Problem"
                        }
                    }
                }
            },
            "NotFound": {
                "description": "RFC 9457 problem.",
                "headers": {
                    "X-RateLimit-Limit": {
                        "$ref": "#/components/headers/X-RateLimit-Limit"
                    },
                    "X-RateLimit-Remaining": {
                        "$ref": "#/components/headers/X-RateLimit-Remaining"
                    },
                    "X-RateLimit-Reset": {
                        "$ref": "#/components/headers/X-RateLimit-Reset"
                    },
                    "X-Request-ID": {
                        "$ref": "#/components/headers/X-Request-ID"
                    },
                    "Cache-Control": {
                        "$ref": "#/components/headers/Cache-Control"
                    },
                    "X-Credits-Limit": {
                        "$ref": "#/components/headers/X-Credits-Limit"
                    },
                    "X-Credits-Remaining": {
                        "$ref": "#/components/headers/X-Credits-Remaining"
                    },
                    "X-Credits-Cost": {
                        "$ref": "#/components/headers/X-Credits-Cost"
                    },
                    "X-Concurrency-Limit": {
                        "$ref": "#/components/headers/X-Concurrency-Limit"
                    },
                    "X-Concurrency-Remaining": {
                        "$ref": "#/components/headers/X-Concurrency-Remaining"
                    }
                },
                "content": {
                    "application/problem+json": {
                        "schema": {
                            "$ref": "#/components/schemas/Problem"
                        }
                    }
                }
            },
            "MethodNotAllowed": {
                "description": "RFC 9457 problem.",
                "headers": {
                    "X-RateLimit-Limit": {
                        "$ref": "#/components/headers/X-RateLimit-Limit"
                    },
                    "X-RateLimit-Remaining": {
                        "$ref": "#/components/headers/X-RateLimit-Remaining"
                    },
                    "X-RateLimit-Reset": {
                        "$ref": "#/components/headers/X-RateLimit-Reset"
                    },
                    "X-Request-ID": {
                        "$ref": "#/components/headers/X-Request-ID"
                    },
                    "Cache-Control": {
                        "$ref": "#/components/headers/Cache-Control"
                    },
                    "X-Credits-Limit": {
                        "$ref": "#/components/headers/X-Credits-Limit"
                    },
                    "X-Credits-Remaining": {
                        "$ref": "#/components/headers/X-Credits-Remaining"
                    },
                    "X-Credits-Cost": {
                        "$ref": "#/components/headers/X-Credits-Cost"
                    },
                    "X-Concurrency-Limit": {
                        "$ref": "#/components/headers/X-Concurrency-Limit"
                    },
                    "X-Concurrency-Remaining": {
                        "$ref": "#/components/headers/X-Concurrency-Remaining"
                    }
                },
                "content": {
                    "application/problem+json": {
                        "schema": {
                            "$ref": "#/components/schemas/Problem"
                        }
                    }
                }
            },
            "NotAcceptable": {
                "description": "RFC 9457 problem: the Accept header admits no media type this endpoint produces, or not the one format names.",
                "headers": {
                    "X-RateLimit-Limit": {
                        "$ref": "#/components/headers/X-RateLimit-Limit"
                    },
                    "X-RateLimit-Remaining": {
                        "$ref": "#/components/headers/X-RateLimit-Remaining"
                    },
                    "X-RateLimit-Reset": {
                        "$ref": "#/components/headers/X-RateLimit-Reset"
                    },
                    "X-Request-ID": {
                        "$ref": "#/components/headers/X-Request-ID"
                    },
                    "Cache-Control": {
                        "$ref": "#/components/headers/Cache-Control"
                    },
                    "X-Credits-Limit": {
                        "$ref": "#/components/headers/X-Credits-Limit"
                    },
                    "X-Credits-Remaining": {
                        "$ref": "#/components/headers/X-Credits-Remaining"
                    },
                    "X-Credits-Cost": {
                        "$ref": "#/components/headers/X-Credits-Cost"
                    },
                    "X-Concurrency-Limit": {
                        "$ref": "#/components/headers/X-Concurrency-Limit"
                    },
                    "X-Concurrency-Remaining": {
                        "$ref": "#/components/headers/X-Concurrency-Remaining"
                    }
                },
                "content": {
                    "application/problem+json": {
                        "schema": {
                            "$ref": "#/components/schemas/Problem"
                        }
                    }
                }
            },
            "Conflict": {
                "description": "RFC 9457 problem.",
                "headers": {
                    "X-RateLimit-Limit": {
                        "$ref": "#/components/headers/X-RateLimit-Limit"
                    },
                    "X-RateLimit-Remaining": {
                        "$ref": "#/components/headers/X-RateLimit-Remaining"
                    },
                    "X-RateLimit-Reset": {
                        "$ref": "#/components/headers/X-RateLimit-Reset"
                    },
                    "X-Request-ID": {
                        "$ref": "#/components/headers/X-Request-ID"
                    },
                    "Cache-Control": {
                        "$ref": "#/components/headers/Cache-Control"
                    },
                    "X-Credits-Limit": {
                        "$ref": "#/components/headers/X-Credits-Limit"
                    },
                    "X-Credits-Remaining": {
                        "$ref": "#/components/headers/X-Credits-Remaining"
                    },
                    "X-Credits-Cost": {
                        "$ref": "#/components/headers/X-Credits-Cost"
                    },
                    "X-Concurrency-Limit": {
                        "$ref": "#/components/headers/X-Concurrency-Limit"
                    },
                    "X-Concurrency-Remaining": {
                        "$ref": "#/components/headers/X-Concurrency-Remaining"
                    }
                },
                "content": {
                    "application/problem+json": {
                        "schema": {
                            "$ref": "#/components/schemas/Problem"
                        }
                    }
                }
            },
            "ContentTooLarge": {
                "description": "RFC 9457 problem.",
                "headers": {
                    "X-RateLimit-Limit": {
                        "$ref": "#/components/headers/X-RateLimit-Limit"
                    },
                    "X-RateLimit-Remaining": {
                        "$ref": "#/components/headers/X-RateLimit-Remaining"
                    },
                    "X-RateLimit-Reset": {
                        "$ref": "#/components/headers/X-RateLimit-Reset"
                    },
                    "X-Request-ID": {
                        "$ref": "#/components/headers/X-Request-ID"
                    },
                    "Cache-Control": {
                        "$ref": "#/components/headers/Cache-Control"
                    },
                    "X-Credits-Limit": {
                        "$ref": "#/components/headers/X-Credits-Limit"
                    },
                    "X-Credits-Remaining": {
                        "$ref": "#/components/headers/X-Credits-Remaining"
                    },
                    "X-Credits-Cost": {
                        "$ref": "#/components/headers/X-Credits-Cost"
                    },
                    "X-Concurrency-Limit": {
                        "$ref": "#/components/headers/X-Concurrency-Limit"
                    },
                    "X-Concurrency-Remaining": {
                        "$ref": "#/components/headers/X-Concurrency-Remaining"
                    }
                },
                "content": {
                    "application/problem+json": {
                        "schema": {
                            "$ref": "#/components/schemas/Problem"
                        }
                    }
                }
            },
            "URITooLong": {
                "description": "RFC 9457 problem.",
                "headers": {
                    "X-RateLimit-Limit": {
                        "$ref": "#/components/headers/X-RateLimit-Limit"
                    },
                    "X-RateLimit-Remaining": {
                        "$ref": "#/components/headers/X-RateLimit-Remaining"
                    },
                    "X-RateLimit-Reset": {
                        "$ref": "#/components/headers/X-RateLimit-Reset"
                    },
                    "X-Request-ID": {
                        "$ref": "#/components/headers/X-Request-ID"
                    },
                    "Cache-Control": {
                        "$ref": "#/components/headers/Cache-Control"
                    },
                    "X-Credits-Limit": {
                        "$ref": "#/components/headers/X-Credits-Limit"
                    },
                    "X-Credits-Remaining": {
                        "$ref": "#/components/headers/X-Credits-Remaining"
                    },
                    "X-Credits-Cost": {
                        "$ref": "#/components/headers/X-Credits-Cost"
                    },
                    "X-Concurrency-Limit": {
                        "$ref": "#/components/headers/X-Concurrency-Limit"
                    },
                    "X-Concurrency-Remaining": {
                        "$ref": "#/components/headers/X-Concurrency-Remaining"
                    }
                },
                "content": {
                    "application/problem+json": {
                        "schema": {
                            "$ref": "#/components/schemas/Problem"
                        }
                    }
                }
            },
            "UnsupportedMediaType": {
                "description": "RFC 9457 problem.",
                "headers": {
                    "X-RateLimit-Limit": {
                        "$ref": "#/components/headers/X-RateLimit-Limit"
                    },
                    "X-RateLimit-Remaining": {
                        "$ref": "#/components/headers/X-RateLimit-Remaining"
                    },
                    "X-RateLimit-Reset": {
                        "$ref": "#/components/headers/X-RateLimit-Reset"
                    },
                    "X-Request-ID": {
                        "$ref": "#/components/headers/X-Request-ID"
                    },
                    "Cache-Control": {
                        "$ref": "#/components/headers/Cache-Control"
                    },
                    "X-Credits-Limit": {
                        "$ref": "#/components/headers/X-Credits-Limit"
                    },
                    "X-Credits-Remaining": {
                        "$ref": "#/components/headers/X-Credits-Remaining"
                    },
                    "X-Credits-Cost": {
                        "$ref": "#/components/headers/X-Credits-Cost"
                    },
                    "X-Concurrency-Limit": {
                        "$ref": "#/components/headers/X-Concurrency-Limit"
                    },
                    "X-Concurrency-Remaining": {
                        "$ref": "#/components/headers/X-Concurrency-Remaining"
                    }
                },
                "content": {
                    "application/problem+json": {
                        "schema": {
                            "$ref": "#/components/schemas/Problem"
                        }
                    }
                }
            },
            "UnprocessableContent": {
                "description": "RFC 9457 problem.",
                "headers": {
                    "X-RateLimit-Limit": {
                        "$ref": "#/components/headers/X-RateLimit-Limit"
                    },
                    "X-RateLimit-Remaining": {
                        "$ref": "#/components/headers/X-RateLimit-Remaining"
                    },
                    "X-RateLimit-Reset": {
                        "$ref": "#/components/headers/X-RateLimit-Reset"
                    },
                    "X-Request-ID": {
                        "$ref": "#/components/headers/X-Request-ID"
                    },
                    "Cache-Control": {
                        "$ref": "#/components/headers/Cache-Control"
                    },
                    "X-Credits-Limit": {
                        "$ref": "#/components/headers/X-Credits-Limit"
                    },
                    "X-Credits-Remaining": {
                        "$ref": "#/components/headers/X-Credits-Remaining"
                    },
                    "X-Credits-Cost": {
                        "$ref": "#/components/headers/X-Credits-Cost"
                    },
                    "X-Concurrency-Limit": {
                        "$ref": "#/components/headers/X-Concurrency-Limit"
                    },
                    "X-Concurrency-Remaining": {
                        "$ref": "#/components/headers/X-Concurrency-Remaining"
                    }
                },
                "content": {
                    "application/problem+json": {
                        "schema": {
                            "$ref": "#/components/schemas/Problem"
                        }
                    }
                }
            },
            "TooManyRequests": {
                "description": "RFC 9457 problem.",
                "headers": {
                    "X-RateLimit-Limit": {
                        "$ref": "#/components/headers/X-RateLimit-Limit"
                    },
                    "X-RateLimit-Remaining": {
                        "$ref": "#/components/headers/X-RateLimit-Remaining"
                    },
                    "X-RateLimit-Reset": {
                        "$ref": "#/components/headers/X-RateLimit-Reset"
                    },
                    "Retry-After": {
                        "$ref": "#/components/headers/Retry-After"
                    },
                    "X-Request-ID": {
                        "$ref": "#/components/headers/X-Request-ID"
                    },
                    "Cache-Control": {
                        "$ref": "#/components/headers/Cache-Control"
                    },
                    "X-Credits-Limit": {
                        "$ref": "#/components/headers/X-Credits-Limit"
                    },
                    "X-Credits-Remaining": {
                        "$ref": "#/components/headers/X-Credits-Remaining"
                    },
                    "X-Credits-Cost": {
                        "$ref": "#/components/headers/X-Credits-Cost"
                    },
                    "X-Concurrency-Limit": {
                        "$ref": "#/components/headers/X-Concurrency-Limit"
                    },
                    "X-Concurrency-Remaining": {
                        "$ref": "#/components/headers/X-Concurrency-Remaining"
                    }
                },
                "content": {
                    "application/problem+json": {
                        "schema": {
                            "$ref": "#/components/schemas/Problem"
                        }
                    }
                }
            },
            "RequestHeaderFieldsTooLarge": {
                "description": "RFC 9457 problem.",
                "headers": {
                    "X-RateLimit-Limit": {
                        "$ref": "#/components/headers/X-RateLimit-Limit"
                    },
                    "X-RateLimit-Remaining": {
                        "$ref": "#/components/headers/X-RateLimit-Remaining"
                    },
                    "X-RateLimit-Reset": {
                        "$ref": "#/components/headers/X-RateLimit-Reset"
                    },
                    "X-Request-ID": {
                        "$ref": "#/components/headers/X-Request-ID"
                    },
                    "Cache-Control": {
                        "$ref": "#/components/headers/Cache-Control"
                    },
                    "X-Credits-Limit": {
                        "$ref": "#/components/headers/X-Credits-Limit"
                    },
                    "X-Credits-Remaining": {
                        "$ref": "#/components/headers/X-Credits-Remaining"
                    },
                    "X-Credits-Cost": {
                        "$ref": "#/components/headers/X-Credits-Cost"
                    },
                    "X-Concurrency-Limit": {
                        "$ref": "#/components/headers/X-Concurrency-Limit"
                    },
                    "X-Concurrency-Remaining": {
                        "$ref": "#/components/headers/X-Concurrency-Remaining"
                    }
                },
                "content": {
                    "application/problem+json": {
                        "schema": {
                            "$ref": "#/components/schemas/Problem"
                        }
                    }
                }
            },
            "InternalServerError": {
                "description": "RFC 9457 problem.",
                "headers": {
                    "X-RateLimit-Limit": {
                        "$ref": "#/components/headers/X-RateLimit-Limit"
                    },
                    "X-RateLimit-Remaining": {
                        "$ref": "#/components/headers/X-RateLimit-Remaining"
                    },
                    "X-RateLimit-Reset": {
                        "$ref": "#/components/headers/X-RateLimit-Reset"
                    },
                    "X-Request-ID": {
                        "$ref": "#/components/headers/X-Request-ID"
                    },
                    "Cache-Control": {
                        "$ref": "#/components/headers/Cache-Control"
                    },
                    "X-Credits-Limit": {
                        "$ref": "#/components/headers/X-Credits-Limit"
                    },
                    "X-Credits-Remaining": {
                        "$ref": "#/components/headers/X-Credits-Remaining"
                    },
                    "X-Credits-Cost": {
                        "$ref": "#/components/headers/X-Credits-Cost"
                    },
                    "X-Concurrency-Limit": {
                        "$ref": "#/components/headers/X-Concurrency-Limit"
                    },
                    "X-Concurrency-Remaining": {
                        "$ref": "#/components/headers/X-Concurrency-Remaining"
                    }
                },
                "content": {
                    "application/problem+json": {
                        "schema": {
                            "$ref": "#/components/schemas/Problem"
                        }
                    }
                }
            },
            "ServiceUnavailable": {
                "description": "Dataset or required service unavailable. Never substitute an empty success for unavailable coverage.",
                "headers": {
                    "X-RateLimit-Limit": {
                        "$ref": "#/components/headers/X-RateLimit-Limit"
                    },
                    "X-RateLimit-Remaining": {
                        "$ref": "#/components/headers/X-RateLimit-Remaining"
                    },
                    "X-RateLimit-Reset": {
                        "$ref": "#/components/headers/X-RateLimit-Reset"
                    },
                    "Retry-After": {
                        "$ref": "#/components/headers/Retry-After"
                    },
                    "X-Request-ID": {
                        "$ref": "#/components/headers/X-Request-ID"
                    },
                    "Cache-Control": {
                        "$ref": "#/components/headers/Cache-Control"
                    },
                    "X-Credits-Limit": {
                        "$ref": "#/components/headers/X-Credits-Limit"
                    },
                    "X-Credits-Remaining": {
                        "$ref": "#/components/headers/X-Credits-Remaining"
                    },
                    "X-Credits-Cost": {
                        "$ref": "#/components/headers/X-Credits-Cost"
                    },
                    "X-Concurrency-Limit": {
                        "$ref": "#/components/headers/X-Concurrency-Limit"
                    },
                    "X-Concurrency-Remaining": {
                        "$ref": "#/components/headers/X-Concurrency-Remaining"
                    }
                },
                "content": {
                    "application/problem+json": {
                        "schema": {
                            "$ref": "#/components/schemas/Problem"
                        }
                    }
                }
            }
        },
        "headers": {
            "X-RateLimit-Limit": {
                "schema": {
                    "type": "integer"
                },
                "description": "Account-wide admission state; Reset is a Unix timestamp. Omitted for unlimited entitlements."
            },
            "X-RateLimit-Remaining": {
                "schema": {
                    "type": "integer"
                },
                "description": "Account-wide admission state; Reset is a Unix timestamp. Omitted for unlimited entitlements."
            },
            "X-RateLimit-Reset": {
                "schema": {
                    "type": "integer"
                },
                "description": "Account-wide admission state; Reset is a Unix timestamp. Omitted for unlimited entitlements."
            },
            "ETag": {
                "schema": {
                    "type": "string"
                }
            },
            "Cache-Control": {
                "schema": {
                    "type": "string",
                    "const": "no-store, private"
                },
                "description": "This response has no ETag and must not be stored or reused."
            },
            "X-Request-ID": {
                "schema": {
                    "type": "string"
                },
                "description": "Correlation UUID; not a response-body field."
            },
            "X-Next-Cursor": {
                "schema": {
                    "type": "string"
                },
                "description": "CSV only: meta.next_cursor, present while another page follows."
            },
            "X-Meta-Errors": {
                "schema": {
                    "type": "string"
                },
                "description": "CSV only: meta.errors as a JSON array of {symbol, instrument_id, code, status}, present when some requested member returned no rows."
            },
            "X-Credits-Limit": {
                "schema": {
                    "type": "integer"
                },
                "description": "Daily credit allowance of the account. Omitted for unlimited entitlements."
            },
            "X-Credits-Remaining": {
                "schema": {
                    "type": "integer"
                },
                "description": "Credits left until 00:00 UTC, after this request. Omitted for unlimited entitlements."
            },
            "X-Credits-Cost": {
                "schema": {
                    "type": "integer"
                },
                "description": "Credits this request spent; 0 for failed requests and 304 Not Modified, which are refunded."
            },
            "X-Concurrency-Limit": {
                "schema": {
                    "type": "integer"
                },
                "description": "Requests the service may be executing at once: account-wide for plans, per key for unlimited entitlements. A request holds a slot from admission until its response is built, not while it is queued or sent (x-http-behavior.concurrency)."
            },
            "X-Concurrency-Remaining": {
                "schema": {
                    "type": "integer"
                },
                "description": "Slots still free while this request holds one; 0 on a concurrency-limit refusal."
            },
            "WWW-Authenticate": {
                "schema": {
                    "type": "string",
                    "example": "Bearer realm=\"OHLC API\", error=\"invalid_token\", error_description=\"A valid API key is required.\""
                },
                "description": "Bearer challenge (RFC 6750): Bearer realm=\"OHLC API\" when the request carried no credential; error=\"invalid_token\" and an error_description are added when the credential it carried was refused."
            },
            "Retry-After": {
                "schema": {
                    "type": "integer",
                    "minimum": 1
                }
            }
        }
    },
    "x-websocket": {
        "url": "wss://api.ohlc.io/v1/stream",
        "authentication": "Send {\"type\":\"authenticate\",\"key\":\"<API key>\"} within 10 seconds of connecting, or the connection is closed with code 1008 (Authentication deadline expired.). Never send a key in a URL.",
        "origin": "Server-side clients need no Origin header. One naming api.ohlc.io over http or https (any port), as clients such as Python websocket-client send by default, counts as none. Any other Origin is a browser page's: authenticate is refused with an error frame naming the origin and close code 1008 unless the key is browser-enabled and lists that exact origin. The opaque origin \"null\" (sandboxed frames, local files) is always refused. REST requests follow the same rule and answer 403 origin-not-allowed.",
        "messages": [
            "authenticate",
            "subscribe",
            "unsubscribe",
            "ping"
        ],
        "subscription": "MIC:TICKER symbols; subscribe and unsubscribe take a symbols list of 1 to 100 entries, and a message without one (missing, null or empty) is refused with an error frame and close code 1008. The symbol cap applies to the union across every session of every key on the account: 250 symbols on Pro, 1,000 on Commercial, unlimited on Scale. An account may hold up to 5 simultaneous stream connections. Subscribe, unsubscribe and ping count against the account's request rate. Any refused message, such as a subscribe naming a symbol that does not resolve or is not entitled or one that would exceed the cap, closes the connection with an error frame and code 1008.",
        "heartbeat": "Send ping within each 120-second session lease.",
        "delivery": "Each frame carries the subscribed quotes that changed since the previous frame, as GET /v1/quotes serves them: exchange listings and indices are delayed at least 15 minutes, while crypto and currency pairs are not delayed but are quoted only every few minutes. Each is a Quote as GET /v1/quotes returns it: its bid and ask fields are always null (no licensed source supplies them yet), and a subscribed listing whose newest quote predates a session that has traded since is left out and named in the frame's meta.errors. Live entitlement resolution before every frame. Maximum 16 KiB per message and 100 messages per 10 seconds. Close codes: 1002 protocol error, 1007 invalid UTF-8, 1008 policy violation, 1009 oversized message, 1011 server error, 1013 slow consumer. The server sends an error frame, {\"type\":\"error\",\"code\":<close code>,\"detail\":\"...\",\"timezone\":\"UTC\"}, and then a close frame with the code, and closes the connection once the client has, or a few seconds later.",
        "server_messages": [
            "authenticated",
            "ack",
            "quotes",
            "error"
        ],
        "frame": {
            "type": "quotes",
            "timezone": "UTC",
            "data": "Quote[]",
            "meta": "Same metadata as GET /v1/quotes"
        },
        "recovery": "No sequence IDs or replay. Reconnect, authenticate and resubscribe after an error frame or disconnect."
    },
    "x-http-behavior": {
        "preflight": "OPTIONS /v1/{path} returns 204 without authentication. Actual requests still enforce the key origin policy.",
        "unknown_resource": "Other /v1 paths return resource-not-found (404). A method the resource does not take returns method-not-allowed (405) with an Allow header, before authentication.",
        "allow": "OPTIONS responses carry Allow with the methods the path takes; a path that names no resource lists only OPTIONS.",
        "problems": "Every non-2xx response the service sends is an application/problem+json Problem with type, title, status, detail, instance, code and invalid_params. On every 422, invalid_params names each parameter or body member at fault (body members as paths such as filters[0].operator; a malformed path ID as its path parameter); other statuses name a parameter only when its value names nothing the endpoint serves, such as exchanges on 404 exchange-not-found or an instrument_id that is not a fund on fund holdings, and are otherwise empty.",
        "request_id": "Every response the service sends carries X-Request-ID, a UUID naming the request in the service logs: successes and every problem, including those refused before authentication (404 resource-not-found, 405 method-not-allowed, 415, 400 invalid-json, 422 invalid-request for a repeated or array parameter, 503 maintenance). Quote it when reporting a problem. It is assigned by the service; an X-Request-ID sent with the request is ignored.",
        "security_headers": "Every response from api.ohlc.io carries Strict-Transport-Security: max-age=31536000, X-Content-Type-Options: nosniff, X-Frame-Options: DENY, Referrer-Policy: no-referrer. Plain HTTP requests are redirected to HTTPS (301).",
        "maintenance": "During planned maintenance every request returns 503 maintenance with Retry-After in seconds (60 unless the maintenance window sets another interval); retry after it.",
        "edge": "The CDN in front of the API answers a few requests itself, before they reach the service, with a body that is not a Problem (HTML or plain text) and no X-Request-ID: a payload its firewall blocks (403), a NUL byte in the path (400), the TRACE method (405), the CONNECT method (400) and a URL far beyond the documented limit, around 100 KB (414). Treat a non-JSON error body as coming from the edge.",
        "authentication": "A 401 carries WWW-Authenticate: Bearer realm=\"OHLC API\" (RFC 6750). When the request sent a credential that was refused, the challenge adds error=\"invalid_token\" and an error_description.",
        "query_parameters": "Each query parameter is one scalar string; lists are comma-separated. A repeated parameter (symbols=A&symbols=B) or array syntax (symbols[]=A) returns 422 invalid-request, and a list that repeats a value returns 422 (uniqueItems).",
        "symbols": "Symbols are MIC:TICKER or a bare ticker, and neither part is case-sensitive: xnas:aapl is XNAS:AAPL. Bonds are BOND and the ISIN, such as BOND:US00037BAF94. A bare ticker that names no listing as written is also read in the common vendor spellings: RY.TO is XTSE:RY, SHEL.L and SHEL.LSE XLON:SHEL, BHP.AX and BHP.AU XASX:BHP, ^GSPC INDEX:GSPC, and EURUSD=X and EURUSD FOREX:EUR-USD; responses name the listing by its MIC:TICKER. Two spellings of one listing (AAPL and XNAS:AAPL, or AAPL and aapl) repeat a value and return 422 invalid-symbols naming both. One rule covers every list size: when none of the requested symbols (or instrument IDs) resolves to a listing, the response is 404 symbol-not-resolved (identifier-not-found for instrument IDs) and its detail names them, up to ten; when at least one resolves, the response is 200 and each of the others is an entry of meta.errors. On research endpoints, an unknown instrument, company, contract or series ID returns 404 identifier-not-found for the whole request, and one outside the key's markets 403.",
        "content_negotiation": "Successful responses are application/json. Endpoints with the format parameter also produce text/csv, selected by format=csv or, without format, by an Accept header that ranks text/csv above JSON (Accept: text/csv). A missing Accept header, */*, application/*, application/json and application/problem+json admit JSON, as does a browser list that ends in */*. An Accept header that admits none of the media types the endpoint produces (application/xml, or application/json;q=0), or not the one format names, returns 406 not-acceptable. Problems are application/problem+json whatever was asked for.",
        "head": "HEAD is answered like GET without the body: it runs the same query, costs the same credits, and carries the headers of the GET response, including ETag and the Content-Length of the uncompressed body; its Cache-Control adds no-transform so that the CDN passes that length through.",
        "caching": "Cache-Control is must-revalidate, no-cache, private on the 200 and 304 responses of endpoints that send an ETag: a client may keep the response and revalidates it with If-None-Match before reuse. A 304 costs no credits: admission charges the request what the 200 would cost and refunds it in full when the representation is unchanged, so revalidation needs the balance a 200 would but spends nothing. Every other response, problems included, is no-store, private.",
        "concurrency": "The concurrency limit counts the requests the service is executing for the account (for the key, on unlimited entitlements). A request takes a slot when it has been authenticated and admitted and gives it back once its response is built, or when a streamed download ends; time spent queued before the service picks the request up, or sending the response, holds no slot. Requests beyond the capacity of the service queue rather than fail, so a burst from one client can exceed the limit in flight without a 429 concurrency-limit. X-Concurrency-Remaining is the slots still free while this request holds one.",
        "limits": "Request targets over 8 KB return 414 uri-too-long and header blocks over 16 KB return 431 headers-too-large; JSON bodies over 64 KB return 413 payload-too-large.",
        "etag": "ETag identifies the representation: the JSON and CSV forms of one result have different tags, so If-None-Match revalidates only the format it came from.",
        "cursors": "Pagination cursors are opaque URL-safe tokens bound to the query and key; send them back unchanged.",
        "time_budget": "A request has 10 seconds in all, and each database statement in it 3 seconds. One that runs past either is stopped and answers 503 query-timeout, and its credits are refunded. The one exception: a /v1/indicators request for an ema, rsi, macd or atr at interval 1d whose warmup spans more than 500 daily bars (an ema period above 20, an rsi or atr period above 11, or macd at its default periods) may take up to 30 seconds. A 503 carries Retry-After when the server is preparing what the request needs, so that a retry after that many seconds is expected to succeed: query-timeout from /v1/movers for a session that had no ranking yet (the ranking continues in the background), and data-busy while another request builds the same data. A query-timeout without Retry-After would repeat the same work: narrow the request (fewer symbols, a shorter range, a smaller limit) before retrying."
    },
    "x-availability-values": {
        "available": "A data source is connected. Coverage still varies by market, symbol and history; GET /v1/datasets and /v1/datasets/{dataset}/coverage report it for your key.",
        "unavailable": "No data source is connected yet: every request returns 501 dataset-unavailable, and the description starts with \"Not yet available\"."
    }
}
