{"openapi":"3.1.0","info":{"title":"Quantora API","version":"0.1.0","description":"Raw-first, derived-ready financial data infrastructure API."},"servers":[{"url":"https://api.financialdatapi.com"}],"components":{"securitySchemes":{"apiKey":{"type":"apiKey","in":"header","name":"x-api-key"},"bearerApiKey":{"type":"http","scheme":"bearer"}},"schemas":{"PublicObservation":{"type":"object","required":["observationId","indicatorId","indicatorName","category","subCategory","factorHint","country","instrumentId","currency","sourceId","provider","releaseDate","period","periodEnd","actual","forecast","consensus","surprise","surprisePercent","unit","frequency","importance","observedAt","retrievedAt","revised","vintage","sourceUrl","attribution","rawAvailable","releaseEventId","sourceTier","fallbackOnly","scoringEligible","freshnessStatus","collectionStatus","ceasedFinalPeriod","successorIndicatorId","cadenceComparable","preferredForFactor","factorKey","comparisonBasis","derivedFrom"],"properties":{"observationId":{"type":["string","null"]},"indicatorId":{"type":["string","null"]},"indicatorName":{"type":["string","null"]},"category":{"type":["string","null"]},"subCategory":{"type":["string","null"]},"factorHint":{"type":["string","null"]},"country":{"type":["string","null"]},"instrumentId":{"type":["string","null"]},"currency":{"type":["string","null"]},"sourceId":{"type":["string","null"]},"provider":{"type":["string","null"]},"releaseDate":{"type":["string","null"]},"period":{"type":["string","null"]},"periodEnd":{"type":["string","null"]},"actual":{"type":["number","null"]},"forecast":{"type":["number","null"]},"consensus":{"type":["number","null"]},"surprise":{"type":["number","null"]},"surprisePercent":{"type":["number","null"]},"unit":{"type":["string","null"]},"frequency":{"type":["string","null"]},"importance":{"type":["string","null"]},"observedAt":{"type":["string","null"]},"retrievedAt":{"type":["string","null"]},"revised":{"type":["boolean","null"]},"vintage":{"type":["string","null"]},"sourceUrl":{"type":["string","null"]},"attribution":{"type":["string","null"]},"rawAvailable":{"type":["boolean","null"]},"releaseEventId":{"type":["string","null"]},"sourceTier":{"type":["string","null"],"description":"Provenance tier of the underlying source. See the source-tier table for the enum and what each tier implies. Prefer official tiers (central_bank, official_national, official_supranational) for modelling; news and other are never scoring-grade.","enum":["central_bank","official_national","official_supranational","quantora_derived","world_bank_fallback","market_data","news","other",null]},"fallbackOnly":{"type":["boolean","null"],"description":"True only for World Bank annual context rows. Never treat a fallbackOnly row as a live scoring-grade reading when an official source exists; it is context and gap-fill."},"scoringEligible":{"type":["boolean","null"],"description":"Conservative composite gate: official/market provenance (not fallback, not news), the collection is still live, the row is denominated in the unit its factor is defined in, and the series is not stale. Filter on scoringEligible=true before using a row in any quantitative model; every other trust field explains WHY a row failed this gate."},"freshnessStatus":{"type":["string","null"],"description":"Age of the series' latest print against its publication-cadence budget: fresh, stale (a LIVE series running later than its cadence allows), or unknown (no periodEnd, or a non-periodic frequency). Treat stale as \"do not score\", not as absent data — a stale series is expected to resume. Stale forces scoringEligible=false.","enum":["fresh","stale","unknown",null]},"collectionStatus":{"type":["string","null"],"description":"\"ceased\" when the publisher permanently retired the upstream collection; null for a live series. Distinct from stale: a stale series will resume, a ceased one never will — and a ceased series is invisible from the data alone, its final print just looks old. Never score a ceased series' final reading as a current value. Follow successorIndicatorId if the publisher named a replacement.","enum":["ceased",null]},"ceasedFinalPeriod":{"type":["string","null"],"description":"The final period a ceased collection ever published; null for a live series. Use it to bound history: readings up to this period are real, nothing after it will ever arrive."},"successorIndicatorId":{"type":["string","null"],"description":"The indicator that replaces a ceased series, when the publisher named one. Usually a different concept (e.g. retail turnover -> household spending, which adds services). A pointer to follow, NOT a splice: joining predecessor and successor into one series silently changes what is measured mid-history."},"cadenceComparable":{"type":["boolean","null"],"description":"True when the series' cadence is fine-grained enough to compare cross-country (annual is not). Exclude cadenceComparable=false rows from cross-country factor panels."},"preferredForFactor":{"type":["boolean","null"],"description":"Within a response, THE row to use for its (country, factor, period). Guarantee is exactly-one: at most one row per (country, factor, period) carries it, and exactly one whenever any scoring-eligible row exists for that slot. When several sources or indicators compete for one factor, take the preferred row. Zero preferred rows means \"no scoring-grade data for this slot\", not \"use whatever came back\"."},"factorKey":{"type":["string","null"],"description":"Country-agnostic factor identifier (e.g. \"cpi\", \"gdp_growth\"). Unlike indicatorId, which is namespaced per country, factorKey is identical across countries. Key cross-country comparisons and factor scoring on factorKey, never on indicatorId."},"comparisonBasis":{"type":["string","null"]},"derivedFrom":{"type":["array","null"],"items":{}}}},"PublicObservationLatest":{"type":"object","required":["observationId","indicatorId","indicatorName","category","subCategory","factorHint","country","instrumentId","currency","sourceId","provider","releaseDate","period","periodEnd","actual","forecast","consensus","surprise","surprisePercent","unit","frequency","importance","observedAt","retrievedAt","revised","vintage","sourceUrl","attribution","rawAvailable","releaseEventId","sourceTier","fallbackOnly","scoringEligible","freshnessStatus","collectionStatus","ceasedFinalPeriod","successorIndicatorId","cadenceComparable","preferredForFactor","factorKey","comparisonBasis","derivedFrom","previous","revisedPrevious","previousType"],"properties":{"observationId":{"type":["string","null"]},"indicatorId":{"type":["string","null"]},"indicatorName":{"type":["string","null"]},"category":{"type":["string","null"]},"subCategory":{"type":["string","null"]},"factorHint":{"type":["string","null"]},"country":{"type":["string","null"]},"instrumentId":{"type":["string","null"]},"currency":{"type":["string","null"]},"sourceId":{"type":["string","null"]},"provider":{"type":["string","null"]},"releaseDate":{"type":["string","null"]},"period":{"type":["string","null"]},"periodEnd":{"type":["string","null"]},"actual":{"type":["number","null"]},"forecast":{"type":["number","null"]},"consensus":{"type":["number","null"]},"surprise":{"type":["number","null"]},"surprisePercent":{"type":["number","null"]},"unit":{"type":["string","null"]},"frequency":{"type":["string","null"]},"importance":{"type":["string","null"]},"observedAt":{"type":["string","null"]},"retrievedAt":{"type":["string","null"]},"revised":{"type":["boolean","null"]},"vintage":{"type":["string","null"]},"sourceUrl":{"type":["string","null"]},"attribution":{"type":["string","null"]},"rawAvailable":{"type":["boolean","null"]},"releaseEventId":{"type":["string","null"]},"sourceTier":{"type":["string","null"],"description":"Provenance tier of the underlying source. See the source-tier table for the enum and what each tier implies. Prefer official tiers (central_bank, official_national, official_supranational) for modelling; news and other are never scoring-grade.","enum":["central_bank","official_national","official_supranational","quantora_derived","world_bank_fallback","market_data","news","other",null]},"fallbackOnly":{"type":["boolean","null"],"description":"True only for World Bank annual context rows. Never treat a fallbackOnly row as a live scoring-grade reading when an official source exists; it is context and gap-fill."},"scoringEligible":{"type":["boolean","null"],"description":"Conservative composite gate: official/market provenance (not fallback, not news), the collection is still live, the row is denominated in the unit its factor is defined in, and the series is not stale. Filter on scoringEligible=true before using a row in any quantitative model; every other trust field explains WHY a row failed this gate."},"freshnessStatus":{"type":["string","null"],"description":"Age of the series' latest print against its publication-cadence budget: fresh, stale (a LIVE series running later than its cadence allows), or unknown (no periodEnd, or a non-periodic frequency). Treat stale as \"do not score\", not as absent data — a stale series is expected to resume. Stale forces scoringEligible=false.","enum":["fresh","stale","unknown",null]},"collectionStatus":{"type":["string","null"],"description":"\"ceased\" when the publisher permanently retired the upstream collection; null for a live series. Distinct from stale: a stale series will resume, a ceased one never will — and a ceased series is invisible from the data alone, its final print just looks old. Never score a ceased series' final reading as a current value. Follow successorIndicatorId if the publisher named a replacement.","enum":["ceased",null]},"ceasedFinalPeriod":{"type":["string","null"],"description":"The final period a ceased collection ever published; null for a live series. Use it to bound history: readings up to this period are real, nothing after it will ever arrive."},"successorIndicatorId":{"type":["string","null"],"description":"The indicator that replaces a ceased series, when the publisher named one. Usually a different concept (e.g. retail turnover -> household spending, which adds services). A pointer to follow, NOT a splice: joining predecessor and successor into one series silently changes what is measured mid-history."},"cadenceComparable":{"type":["boolean","null"],"description":"True when the series' cadence is fine-grained enough to compare cross-country (annual is not). Exclude cadenceComparable=false rows from cross-country factor panels."},"preferredForFactor":{"type":["boolean","null"],"description":"Within a response, THE row to use for its (country, factor, period). Guarantee is exactly-one: at most one row per (country, factor, period) carries it, and exactly one whenever any scoring-eligible row exists for that slot. When several sources or indicators compete for one factor, take the preferred row. Zero preferred rows means \"no scoring-grade data for this slot\", not \"use whatever came back\"."},"factorKey":{"type":["string","null"],"description":"Country-agnostic factor identifier (e.g. \"cpi\", \"gdp_growth\"). Unlike indicatorId, which is namespaced per country, factorKey is identical across countries. Key cross-country comparisons and factor scoring on factorKey, never on indicatorId."},"comparisonBasis":{"type":["string","null"]},"derivedFrom":{"type":["array","null"],"items":{}},"previous":{"type":["number","null"]},"revisedPrevious":{"type":["number","null"]},"previousType":{"type":["string","null"]}}},"PaginationMeta":{"type":"object","properties":{"limit":{"type":"integer"},"cursor":{"type":["string","null"]},"next_cursor":{"type":["string","null"]},"has_more":{"type":"boolean"}}},"ListEnvelope":{"type":"object","required":["data","meta","requestId"],"properties":{"data":{"type":"array","items":{}},"meta":{"type":"object","properties":{"request_id":{"type":"string"},"requestId":{"type":"string"},"api_version":{"type":"string","const":"v1"},"pagination":{"$ref":"#/components/schemas/PaginationMeta"}}},"requestId":{"type":"string"}}},"ItemEnvelope":{"type":"object","required":["data","meta","requestId"],"properties":{"data":{"type":"object"},"meta":{"type":"object"},"requestId":{"type":"string"}}},"DerivedIndicatorCatalogueEntry":{"type":"object","description":"A derived analytic computed by Quantora from upstream inputs, rather than reported by a source.","required":["indicatorId","slug","name","family","unit","cadence","derivedFrom","sourceIds","entityCount"],"properties":{"indicatorId":{"type":"string","description":"Prefixed indicator id, e.g. indicator_real_policy_rate."},"slug":{"type":"string","description":"Bare slug, e.g. real_policy_rate. Both forms resolve on path lookups."},"name":{"type":"string"},"family":{"type":"string"},"unit":{"type":["string","null"]},"cadence":{"type":"string","description":"Observation frequency of the derived series, e.g. daily, monthly."},"derivedFrom":{"type":"array","items":{"type":"string"},"description":"Input series this indicator is computed from, read from observation lineage."},"sourceIds":{"type":"array","items":{"type":"string"},"description":"Upstream source ids behind the inputs."},"entityIds":{"type":["array","null"],"items":{"type":"string"},"description":"Entities the series covers. Null on list responses; populated on the detail route."},"entityCount":{"type":"integer"},"observationCount":{"type":"integer"},"latestPeriodEnd":{"type":["string","null"],"format":"date-time"},"refreshedAt":{"type":"string","format":"date-time","description":"When the catalogue projection was last rebuilt."},"availability":{"type":"string","enum":["public","internal_only"],"description":"Whether values are served to customer tiers. internal_only means the analytic is computed from licensed inputs and its values are withheld; the entry is still listed so the withholding is visible rather than looking like missing data."},"availabilityReason":{"type":["string","null"],"description":"Why the analytic is withheld. Null when availability is public."},"preferredSourceId":{"type":["string","null"],"description":"Source served by default when several sources supply this indicator for the same entity and period. A preference, not a filter — request any source explicitly with source_id."}}},"DerivedIndicatorEntity":{"type":"object","required":["entityId","name"],"properties":{"entityId":{"type":"string"},"name":{"type":["string","null"]}}},"DerivedObservation":{"type":"object","description":"An observation of a derived indicator. Carries the same fields as a normal observation plus its input lineage.","required":["id","entityId","indicatorId","sourceId","providerId","derivedFrom"],"properties":{"id":{"type":"string"},"entityId":{"type":"string"},"indicatorId":{"type":"string"},"sourceId":{"type":"string"},"providerId":{"type":"string"},"valueNumeric":{"type":["number","null"]},"valueText":{"type":["string","null"]},"unit":{"type":["string","null"]},"frequency":{"type":"string"},"periodStart":{"type":["string","null"],"format":"date-time"},"periodEnd":{"type":["string","null"],"format":"date-time"},"observedAt":{"type":"string","format":"date-time"},"releasedAt":{"type":["string","null"],"format":"date-time"},"ingestedAt":{"type":"string","format":"date-time"},"revisionStatus":{"type":"string","enum":["initial","revised","final","unknown"]},"sourceUrl":{"type":["string","null"]},"attribution":{"type":"string"},"freshnessStatus":{"type":"string","enum":["fresh","stale","unknown"]},"metadata":{"type":"object","additionalProperties":true},"rights":{"type":["object","null"],"additionalProperties":true},"derivedFrom":{"type":"array","items":{"type":"string"},"description":"Input series ids this value was computed from. Empty when lineage was not recorded."}}},"ErrorEnvelope":{"type":"object","required":["error","requestId"],"properties":{"error":{"type":"object","required":["code","message","request_id","requestId"],"properties":{"code":{"type":"string"},"message":{"type":"string"},"request_id":{"type":"string"},"requestId":{"type":"string"},"details":{}}},"requestId":{"type":"string"}}}},"responses":{"BadRequest":{"description":"Invalid request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}},"Unauthorized":{"description":"Missing or invalid API key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}},"Forbidden":{"description":"API key lacks required scope","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}},"NotFound":{"description":"Resource not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}}}},"security":[{"apiKey":[]},{"bearerApiKey":[]}],"paths":{"/health":{"get":{"operationId":"getHealth","summary":"Health check","security":[],"responses":{"200":{"description":"Service health"}}}},"/ready":{"get":{"operationId":"getReady","summary":"Readiness check","security":[],"responses":{"200":{"description":"Service readiness"}}}},"/openapi.json":{"get":{"operationId":"getOpenapiJson","summary":"OpenAPI document","security":[],"responses":{"200":{"description":"OpenAPI 3.1 document"}}}},"/llms.txt":{"get":{"operationId":"getLlmsTxt","summary":"LLM documentation index","description":"Compact, sectioned index of the API for LLM agents (text/plain). No API key required.","security":[],"responses":{"200":{"description":"Agent-facing API index"}}}},"/llms-full.txt":{"get":{"operationId":"getLlmsFullTxt","summary":"LLM full API reference","description":"Full machine-readable endpoint reference with parameters for LLM agents (text/plain). No API key required.","security":[],"responses":{"200":{"description":"Full agent-facing API reference"}}}},"/entities":{"get":{"operationId":"getEntities","summary":"List entities","parameters":[{"name":"limit","in":"query","schema":{"type":"integer","minimum":1,"maximum":500,"default":100}},{"name":"cursor","in":"query","schema":{"type":"string"}},{"name":"sort","in":"query","schema":{"type":"string"}},{"name":"order","in":"query","schema":{"type":"string","enum":["asc","desc"],"default":"asc"}}],"responses":{"200":{"description":"Entities","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListEnvelope"}}}},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"}}}},"/entities/resolve":{"get":{"operationId":"getEntitiesResolve","summary":"Resolve entity by alias","responses":{"200":{"description":"Resolved entity and matched alias","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ItemEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"}},"parameters":[{"name":"alias","in":"query","schema":{"type":"string"}},{"name":"alias_type","in":"query","schema":{"type":"string"}}]}},"/entities/{idOrSlug}":{"get":{"operationId":"getEntitiesByIdOrSlug","summary":"Get entity","responses":{"200":{"description":"Entity","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ItemEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"}}}},"/entities/{idOrSlug}/aliases":{"get":{"operationId":"getEntitiesByIdOrSlugAliases","summary":"List entity aliases","parameters":[{"name":"limit","in":"query","schema":{"type":"integer","minimum":1,"maximum":500,"default":100}},{"name":"cursor","in":"query","schema":{"type":"string"}},{"name":"sort","in":"query","schema":{"type":"string"}},{"name":"order","in":"query","schema":{"type":"string","enum":["asc","desc"],"default":"asc"}}],"responses":{"200":{"description":"Aliases registered for an entity","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListEnvelope"}}}},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"}}}},"/entities/{entityId}/observations":{"get":{"operationId":"getEntitiesByEntityIdObservations","summary":"List entity observations","parameters":[{"name":"limit","in":"query","schema":{"type":"integer","minimum":1,"maximum":500,"default":100}},{"name":"cursor","in":"query","schema":{"type":"string"}},{"name":"sort","in":"query","schema":{"type":"string"}},{"name":"order","in":"query","schema":{"type":"string","enum":["asc","desc"],"default":"asc"}},{"name":"country","in":"query","schema":{"type":"string"}},{"name":"entity","in":"query","schema":{"type":"string"}},{"name":"entity_id","in":"query","schema":{"type":"string"}},{"name":"indicator_id","in":"query","schema":{"type":"string"}},{"name":"indicatorId","in":"query","schema":{"type":"string"}},{"name":"indicator","in":"query","schema":{"type":"string","description":"Alias of indicator_id, accepting a canonical field name, a storage indicator id, or an indicator slug. A value matching none of those returns an empty result — it is never ignored — and an empty value is rejected with 400."}},{"name":"source_id","in":"query","schema":{"type":"string"}},{"name":"sourceId","in":"query","schema":{"type":"string"}},{"name":"provider_id","in":"query","schema":{"type":"string"}},{"name":"providerId","in":"query","schema":{"type":"string"}},{"name":"provider","in":"query","schema":{"type":"string"}},{"name":"frequency","in":"query","schema":{"type":"string","enum":["daily","weekly","monthly","quarterly","annual","event","static"]}},{"name":"currency","in":"query","schema":{"type":"string"}},{"name":"type","in":"query","schema":{"type":"string","enum":["macro"]}},{"name":"numericOnly","in":"query","schema":{"type":"boolean"}},{"name":"numeric_only","in":"query","schema":{"type":"boolean"}},{"name":"importance","in":"query","schema":{"type":"string","enum":["low","medium","high"]}},{"name":"freshness","in":"query","schema":{"type":"string","enum":["fresh","stale","unknown"],"description":"Filters by the SERIES' current freshness verdict: fresh returns rows of series whose latest print is within its cadence budget now, stale of series whose latest print has aged past it, unknown of series that cannot be assessed. Note the deliberate asymmetry with the per-row freshnessStatus field, which describes each row (a 1950 print of a healthy series computes stale as a row while its series — and therefore this filter — is fresh). Cannot be combined with as_of/since/date filters on latest routes: freshness is evaluated against now, a temporal filter against a past instant."}},{"name":"start_date","in":"query","schema":{"type":"string","format":"date","description":"Knowledge-time lower bound on observed_at."}},{"name":"end_date","in":"query","schema":{"type":"string","format":"date","description":"Knowledge-time upper bound on observed_at."}},{"name":"period","in":"query","schema":{"type":"string","pattern":"^\\d{4}(-(0[1-9]|1[0-2]|[Qq][1-4]))?$","description":"Period-time convenience filter: YYYY, YYYY-MM, or YYYY-Qn."}},{"name":"period_start","in":"query","schema":{"type":"string","format":"date","description":"Period-time lower bound on period_end."}},{"name":"period_end","in":"query","schema":{"type":"string","format":"date","description":"Period-time upper bound on period_end."}},{"name":"as_of","in":"query","schema":{"type":"string","format":"date-time","description":"Knowledge-time vintage cutoff; returns latest vintage known on or before this timestamp."}},{"name":"sources","in":"query","schema":{"type":"string","enum":["preferred","all"],"default":"preferred","description":"How to handle a period carried by more than one data provider. 'preferred' (the default) returns one provider per (entity, indicator, frequency, period) — the publisher closest to the measurement — so a series carried by two publishers is not returned twice. 'all' returns every provider's row. A period carried by only one provider is unaffected either way, and this filter is ignored when source_id or provider_id is set."}}],"responses":{"200":{"description":"Entity observations","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListEnvelope"}}}},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"}}}},"/entities/{entityId}/derived-observations":{"get":{"operationId":"getEntitiesByEntityIdDerivedObservations","summary":"List entity derived observations","parameters":[{"name":"limit","in":"query","schema":{"type":"integer","minimum":1,"maximum":500,"default":100}},{"name":"cursor","in":"query","schema":{"type":"string"}},{"name":"sort","in":"query","schema":{"type":"string"}},{"name":"order","in":"query","schema":{"type":"string","enum":["asc","desc"],"default":"asc"}},{"name":"country","in":"query","schema":{"type":"string"}},{"name":"entity","in":"query","schema":{"type":"string"}},{"name":"entity_id","in":"query","schema":{"type":"string"}},{"name":"indicator_id","in":"query","schema":{"type":"string","description":"Derived indicator id or slug. Accepts a comma-separated list."}},{"name":"indicator","in":"query","schema":{"type":"string","description":"Derived indicator id or slug."}},{"name":"source_id","in":"query","schema":{"type":"string"}},{"name":"provider_id","in":"query","schema":{"type":"string"}},{"name":"frequency","in":"query","schema":{"type":"string","enum":["daily","weekly","monthly","quarterly","annual","event","static"]}},{"name":"period","in":"query","schema":{"type":"string"}},{"name":"period_start","in":"query","schema":{"type":"string"}},{"name":"period_end","in":"query","schema":{"type":"string"}},{"name":"start_date","in":"query","schema":{"type":"string","format":"date-time"}},{"name":"end_date","in":"query","schema":{"type":"string","format":"date-time"}},{"name":"as_of","in":"query","schema":{"type":"string","format":"date-time"}},{"name":"sources","in":"query","schema":{"type":"string","enum":["preferred","all"],"default":"preferred","description":"See /observations: 'preferred' returns one provider per (entity, indicator, frequency, period), 'all' returns every provider's row."}}],"responses":{"200":{"description":"Derived analytics for one entity, each carrying its derivedFrom input lineage","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/ListEnvelope"},{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/DerivedObservation"}}}}]}}}},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"}}}},"/countries":{"get":{"operationId":"getCountries","summary":"List countries","parameters":[{"name":"limit","in":"query","schema":{"type":"integer","minimum":1,"maximum":500,"default":100}},{"name":"cursor","in":"query","schema":{"type":"string"}},{"name":"sort","in":"query","schema":{"type":"string"}},{"name":"order","in":"query","schema":{"type":"string","enum":["asc","desc"],"default":"asc"}}],"responses":{"200":{"description":"Countries","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListEnvelope"}}}},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"}}}},"/countries/{idOrIso}":{"get":{"operationId":"getCountriesByIdOrIso","summary":"Get country","responses":{"200":{"description":"Country","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ItemEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"}}}},"/countries/{idOrIso}/available-indicators":{"get":{"operationId":"getCountriesByIdOrIsoAvailableIndicators","summary":"List country indicators","parameters":[{"name":"limit","in":"query","schema":{"type":"integer","minimum":1,"maximum":500,"default":100}},{"name":"cursor","in":"query","schema":{"type":"string"}},{"name":"sort","in":"query","schema":{"type":"string"}},{"name":"order","in":"query","schema":{"type":"string","enum":["asc","desc"],"default":"asc"}}],"responses":{"200":{"description":"Indicators with publicly displayable observations for a country, plus explicitly modelled internal-only derived series carrying availability and availabilityReason; genuinely empty or rights-gated raw series are omitted","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListEnvelope"}}}},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"}}}},"/companies":{"get":{"operationId":"getCompanies","summary":"List scored companies","parameters":[{"name":"limit","in":"query","schema":{"type":"integer","minimum":1,"maximum":500,"default":100}},{"name":"cursor","in":"query","schema":{"type":"string"}},{"name":"sort","in":"query","schema":{"type":"string"}},{"name":"order","in":"query","schema":{"type":"string","enum":["asc","desc"],"default":"asc"}}],"responses":{"200":{"description":"Scored fundamentals universe (S&P 500 ∪ Nasdaq-100) with sector/industry classification inline","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListEnvelope"}}}},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"}}}},"/companies/{idOrLookup}":{"get":{"operationId":"getCompaniesByIdOrLookup","summary":"Get company","responses":{"200":{"description":"Company","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ItemEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"}}}},"/companies/{idOrLookup}/profile":{"get":{"operationId":"getCompaniesByIdOrLookupProfile","summary":"Get company profile","responses":{"200":{"description":"Company profile","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ItemEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"}}}},"/companies/{idOrLookup}/financials":{"get":{"operationId":"getCompaniesByIdOrLookupFinancials","summary":"Get company financial statements","responses":{"200":{"description":"Structured income, balance-sheet, and cash-flow statements assembled from SEC XBRL fundamentals","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ItemEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"}},"parameters":[{"name":"period","in":"query","schema":{"type":"string","enum":["annual","quarterly"],"description":"Restrict to a reporting frequency."}},{"name":"limit","in":"query","schema":{"type":"integer","minimum":1,"maximum":100,"default":8,"description":"Statements per type, newest first."}},{"name":"as_of","in":"query","schema":{"type":"string","description":"Knowledge-time vintage cutoff; statements are assembled from the latest vintage known on or before this timestamp."}}]}},"/companies/{idOrLookup}/filings":{"get":{"operationId":"getCompaniesByIdOrLookupFilings","summary":"List company SEC filings","responses":{"200":{"description":"Recent SEC filings for one company from the stored filing-event stream (no live EDGAR call): accession number, form, filing/report dates, primary document, 8-K item codes, source URL, and linked event labels. Full filing history is available on every plan — filing inventory is public-domain metadata, so the free-plan history clamp deliberately does not apply here.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ItemEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"}},"parameters":[{"name":"form","in":"query","schema":{"type":"string","description":"Exact form filter, e.g. 8-K, 10-K, 10-Q."}},{"name":"limit","in":"query","schema":{"type":"integer","minimum":1,"maximum":50,"default":20,"description":"Filings returned, newest first."}}]}},"/companies/{idOrLookup}/filings/{accessionNumber}/items":{"get":{"operationId":"getCompaniesByIdOrLookupFilingsByAccessionNumberItems","summary":"Get SEC filing item text","responses":{"200":{"description":"The text of a filing's sections (items), split from the EDGAR primary document at request time. Exhibit-aware for 8-K: the furnished EX-99 press-release text is attached to the earnings/disclosure item. accessionNumber accepts dashed or undashed form, or the literal 'latest' with the form query parameter. Own per-plan rate limit. Returns the single 503 error code filing_fetch_unavailable whenever the EDGAR fetch cannot complete — EDGAR unreachable, a document over the 20 MB response-size cap, a saturated EDGAR pacing queue, or the request's overall time budget exhausted before the primary document was fetched (the message names the specific reason). If time runs out during EXHIBIT retrieval the response still succeeds with the parsed items, exhibits_truncated: true on the affected item, and a top-level warning string.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ItemEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"}},"parameters":[{"name":"item","in":"query","schema":{"type":"string","description":"Item code filter, comma-separable and repeatable. Canonical codes: 8-K '2.02'; 10-K '1A'; 10-Q part-qualified 'p2-1a'. Competitor-style spellings ('Item-1A', 'Item 2.02', 'part2item1a') are normalized."}},{"name":"include_exhibits","in":"query","schema":{"type":"boolean","default":true,"description":"8-K only: attach EX-99 exhibit text (earnings releases and other furnished/filed exhibits)."}},{"name":"format","in":"query","schema":{"type":"string","enum":["text"],"default":"text","description":"Only 'text' is supported; the raw HTML stays available at source_url."}},{"name":"form","in":"query","schema":{"type":"string","description":"Required when accessionNumber is 'latest': the form to resolve (e.g. 8-K)."}}]}},"/companies/{idOrLookup}/insider-trades":{"get":{"operationId":"getCompaniesByIdOrLookupInsiderTrades","summary":"Get company insider trades","responses":{"200":{"description":"Structured SEC Form 3/4/5 insider transactions — insider identity and role, transaction code and label, shares, price, signed USD value, post-transaction holdings — with accession number and filing URL provenance","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ItemEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"}},"parameters":[{"name":"limit","in":"query","schema":{"type":"integer","minimum":1,"maximum":500,"default":100,"description":"Trades returned, after filters."}},{"name":"start_date","in":"query","schema":{"type":"string","format":"date","description":"Lower bound on the transaction date."}},{"name":"end_date","in":"query","schema":{"type":"string","format":"date","description":"Upper bound on the transaction date."}},{"name":"transaction_code","in":"query","schema":{"type":"string","description":"Single SEC transaction code filter, e.g. P (purchase), S (sale), A (grant), M (option exercise)."}},{"name":"include_derivative","in":"query","schema":{"type":"boolean","default":true,"description":"Include Table II derivative-security transactions."}},{"name":"order","in":"query","schema":{"type":"string","enum":["asc","desc"],"default":"desc","description":"Sort by transaction date."}}]}},"/companies/{idOrLookup}/earnings":{"get":{"operationId":"getCompaniesByIdOrLookupEarnings","summary":"Get company earnings actuals","responses":{"200":{"description":"Leakage-free earnings actuals: quarterly/annual revenue, net income, and diluted EPS from SEC XBRL fundamentals, joined to the 8-K Item 2.02 earnings-release filing that announced each period (announced_at = EDGAR acceptance timestamp, falling back to END of the filing date — 23:59:59.999Z — when no acceptance timestamp is known, so an intraday as_of is never optimistic; filing_lag_days = period_end to the EDGAR filing date). eps_basis marks whether EPS is the reported EarningsPerShareDiluted XBRL tag ('reported') or derived as net_income / diluted shares ('computed'). Announcement matching heuristic: periods are matched oldest-first to the earliest original Item 2.02 filing (8-K/A amendments are excluded) whose filing date falls in the window (period_end, min(period_end + 120 days, next reported period_end)]; each filing matches at most one period, and periods with no filing in the window return null announcement fields. Analyst estimates are NOT included — this surface serves actuals with explicit knowledge-time semantics only. With as_of set, rows whose XBRL knowledge time (10-Q/10-K filed date) exceeds the cutoff are excluded exactly like /financials, and announcements accepted after the cutoff are hidden — the response never leaks figures that were not knowable at as_of.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ItemEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"}},"parameters":[{"name":"period","in":"query","schema":{"type":"string","enum":["annual","quarterly"],"default":"quarterly","description":"Reporting frequency."}},{"name":"limit","in":"query","schema":{"type":"integer","minimum":1,"maximum":40,"default":8,"description":"Periods returned, newest first."}},{"name":"as_of","in":"query","schema":{"type":"string","description":"Knowledge-time cutoff (ISO date or timestamp): earnings as they were knowable on that date, for leakage-free backtests."}}]}},"/companies/{idOrLookup}/institutional-ownership":{"get":{"operationId":"getCompaniesByIdOrLookupInstitutionalOwnership","summary":"Get company institutional ownership","responses":{"200":{"description":"SEC Form 13F positions in this company across the tracked manager roster — filer name and CIK, report quarter, position market value USD, shares, share class, put/call flag — with accession number and filing URL provenance. Defaults to each filer's latest reported quarter; coverage is the curated 25-filer roster from /institutional-ownership/filers, not the full 13F universe.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ItemEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"}},"parameters":[{"name":"quarter","in":"query","schema":{"type":"string","pattern":"^([12]\\d{3}[^0-9Qq]?[Qq][1-4]|[Qq][1-4][^0-9Qq]?[12]\\d{3}|[1-4][Qq][^0-9Qq]?[12]\\d{3})$","description":"Calendar report quarter. Accepts 2026Q1, 2026q1, Q1 2026, 1Q2026, and 2026-Q2 spellings (separators are ignored); normalized to YYYYQn. Omit for each filer's latest available quarter."}},{"name":"filer","in":"query","schema":{"type":"string","description":"Manager filter: case-insensitive substring of the filer name ('berkshire') or exact SEC CIK ('0001067983')."}},{"name":"limit","in":"query","schema":{"type":"integer","minimum":1,"maximum":500,"default":100,"description":"Holdings returned, after filters."}},{"name":"order","in":"query","schema":{"type":"string","enum":["asc","desc"],"default":"desc","description":"Sort by position market value."}}]}},"/institutional-ownership/filers":{"get":{"operationId":"getInstitutionalOwnershipFilers","summary":"List tracked 13F filers","responses":{"200":{"description":"The curated 25-manager roster the 13F pipeline ingests (name and CIK) with its coverage note: quarterly 13F-HR ingestion, ~45-day filing lag, amendment-aware, not the full 13F universe","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ItemEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"}}}},"/companies/{idOrLookup}/beneficial-ownership-events":{"get":{"operationId":"getCompaniesByIdOrLookupBeneficialOwnershipEvents","summary":"List company beneficial-ownership events","responses":{"200":{"description":"The company's SC 13D/13G filing history from the stored filing-event stream (no live EDGAR call), newest first. SC 13D marks active intent to influence control (is_activist: true); SC 13G is a passive stake; amendments (/A) are flagged separately.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ItemEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"}},"parameters":[{"name":"form","in":"query","schema":{"type":"string","enum":["13d","13g"],"description":"Restrict to the 13D or 13G family; amendments are matched automatically."}},{"name":"start_date","in":"query","schema":{"type":"string","format":"date","description":"Lower bound on the filing date."}},{"name":"end_date","in":"query","schema":{"type":"string","format":"date","description":"Upper bound on the filing date."}},{"name":"limit","in":"query","schema":{"type":"integer","minimum":1,"maximum":200,"default":50,"description":"Events returned, newest first."}}]}},"/activist-events":{"get":{"operationId":"getActivistEvents","summary":"List recent activist events","responses":{"200":{"description":"Cross-company activist-watch feed: recent SC 13D filings (active intent to influence control; passive 13G stakes are excluded), newest first, with the issuer's ticker, entity id, and company name resolved from the event's entity. Deliberate trade-off: this feed is not subject to the free-plan history-depth clamp — a caller-supplied 'since' can reach arbitrarily far back on any plan, because recency-focused cross-company visibility is the product here and the underlying filing metadata is public-domain.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ItemEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"}},"parameters":[{"name":"since","in":"query","schema":{"type":"string","format":"date","description":"Lower bound on the filing date; defaults to 90 days back."}},{"name":"limit","in":"query","schema":{"type":"integer","minimum":1,"maximum":200,"default":50,"description":"Events returned, newest first."}}]}},"/instruments":{"get":{"operationId":"getInstruments","summary":"List instruments","parameters":[{"name":"limit","in":"query","schema":{"type":"integer","minimum":1,"maximum":500,"default":100}},{"name":"cursor","in":"query","schema":{"type":"string"}},{"name":"sort","in":"query","schema":{"type":"string"}},{"name":"order","in":"query","schema":{"type":"string","enum":["asc","desc"],"default":"asc"}}],"responses":{"200":{"description":"Instruments","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListEnvelope"}}}},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"}}}},"/instruments/{idOrLookup}":{"get":{"operationId":"getInstrumentsByIdOrLookup","summary":"Get instrument","responses":{"200":{"description":"Instrument","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ItemEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"}}}},"/indicators":{"get":{"operationId":"getIndicators","summary":"List indicators","parameters":[{"name":"limit","in":"query","schema":{"type":"integer","minimum":1,"maximum":500,"default":100}},{"name":"cursor","in":"query","schema":{"type":"string"}},{"name":"sort","in":"query","schema":{"type":"string"}},{"name":"order","in":"query","schema":{"type":"string","enum":["asc","desc"],"default":"asc"}}],"responses":{"200":{"description":"Indicators","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListEnvelope"}}}},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"}}}},"/canonical-indicators":{"get":{"operationId":"getCanonicalIndicators","summary":"List canonical indicators","parameters":[{"name":"limit","in":"query","schema":{"type":"integer","minimum":1,"maximum":500,"default":100}},{"name":"cursor","in":"query","schema":{"type":"string"}},{"name":"sort","in":"query","schema":{"type":"string"}},{"name":"order","in":"query","schema":{"type":"string","enum":["asc","desc"],"default":"asc"}}],"responses":{"200":{"description":"Quantora public indicator catalog","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListEnvelope"}}}},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"}}}},"/packages":{"get":{"operationId":"getPackages","summary":"List product packages","parameters":[{"name":"limit","in":"query","schema":{"type":"integer","minimum":1,"maximum":500,"default":100}},{"name":"cursor","in":"query","schema":{"type":"string"}},{"name":"sort","in":"query","schema":{"type":"string"}},{"name":"order","in":"query","schema":{"type":"string","enum":["asc","desc"],"default":"asc"}}],"responses":{"200":{"description":"Product packages grouping the catalogue into documented families, each with status and indicator/route counts","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListEnvelope"}}}},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"}}}},"/packages/{packageId}":{"get":{"operationId":"getPackagesByPackageId","summary":"Get product package","responses":{"200":{"description":"Package detail including its indicator ids, routes and docs page slugs","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ItemEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"}}}},"/indicators/{idOrSlug}":{"get":{"operationId":"getIndicatorsByIdOrSlug","summary":"Get indicator","responses":{"200":{"description":"Indicator","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ItemEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"}}}},"/indicators/{idOrSlug}/aliases":{"get":{"operationId":"getIndicatorsByIdOrSlugAliases","summary":"List indicator aliases","parameters":[{"name":"limit","in":"query","schema":{"type":"integer","minimum":1,"maximum":500,"default":100}},{"name":"cursor","in":"query","schema":{"type":"string"}},{"name":"sort","in":"query","schema":{"type":"string"}},{"name":"order","in":"query","schema":{"type":"string","enum":["asc","desc"],"default":"asc"}}],"responses":{"200":{"description":"Canonical, legacy, and provider-native indicator aliases","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListEnvelope"}}}},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"}}}},"/indicators/{idOrSlug}/series":{"get":{"operationId":"getIndicatorsByIdOrSlugSeries","summary":"List indicator series","parameters":[{"name":"limit","in":"query","schema":{"type":"integer","minimum":1,"maximum":500,"default":100}},{"name":"cursor","in":"query","schema":{"type":"string"}},{"name":"sort","in":"query","schema":{"type":"string"}},{"name":"order","in":"query","schema":{"type":"string","enum":["asc","desc"],"default":"asc"}}],"responses":{"200":{"description":"Provider/entity series for an indicator","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListEnvelope"}}}},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"}}}},"/indicators/{idOrSlug}/entities":{"get":{"operationId":"getIndicatorsByIdOrSlugEntities","summary":"List indicator entities","parameters":[{"name":"limit","in":"query","schema":{"type":"integer","minimum":1,"maximum":500,"default":100}},{"name":"cursor","in":"query","schema":{"type":"string"}},{"name":"sort","in":"query","schema":{"type":"string"}},{"name":"order","in":"query","schema":{"type":"string","enum":["asc","desc"],"default":"asc"}}],"responses":{"200":{"description":"Entities with observations for an indicator","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListEnvelope"}}}},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"}}}},"/indicators/{indicatorId}/observations":{"get":{"operationId":"getIndicatorsByIndicatorIdObservations","summary":"List indicator observations","parameters":[{"name":"limit","in":"query","schema":{"type":"integer","minimum":1,"maximum":500,"default":100}},{"name":"cursor","in":"query","schema":{"type":"string"}},{"name":"sort","in":"query","schema":{"type":"string"}},{"name":"order","in":"query","schema":{"type":"string","enum":["asc","desc"],"default":"asc"}},{"name":"country","in":"query","schema":{"type":"string"}},{"name":"entity","in":"query","schema":{"type":"string"}},{"name":"entity_id","in":"query","schema":{"type":"string"}},{"name":"indicator_id","in":"query","schema":{"type":"string"}},{"name":"indicatorId","in":"query","schema":{"type":"string"}},{"name":"indicator","in":"query","schema":{"type":"string","description":"Alias of indicator_id, accepting a canonical field name, a storage indicator id, or an indicator slug. A value matching none of those returns an empty result — it is never ignored — and an empty value is rejected with 400."}},{"name":"source_id","in":"query","schema":{"type":"string"}},{"name":"sourceId","in":"query","schema":{"type":"string"}},{"name":"provider_id","in":"query","schema":{"type":"string"}},{"name":"providerId","in":"query","schema":{"type":"string"}},{"name":"provider","in":"query","schema":{"type":"string"}},{"name":"frequency","in":"query","schema":{"type":"string","enum":["daily","weekly","monthly","quarterly","annual","event","static"]}},{"name":"currency","in":"query","schema":{"type":"string"}},{"name":"type","in":"query","schema":{"type":"string","enum":["macro"]}},{"name":"numericOnly","in":"query","schema":{"type":"boolean"}},{"name":"numeric_only","in":"query","schema":{"type":"boolean"}},{"name":"importance","in":"query","schema":{"type":"string","enum":["low","medium","high"]}},{"name":"freshness","in":"query","schema":{"type":"string","enum":["fresh","stale","unknown"],"description":"Filters by the SERIES' current freshness verdict: fresh returns rows of series whose latest print is within its cadence budget now, stale of series whose latest print has aged past it, unknown of series that cannot be assessed. Note the deliberate asymmetry with the per-row freshnessStatus field, which describes each row (a 1950 print of a healthy series computes stale as a row while its series — and therefore this filter — is fresh). Cannot be combined with as_of/since/date filters on latest routes: freshness is evaluated against now, a temporal filter against a past instant."}},{"name":"start_date","in":"query","schema":{"type":"string","format":"date","description":"Knowledge-time lower bound on observed_at."}},{"name":"end_date","in":"query","schema":{"type":"string","format":"date","description":"Knowledge-time upper bound on observed_at."}},{"name":"period","in":"query","schema":{"type":"string","pattern":"^\\d{4}(-(0[1-9]|1[0-2]|[Qq][1-4]))?$","description":"Period-time convenience filter: YYYY, YYYY-MM, or YYYY-Qn."}},{"name":"period_start","in":"query","schema":{"type":"string","format":"date","description":"Period-time lower bound on period_end."}},{"name":"period_end","in":"query","schema":{"type":"string","format":"date","description":"Period-time upper bound on period_end."}},{"name":"as_of","in":"query","schema":{"type":"string","format":"date-time","description":"Knowledge-time vintage cutoff; returns latest vintage known on or before this timestamp."}},{"name":"sources","in":"query","schema":{"type":"string","enum":["preferred","all"],"default":"preferred","description":"How to handle a period carried by more than one data provider. 'preferred' (the default) returns one provider per (entity, indicator, frequency, period) — the publisher closest to the measurement — so a series carried by two publishers is not returned twice. 'all' returns every provider's row. A period carried by only one provider is unaffected either way, and this filter is ignored when source_id or provider_id is set."}}],"responses":{"200":{"description":"Indicator observations","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListEnvelope"}}}},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"}}}},"/derived-indicators":{"get":{"operationId":"getDerivedIndicators","summary":"List derived indicators","parameters":[{"name":"limit","in":"query","schema":{"type":"integer","minimum":1,"maximum":500,"default":100}},{"name":"cursor","in":"query","schema":{"type":"string"}},{"name":"sort","in":"query","schema":{"type":"string"}},{"name":"order","in":"query","schema":{"type":"string","enum":["asc","desc"],"default":"asc"}}],"responses":{"200":{"description":"Catalogue of analytics Quantora computes rather than sources: what each one is, its unit and cadence, the input series it is derived from, and how many entities it covers","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/ListEnvelope"},{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/DerivedIndicatorCatalogueEntry"}}}}]}}}},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"}}}},"/derived-indicators/{idOrSlug}":{"get":{"operationId":"getDerivedIndicatorsByIdOrSlug","summary":"Get derived indicator","responses":{"200":{"description":"One derived indicator, including the full list of entities it is available for. Accepts the prefixed id or the bare slug","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/ItemEnvelope"},{"type":"object","properties":{"data":{"$ref":"#/components/schemas/DerivedIndicatorCatalogueEntry"}}}]}}}},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"}}}},"/derived-indicators/{idOrSlug}/entities":{"get":{"operationId":"getDerivedIndicatorsByIdOrSlugEntities","summary":"List derived indicator entities","parameters":[{"name":"limit","in":"query","schema":{"type":"integer","minimum":1,"maximum":500,"default":100}},{"name":"cursor","in":"query","schema":{"type":"string"}},{"name":"sort","in":"query","schema":{"type":"string"}},{"name":"order","in":"query","schema":{"type":"string","enum":["asc","desc"],"default":"asc"}}],"responses":{"200":{"description":"Entities a derived indicator is available for, paginated","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/ListEnvelope"},{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/DerivedIndicatorEntity"}}}}]}}}},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"}}}},"/derived-indicators/{idOrSlug}/observations":{"get":{"operationId":"getDerivedIndicatorsByIdOrSlugObservations","summary":"List derived indicator observations","parameters":[{"name":"limit","in":"query","schema":{"type":"integer","minimum":1,"maximum":500,"default":100}},{"name":"cursor","in":"query","schema":{"type":"string"}},{"name":"sort","in":"query","schema":{"type":"string"}},{"name":"order","in":"query","schema":{"type":"string","enum":["asc","desc"],"default":"asc"}},{"name":"country","in":"query","schema":{"type":"string"}},{"name":"entity","in":"query","schema":{"type":"string"}},{"name":"entity_id","in":"query","schema":{"type":"string"}},{"name":"indicator_id","in":"query","schema":{"type":"string","description":"Derived indicator id or slug. Accepts a comma-separated list."}},{"name":"indicator","in":"query","schema":{"type":"string","description":"Derived indicator id or slug."}},{"name":"source_id","in":"query","schema":{"type":"string"}},{"name":"provider_id","in":"query","schema":{"type":"string"}},{"name":"frequency","in":"query","schema":{"type":"string","enum":["daily","weekly","monthly","quarterly","annual","event","static"]}},{"name":"period","in":"query","schema":{"type":"string"}},{"name":"period_start","in":"query","schema":{"type":"string"}},{"name":"period_end","in":"query","schema":{"type":"string"}},{"name":"start_date","in":"query","schema":{"type":"string","format":"date-time"}},{"name":"end_date","in":"query","schema":{"type":"string","format":"date-time"}},{"name":"as_of","in":"query","schema":{"type":"string","format":"date-time"}},{"name":"sources","in":"query","schema":{"type":"string","enum":["preferred","all"],"default":"preferred","description":"See /observations: 'preferred' returns one provider per (entity, indicator, frequency, period), 'all' returns every provider's row."}}],"responses":{"200":{"description":"Observations of one derived indicator, each carrying its derivedFrom input lineage","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/ListEnvelope"},{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/DerivedObservation"}}}}]}}}},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"}}}},"/sources":{"get":{"operationId":"getSources","summary":"List sources","parameters":[{"name":"limit","in":"query","schema":{"type":"integer","minimum":1,"maximum":500,"default":100}},{"name":"cursor","in":"query","schema":{"type":"string"}},{"name":"sort","in":"query","schema":{"type":"string"}},{"name":"order","in":"query","schema":{"type":"string","enum":["asc","desc"],"default":"asc"}}],"responses":{"200":{"description":"Sources","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListEnvelope"}}}},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"}}}},"/sources/{sourceId}":{"get":{"operationId":"getSourcesBySourceId","summary":"Get source","responses":{"200":{"description":"Source","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ItemEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"}}}},"/providers":{"get":{"operationId":"getProviders","summary":"List providers","parameters":[{"name":"limit","in":"query","schema":{"type":"integer","minimum":1,"maximum":500,"default":100}},{"name":"cursor","in":"query","schema":{"type":"string"}},{"name":"sort","in":"query","schema":{"type":"string"}},{"name":"order","in":"query","schema":{"type":"string","enum":["asc","desc"],"default":"asc"}}],"responses":{"200":{"description":"Providers","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListEnvelope"}}}},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"}}}},"/providers/{providerId}":{"get":{"operationId":"getProvidersByProviderId","summary":"Get provider","responses":{"200":{"description":"Provider","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ItemEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"}}}},"/observations/changes":{"get":{"operationId":"getObservationsChanges","summary":"List changed observations","parameters":[{"name":"limit","in":"query","schema":{"type":"integer","minimum":1,"maximum":500,"default":100}},{"name":"cursor","in":"query","schema":{"type":"string"}},{"name":"sort","in":"query","schema":{"type":"string"}},{"name":"order","in":"query","schema":{"type":"string","enum":["asc","desc"],"default":"asc"}},{"name":"country","in":"query","schema":{"type":"string"}},{"name":"entity","in":"query","schema":{"type":"string"}},{"name":"entity_id","in":"query","schema":{"type":"string"}},{"name":"indicator_id","in":"query","schema":{"type":"string"}},{"name":"indicatorId","in":"query","schema":{"type":"string"}},{"name":"indicator","in":"query","schema":{"type":"string","description":"Alias of indicator_id, accepting a canonical field name, a storage indicator id, or an indicator slug. A value matching none of those returns an empty result — it is never ignored — and an empty value is rejected with 400."}},{"name":"source_id","in":"query","schema":{"type":"string"}},{"name":"sourceId","in":"query","schema":{"type":"string"}},{"name":"provider_id","in":"query","schema":{"type":"string"}},{"name":"providerId","in":"query","schema":{"type":"string"}},{"name":"provider","in":"query","schema":{"type":"string"}},{"name":"frequency","in":"query","schema":{"type":"string","enum":["daily","weekly","monthly","quarterly","annual","event","static"]}},{"name":"currency","in":"query","schema":{"type":"string"}},{"name":"type","in":"query","schema":{"type":"string","enum":["macro"]}},{"name":"numericOnly","in":"query","schema":{"type":"boolean"}},{"name":"numeric_only","in":"query","schema":{"type":"boolean"}},{"name":"importance","in":"query","schema":{"type":"string","enum":["low","medium","high"]}},{"name":"freshness","in":"query","schema":{"type":"string","enum":["fresh","stale","unknown"],"description":"Filters by the SERIES' current freshness verdict: fresh returns rows of series whose latest print is within its cadence budget now, stale of series whose latest print has aged past it, unknown of series that cannot be assessed. Note the deliberate asymmetry with the per-row freshnessStatus field, which describes each row (a 1950 print of a healthy series computes stale as a row while its series — and therefore this filter — is fresh). Cannot be combined with as_of/since/date filters on latest routes: freshness is evaluated against now, a temporal filter against a past instant."}},{"name":"start_date","in":"query","schema":{"type":"string","format":"date","description":"Knowledge-time lower bound on observed_at."}},{"name":"end_date","in":"query","schema":{"type":"string","format":"date","description":"Knowledge-time upper bound on observed_at."}},{"name":"period","in":"query","schema":{"type":"string","pattern":"^\\d{4}(-(0[1-9]|1[0-2]|[Qq][1-4]))?$","description":"Period-time convenience filter: YYYY, YYYY-MM, or YYYY-Qn."}},{"name":"period_start","in":"query","schema":{"type":"string","format":"date","description":"Period-time lower bound on period_end."}},{"name":"period_end","in":"query","schema":{"type":"string","format":"date","description":"Period-time upper bound on period_end."}},{"name":"as_of","in":"query","schema":{"type":"string","format":"date-time","description":"Knowledge-time vintage cutoff; returns latest vintage known on or before this timestamp."}},{"name":"sources","in":"query","schema":{"type":"string","enum":["preferred","all"],"default":"preferred","description":"How to handle a period carried by more than one data provider. 'preferred' (the default) returns one provider per (entity, indicator, frequency, period) — the publisher closest to the measurement — so a series carried by two publishers is not returned twice. 'all' returns every provider's row. A period carried by only one provider is unaffected either way, and this filter is ignored when source_id or provider_id is set."}}],"responses":{"200":{"description":"Public observations changed since a timestamp","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/ListEnvelope"},{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/PublicObservation"}}}}]}}}},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"}}}},"/observations":{"get":{"operationId":"getObservations","summary":"List public observations","parameters":[{"name":"limit","in":"query","schema":{"type":"integer","minimum":1,"maximum":500,"default":100}},{"name":"cursor","in":"query","schema":{"type":"string"}},{"name":"sort","in":"query","schema":{"type":"string"}},{"name":"order","in":"query","schema":{"type":"string","enum":["asc","desc"],"default":"asc"}},{"name":"country","in":"query","schema":{"type":"string"}},{"name":"entity","in":"query","schema":{"type":"string"}},{"name":"entity_id","in":"query","schema":{"type":"string"}},{"name":"indicator_id","in":"query","schema":{"type":"string"}},{"name":"indicatorId","in":"query","schema":{"type":"string"}},{"name":"indicator","in":"query","schema":{"type":"string","description":"Alias of indicator_id, accepting a canonical field name, a storage indicator id, or an indicator slug. A value matching none of those returns an empty result — it is never ignored — and an empty value is rejected with 400."}},{"name":"source_id","in":"query","schema":{"type":"string"}},{"name":"sourceId","in":"query","schema":{"type":"string"}},{"name":"provider_id","in":"query","schema":{"type":"string"}},{"name":"providerId","in":"query","schema":{"type":"string"}},{"name":"provider","in":"query","schema":{"type":"string"}},{"name":"frequency","in":"query","schema":{"type":"string","enum":["daily","weekly","monthly","quarterly","annual","event","static"]}},{"name":"currency","in":"query","schema":{"type":"string"}},{"name":"type","in":"query","schema":{"type":"string","enum":["macro"]}},{"name":"numericOnly","in":"query","schema":{"type":"boolean"}},{"name":"numeric_only","in":"query","schema":{"type":"boolean"}},{"name":"importance","in":"query","schema":{"type":"string","enum":["low","medium","high"]}},{"name":"freshness","in":"query","schema":{"type":"string","enum":["fresh","stale","unknown"],"description":"Filters by the SERIES' current freshness verdict: fresh returns rows of series whose latest print is within its cadence budget now, stale of series whose latest print has aged past it, unknown of series that cannot be assessed. Note the deliberate asymmetry with the per-row freshnessStatus field, which describes each row (a 1950 print of a healthy series computes stale as a row while its series — and therefore this filter — is fresh). Cannot be combined with as_of/since/date filters on latest routes: freshness is evaluated against now, a temporal filter against a past instant."}},{"name":"start_date","in":"query","schema":{"type":"string","format":"date","description":"Knowledge-time lower bound on observed_at."}},{"name":"end_date","in":"query","schema":{"type":"string","format":"date","description":"Knowledge-time upper bound on observed_at."}},{"name":"period","in":"query","schema":{"type":"string","pattern":"^\\d{4}(-(0[1-9]|1[0-2]|[Qq][1-4]))?$","description":"Period-time convenience filter: YYYY, YYYY-MM, or YYYY-Qn."}},{"name":"period_start","in":"query","schema":{"type":"string","format":"date","description":"Period-time lower bound on period_end."}},{"name":"period_end","in":"query","schema":{"type":"string","format":"date","description":"Period-time upper bound on period_end."}},{"name":"as_of","in":"query","schema":{"type":"string","format":"date-time","description":"Knowledge-time vintage cutoff; returns latest vintage known on or before this timestamp."}},{"name":"sources","in":"query","schema":{"type":"string","enum":["preferred","all"],"default":"preferred","description":"How to handle a period carried by more than one data provider. 'preferred' (the default) returns one provider per (entity, indicator, frequency, period) — the publisher closest to the measurement — so a series carried by two publishers is not returned twice. 'all' returns every provider's row. A period carried by only one provider is unaffected either way, and this filter is ignored when source_id or provider_id is set."}},{"name":"latest_only","in":"query","schema":{"type":"boolean","description":"Return only the latest observation per canonical series instead of the full history."}},{"name":"latestOnly","in":"query","schema":{"type":"boolean","description":"camelCase alias of latest_only."}}],"responses":{"200":{"description":"Public normalized observation history using Quantora canonical indicator IDs. History rows deliberately omit previous, revisedPrevious, and previousType; request latest_only=true or use /observations/latest for those latest-projection comparison fields.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/ListEnvelope"},{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/PublicObservation"}}}}]}}}},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"}}}},"/observations/latest":{"get":{"operationId":"getObservationsLatest","summary":"List latest public observations","parameters":[{"name":"limit","in":"query","schema":{"type":"integer","minimum":1,"maximum":500,"default":100}},{"name":"cursor","in":"query","schema":{"type":"string"}},{"name":"sort","in":"query","schema":{"type":"string"}},{"name":"order","in":"query","schema":{"type":"string","enum":["asc","desc"],"default":"asc"}},{"name":"country","in":"query","schema":{"type":"string"}},{"name":"entity","in":"query","schema":{"type":"string"}},{"name":"entity_id","in":"query","schema":{"type":"string"}},{"name":"indicator_id","in":"query","schema":{"type":"string"}},{"name":"indicatorId","in":"query","schema":{"type":"string"}},{"name":"indicator","in":"query","schema":{"type":"string","description":"Alias of indicator_id, accepting a canonical field name, a storage indicator id, or an indicator slug. A value matching none of those returns an empty result — it is never ignored — and an empty value is rejected with 400."}},{"name":"source_id","in":"query","schema":{"type":"string"}},{"name":"sourceId","in":"query","schema":{"type":"string"}},{"name":"provider_id","in":"query","schema":{"type":"string"}},{"name":"providerId","in":"query","schema":{"type":"string"}},{"name":"provider","in":"query","schema":{"type":"string"}},{"name":"frequency","in":"query","schema":{"type":"string","enum":["daily","weekly","monthly","quarterly","annual","event","static"]}},{"name":"currency","in":"query","schema":{"type":"string"}},{"name":"type","in":"query","schema":{"type":"string","enum":["macro"]}},{"name":"numericOnly","in":"query","schema":{"type":"boolean"}},{"name":"numeric_only","in":"query","schema":{"type":"boolean"}},{"name":"importance","in":"query","schema":{"type":"string","enum":["low","medium","high"]}},{"name":"freshness","in":"query","schema":{"type":"string","enum":["fresh","stale","unknown"],"description":"Filters by the SERIES' current freshness verdict: fresh returns rows of series whose latest print is within its cadence budget now, stale of series whose latest print has aged past it, unknown of series that cannot be assessed. Note the deliberate asymmetry with the per-row freshnessStatus field, which describes each row (a 1950 print of a healthy series computes stale as a row while its series — and therefore this filter — is fresh). Cannot be combined with as_of/since/date filters on latest routes: freshness is evaluated against now, a temporal filter against a past instant."}},{"name":"start_date","in":"query","schema":{"type":"string","format":"date","description":"Knowledge-time lower bound on observed_at."}},{"name":"end_date","in":"query","schema":{"type":"string","format":"date","description":"Knowledge-time upper bound on observed_at."}},{"name":"period","in":"query","schema":{"type":"string","pattern":"^\\d{4}(-(0[1-9]|1[0-2]|[Qq][1-4]))?$","description":"Period-time convenience filter: YYYY, YYYY-MM, or YYYY-Qn."}},{"name":"period_start","in":"query","schema":{"type":"string","format":"date","description":"Period-time lower bound on period_end."}},{"name":"period_end","in":"query","schema":{"type":"string","format":"date","description":"Period-time upper bound on period_end."}},{"name":"as_of","in":"query","schema":{"type":"string","format":"date-time","description":"Knowledge-time vintage cutoff; returns latest vintage known on or before this timestamp."}},{"name":"sources","in":"query","schema":{"type":"string","enum":["preferred","all"],"default":"preferred","description":"How to handle a period carried by more than one data provider. 'preferred' (the default) returns one provider per (entity, indicator, frequency, period) — the publisher closest to the measurement — so a series carried by two publishers is not returned twice. 'all' returns every provider's row. A period carried by only one provider is unaffected either way, and this filter is ignored when source_id or provider_id is set."}}],"responses":{"200":{"description":"Latest public normalized macro observations by canonical indicator","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/ListEnvelope"},{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/PublicObservationLatest"}}}}]}}}},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"}}}},"/release-summaries":{"get":{"operationId":"getReleaseSummaries","summary":"List release summaries","parameters":[{"name":"limit","in":"query","schema":{"type":"integer","minimum":1,"maximum":500,"default":100}},{"name":"cursor","in":"query","schema":{"type":"string"}},{"name":"sort","in":"query","schema":{"type":"string"}},{"name":"order","in":"query","schema":{"type":"string","enum":["asc","desc"],"default":"asc"}}],"responses":{"200":{"description":"Two-sentence measurement-only summaries of recent high-importance releases; every number validated against the source observations","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListEnvelope"}}}},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"}}}},"/briefs/{country}":{"get":{"operationId":"getBriefsByCountry","summary":"Get country brief","responses":{"200":{"description":"Latest high-importance readings by category with observation-id citations, plus a measurement-only narrative","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ItemEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"}}}},"/ask":{"post":{"operationId":"postAsk","summary":"Ask a data question","responses":{"200":{"description":"Natural-language question routed to one curated data read; templated answer with observation-id citations. Market-direction questions are refused. Own per-plan rate limit.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ItemEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"}}}},"/screener":{"get":{"operationId":"getScreener","summary":"Screen entities by macro indicator values","parameters":[{"name":"filter","in":"query","schema":{"type":"string","description":"Required. Comma-separated field:operator:value clauses, AND-ed. e.g. cpi_inflation_yoy:gt:3,unemployment_rate:lt:5. Operators: gt, lt, gte, lte, eq, in ('in' takes pipe-separated values). Fields are canonical indicator slugs from /screener/filters."}},{"name":"country","in":"query","schema":{"type":"string","description":"Restrict to a single country (ISO code)."}},{"name":"freshness","in":"query","schema":{"type":"string","enum":["fresh"],"description":"Only consider fresh (non-stale) latest readings."}},{"name":"limit","in":"query","schema":{"type":"integer","minimum":1,"maximum":500,"default":100}},{"name":"cursor","in":"query","schema":{"type":"string","description":"Opaque cursor from meta.pagination.next_cursor; meta.pagination.total reports the full match count."}}],"responses":{"200":{"description":"Countries/entities whose latest canonical-indicator values satisfy all filters. Screens indicator values only — never SOVEREIGN scores.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListEnvelope"}}}},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"}}}},"/screener/filters":{"get":{"operationId":"getScreenerFilters","summary":"List screener filter fields","responses":{"200":{"description":"Available screener fields, operators, and the filter DSL syntax","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ItemEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"}}}},"/equity-screener":{"get":{"operationId":"getEquityScreener","summary":"Screen companies by fundamentals, ratios, sector, and industry","parameters":[{"name":"filter","in":"query","schema":{"type":"string","description":"Required. Comma-separated field:operator:value clauses, AND-ed. e.g. sector:eq:Information Technology,trailing_pe_ratio:lt:25. Numeric operators: gt, lt, gte, lte, eq, in ('in' takes pipe-separated values); string fields (sector, industry) take eq/in with case-insensitive text values. Companies missing a value for a filtered field are excluded by that filter. Fields from /equity-screener/filters."}},{"name":"sort","in":"query","schema":{"type":"string","default":"ticker","description":"Any screenable field, plus ticker and name. Companies missing the sort value sort last."}},{"name":"order","in":"query","schema":{"type":"string","enum":["asc","desc"],"default":"asc"}},{"name":"limit","in":"query","schema":{"type":"integer","minimum":1,"maximum":200,"default":50}},{"name":"cursor","in":"query","schema":{"type":"string","description":"Opaque cursor from meta.pagination.next_cursor. meta.pagination also carries `total`, the full number of matches, so a truncated screen is always visible as such."}}],"responses":{"200":{"description":"Companies in the scored S&P 500 ∪ Nasdaq-100 universe whose sector/industry, market cap, trailing valuation multiples, ratio snapshots, and equity analytics satisfy all filters","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListEnvelope"}}}},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"}}}},"/equity-screener/filters":{"get":{"operationId":"getEquityScreenerFilters","summary":"List equity screener filter fields","responses":{"200":{"description":"Available equity screener fields with per-field types and operators, plus the filter DSL syntax","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ItemEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"}}}},"/coverage":{"get":{"operationId":"getCoverage","summary":"Get coverage summary","responses":{"200":{"description":"Breadth summary: catalog totals, public indicator categories, and covered countries","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ItemEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"}}}},"/rates/{scope}":{"get":{"operationId":"getRatesByScope","summary":"Get sovereign rates analytics","responses":{"200":{"description":"Deterministic rates analytics for one country against its peer set: sovereign spreads per tenor (2y/5y/10y/30y) versus each peer and the peer mean, plus curve slopes (2s10s, 5s30s) within each country. Computed from the latest public government-bond yields already served by this API; tenors with no ingested yield are absent rather than interpolated. Supported scopes are AUS, CAN, CHE, EUR, GBR, JPN, and USA. Other scopes return 404 with the supported scope list. Takes no query parameters.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ItemEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"}}}},"/cross-country/{scope}":{"get":{"operationId":"getCrossCountryByScope","summary":"Get cross-country comparison","responses":{"200":{"description":"How one country's latest macro and rates readings differ from the mean of its peer countries, per comparable metric. Differentials are formed only across unit-comparable series (rates/percent); index-form series such as raw CPI levels are deliberately excluded because differencing index levels across countries is not meaningful. {scope} is a country ISO3 code (e.g. USA). Takes no query parameters.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ItemEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"}}}},"/manifest":{"get":{"operationId":"getManifest","summary":"Get sync manifest","responses":{"200":{"description":"Sync manifest hash, latest run, freshness, and source health","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ItemEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"}}}},"/snapshot":{"get":{"operationId":"getSnapshot","summary":"Get sync snapshot","responses":{"200":{"description":"Public observation snapshot with manifest and source health","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ItemEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"}}}},"/source-health":{"get":{"operationId":"getSourceHealth","summary":"List source health","parameters":[{"name":"limit","in":"query","schema":{"type":"integer","minimum":1,"maximum":500,"default":100}},{"name":"cursor","in":"query","schema":{"type":"string"}},{"name":"sort","in":"query","schema":{"type":"string"}},{"name":"order","in":"query","schema":{"type":"string","enum":["asc","desc"],"default":"asc"}}],"responses":{"200":{"description":"Public source and connector freshness summary","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListEnvelope"}}}},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"}}}},"/provenance/observations/{observationId}":{"get":{"operationId":"getProvenanceObservationsByObservationId","summary":"Get observation provenance","responses":{"200":{"description":"Observation source, raw payload metadata, and ingestion evidence","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ItemEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"}}}},"/platform/macro-data":{"get":{"operationId":"getPlatformMacroData","summary":"List platform macro data","parameters":[{"name":"limit","in":"query","schema":{"type":"integer","minimum":1,"maximum":500,"default":100}},{"name":"cursor","in":"query","schema":{"type":"string"}},{"name":"sort","in":"query","schema":{"type":"string"}},{"name":"order","in":"query","schema":{"type":"string","enum":["asc","desc"],"default":"asc"}}],"responses":{"200":{"description":"Neural Edge-compatible macro rows. The forecast field carries a model-generated statistical baseline (forecastMethod + prediction interval), never vendor/sell-side consensus; it targets the revised series we store, not the first print.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListEnvelope"}}}},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"}}}},"/events":{"get":{"operationId":"getEvents","summary":"List official events","parameters":[{"name":"limit","in":"query","schema":{"type":"integer","minimum":1,"maximum":500,"default":100}},{"name":"cursor","in":"query","schema":{"type":"string"}},{"name":"sort","in":"query","schema":{"type":"string"}},{"name":"order","in":"query","schema":{"type":"string","enum":["asc","desc"],"default":"asc"}},{"name":"country","in":"query","schema":{"type":"string"}},{"name":"entity","in":"query","schema":{"type":"string"}},{"name":"entity_id","in":"query","schema":{"type":"string"}},{"name":"indicator_id","in":"query","schema":{"type":"string"}},{"name":"indicator","in":"query","schema":{"type":"string","description":"Alias of indicator_id, accepting a canonical field name, a storage indicator id, or an indicator slug. A value matching none of those returns an empty result — it is never ignored — and an empty value is rejected with 400."}},{"name":"source_id","in":"query","schema":{"type":"string"}},{"name":"provider_id","in":"query","schema":{"type":"string"}},{"name":"event_class","in":"query","schema":{"type":"string","enum":["macro_release","central_bank","issuer_filing","issuer_disclosure","regulator_notice","corporate_action","other"]}},{"name":"event_type","in":"query","schema":{"type":"string"}},{"name":"status","in":"query","schema":{"type":"string"}},{"name":"exposure","in":"query","schema":{"type":"string"}},{"name":"start_date","in":"query","schema":{"type":"string","format":"date-time"}},{"name":"end_date","in":"query","schema":{"type":"string","format":"date-time"}},{"name":"as_of","in":"query","schema":{"type":"string","format":"date-time"}}],"responses":{"200":{"description":"Unified official event surface across calendars and filing-linked events","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListEnvelope"}}}},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"}}}},"/events/{eventId}":{"get":{"operationId":"getEventsByEventId","summary":"Get official event","responses":{"200":{"description":"Official event","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ItemEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"}}}},"/derived-observations":{"get":{"operationId":"getDerivedObservations","summary":"List derived observations","parameters":[{"name":"limit","in":"query","schema":{"type":"integer","minimum":1,"maximum":500,"default":100}},{"name":"cursor","in":"query","schema":{"type":"string"}},{"name":"sort","in":"query","schema":{"type":"string"}},{"name":"order","in":"query","schema":{"type":"string","enum":["asc","desc"],"default":"asc"}},{"name":"country","in":"query","schema":{"type":"string"}},{"name":"entity","in":"query","schema":{"type":"string"}},{"name":"entity_id","in":"query","schema":{"type":"string"}},{"name":"indicator_id","in":"query","schema":{"type":"string","description":"Derived indicator id or slug. Accepts a comma-separated list."}},{"name":"indicator","in":"query","schema":{"type":"string","description":"Derived indicator id or slug."}},{"name":"source_id","in":"query","schema":{"type":"string"}},{"name":"provider_id","in":"query","schema":{"type":"string"}},{"name":"frequency","in":"query","schema":{"type":"string","enum":["daily","weekly","monthly","quarterly","annual","event","static"]}},{"name":"period","in":"query","schema":{"type":"string"}},{"name":"period_start","in":"query","schema":{"type":"string"}},{"name":"period_end","in":"query","schema":{"type":"string"}},{"name":"start_date","in":"query","schema":{"type":"string","format":"date-time"}},{"name":"end_date","in":"query","schema":{"type":"string","format":"date-time"}},{"name":"as_of","in":"query","schema":{"type":"string","format":"date-time"}},{"name":"sources","in":"query","schema":{"type":"string","enum":["preferred","all"],"default":"preferred","description":"See /observations: 'preferred' returns one provider per (entity, indicator, frequency, period), 'all' returns every provider's row."}}],"responses":{"200":{"description":"Observations of Quantora derived analytics, each carrying its derivedFrom input lineage. Filterable by entity, indicator, and period like /observations","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/ListEnvelope"},{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/DerivedObservation"}}}}]}}}},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"}}}},"/economic-calendar":{"get":{"operationId":"getEconomicCalendar","summary":"List economic calendar events","parameters":[{"name":"limit","in":"query","schema":{"type":"integer","minimum":1,"maximum":500,"default":100}},{"name":"cursor","in":"query","schema":{"type":"string"}},{"name":"sort","in":"query","schema":{"type":"string"}},{"name":"order","in":"query","schema":{"type":"string","enum":["asc","desc"],"default":"asc"}},{"name":"country","in":"query","schema":{"type":"string"}},{"name":"entity","in":"query","schema":{"type":"string"}},{"name":"entity_id","in":"query","schema":{"type":"string"}},{"name":"indicator_id","in":"query","schema":{"type":"string"}},{"name":"indicator","in":"query","schema":{"type":"string","description":"Alias of indicator_id, accepting a canonical field name, a storage indicator id, or an indicator slug. A value matching none of those returns an empty result — it is never ignored — and an empty value is rejected with 400."}},{"name":"source_id","in":"query","schema":{"type":"string"}},{"name":"provider_id","in":"query","schema":{"type":"string"}},{"name":"event_type","in":"query","schema":{"type":"string"}},{"name":"importance","in":"query","schema":{"type":"string","enum":["low","medium","high","unknown"]}},{"name":"status","in":"query","schema":{"type":"string","enum":["scheduled","released","revised","canceled","tentative"]}},{"name":"exposure","in":"query","schema":{"type":"string","enum":["public","internal_only","restricted","blocked"]}},{"name":"start_date","in":"query","schema":{"type":"string","format":"date-time"}},{"name":"end_date","in":"query","schema":{"type":"string","format":"date-time"}},{"name":"as_of","in":"query","schema":{"type":"string","format":"date-time"}}],"responses":{"200":{"description":"Economic calendar events with source rights metadata","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListEnvelope"}}}},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"}}}},"/economic-calendar/{eventId}":{"get":{"operationId":"getEconomicCalendarByEventId","summary":"Get economic calendar event","responses":{"200":{"description":"Economic calendar event","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ItemEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"}}}},"/ingestion-runs":{"get":{"operationId":"getIngestionRuns","summary":"List ingestion runs","parameters":[{"name":"limit","in":"query","schema":{"type":"integer","minimum":1,"maximum":500,"default":100}},{"name":"cursor","in":"query","schema":{"type":"string"}},{"name":"sort","in":"query","schema":{"type":"string"}},{"name":"order","in":"query","schema":{"type":"string","enum":["asc","desc"],"default":"asc"}}],"responses":{"200":{"description":"Ingestion run evidence","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListEnvelope"}}}},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"}}}},"/ingestion-jobs":{"get":{"operationId":"getIngestionJobs","summary":"List ingestion jobs","parameters":[{"name":"limit","in":"query","schema":{"type":"integer","minimum":1,"maximum":500,"default":100}},{"name":"cursor","in":"query","schema":{"type":"string"}},{"name":"sort","in":"query","schema":{"type":"string"}},{"name":"order","in":"query","schema":{"type":"string","enum":["asc","desc"],"default":"asc"}}],"responses":{"200":{"description":"Scheduled ingestion jobs","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListEnvelope"}}}},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"}}}},"/connector-health":{"get":{"operationId":"getConnectorHealth","summary":"List connector health","parameters":[{"name":"limit","in":"query","schema":{"type":"integer","minimum":1,"maximum":500,"default":100}},{"name":"cursor","in":"query","schema":{"type":"string"}},{"name":"sort","in":"query","schema":{"type":"string"}},{"name":"order","in":"query","schema":{"type":"string","enum":["asc","desc"],"default":"asc"}}],"responses":{"200":{"description":"Connector health state","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListEnvelope"}}}},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"}}}},"/quality-issues":{"get":{"operationId":"getQualityIssues","summary":"List quality issues","parameters":[{"name":"limit","in":"query","schema":{"type":"integer","minimum":1,"maximum":500,"default":100}},{"name":"cursor","in":"query","schema":{"type":"string"}},{"name":"sort","in":"query","schema":{"type":"string"}},{"name":"order","in":"query","schema":{"type":"string","enum":["asc","desc"],"default":"asc"}}],"responses":{"200":{"description":"Quality issues","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListEnvelope"}}}},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"}}}},"/api-usage":{"get":{"operationId":"getApiUsage","summary":"List API usage events","parameters":[{"name":"limit","in":"query","schema":{"type":"integer","minimum":1,"maximum":500,"default":100}},{"name":"cursor","in":"query","schema":{"type":"string"}},{"name":"sort","in":"query","schema":{"type":"string"}},{"name":"order","in":"query","schema":{"type":"string","enum":["asc","desc"],"default":"asc"}}],"responses":{"200":{"description":"API usage events","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListEnvelope"}}}},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"}}}},"/operational-events":{"get":{"operationId":"getOperationalEvents","summary":"List structured operational events","parameters":[{"name":"limit","in":"query","schema":{"type":"integer","minimum":1,"maximum":500,"default":100}},{"name":"cursor","in":"query","schema":{"type":"string"}},{"name":"sort","in":"query","schema":{"type":"string"}},{"name":"order","in":"query","schema":{"type":"string","enum":["asc","desc"],"default":"asc"}},{"name":"event_type","in":"query","schema":{"type":"string"}},{"name":"status","in":"query","schema":{"type":"string"}},{"name":"client_id","in":"query","schema":{"type":"string"}},{"name":"connector_id","in":"query","schema":{"type":"string"}},{"name":"source_id","in":"query","schema":{"type":"string"}},{"name":"provider_id","in":"query","schema":{"type":"string"}},{"name":"ingestion_run_id","in":"query","schema":{"type":"string"}}],"responses":{"200":{"description":"Structured operational events","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListEnvelope"}}}},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"}}}},"/ops/summary":{"get":{"operationId":"getOpsSummary","summary":"Get operations summary","responses":{"200":{"description":"Aggregate operational service state","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ItemEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"}}}},"/ops/connectors":{"get":{"operationId":"getOpsConnectors","summary":"Get connector operations summary","responses":{"200":{"description":"Connector operational summary","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ItemEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"}}}},"/ops/jobs":{"get":{"operationId":"getOpsJobs","summary":"Get scheduler jobs operations summary","responses":{"200":{"description":"Scheduler job operational summary","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ItemEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"}}}},"/ops/quality":{"get":{"operationId":"getOpsQuality","summary":"Get quality operations summary","responses":{"200":{"description":"Quality operational summary","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ItemEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"}}}},"/ops/usage":{"get":{"operationId":"getOpsUsage","summary":"Get API usage operations summary","responses":{"200":{"description":"API usage operational summary","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ItemEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"}}}},"/ops/alerts":{"get":{"operationId":"getOpsAlerts","summary":"Get alert policy evaluation","responses":{"200":{"description":"Alert policy evaluation and alert-ready event records","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ItemEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"}}}},"/ops/liveness":{"get":{"operationId":"getOpsLiveness","summary":"Get series liveness report","responses":{"200":{"description":"Per-series liveness and acknowledged upstream stalls","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ItemEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"}}}},"/ops/series-candidates":{"get":{"operationId":"getOpsSeriesCandidates","summary":"Get series replacement candidates","responses":{"200":{"description":"Report-only replacement candidates for stalled hardcoded provider series","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ItemEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"}}}},"/api-clients":{"get":{"operationId":"getApiClients","summary":"List API clients","parameters":[{"name":"limit","in":"query","schema":{"type":"integer","minimum":1,"maximum":500,"default":100}},{"name":"cursor","in":"query","schema":{"type":"string"}},{"name":"sort","in":"query","schema":{"type":"string"}},{"name":"order","in":"query","schema":{"type":"string","enum":["asc","desc"],"default":"asc"}}],"responses":{"200":{"description":"API clients","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListEnvelope"}}}},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"}}}},"/api-keys":{"get":{"operationId":"getApiKeys","summary":"List API key posture records","parameters":[{"name":"limit","in":"query","schema":{"type":"integer","minimum":1,"maximum":500,"default":100}},{"name":"cursor","in":"query","schema":{"type":"string"}},{"name":"sort","in":"query","schema":{"type":"string"}},{"name":"order","in":"query","schema":{"type":"string","enum":["asc","desc"],"default":"asc"}}],"responses":{"200":{"description":"API key posture records","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListEnvelope"}}}},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"}}}},"/raw-payloads":{"get":{"operationId":"getRawPayloads","summary":"List raw payload archive records","parameters":[{"name":"limit","in":"query","schema":{"type":"integer","minimum":1,"maximum":500,"default":100}},{"name":"cursor","in":"query","schema":{"type":"string"}},{"name":"sort","in":"query","schema":{"type":"string"}},{"name":"order","in":"query","schema":{"type":"string","enum":["asc","desc"],"default":"asc"}}],"responses":{"200":{"description":"Raw payload archive records","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListEnvelope"}}}},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"}}}},"/retention-policy":{"get":{"operationId":"getRetentionPolicy","summary":"List retention policy records","parameters":[{"name":"limit","in":"query","schema":{"type":"integer","minimum":1,"maximum":500,"default":100}},{"name":"cursor","in":"query","schema":{"type":"string"}},{"name":"sort","in":"query","schema":{"type":"string"}},{"name":"order","in":"query","schema":{"type":"string","enum":["asc","desc"],"default":"asc"}}],"responses":{"200":{"description":"Retention policy records","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListEnvelope"}}}},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"}}}},"/backup-manifest":{"get":{"operationId":"getBackupManifest","summary":"Get backup manifest","responses":{"200":{"description":"Backup manifest","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ItemEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"}}}},"/quarantine":{"get":{"operationId":"getQuarantine","summary":"List quarantined records","parameters":[{"name":"limit","in":"query","schema":{"type":"integer","minimum":1,"maximum":500,"default":100}},{"name":"cursor","in":"query","schema":{"type":"string"}},{"name":"sort","in":"query","schema":{"type":"string"}},{"name":"order","in":"query","schema":{"type":"string","enum":["asc","desc"],"default":"asc"}}],"responses":{"200":{"description":"Quarantine records","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListEnvelope"}}}},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"}}}},"/rate-limits":{"get":{"operationId":"getRateLimits","summary":"List rate-limit policies","parameters":[{"name":"limit","in":"query","schema":{"type":"integer","minimum":1,"maximum":500,"default":100}},{"name":"cursor","in":"query","schema":{"type":"string"}},{"name":"sort","in":"query","schema":{"type":"string"}},{"name":"order","in":"query","schema":{"type":"string","enum":["asc","desc"],"default":"asc"}}],"responses":{"200":{"description":"Rate-limit policies","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListEnvelope"}}}},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"}}}},"/readiness":{"get":{"operationId":"getReadiness","summary":"Get readiness","responses":{"200":{"description":"Operational readiness","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ItemEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"}}}},"/admin-sessions":{"get":{"operationId":"getAdminSessions","summary":"List admin sessions","parameters":[{"name":"limit","in":"query","schema":{"type":"integer","minimum":1,"maximum":500,"default":100}},{"name":"cursor","in":"query","schema":{"type":"string"}},{"name":"sort","in":"query","schema":{"type":"string"}},{"name":"order","in":"query","schema":{"type":"string","enum":["asc","desc"],"default":"asc"}}],"responses":{"200":{"description":"Admin sessions","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListEnvelope"}}}},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"}}}}}}