{"openapi":"3.1.0","info":{"title":"FX Macrodata API","description":"...","version":"1.0.0"},"paths":{"/v1/ping":{"get":{"tags":["health"],"summary":"Ping the API","description":"Returns a simple OK status to verify the API is running.","operationId":"ping_v1_ping_get","responses":{"200":{"description":"Health-check response confirming API availability.","content":{"application/json":{"schema":{},"example":{"status":"ok","service":"fxmacrodata-api"}}}}}}},"/v1/forex/{base}/{quote}":{"get":{"tags":["fx_markets"],"summary":"Get FX spot rates","description":"Fetches daily FX spot rates between two currencies using official central-bank reference rates.\n\n**Path Parameters:**\n- `base`: Base currency code (e.g., AUD, USD).\n- `quote`: Quote currency code (e.g., USD, EUR).\n\n**Query Parameters:**\n- `start_date`: Optional. Start date YYYY-MM-DD. Defaults to 365 days ago.\n- `end_date`: Optional. End date YYYY-MM-DD. Defaults to today.\n\n- `indicators`: Optional. Comma-separated list of technical indicators to compute from the spot-rate series and include in the response. Pass `all` to include every supported indicator. Supported values: `adx_14`, `atr_14`, `bollinger_bands`, `cci_20`, `donchian_20`, `ema_12`, `ema_20`, `ema_200`, `ema_26`, `ema_50`, `macd`, `macd_histogram`, `macd_signal`, `rsi_14`, `sma_20`, `sma_200`, `sma_50`, `stochastic_14_3`, `williams_r_14`, `all`.\n\n**Daily reference OHLC:**\n- On qualifying dates, `data[]` also includes `open`, `high`, `low`, and `close` built from timestamped eligible reference observations. These are `reference_observation_ohlc` bars, not executable-market candles. Rows without at least four observations omit the OHLC fields.\n\n**FX source and derivation metadata:**\n- FX values are served from FXMacroData's Firestore-backed reference-rate store. Canonical USD quote legs are stored first; inverse and cross pairs can be derived from those legs when a requested direct pair is not stored.\n- Responses include `pair_metadata` and row-level `data[].source` with `direct_available`, `inverse_available`, `is_derived`, `derived_from_inverse`, `derived_from_cross`, `derived_from_source_legs`, `derivation_method`, `anchor_currency`, `source_pair`, `source_legs`, and `pair_consistency_check`.\n- Upstream FX source priority is BIS XRU daily USD exchange rates where available, then official national-bank daily sources, explicitly labelled EUR/CAD-derived daily crosses, official USD pegs, BIS monthly averages expanded to business days, IMF IFS monthly rates, and World Bank annual rates. Lower-frequency expansions are labelled with `source_frequency` and `derivation_method`; they are not presented as true daily fixings.\n- `data[].observation_datetime` is the UTC midnight timestamp for the FX reference date. It is an observation-date marker, not a publication timestamp.","operationId":"forex_v1_forex__base___quote__get","parameters":[{"name":"base","in":"path","required":true,"schema":{"type":"string","description":"Base currency code","examples":["AUD"],"title":"Base","enum":["AUD","BRL","CAD","CHF","CNH","CNY","DKK","EUR","GBP","ILS","JPY","NGN","NOK","NZD","PEN","SEK","THB","USD"],"example":"AUD"},"description":"Required path parameter. Base currency code Allowed values: AUD, BRL, CAD, CHF, CNH, CNY, DKK, EUR, GBP, ILS, JPY, NGN, NOK, NZD, PEN, SEK, THB, USD."},{"name":"quote","in":"path","required":true,"schema":{"type":"string","description":"Quote currency code","examples":["USD"],"title":"Quote","enum":["AUD","BRL","CAD","CHF","CNH","CNY","DKK","EUR","GBP","ILS","JPY","NGN","NOK","NZD","PEN","SEK","THB","USD"],"example":"AUD"},"description":"Required path parameter. Quote currency code Allowed values: AUD, BRL, CAD, CHF, CNH, CNY, DKK, EUR, GBP, ILS, JPY, NGN, NOK, NZD, PEN, SEK, THB, USD."},{"name":"start_date","in":"query","required":false,"schema":{"type":"string","description":"Start date YYYY-MM-DD","examples":["2026-01-01"],"title":"Start Date"},"description":"Optional query parameter. Start date YYYY-MM-DD"},{"name":"end_date","in":"query","required":false,"schema":{"type":"string","description":"End date YYYY-MM-DD","examples":["2026-03-01"],"title":"End Date"},"description":"Optional query parameter. End date YYYY-MM-DD"},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":100,"minimum":1,"description":"Maximum rows to return. Defaults to 20. Maximum 100.","examples":[20],"default":20,"title":"Limit"},"description":"Optional query parameter. Maximum rows to return. Defaults to 20. Maximum 100."},{"name":"offset","in":"query","required":false,"schema":{"type":"integer","minimum":0,"description":"Number of rows to skip after most-recent-first ordering.","examples":[0],"default":0,"title":"Offset"},"description":"Optional query parameter. Number of rows to skip after most-recent-first ordering."},{"name":"page","in":"query","required":false,"schema":{"anyOf":[{"type":"integer","minimum":1},{"type":"null"}],"description":"One-based page number. When supplied, it takes precedence over offset.","examples":[1],"title":"Page"},"description":"Optional query parameter. One-based page number. When supplied, it takes precedence over offset."},{"name":"indicators","in":"query","required":false,"schema":{"type":"string","description":"Comma-separated technical indicators to compute (e.g. sma_20,rsi_14,macd,bollinger_bands). Use 'all' to request every supported indicator.","examples":["sma_20,rsi_14,macd"],"title":"Indicators"},"description":"Optional query parameter. Comma-separated technical indicators to compute (e.g. sma_20,rsi_14,macd,bollinger_bands). Use 'all' to request every supported indicator."},{"name":"api_key","in":"query","required":false,"schema":{"type":"string","description":"Your Professional API key","title":"Api Key"},"description":"Optional query API key. Recommended for public examples and required for non-USD, paid-only, or full-history requests. The API also accepts the X-API-Key header for server-side clients."}],"responses":{"200":{"description":"Daily FX spot-rate series with optional computed technical indicators.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ForexResponse"},"example":{"base":"USD","quote":"JPY","source":"Official central-bank reference rates","provenance":{"publisher":"Official central-bank reference rates","storage":"FXMacroData Firestore","timestamp_field":"date","value_field":"val"},"pair_metadata":{"direct_available":true,"inverse_available":false,"derived_from_inverse":false,"derived_from_cross":false,"derived_from_source_legs":false,"is_derived":false,"derivation_method":"direct_original_pair","source_pair":"USD/JPY","source_legs":[{"pair":"USD/JPY","source_provider":"BIS XRU","source_name":"BIS XRU daily USD exchange rates","source_url":"https://stats.bis.org/api/v2/data/dataflow/BIS/WS_XRU/1.0","source_frequency":"daily"}],"pair_consistency_check":"passed"},"data_quality":{"source_name":"Official central-bank reference rates","source_type":"official","is_derived":false,"datetime_field":"observation_datetime","datetime_precision":"date","source_legs":[{"pair":"USD/JPY","source_provider":"BIS XRU","source_frequency":"daily"}]},"start_date":"2026-06-17","end_date":"2026-06-18","data":[{"date":"2026-06-18","val":161.1288,"observation_datetime":1781740800,"observation_datetime_iso":"2026-06-18T00:00:00Z","observation_datetime_precision":"date","source":{"source_pair":"USD/JPY","source_legs":[{"pair":"USD/JPY","source_provider":"BIS XRU","source_frequency":"daily"}],"is_derived":false,"derivation_method":"direct_original_pair","pair_consistency_check":"passed"}},{"date":"2026-06-17","val":161.1288,"observation_datetime":1781654400,"observation_datetime_iso":"2026-06-17T00:00:00Z","observation_datetime_precision":"date","source":{"source_pair":"USD/JPY","source_legs":[{"pair":"USD/JPY","source_provider":"BIS XRU","source_frequency":"daily"}],"is_derived":false,"derivation_method":"direct_original_pair","pair_consistency_check":"passed"}}],"indicators":{"sma_20":0.6519,"rsi_14":58.42,"macd":{"macd":0.0012,"signal":0.0009,"histogram":0.0003}}}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-parameter-availability":{"base":["AUD","BRL","CAD","CHF","CNH","CNY","DKK","EUR","GBP","ILS","JPY","NGN","NOK","NZD","PEN","SEK","THB","USD"],"quote":["AUD","BRL","CAD","CHF","CNH","CNY","DKK","EUR","GBP","ILS","JPY","NGN","NOK","NZD","PEN","SEK","THB","USD"],"indicators":["adx_14","atr_14","bollinger_bands","cci_20","donchian_20","ema_12","ema_20","ema_200","ema_26","ema_50","macd","macd_histogram","macd_signal","rsi_14","sma_20","sma_200","sma_50","stochastic_14_3","williams_r_14","all"]}}},"/v1/fx/intraday-reference-rates/{base}/{quote}":{"get":{"tags":["fx_markets"],"summary":"Get subscriber intraday FX reference rates","description":"Return subscriber-only timestamped intraday FX reference rates.","operationId":"intraday_reference_rates_v1_fx_intraday_reference_rates__base___quote__get","parameters":[{"name":"base","in":"path","required":true,"schema":{"type":"string","description":"Base currency code","examples":["EUR"],"title":"Base"},"description":"Required path parameter. Base currency code"},{"name":"quote","in":"path","required":true,"schema":{"type":"string","description":"Quote currency code","examples":["USD"],"title":"Quote"},"description":"Required path parameter. Quote currency code"},{"name":"start_time","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"description":"Inclusive RFC 3339 timestamp. Defaults to 24 hours before end_time.","examples":["2026-07-13T00:00:00Z"],"title":"Start Time"},"description":"Optional query parameter. Inclusive RFC 3339 timestamp. Defaults to 24 hours before end_time."},{"name":"end_time","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"description":"Inclusive RFC 3339 source timestamp. Defaults to the current time.","examples":["2026-07-14T00:00:00Z"],"title":"End Time"},"description":"Optional query parameter. Inclusive RFC 3339 source timestamp. Defaults to the current time."},{"name":"api_key","in":"query","required":false,"schema":{"type":"string","description":"Your Professional API key","title":"Api Key"},"description":"Optional query API key. Recommended for public examples and required for non-USD, paid-only, or full-history requests. The API also accepts the X-API-Key header for server-side clients."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/FxIntradayReferenceRatesResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/fx/sources":{"get":{"tags":["fx_markets"],"summary":"List public FX reference-rate sources","operationId":"fx_sources_v1_fx_sources_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/FxSourcesResponse"}}}}}}},"/v1/fx/source-universe":{"get":{"tags":["fx_markets"],"summary":"List public FX reference-rate pair universe","operationId":"fx_source_universe_v1_fx_source_universe_get","parameters":[{"name":"currency","in":"query","required":false,"schema":{"type":"string","description":"Optional currency filter, for example USD.","examples":["USD"],"title":"Currency"},"description":"Optional query parameter. Optional currency filter, for example USD."},{"name":"source","in":"query","required":false,"schema":{"type":"string","description":"Optional source id filter, for example ecb_eurofxref_daily.","title":"Source"},"description":"Optional query parameter. Optional source id filter, for example ecb_eurofxref_daily."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/FxSourceUniverseResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/data_catalogue/{currency}":{"get":{"tags":["data_catalogue"],"summary":"Get Currently Available Macroeconomic Indicators","description":"Returns the currently available macroeconomic indicators for a specific currency.\n\n    Availability is determined from the Firestore-backed product store rather than\n    the static indicator registry alone, so temporarily unavailable series are\n    excluded until live data is available again. The catalogue is refreshed on a\n    regular schedule.\n\n    This route also replaces the deprecated `/v1/capabilities` and\n    `/v1/coverage_matrix` endpoints. Coverage is included directly on each\n    catalogue entry. To also include the legacy top-level coverage list, call it\n    with `include_coverage=true`. To include capability metadata, call it with\n    `include_capabilities=true`.\n\n    Each entry includes:\n    * **name**: The full descriptive name of the metric.\n    * **unit**: The unit of measurement (e.g., %YoY, Billions of USD).\n    * **frequency**: How often the data is updated (Daily, Monthly, Quarterly).\n    * **source** / **source_url**: The publisher or source family used for the stored series, when available.\n    * **source_series_id** / **source_series_name**: The upstream source identifier and exact source-series label, when available.\n    * **seasonal_adjustment**: Seasonal basis (`SA`, `NSA`, `UNKNOWN`, or `NOT_APPLICABLE`).\n    * **price_basis**: GDP/level price basis (`REAL`, `NOMINAL`, or `UNKNOWN`) when applicable.\n    * **aliases** / **related_indicators**: Optional flat discovery metadata for common alternative names and adjacent indicators.\n    * **standardization_note**: Optional note explaining sign, unit, scope, or cross-currency comparability choices.\n    * **has_official_forecast**: Whether the relevant central bank or statistics agency publishes a preliminary, flash, or advance estimate of this indicator before the main/final data release.\n    * **coverage**: Earliest/latest stored dates, row count, recency status, and coverage quality for that indicator.","operationId":"get_data_catalogue_v1_data_catalogue__currency__get","parameters":[{"name":"currency","in":"path","required":true,"schema":{"type":"string","description":"The 3-letter currency code (e.g., USD, AUD, EUR, GBP, CHF)","examples":["USD"],"title":"Currency","enum":["AUD","BRL","CAD","CHF","CNH","CNY","DKK","EUR","GBP","ILS","JPY","NGN","NOK","NZD","PEN","SEK","THB","USD"],"example":"AUD"},"description":"Required path parameter. The 3-letter currency code (e.g., USD, AUD, EUR, GBP, CHF) Allowed values: AUD, BRL, CAD, CHF, CNH, CNY, DKK, EUR, GBP, ILS, JPY, NGN, NOK, NZD, PEN, SEK, THB, USD."},{"name":"include_capabilities","in":"query","required":false,"schema":{"type":"boolean","description":"Include currency-scoped endpoint/auth metadata that replaces the deprecated /v1/capabilities response.","default":false,"title":"Include Capabilities"},"description":"Optional query parameter. Include currency-scoped endpoint/auth metadata that replaces the deprecated /v1/capabilities response."},{"name":"include_coverage","in":"query","required":false,"schema":{"type":"boolean","description":"Also include the legacy currency-scoped coverage list that replaces the deprecated /v1/coverage_matrix response. Per-indicator coverage is included in catalogue entries by default.","default":false,"title":"Include Coverage"},"description":"Optional query parameter. Also include the legacy currency-scoped coverage list that replaces the deprecated /v1/coverage_matrix response. Per-indicator coverage is included in catalogue entries by default."},{"name":"indicator","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Optional indicator filter when include_coverage=true.","examples":["inflation"],"title":"Indicator","enum":["average_hourly_earnings","average_hourly_earnings_mom","balance_on_goods","balance_on_services","breakeven_inflation_rate","building_approvals","building_permits","business_confidence","capital_account_balance","cb_assets","commodity_price_energy","commodity_price_ex_energy","commodity_price_index","commodity_prices","consumer_confidence","core_inflation","core_inflation_median","core_inflation_mom","core_inflation_trim","core_pce","core_pce_mom","credit_growth","crude_oil_inventories","current_account_balance","dairy_exports","deposit_rates","durable_goods_orders","employment","exports","financial_account_balance","foreign_reserves","full_time_employment","gdp","gdp_growth_q4_yoy","gdp_growth_qoq_saar","gdp_quarterly","gold_reserves","gov_bond_10y","gov_bond_1y","gov_bond_20y","gov_bond_2y","gov_bond_30y","gov_bond_3y","gov_bond_40y","gov_bond_4y","gov_bond_5y","gov_bond_7y","government_debt","house_price_index","household_credit","housing_starts","imports","inflation","inflation_linked_bond","inflation_mom","initial_jobless_claims","international_assets","international_liabilities","job_openings","m1","m2","m3","monthly_cpi","nairu","natural_gas_storage","net_foreign_asset_position","non_farm_payrolls","non_farm_payrolls_change","part_time_employment","participation_rate","pce","pce_mom","policy_rate","policy_rate_midpoint","policy_rate_mlf","policy_rate_mro","policy_rate_target_lower","ppi","ppi_mom","primary_income_balance","retail_sales","retail_sales_control_group","retail_sales_ex_autos","retail_sales_ex_autos_and_gas","risk_free_rate","secondary_income_balance","sight_deposits","terms_of_trade","trade_balance","trade_weighted_index","trimmed_mean_inflation","unemployment","wage_price_index","wages"],"example":"average_hourly_earnings"},"description":"Optional query parameter. Optional indicator filter when include_coverage=true. Allowed values: average_hourly_earnings, average_hourly_earnings_mom, balance_on_goods, balance_on_services, breakeven_inflation_rate, building_approvals, building_permits, business_confidence, capital_account_balance, cb_assets, commodity_price_energy, commodity_price_ex_energy, commodity_price_index, commodity_prices, consumer_confidence, core_inflation, core_inflation_median, core_inflation_mom, core_inflation_trim, core_pce, core_pce_mom, credit_growth, crude_oil_inventories, current_account_balance, dairy_exports, deposit_rates, durable_goods_orders, employment, exports, financial_account_balance, foreign_reserves, full_time_employment, gdp, gdp_growth_q4_yoy, gdp_growth_qoq_saar, gdp_quarterly, gold_reserves, gov_bond_10y, gov_bond_1y, gov_bond_20y, gov_bond_2y, gov_bond_30y, gov_bond_3y, gov_bond_40y, gov_bond_4y, gov_bond_5y, gov_bond_7y, government_debt, house_price_index, household_credit, housing_starts, imports, inflation, inflation_linked_bond, inflation_mom, initial_jobless_claims, international_assets, international_liabilities, job_openings, m1, m2, m3, monthly_cpi, nairu, natural_gas_storage, net_foreign_asset_position, non_farm_payrolls, non_farm_payrolls_change, part_time_employment, participation_rate, pce, pce_mom, policy_rate, policy_rate_midpoint, policy_rate_mlf, policy_rate_mro, policy_rate_target_lower, ppi, ppi_mom, primary_income_balance, retail_sales, retail_sales_control_group, retail_sales_ex_autos, retail_sales_ex_autos_and_gas, risk_free_rate, secondary_income_balance, sight_deposits, terms_of_trade, trade_balance, trade_weighted_index, trimmed_mean_inflation, unemployment, wage_price_index, wages."}],"responses":{"200":{"description":"Indicator metadata keyed by indicator slug, with optional capability and coverage metadata.","content":{"application/json":{"schema":{},"example":{"gdp":{"name":"GDP","unit":"%QoQ","frequency":"Quarterly","has_official_forecast":true},"inflation":{"name":"Inflation (CPI)","unit":"%YoY","frequency":"Monthly","has_official_forecast":false},"unemployment":{"name":"Unemployment Rate","unit":"%","frequency":"Monthly","has_official_forecast":false},"policy_rate":{"name":"Policy Interest Rate","unit":"%","frequency":"Daily","has_official_forecast":false},"gov_bond_10y":{"name":"10-Year Government Bond Yield","unit":"%","frequency":"Daily","has_official_forecast":false}}}}},"404":{"description":"Currency not found.","content":{"application/json":{"example":{"detail":"Currency 'XYZ' not found."}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-parameter-availability":{"currency":["AUD","BRL","CAD","CHF","CNH","CNY","DKK","EUR","GBP","ILS","JPY","NGN","NOK","NZD","PEN","SEK","THB","USD"],"indicator":["average_hourly_earnings","average_hourly_earnings_mom","balance_on_goods","balance_on_services","breakeven_inflation_rate","building_approvals","building_permits","business_confidence","capital_account_balance","cb_assets","commodity_price_energy","commodity_price_ex_energy","commodity_price_index","commodity_prices","consumer_confidence","core_inflation","core_inflation_median","core_inflation_mom","core_inflation_trim","core_pce","core_pce_mom","credit_growth","crude_oil_inventories","current_account_balance","dairy_exports","deposit_rates","durable_goods_orders","employment","exports","financial_account_balance","foreign_reserves","full_time_employment","gdp","gdp_growth_q4_yoy","gdp_growth_qoq_saar","gdp_quarterly","gold_reserves","gov_bond_10y","gov_bond_1y","gov_bond_20y","gov_bond_2y","gov_bond_30y","gov_bond_3y","gov_bond_40y","gov_bond_4y","gov_bond_5y","gov_bond_7y","government_debt","house_price_index","household_credit","housing_starts","imports","inflation","inflation_linked_bond","inflation_mom","initial_jobless_claims","international_assets","international_liabilities","job_openings","m1","m2","m3","monthly_cpi","nairu","natural_gas_storage","net_foreign_asset_position","non_farm_payrolls","non_farm_payrolls_change","part_time_employment","participation_rate","pce","pce_mom","policy_rate","policy_rate_midpoint","policy_rate_mlf","policy_rate_mro","policy_rate_target_lower","ppi","ppi_mom","primary_income_balance","retail_sales","retail_sales_control_group","retail_sales_ex_autos","retail_sales_ex_autos_and_gas","risk_free_rate","secondary_income_balance","sight_deposits","terms_of_trade","trade_balance","trade_weighted_index","trimmed_mean_inflation","unemployment","wage_price_index","wages"]}}},"/v1/calendar/{currency}":{"get":{"tags":["calendar"],"summary":"Get upcoming economic data release dates","description":"Returns upcoming economic data release dates for a given currency.\n\nRows are served from Firestore-first calendar documents. Announcement rows keep the existing `release` slug mapping to `/v1/announcements/{currency}/{indicator}`, while other domains such as COT may also include additive fields like `domain`, `endpoint_family`, and `endpoint_path`.\n\n**Path Parameters:**\n- `currency`: The 3-letter currency code (e.g., USD).\n\n**Query Parameters:**\n- `indicator`: Optional. Filter to a specific indicator (e.g., gdp, inflation, unemployment, non_farm_payrolls).\n\n- `start_date`: Optional inclusive lower bound, YYYY-MM-DD.\n- `end_date`: Optional inclusive upper bound, YYYY-MM-DD.\n\n**Returns:** List of release rows sorted by announcement time ascending (nearest scheduled release first). Core fields remain `announcement_datetime` and `release`; additive routing metadata may also be present.","operationId":"get_release_calendar_v1_calendar__currency__get","parameters":[{"name":"currency","in":"path","required":true,"schema":{"type":"string","title":"Currency","enum":["AED","ARS","AUD","BOB","BRL","CAD","CHF","CLP","CNH","CNY","COMM","COP","CZK","DKK","DZD","EGP","EUR","GBP","HKD","HUF","IDR","ILS","INR","JPY","KRW","MAD","MXN","MYR","NGN","NOK","NZD","PEN","PHP","PKR","PLN","RUB","SAR","SEK","SGD","THB","TRY","TWD","USD","UYU","VND","ZAR"],"example":"AED"},"description":"Required path parameter. Allowed values: AED, ARS, AUD, BOB, BRL, CAD, CHF, CLP, CNH, CNY, COMM, COP, CZK, DKK, DZD, EGP, EUR, GBP, HKD, HUF, IDR, ILS, INR, JPY, KRW, MAD, MXN, MYR, NGN, NOK, NZD, PEN, PHP, PKR, PLN, RUB, SAR, SEK, SGD, THB, TRY, TWD, USD, UYU, VND, ZAR."},{"name":"indicator","in":"query","required":false,"schema":{"type":"string","description":"Filter by indicator name (e.g., gdp, inflation, unemployment)","examples":["inflation"],"title":"Indicator","enum":["average_hourly_earnings","average_hourly_earnings_mom","balance_on_goods","balance_on_services","breakeven_inflation_rate","building_approvals","building_permits","business_confidence","capital_account_balance","cb_assets","commodity_price_energy","commodity_price_ex_energy","commodity_price_index","commodity_prices","consumer_confidence","core_inflation","core_inflation_median","core_inflation_mom","core_inflation_trim","core_pce","core_pce_mom","credit_growth","crude_oil_inventories","current_account_balance","dairy_exports","deposit_rates","durable_goods_orders","employment","exports","financial_account_balance","foreign_reserves","full_time_employment","gdp","gdp_growth_q4_yoy","gdp_growth_qoq_saar","gdp_quarterly","gold_reserves","gov_bond_10y","gov_bond_1y","gov_bond_20y","gov_bond_2y","gov_bond_30y","gov_bond_3y","gov_bond_40y","gov_bond_4y","gov_bond_5y","gov_bond_7y","government_debt","house_price_index","household_credit","housing_starts","imports","inflation","inflation_linked_bond","inflation_mom","initial_jobless_claims","international_assets","international_liabilities","job_openings","m1","m2","m3","monthly_cpi","nairu","natural_gas_storage","net_foreign_asset_position","non_farm_payrolls","non_farm_payrolls_change","part_time_employment","participation_rate","pce","pce_mom","policy_rate","policy_rate_midpoint","policy_rate_mlf","policy_rate_mro","policy_rate_target_lower","ppi","ppi_mom","primary_income_balance","retail_sales","retail_sales_control_group","retail_sales_ex_autos","retail_sales_ex_autos_and_gas","risk_free_rate","secondary_income_balance","sight_deposits","terms_of_trade","trade_balance","trade_weighted_index","trimmed_mean_inflation","unemployment","wage_price_index","wages"],"example":"average_hourly_earnings"},"description":"Optional query parameter. Filter by indicator name (e.g., gdp, inflation, unemployment) Allowed values: average_hourly_earnings, average_hourly_earnings_mom, balance_on_goods, balance_on_services, breakeven_inflation_rate, building_approvals, building_permits, business_confidence, capital_account_balance, cb_assets, commodity_price_energy, commodity_price_ex_energy, commodity_price_index, commodity_prices, consumer_confidence, core_inflation, core_inflation_median, core_inflation_mom, core_inflation_trim, core_pce, core_pce_mom, credit_growth, crude_oil_inventories, current_account_balance, dairy_exports, deposit_rates, durable_goods_orders, employment, exports, financial_account_balance, foreign_reserves, full_time_employment, gdp, gdp_growth_q4_yoy, gdp_growth_qoq_saar, gdp_quarterly, gold_reserves, gov_bond_10y, gov_bond_1y, gov_bond_20y, gov_bond_2y, gov_bond_30y, gov_bond_3y, gov_bond_40y, gov_bond_4y, gov_bond_5y, gov_bond_7y, government_debt, house_price_index, household_credit, housing_starts, imports, inflation, inflation_linked_bond, inflation_mom, initial_jobless_claims, international_assets, international_liabilities, job_openings, m1, m2, m3, monthly_cpi, nairu, natural_gas_storage, net_foreign_asset_position, non_farm_payrolls, non_farm_payrolls_change, part_time_employment, participation_rate, pce, pce_mom, policy_rate, policy_rate_midpoint, policy_rate_mlf, policy_rate_mro, policy_rate_target_lower, ppi, ppi_mom, primary_income_balance, retail_sales, retail_sales_control_group, retail_sales_ex_autos, retail_sales_ex_autos_and_gas, risk_free_rate, secondary_income_balance, sight_deposits, terms_of_trade, trade_balance, trade_weighted_index, trimmed_mean_inflation, unemployment, wage_price_index, wages."},{"name":"start_date","in":"query","required":false,"schema":{"type":"string","description":"Optional inclusive lower bound in YYYY-MM-DD format.","examples":["2026-06-01"],"title":"Start Date"},"description":"Optional query parameter. Optional inclusive lower bound in YYYY-MM-DD format."},{"name":"end_date","in":"query","required":false,"schema":{"type":"string","description":"Optional inclusive upper bound in YYYY-MM-DD format.","examples":["2026-06-30"],"title":"End Date"},"description":"Optional query parameter. Optional inclusive upper bound in YYYY-MM-DD format."},{"name":"timezone","in":"query","required":false,"schema":{"type":"string","description":"Optional IANA timezone for an additional converted timestamp field, for example America/Sao_Paulo.","examples":["America/Sao_Paulo"],"title":"Timezone"},"description":"Optional query parameter. Optional IANA timezone for an additional converted timestamp field, for example America/Sao_Paulo."},{"name":"api_key","in":"query","required":false,"schema":{"type":"string","description":"Your Professional API key","title":"Api Key"},"description":"Optional query API key. Recommended for public examples and required for non-USD, paid-only, or full-history requests. The API also accepts the X-API-Key header for server-side clients."}],"responses":{"200":{"description":"Upcoming release dates for the selected currency and optional indicator filter.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CalendarResponse"},"example":{"currency":"USD","timezone":"America/New_York","indicator":"inflation","data":[{"announcement_datetime":1773077400,"announcement_datetime_local":"2026-03-11T08:30:00-04:00","release":"inflation"},{"announcement_datetime":1773682200,"announcement_datetime_local":"2026-03-18T08:30:00-04:00","release":"non_farm_payrolls"}]}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-parameter-availability":{"currency":["AED","ARS","AUD","BOB","BRL","CAD","CHF","CLP","CNH","CNY","COMM","COP","CZK","DKK","DZD","EGP","EUR","GBP","HKD","HUF","IDR","ILS","INR","JPY","KRW","MAD","MXN","MYR","NGN","NOK","NZD","PEN","PHP","PKR","PLN","RUB","SAR","SEK","SGD","THB","TRY","TWD","USD","UYU","VND","ZAR"],"indicator":["average_hourly_earnings","average_hourly_earnings_mom","balance_on_goods","balance_on_services","breakeven_inflation_rate","building_approvals","building_permits","business_confidence","capital_account_balance","cb_assets","commodity_price_energy","commodity_price_ex_energy","commodity_price_index","commodity_prices","consumer_confidence","core_inflation","core_inflation_median","core_inflation_mom","core_inflation_trim","core_pce","core_pce_mom","credit_growth","crude_oil_inventories","current_account_balance","dairy_exports","deposit_rates","durable_goods_orders","employment","exports","financial_account_balance","foreign_reserves","full_time_employment","gdp","gdp_growth_q4_yoy","gdp_growth_qoq_saar","gdp_quarterly","gold_reserves","gov_bond_10y","gov_bond_1y","gov_bond_20y","gov_bond_2y","gov_bond_30y","gov_bond_3y","gov_bond_40y","gov_bond_4y","gov_bond_5y","gov_bond_7y","government_debt","house_price_index","household_credit","housing_starts","imports","inflation","inflation_linked_bond","inflation_mom","initial_jobless_claims","international_assets","international_liabilities","job_openings","m1","m2","m3","monthly_cpi","nairu","natural_gas_storage","net_foreign_asset_position","non_farm_payrolls","non_farm_payrolls_change","part_time_employment","participation_rate","pce","pce_mom","policy_rate","policy_rate_midpoint","policy_rate_mlf","policy_rate_mro","policy_rate_target_lower","ppi","ppi_mom","primary_income_balance","retail_sales","retail_sales_control_group","retail_sales_ex_autos","retail_sales_ex_autos_and_gas","risk_free_rate","secondary_income_balance","sight_deposits","terms_of_trade","trade_balance","trade_weighted_index","trimmed_mean_inflation","unemployment","wage_price_index","wages"]}}},"/v1/market_sessions":{"get":{"tags":["fx_markets"],"summary":"FX market session timetable","description":"Returns a real-time snapshot of the four major FX trading sessions (Sydney, Tokyo, London, New York) and their overlap windows.\n\nEach session entry shows today's open and close times in UTC, whether the session is currently open, and seconds until it opens or closes.\n\nOverlap windows highlight the highest-liquidity trading periods — in particular the **London / New York** overlap (~13:00–17:00 UTC in winter), which sees the largest volume and tightest spreads on major USD pairs.\n\n**Query Parameters:**\n- `at`: Optional ISO-8601 UTC timestamp (e.g. `2026-03-05T12:00:00Z`). Defaults to the current server time. Useful for scheduling or back-testing decisions.\n\n**No authentication required.**","operationId":"get_market_sessions_v1_market_sessions_get","parameters":[{"name":"at","in":"query","required":false,"schema":{"type":"string","description":"Optional ISO-8601 UTC timestamp (e.g. 2026-03-05T12:00:00Z)","examples":["2026-03-05T12:00:00Z"],"title":"At"},"description":"Optional query parameter. Optional ISO-8601 UTC timestamp (e.g. 2026-03-05T12:00:00Z)"}],"responses":{"200":{"description":"Session snapshot including open/close state and overlap windows.","content":{"application/json":{"schema":{},"example":{"now_utc":"2026-03-05T12:00:00Z","now_unix":1741176000,"is_market_day":true,"sessions":[{"name":"Sydney","display_name":"Sydney (Australia / New Zealand)","description":"First major session to open after the weekend.","currencies":["AUD","NZD"],"timezone":"Australia/Sydney","open_utc":"2026-03-04T23:00:00Z","close_utc":"2026-03-05T08:00:00Z","open_unix":1741129200,"close_unix":1741161600,"is_open":false},{"name":"London","display_name":"London (United Kingdom / Europe)","description":"Largest FX session by volume.","currencies":["GBP","EUR","CHF"],"timezone":"Europe/London","open_utc":"2026-03-05T08:00:00Z","close_utc":"2026-03-05T17:00:00Z","open_unix":1741161600,"close_unix":1741194000,"is_open":true,"seconds_to_close":18000}],"overlaps":[{"name":"London / New York","sessions":["London","New York"],"description":"Most active window of the trading day.","priority":"high","notable_pairs":["EUR/USD","GBP/USD","USD/CHF","USD/CAD"],"start_utc":"2026-03-05T13:00:00Z","end_utc":"2026-03-05T17:00:00Z","start_unix":1741179600,"end_unix":1741194000,"is_active":false,"seconds_to_start":3600,"duration_hours":4.0}]}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/rate_differentials/{base}/{quote}":{"get":{"tags":["fx_markets"],"summary":"Get pair rate differentials","description":"Returns a store-backed historical differential between the base and quote currency using a shared rate measure. The endpoint aligns the two legs by date intersection and reports the spread in both percentage points and basis points.\n\n**Measures:**\n- Supported values: `auto`, `risk_free_rate`, `gov_bond_2y`, `gov_bond_10y`, `policy_rate`.\n- `auto` prefers `risk_free_rate`, then `gov_bond_2y`, then `policy_rate`.\n\n**Rate Types:**\n- Supported values: `spot`, `forward`.\n- `spot` compares the selected shared stored rate measure.\n- `forward` derives each leg from stored curve nodes, then aligns dates.\n\n**Authentication:**\n- Requires a Professional API key via `?api_key=<key>` or `X-API-Key`.","operationId":"get_rate_differentials_v1_rate_differentials__base___quote__get","parameters":[{"name":"base","in":"path","required":true,"schema":{"type":"string","description":"Base currency code","examples":["AUD"],"title":"Base","enum":["AUD","BRL","CAD","CHF","CNH","CNY","DKK","EUR","GBP","ILS","JPY","NGN","NOK","NZD","PEN","SEK","THB","USD"],"example":"AUD"},"description":"Required path parameter. Base currency code Allowed values: AUD, BRL, CAD, CHF, CNH, CNY, DKK, EUR, GBP, ILS, JPY, NGN, NOK, NZD, PEN, SEK, THB, USD."},{"name":"quote","in":"path","required":true,"schema":{"type":"string","description":"Quote currency code","examples":["USD"],"title":"Quote","enum":["AUD","BRL","CAD","CHF","CNH","CNY","DKK","EUR","GBP","ILS","JPY","NGN","NOK","NZD","PEN","SEK","THB","USD"],"example":"AUD"},"description":"Required path parameter. Quote currency code Allowed values: AUD, BRL, CAD, CHF, CNH, CNY, DKK, EUR, GBP, ILS, JPY, NGN, NOK, NZD, PEN, SEK, THB, USD."},{"name":"measure","in":"query","required":false,"schema":{"type":"string","description":"Shared rate measure to compare across the pair.","examples":["auto","risk_free_rate","gov_bond_2y"],"default":"auto","title":"Measure","enum":["auto","risk_free_rate","gov_bond_2y","gov_bond_10y","policy_rate"],"example":"auto"},"description":"Optional query parameter. Shared rate measure to compare across the pair. Allowed values: auto, risk_free_rate, gov_bond_2y, gov_bond_10y, policy_rate."},{"name":"rate_type","in":"query","required":false,"schema":{"type":"string","description":"Differential type: spot for shared stored rate measures, forward for derived curve segments.","examples":["spot","forward"],"default":"spot","title":"Rate Type","enum":["spot","forward"],"example":"spot"},"description":"Optional query parameter. Differential type: spot for shared stored rate measures, forward for derived curve segments. Allowed values: spot, forward."},{"name":"curve_family","in":"query","required":false,"schema":{"type":"string","description":"Curve family used when rate_type=forward.","examples":["government_nominal"],"default":"government_nominal","title":"Curve Family","enum":["government_nominal"],"example":"government_nominal"},"description":"Optional query parameter. Curve family used when rate_type=forward. Allowed values: government_nominal."},{"name":"start_tenor_years","in":"query","required":false,"schema":{"type":"number","description":"Start tenor in years when rate_type=forward.","examples":[2.0],"default":2.0,"title":"Start Tenor Years"},"description":"Optional query parameter. Start tenor in years when rate_type=forward."},{"name":"end_tenor_years","in":"query","required":false,"schema":{"type":"number","description":"End tenor in years when rate_type=forward.","examples":[5.0],"default":5.0,"title":"End Tenor Years"},"description":"Optional query parameter. End tenor in years when rate_type=forward."},{"name":"start_date","in":"query","required":false,"schema":{"type":"string","description":"Inclusive start date YYYY-MM-DD. Defaults to 365 days ago.","examples":["2026-01-01"],"title":"Start Date"},"description":"Optional query parameter. Inclusive start date YYYY-MM-DD. Defaults to 365 days ago."},{"name":"end_date","in":"query","required":false,"schema":{"type":"string","description":"Inclusive end date YYYY-MM-DD. Defaults to today.","examples":["2026-06-01"],"title":"End Date"},"description":"Optional query parameter. Inclusive end date YYYY-MM-DD. Defaults to today."},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":100,"minimum":1,"description":"Maximum rows to return. Defaults to 20. Maximum 100.","default":20,"title":"Limit"},"description":"Optional query parameter. Maximum rows to return. Defaults to 20. Maximum 100."},{"name":"offset","in":"query","required":false,"schema":{"type":"integer","minimum":0,"description":"Number of rows to skip after most-recent-first ordering.","default":0,"title":"Offset"},"description":"Optional query parameter. Number of rows to skip after most-recent-first ordering."},{"name":"api_key","in":"query","required":false,"schema":{"type":"string","description":"Your Professional API key","title":"Api Key"},"description":"Optional query API key. Recommended for public examples and required for non-USD, paid-only, or full-history requests. The API also accepts the X-API-Key header for server-side clients."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RateDifferentialResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-parameter-availability":{"base":["AUD","BRL","CAD","CHF","CNH","CNY","DKK","EUR","GBP","ILS","JPY","NGN","NOK","NZD","PEN","SEK","THB","USD"],"quote":["AUD","BRL","CAD","CHF","CNH","CNY","DKK","EUR","GBP","ILS","JPY","NGN","NOK","NZD","PEN","SEK","THB","USD"],"measure":["auto","risk_free_rate","gov_bond_2y","gov_bond_10y","policy_rate"],"rate_type":["spot","forward"],"curve_family":["government_nominal"]}}},"/v1/curves/{currency}":{"get":{"tags":["fx_markets"],"summary":"Get curve analytics by currency","description":"Returns a currency-level curve view from stored official-source government bond tenor nodes. Use `view=nodes` for raw node snapshots, `view=slopes` for curve-slope and inversion analytics, or `view=forwards` for derived forward-rate segments.\n\n**Curve Families:**\n- Supported values: `government_nominal`.\n\n**Metrics:**\n- Supported values: `spot`.\n\n**Views:**\n- Supported values: `nodes`, `slopes`, `forwards`.\n\n**Authentication:**\n- Requires a Professional API key via `?api_key=<key>` or `X-API-Key`.","operationId":"get_curve_snapshot_v1_curves__currency__get","parameters":[{"name":"currency","in":"path","required":true,"schema":{"type":"string","description":"Currency code","examples":["GBP"],"title":"Currency","enum":["ARS","AUD","BRL","CAD","CHF","CNH","CNY","CZK","DKK","EUR","GBP","HKD","HUF","IDR","ILS","INR","ISK","JPY","MXN","MYR","NGN","NOK","NZD","PEN","PLN","SEK","SGD","THB","TRY","USD","XOF","ZAR"],"example":"ARS"},"description":"Required path parameter. Currency code Allowed values: ARS, AUD, BRL, CAD, CHF, CNH, CNY, CZK, DKK, EUR, GBP, HKD, HUF, IDR, ILS, INR, ISK, JPY, MXN, MYR, NGN, NOK, NZD, PEN, PLN, SEK, SGD, THB, TRY, USD, XOF, ZAR."},{"name":"curve_family","in":"query","required":false,"schema":{"type":"string","description":"Official curve family to return.","examples":["government_nominal"],"default":"government_nominal","title":"Curve Family","enum":["government_nominal"],"example":"government_nominal"},"description":"Optional query parameter. Official curve family to return. Allowed values: government_nominal."},{"name":"metric","in":"query","required":false,"schema":{"type":"string","description":"Curve metric to return.","examples":["spot"],"default":"spot","title":"Metric","enum":["spot"],"example":"spot"},"description":"Optional query parameter. Curve metric to return. Allowed values: spot."},{"name":"view","in":"query","required":false,"schema":{"type":"string","description":"Curve view to return: nodes, slopes, or forwards.","examples":["nodes","slopes","forwards"],"default":"nodes","title":"View","enum":["nodes","slopes","forwards"],"example":"nodes"},"description":"Optional query parameter. Curve view to return: nodes, slopes, or forwards. Allowed values: nodes, slopes, forwards."},{"name":"method","in":"query","required":false,"schema":{"type":"string","description":"Forward derivation method used when view=forwards.","examples":["derived_from_spot_nodes"],"default":"derived_from_spot_nodes","title":"Method","enum":["derived_from_spot_nodes"],"example":"derived_from_spot_nodes"},"description":"Optional query parameter. Forward derivation method used when view=forwards. Allowed values: derived_from_spot_nodes."},{"name":"date","in":"query","required":false,"schema":{"type":"string","description":"Optional target date YYYY-MM-DD. The endpoint returns the latest stored node per maturity up to this date, using a recent lookback window.","examples":["2026-06-01"],"title":"Date"},"description":"Optional query parameter. Optional target date YYYY-MM-DD. The endpoint returns the latest stored node per maturity up to this date, using a recent lookback window."},{"name":"api_key","in":"query","required":false,"schema":{"type":"string","description":"Your Professional API key","title":"Api Key"},"description":"Optional query API key. Recommended for public examples and required for non-USD, paid-only, or full-history requests. The API also accepts the X-API-Key header for server-side clients."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CurveAnalyticsResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-parameter-availability":{"currency":["ARS","AUD","BRL","CAD","CHF","CNH","CNY","CZK","DKK","EUR","GBP","HKD","HUF","IDR","ILS","INR","ISK","JPY","MXN","MYR","NGN","NOK","NZD","PEN","PLN","SEK","SGD","THB","TRY","USD","XOF","ZAR"],"curve_family":["government_nominal"],"metric":["spot"],"view":["nodes","slopes","forwards"],"method":["derived_from_spot_nodes"]}}},"/v1/press-releases/{currency}":{"get":{"tags":["press_releases"],"summary":"Recent central bank press releases","description":"Returns recent press releases from official central bank websites for the requested currency.\n\n**Supported currencies:** AUD, BRL, CAD, CHF, CNY, CZK, DKK, EUR, GBP, HKD, INR, JPY, KRW, MXN, NOK, NZD, PEN, PLN, SEK, SGD, THB, USD, ZAR\n\n**Path Parameters:**\n- `currency`: 3-letter ISO currency code (e.g., USD, EUR, GBP).\n\n**Query Parameters:**\n- `limit`: Maximum number of press releases to return per page (1–50, default 20).\n- `offset`: Zero-based pagination offset (default: 0).\n\n**Authentication:** USD press releases are publicly available without an API key. All other currencies require a professional API key supplied via `?api_key=<key>` or the `X-API-Key` header.\n\n**Data sources:** Official central bank RSS feeds and websites only.","operationId":"get_press_releases_v1_press_releases__currency__get","parameters":[{"name":"currency","in":"path","required":true,"schema":{"type":"string","title":"Currency","enum":["AUD","BRL","CAD","CHF","CNY","CZK","DKK","EUR","GBP","HKD","INR","JPY","MXN","NOK","NZD","PEN","PLN","SEK","SGD","THB","USD","ZAR"],"example":"AUD"},"description":"Required path parameter. Allowed values: AUD, BRL, CAD, CHF, CNY, CZK, DKK, EUR, GBP, HKD, INR, JPY, MXN, NOK, NZD, PEN, PLN, SEK, SGD, THB, USD, ZAR."},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":50,"minimum":1,"description":"Maximum number of press releases to return","examples":[10],"default":20,"title":"Limit"},"description":"Optional query parameter. Maximum number of press releases to return"},{"name":"offset","in":"query","required":false,"schema":{"type":"integer","minimum":0,"description":"Zero-based offset into the full press-release feed before pagination.","default":0,"title":"Offset"},"description":"Optional query parameter. Zero-based offset into the full press-release feed before pagination."},{"name":"api_key","in":"query","required":false,"schema":{"type":"string","description":"Your Professional API key","title":"Api Key"},"description":"Optional query API key. Recommended for public examples and required for non-USD, paid-only, or full-history requests. The API also accepts the X-API-Key header for server-side clients."}],"responses":{"200":{"description":"Recent press releases for the selected central bank.","content":{"application/json":{"schema":{},"example":{"currency":"USD","source":"Federal Reserve","source_url":"https://www.federalreserve.gov","count":2,"data":[{"title":"Federal Reserve issues FOMC statement","url":"https://www.federalreserve.gov/newsevents/pressreleases/monetary20260319a.htm","date":"2026-03-19","summary":"The Committee decided to maintain the target range for the federal funds rate...","category":"monetary_policy","relevance":0.95,"ai_summary":"FOMC held rates and stressed inflation persistence, signalling a longer plateau than markets had priced.","ai_stance":"hawkish","ai_stance_score":0.45,"ai_next_meeting_action":"hold","ai_next_meeting_probability":0.7,"ai_rationale":"Statement cited 'elevated' inflation and the need to keep policy 'sufficiently restrictive'.","rate_path":{"score":0.42,"label":"Moderately Hawkish","bias_action":"hike","confidence":"medium","raw_score":1.1,"matches":[{"phrase":"elevated inflation","weight":0.7},{"phrase":"restrictive stance","weight":0.7}]}}]}}}},"404":{"description":"Currency not supported for press releases."},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-parameter-availability":{"currency":["AUD","BRL","CAD","CHF","CNY","CZK","DKK","EUR","GBP","HKD","INR","JPY","MXN","NOK","NZD","PEN","PLN","SEK","SGD","THB","USD","ZAR"]}}},"/v1/risk_sentiment":{"get":{"tags":["fx_markets"],"summary":"Global risk-on / risk-off indicator","description":"Returns a composite daily risk-sentiment score indicating whether global financial conditions favour risk-on currencies (AUD, NZD, CAD) or risk-off safe havens (JPY, CHF, USD).\n\nThe score is derived from four publicly available sources:\n- **OFR FSI** (U.S. Treasury Office of Financial Research Financial Stress Index) — primary stress gauge, *inverted*\n- **Gold** (LBMA PM Fix via Bank of England IADB) — safe-haven demand proxy, *inverted*\n- **AUD/USD** (Frankfurter API) — risk-sensitive currency pair\n- **USD/JPY** (Frankfurter API) — safe-haven flow proxy\n\nEach component is normalised to a 252-day rolling z-score, weighted, and compressed through tanh to produce a final score in **[-1.0, +1.0]**.\n\n**Weights:** OFR FSI 40%, Gold 20%, AUD/USD 20%, USD/JPY 20%.\n\n**Query Parameters:**\n- `start_date`: Start date YYYY-MM-DD (default: 365 days ago).\n- `end_date`: End date YYYY-MM-DD (default: today).\n\n**Each data record contains:**\n- `date`: Observation date (YYYY-MM-DD).\n- `val`: Composite score -1.0 (extreme risk-off) ... +1.0 (extreme risk-on).\n- `regime`: `risk_on` (>= 0.25) | `neutral` | `risk_off` (<= -0.25).\n- `components.ofr_fsi`: Normalised (inverted) OFR FSI contribution.\n- `components.gold`: Normalised (inverted) gold price contribution.\n- `components.aud_usd`: Normalised AUD/USD contribution.\n- `components.usd_jpy`: Normalised USD/JPY contribution.","operationId":"get_risk_sentiment_v1_risk_sentiment_get","parameters":[{"name":"start_date","in":"query","required":false,"schema":{"type":"string","description":"Start date YYYY-MM-DD","examples":["2025-12-01"],"title":"Start Date"},"description":"Optional query parameter. Start date YYYY-MM-DD"},{"name":"end_date","in":"query","required":false,"schema":{"type":"string","description":"End date YYYY-MM-DD","examples":["2026-03-01"],"title":"End Date"},"description":"Optional query parameter. End date YYYY-MM-DD"},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":100,"minimum":1,"description":"Maximum rows to return. Defaults to 20. Maximum 100.","default":20,"title":"Limit"},"description":"Optional query parameter. Maximum rows to return. Defaults to 20. Maximum 100."},{"name":"offset","in":"query","required":false,"schema":{"type":"integer","minimum":0,"description":"Number of rows to skip after most-recent-first ordering.","default":0,"title":"Offset"},"description":"Optional query parameter. Number of rows to skip after most-recent-first ordering."}],"responses":{"200":{"description":"Risk sentiment time series and component-level contributions.","content":{"application/json":{"schema":{},"example":{"start_date":"2025-12-01","end_date":"2026-03-01","data":[{"date":"2026-02-28","val":0.31,"regime":"risk_on","components":{"ofr_fsi":0.18,"gold":-0.07,"aud_usd":0.09,"usd_jpy":0.04}}]}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/factors/{currency}/{factor}":{"get":{"tags":["factors"],"summary":"Get a precomputed FX factor for one currency","description":"Returns a stored factor series for one explicit currency and one explicit factor. The endpoint reads precomputed factor snapshots from Firestore; it does not recalculate component macro indicators during the request.\n\n**Path Parameters:**\n- `currency`: Three-letter currency code, for example `EUR` or `USD`.\n- `factor`: Factor slug. Currently supported: `monetary_stance`.\n\n**Query Parameters:**\n- `start_date` / `end_date`: Optional date window. With no dates, the latest stored snapshot is returned.\n- `include_components`: Include stored component scores and input values.\n- `include_sources`: Include stored source endpoint URLs.\n\nUse `/v1/data_catalogue/{currency}?include_capabilities=true` for factor discovery metadata. Full methodology belongs in the public documentation and OpenAPI description rather than repeated data payloads.\n\n**Authentication:** USD factor data is public without an API key. Anonymous no-key Python clients are governed by the existing 100 requests/day per-IP fair-use limit when the anonymous USD guard is enabled. Other currencies require a Professional API key supplied via `?api_key=<key>` or `X-API-Key`.","operationId":"get_currency_factor_v1_factors__currency___factor__get","parameters":[{"name":"currency","in":"path","required":true,"schema":{"type":"string","title":"Currency","enum":["AUD","CAD","CHF","EUR","GBP","JPY","NZD","USD"],"example":"AUD"},"description":"Required path parameter. Allowed values: AUD, CAD, CHF, EUR, GBP, JPY, NZD, USD."},{"name":"factor","in":"path","required":true,"schema":{"type":"string","description":"Factor slug, for example monetary_stance.","examples":["monetary_stance"],"title":"Factor","enum":["monetary_stance"],"example":"monetary_stance"},"description":"Required path parameter. Factor slug, for example monetary_stance. Allowed values: monetary_stance."},{"name":"start_date","in":"query","required":false,"schema":{"type":"string","description":"Inclusive start date YYYY-MM-DD. With no dates, returns latest only.","examples":["2026-01-01"],"title":"Start Date"},"description":"Optional query parameter. Inclusive start date YYYY-MM-DD. With no dates, returns latest only."},{"name":"end_date","in":"query","required":false,"schema":{"type":"string","description":"Inclusive end date YYYY-MM-DD. Defaults to today when start_date is supplied.","examples":["2026-07-19"],"title":"End Date"},"description":"Optional query parameter. Inclusive end date YYYY-MM-DD. Defaults to today when start_date is supplied."},{"name":"include_components","in":"query","required":false,"schema":{"type":"boolean","description":"Include stored component scores and source observations.","default":false,"title":"Include Components"},"description":"Optional query parameter. Include stored component scores and source observations."},{"name":"include_sources","in":"query","required":false,"schema":{"type":"boolean","description":"Include stored FXMacroData source endpoint URLs.","default":false,"title":"Include Sources"},"description":"Optional query parameter. Include stored FXMacroData source endpoint URLs."},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":100,"minimum":1,"description":"Maximum rows to return. Defaults to 20. Maximum 100.","default":20,"title":"Limit"},"description":"Optional query parameter. Maximum rows to return. Defaults to 20. Maximum 100."},{"name":"offset","in":"query","required":false,"schema":{"type":"integer","minimum":0,"description":"Number of rows to skip after most-recent-first ordering.","default":0,"title":"Offset"},"description":"Optional query parameter. Number of rows to skip after most-recent-first ordering."},{"name":"api_key","in":"query","required":false,"schema":{"type":"string","description":"Your Professional API key","title":"Api Key"},"description":"Optional query API key. Recommended for public examples and required for non-USD, paid-only, or full-history requests. The API also accepts the X-API-Key header for server-side clients."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/FactorResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-parameter-availability":{"currency":["AUD","CAD","CHF","EUR","GBP","JPY","NZD","USD"],"factor":["monetary_stance"]}}},"/v1/predictions/{currency}/{indicator}":{"get":{"tags":["predictions"],"summary":"List predictions for one indicator of a currency","description":"Returns every available prediction for the requested ``currency``/``indicator`` pair.","operationId":"get_indicator_predictions_v1_predictions__currency___indicator__get","parameters":[{"name":"currency","in":"path","required":true,"schema":{"type":"string","title":"Currency","enum":["AUD","BRL","CAD","CHF","CNH","CNY","DKK","EUR","GBP","ILS","JPY","NGN","NOK","NZD","PEN","SEK","THB","USD"],"example":"AUD"},"description":"Required path parameter. Allowed values: AUD, BRL, CAD, CHF, CNH, CNY, DKK, EUR, GBP, ILS, JPY, NGN, NOK, NZD, PEN, SEK, THB, USD."},{"name":"indicator","in":"path","required":true,"schema":{"type":"string","description":"Indicator slug","examples":["inflation"],"title":"Indicator","enum":["average_hourly_earnings","average_hourly_earnings_mom","balance_on_goods","balance_on_services","breakeven_inflation_rate","building_approvals","building_permits","business_confidence","capital_account_balance","cb_assets","commodity_price_energy","commodity_price_ex_energy","commodity_price_index","commodity_prices","consumer_confidence","core_inflation","core_inflation_median","core_inflation_mom","core_inflation_trim","core_pce","core_pce_mom","credit_growth","crude_oil_inventories","current_account_balance","dairy_exports","deposit_rates","durable_goods_orders","employment","exports","financial_account_balance","foreign_reserves","full_time_employment","gdp","gdp_growth_q4_yoy","gdp_growth_qoq_saar","gdp_quarterly","gold_reserves","gov_bond_10y","gov_bond_1y","gov_bond_20y","gov_bond_2y","gov_bond_30y","gov_bond_3y","gov_bond_40y","gov_bond_4y","gov_bond_5y","gov_bond_7y","government_debt","house_price_index","household_credit","housing_starts","imports","inflation","inflation_linked_bond","inflation_mom","initial_jobless_claims","international_assets","international_liabilities","job_openings","m1","m2","m3","monthly_cpi","nairu","natural_gas_storage","net_foreign_asset_position","non_farm_payrolls","non_farm_payrolls_change","part_time_employment","participation_rate","pce","pce_mom","policy_rate","policy_rate_midpoint","policy_rate_mlf","policy_rate_mro","policy_rate_target_lower","ppi","ppi_mom","primary_income_balance","retail_sales","retail_sales_control_group","retail_sales_ex_autos","retail_sales_ex_autos_and_gas","risk_free_rate","secondary_income_balance","sight_deposits","terms_of_trade","trade_balance","trade_weighted_index","trimmed_mean_inflation","unemployment","wage_price_index","wages"],"example":"average_hourly_earnings"},"description":"Required path parameter. Indicator slug Allowed values: average_hourly_earnings, average_hourly_earnings_mom, balance_on_goods, balance_on_services, breakeven_inflation_rate, building_approvals, building_permits, business_confidence, capital_account_balance, cb_assets, commodity_price_energy, commodity_price_ex_energy, commodity_price_index, commodity_prices, consumer_confidence, core_inflation, core_inflation_median, core_inflation_mom, core_inflation_trim, core_pce, core_pce_mom, credit_growth, crude_oil_inventories, current_account_balance, dairy_exports, deposit_rates, durable_goods_orders, employment, exports, financial_account_balance, foreign_reserves, full_time_employment, gdp, gdp_growth_q4_yoy, gdp_growth_qoq_saar, gdp_quarterly, gold_reserves, gov_bond_10y, gov_bond_1y, gov_bond_20y, gov_bond_2y, gov_bond_30y, gov_bond_3y, gov_bond_40y, gov_bond_4y, gov_bond_5y, gov_bond_7y, government_debt, house_price_index, household_credit, housing_starts, imports, inflation, inflation_linked_bond, inflation_mom, initial_jobless_claims, international_assets, international_liabilities, job_openings, m1, m2, m3, monthly_cpi, nairu, natural_gas_storage, net_foreign_asset_position, non_farm_payrolls, non_farm_payrolls_change, part_time_employment, participation_rate, pce, pce_mom, policy_rate, policy_rate_midpoint, policy_rate_mlf, policy_rate_mro, policy_rate_target_lower, ppi, ppi_mom, primary_income_balance, retail_sales, retail_sales_control_group, retail_sales_ex_autos, retail_sales_ex_autos_and_gas, risk_free_rate, secondary_income_balance, sight_deposits, terms_of_trade, trade_balance, trade_weighted_index, trimmed_mean_inflation, unemployment, wage_price_index, wages."},{"name":"prediction_type","in":"query","required":false,"schema":{"anyOf":[{"enum":["market_consensus","market_prediction","model_nowcast","survey","central_bank_forecast","central_bank_projection","imf_weo","fxmacrodata"],"type":"string"},{"type":"null"}],"description":"Optional prediction-type filter.","title":"Prediction Type"},"description":"Optional query parameter. Optional prediction-type filter."},{"name":"prediction_source","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Optional source identifier filter.","title":"Prediction Source"},"description":"Optional query parameter. Optional source identifier filter."},{"name":"pre_release_only","in":"query","required":false,"schema":{"type":"boolean","description":"Return only forecasts with `generated_at` strictly before the linked `announcement_datetime` (default: true). Set false only for explicit vintage research that needs post-event records.","default":true,"title":"Pre Release Only"},"description":"Optional query parameter. Return only forecasts with `generated_at` strictly before the linked `announcement_datetime` (default: true). Set false only for explicit vintage research that needs post-event records."},{"name":"seasonality","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Optional seasonal adjustment selector, matching /v1/announcements.","title":"Seasonality","enum":["sa","nsa"],"example":"sa"},"description":"Optional query parameter. Optional seasonal adjustment selector, matching /v1/announcements. Allowed values: sa, nsa."},{"name":"frequency","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Optional returned change basis selector, matching /v1/announcements.","title":"Frequency","enum":["level","yoy","qoq","mom"],"example":"level"},"description":"Optional query parameter. Optional returned change basis selector, matching /v1/announcements. Allowed values: level, yoy, qoq, mom."},{"name":"annualization","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Optional annualization selector, matching /v1/announcements.","title":"Annualization","enum":["not_annualized","saar"],"example":"not_annualized"},"description":"Optional query parameter. Optional annualization selector, matching /v1/announcements. Allowed values: not_annualized, saar."},{"name":"period_aggregation","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Optional period aggregation selector, matching /v1/announcements.","title":"Period Aggregation","enum":["monthly","quarterly_average"],"example":"monthly"},"description":"Optional query parameter. Optional period aggregation selector, matching /v1/announcements. Allowed values: monthly, quarterly_average."},{"name":"basis","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Optional real/nominal selector, matching /v1/announcements.","title":"Basis","enum":["real","nominal"],"example":"real"},"description":"Optional query parameter. Optional real/nominal selector, matching /v1/announcements. Allowed values: real, nominal."},{"name":"start_date","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Start date YYYY-MM-DD (period date). Defaults to 12 months before today when omitted.","title":"Start Date"},"description":"Optional query parameter. Start date YYYY-MM-DD (period date). Defaults to 12 months before today when omitted."},{"name":"end_date","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"End date YYYY-MM-DD (period date). Defaults to 12 months ahead.","title":"End Date"},"description":"Optional query parameter. End date YYYY-MM-DD (period date). Defaults to 12 months ahead."},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":100,"minimum":1,"description":"Maximum number of prediction groups to return in `data[]`. Use with `offset` to page through long histories. Defaults to 20. Maximum 100.","examples":[20],"default":20,"title":"Limit"},"description":"Optional query parameter. Maximum number of prediction groups to return in `data[]`. Use with `offset` to page through long histories. Defaults to 20. Maximum 100."},{"name":"offset","in":"query","required":false,"schema":{"type":"integer","minimum":0,"description":"Number of prediction groups to skip from the start of `data[]`. Use with `limit` for pagination. Defaults to 0.","examples":[0],"default":0,"title":"Offset"},"description":"Optional query parameter. Number of prediction groups to skip from the start of `data[]`. Use with `limit` for pagination. Defaults to 0."},{"name":"page","in":"query","required":false,"schema":{"anyOf":[{"type":"integer","minimum":1},{"type":"null"}],"description":"One-based page number. When supplied, it takes precedence over offset.","examples":[1],"title":"Page"},"description":"Optional query parameter. One-based page number. When supplied, it takes precedence over offset."},{"name":"before_date","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Return groups strictly before this YYYY-MM-DD period date. Use the previous response's `next_cursor` for bounded pagination.","title":"Before Date"},"description":"Optional query parameter. Return groups strictly before this YYYY-MM-DD period date. Use the previous response's `next_cursor` for bounded pagination."},{"name":"api_key","in":"query","required":false,"schema":{"type":"string","description":"Your Professional API key","title":"Api Key"},"description":"Optional query API key. Recommended for public examples and required for non-USD, paid-only, or full-history requests. The API also accepts the X-API-Key header for server-side clients."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PredictionsResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-parameter-availability":{"currency":["AUD","BRL","CAD","CHF","CNH","CNY","DKK","EUR","GBP","ILS","JPY","NGN","NOK","NZD","PEN","SEK","THB","USD"],"indicator":["average_hourly_earnings","average_hourly_earnings_mom","balance_on_goods","balance_on_services","breakeven_inflation_rate","building_approvals","building_permits","business_confidence","capital_account_balance","cb_assets","commodity_price_energy","commodity_price_ex_energy","commodity_price_index","commodity_prices","consumer_confidence","core_inflation","core_inflation_median","core_inflation_mom","core_inflation_trim","core_pce","core_pce_mom","credit_growth","crude_oil_inventories","current_account_balance","dairy_exports","deposit_rates","durable_goods_orders","employment","exports","financial_account_balance","foreign_reserves","full_time_employment","gdp","gdp_growth_q4_yoy","gdp_growth_qoq_saar","gdp_quarterly","gold_reserves","gov_bond_10y","gov_bond_1y","gov_bond_20y","gov_bond_2y","gov_bond_30y","gov_bond_3y","gov_bond_40y","gov_bond_4y","gov_bond_5y","gov_bond_7y","government_debt","house_price_index","household_credit","housing_starts","imports","inflation","inflation_linked_bond","inflation_mom","initial_jobless_claims","international_assets","international_liabilities","job_openings","m1","m2","m3","monthly_cpi","nairu","natural_gas_storage","net_foreign_asset_position","non_farm_payrolls","non_farm_payrolls_change","part_time_employment","participation_rate","pce","pce_mom","policy_rate","policy_rate_midpoint","policy_rate_mlf","policy_rate_mro","policy_rate_target_lower","ppi","ppi_mom","primary_income_balance","retail_sales","retail_sales_control_group","retail_sales_ex_autos","retail_sales_ex_autos_and_gas","risk_free_rate","secondary_income_balance","sight_deposits","terms_of_trade","trade_balance","trade_weighted_index","trimmed_mean_inflation","unemployment","wage_price_index","wages"],"indicator_by_currency":{"AUD":["balance_on_services","building_approvals","business_confidence","capital_account_balance","cb_assets","commodity_prices","consumer_confidence","core_inflation","credit_growth","current_account_balance","employment","exports","financial_account_balance","foreign_reserves","full_time_employment","gdp","gold_reserves","gov_bond_10y","gov_bond_2y","gov_bond_3y","gov_bond_5y","house_price_index","imports","inflation","inflation_linked_bond","inflation_mom","international_assets","international_liabilities","monthly_cpi","net_foreign_asset_position","part_time_employment","participation_rate","policy_rate","ppi","primary_income_balance","risk_free_rate","secondary_income_balance","terms_of_trade","trade_balance","trade_weighted_index","trimmed_mean_inflation","unemployment","wage_price_index","wages"],"BRL":["foreign_reserves","gdp","inflation","policy_rate","risk_free_rate","trade_weighted_index","unemployment"],"CAD":["building_permits","business_confidence","commodity_price_energy","commodity_price_ex_energy","commodity_price_index","consumer_confidence","core_inflation","core_inflation_median","core_inflation_trim","current_account_balance","employment","full_time_employment","gdp","gdp_quarterly","gov_bond_10y","gov_bond_2y","gov_bond_30y","gov_bond_3y","gov_bond_5y","gov_bond_7y","household_credit","inflation","inflation_linked_bond","part_time_employment","participation_rate","policy_rate","retail_sales","risk_free_rate","trade_balance","trade_weighted_index","unemployment"],"CHF":["business_confidence","cb_assets","consumer_confidence","core_inflation","employment","foreign_reserves","full_time_employment","gdp","gold_reserves","gov_bond_10y","gov_bond_1y","gov_bond_20y","gov_bond_2y","gov_bond_30y","gov_bond_3y","gov_bond_4y","gov_bond_5y","inflation","part_time_employment","participation_rate","policy_rate","ppi","retail_sales","risk_free_rate","sight_deposits","trade_weighted_index","unemployment"],"CNH":["business_confidence","cb_assets","core_inflation","current_account_balance","gdp","gov_bond_10y","gov_bond_2y","gov_bond_3y","gov_bond_5y","inflation","policy_rate","ppi","retail_sales","risk_free_rate","trade_weighted_index","unemployment"],"CNY":["business_confidence","cb_assets","core_inflation","current_account_balance","foreign_reserves","gdp","gold_reserves","gov_bond_10y","gov_bond_2y","gov_bond_3y","gov_bond_5y","inflation","m1","m2","policy_rate","ppi","retail_sales","risk_free_rate","trade_weighted_index","unemployment"],"DKK":["gov_bond_10y","inflation","inflation_mom","risk_free_rate","trade_weighted_index"],"EUR":["balance_on_goods","balance_on_services","breakeven_inflation_rate","business_confidence","consumer_confidence","core_inflation","core_inflation_mom","current_account_balance","employment","full_time_employment","gdp","gov_bond_10y","gov_bond_2y","gov_bond_3y","gov_bond_5y","inflation","inflation_linked_bond","inflation_mom","m1","m2","m3","part_time_employment","participation_rate","policy_rate","policy_rate_mlf","policy_rate_mro","ppi","ppi_mom","retail_sales","risk_free_rate","trade_balance","trade_weighted_index","unemployment"],"GBP":["consumer_confidence","core_inflation","employment","exports","full_time_employment","gdp","gov_bond_10y","gov_bond_20y","gov_bond_2y","gov_bond_3y","gov_bond_5y","imports","inflation","inflation_linked_bond","part_time_employment","participation_rate","policy_rate","ppi","retail_sales","risk_free_rate","trade_balance","trade_weighted_index","unemployment","wages"],"ILS":["gov_bond_10y","gov_bond_2y","gov_bond_3y","gov_bond_5y","inflation_linked_bond","policy_rate","risk_free_rate","trade_weighted_index"],"JPY":["business_confidence","cb_assets","consumer_confidence","core_inflation","current_account_balance","employment","foreign_reserves","full_time_employment","gdp","gov_bond_10y","gov_bond_20y","gov_bond_2y","gov_bond_30y","gov_bond_3y","gov_bond_40y","gov_bond_5y","gov_bond_7y","inflation","inflation_linked_bond","m1","m2","m3","part_time_employment","participation_rate","policy_rate","risk_free_rate","trade_balance","trade_weighted_index","unemployment"],"NGN":["cb_assets","deposit_rates","foreign_reserves","policy_rate","risk_free_rate"],"NOK":["business_confidence","gov_bond_10y","gov_bond_2y","gov_bond_5y","risk_free_rate","trade_weighted_index"],"NZD":["cb_assets","core_inflation","dairy_exports","deposit_rates","employment","foreign_reserves","gdp","gov_bond_10y","gov_bond_2y","gov_bond_3y","gov_bond_5y","inflation","inflation_linked_bond","participation_rate","policy_rate","risk_free_rate","terms_of_trade","trade_balance","trade_weighted_index","unemployment"],"PEN":["foreign_reserves","gov_bond_10y","gov_bond_2y","gov_bond_3y","gov_bond_5y","risk_free_rate","trade_weighted_index"],"SEK":["employment","gdp","gov_bond_10y","gov_bond_2y","gov_bond_5y","inflation","participation_rate","policy_rate","risk_free_rate","trade_weighted_index","unemployment"],"THB":["current_account_balance","employment","gdp","gov_bond_10y","gov_bond_2y","gov_bond_3y","gov_bond_5y","inflation","m1","m2","participation_rate","policy_rate","ppi","risk_free_rate","trade_balance","unemployment"],"USD":["average_hourly_earnings","average_hourly_earnings_mom","breakeven_inflation_rate","building_permits","business_confidence","cb_assets","consumer_confidence","core_inflation","core_inflation_mom","core_pce","core_pce_mom","crude_oil_inventories","current_account_balance","durable_goods_orders","employment","foreign_reserves","full_time_employment","gdp","gdp_growth_q4_yoy","gdp_growth_qoq_saar","gold_reserves","gov_bond_10y","gov_bond_2y","gov_bond_3y","gov_bond_5y","government_debt","house_price_index","housing_starts","inflation","inflation_linked_bond","inflation_mom","initial_jobless_claims","job_openings","nairu","natural_gas_storage","non_farm_payrolls","part_time_employment","participation_rate","pce","pce_mom","policy_rate","policy_rate_midpoint","policy_rate_target_lower","ppi","ppi_mom","retail_sales","retail_sales_control_group","retail_sales_ex_autos","retail_sales_ex_autos_and_gas","risk_free_rate","trade_balance","trade_weighted_index","unemployment","wages"]},"seasonality":["sa","nsa"],"frequency":["level","yoy","qoq","mom"],"annualization":["not_annualized","saar"],"period_aggregation":["monthly","quarterly_average"],"basis":["real","nominal"]}}},"/v1/announcements/{currency}/latest":{"get":{"tags":["announcements"],"summary":"Get latest stored values for all indicators in a currency","operationId":"get_currency_latest_indicator_values_v1_announcements__currency__latest_get","parameters":[{"name":"currency","in":"path","required":true,"schema":{"type":"string","title":"Currency","enum":["AUD","BRL","CAD","CHF","CNH","CNY","DKK","EUR","GBP","ILS","JPY","NGN","NOK","NZD","PEN","SEK","THB","USD"],"example":"AUD"},"description":"Required path parameter. Allowed values: AUD, BRL, CAD, CHF, CNH, CNY, DKK, EUR, GBP, ILS, JPY, NGN, NOK, NZD, PEN, SEK, THB, USD."},{"name":"api_key","in":"query","required":false,"schema":{"type":"string","description":"Your Professional API key","title":"Api Key"},"description":"Optional query API key. Recommended for public examples and required for non-USD, paid-only, or full-history requests. The API also accepts the X-API-Key header for server-side clients."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-parameter-availability":{"currency":["AUD","BRL","CAD","CHF","CNH","CNY","DKK","EUR","GBP","ILS","JPY","NGN","NOK","NZD","PEN","SEK","THB","USD"],"indicator":["average_hourly_earnings","average_hourly_earnings_mom","balance_on_goods","balance_on_services","breakeven_inflation_rate","building_approvals","building_permits","business_confidence","capital_account_balance","cb_assets","commodity_price_energy","commodity_price_ex_energy","commodity_price_index","commodity_prices","consumer_confidence","core_inflation","core_inflation_median","core_inflation_mom","core_inflation_trim","core_pce","core_pce_mom","credit_growth","crude_oil_inventories","current_account_balance","dairy_exports","deposit_rates","durable_goods_orders","employment","exports","financial_account_balance","foreign_reserves","full_time_employment","gdp","gdp_growth_q4_yoy","gdp_growth_qoq_saar","gdp_quarterly","gold_reserves","gov_bond_10y","gov_bond_1y","gov_bond_20y","gov_bond_2y","gov_bond_30y","gov_bond_3y","gov_bond_40y","gov_bond_4y","gov_bond_5y","gov_bond_7y","government_debt","house_price_index","household_credit","housing_starts","imports","inflation","inflation_linked_bond","inflation_mom","initial_jobless_claims","international_assets","international_liabilities","job_openings","m1","m2","m3","monthly_cpi","nairu","natural_gas_storage","net_foreign_asset_position","non_farm_payrolls","non_farm_payrolls_change","part_time_employment","participation_rate","pce","pce_mom","policy_rate","policy_rate_midpoint","policy_rate_mlf","policy_rate_mro","policy_rate_target_lower","ppi","ppi_mom","primary_income_balance","retail_sales","retail_sales_control_group","retail_sales_ex_autos","retail_sales_ex_autos_and_gas","risk_free_rate","secondary_income_balance","sight_deposits","terms_of_trade","trade_balance","trade_weighted_index","trimmed_mean_inflation","unemployment","wage_price_index","wages"],"indicator_by_currency":{"AUD":["balance_on_services","building_approvals","business_confidence","capital_account_balance","cb_assets","commodity_prices","consumer_confidence","core_inflation","credit_growth","current_account_balance","employment","exports","financial_account_balance","foreign_reserves","full_time_employment","gdp","gold_reserves","gov_bond_10y","gov_bond_2y","gov_bond_3y","gov_bond_5y","house_price_index","imports","inflation","inflation_linked_bond","inflation_mom","international_assets","international_liabilities","monthly_cpi","net_foreign_asset_position","part_time_employment","participation_rate","policy_rate","ppi","primary_income_balance","risk_free_rate","secondary_income_balance","terms_of_trade","trade_balance","trade_weighted_index","trimmed_mean_inflation","unemployment","wage_price_index","wages"],"BRL":["foreign_reserves","gdp","inflation","policy_rate","risk_free_rate","trade_weighted_index","unemployment"],"CAD":["building_permits","business_confidence","commodity_price_energy","commodity_price_ex_energy","commodity_price_index","consumer_confidence","core_inflation","core_inflation_median","core_inflation_trim","current_account_balance","employment","full_time_employment","gdp","gdp_quarterly","gov_bond_10y","gov_bond_2y","gov_bond_30y","gov_bond_3y","gov_bond_5y","gov_bond_7y","household_credit","inflation","inflation_linked_bond","part_time_employment","participation_rate","policy_rate","retail_sales","risk_free_rate","trade_balance","trade_weighted_index","unemployment"],"CHF":["business_confidence","cb_assets","consumer_confidence","core_inflation","employment","foreign_reserves","full_time_employment","gdp","gold_reserves","gov_bond_10y","gov_bond_1y","gov_bond_20y","gov_bond_2y","gov_bond_30y","gov_bond_3y","gov_bond_4y","gov_bond_5y","inflation","part_time_employment","participation_rate","policy_rate","ppi","retail_sales","risk_free_rate","sight_deposits","trade_weighted_index","unemployment"],"CNH":["business_confidence","cb_assets","core_inflation","current_account_balance","gdp","gov_bond_10y","gov_bond_2y","gov_bond_3y","gov_bond_5y","inflation","policy_rate","ppi","retail_sales","risk_free_rate","trade_weighted_index","unemployment"],"CNY":["business_confidence","cb_assets","core_inflation","current_account_balance","foreign_reserves","gdp","gold_reserves","gov_bond_10y","gov_bond_2y","gov_bond_3y","gov_bond_5y","inflation","m1","m2","policy_rate","ppi","retail_sales","risk_free_rate","trade_weighted_index","unemployment"],"DKK":["gov_bond_10y","inflation","inflation_mom","risk_free_rate","trade_weighted_index"],"EUR":["balance_on_goods","balance_on_services","breakeven_inflation_rate","business_confidence","consumer_confidence","core_inflation","core_inflation_mom","current_account_balance","employment","full_time_employment","gdp","gov_bond_10y","gov_bond_2y","gov_bond_3y","gov_bond_5y","inflation","inflation_linked_bond","inflation_mom","m1","m2","m3","part_time_employment","participation_rate","policy_rate","policy_rate_mlf","policy_rate_mro","ppi","ppi_mom","retail_sales","risk_free_rate","trade_balance","trade_weighted_index","unemployment"],"GBP":["consumer_confidence","core_inflation","employment","exports","full_time_employment","gdp","gov_bond_10y","gov_bond_20y","gov_bond_2y","gov_bond_3y","gov_bond_5y","imports","inflation","inflation_linked_bond","part_time_employment","participation_rate","policy_rate","ppi","retail_sales","risk_free_rate","trade_balance","trade_weighted_index","unemployment","wages"],"ILS":["gov_bond_10y","gov_bond_2y","gov_bond_3y","gov_bond_5y","inflation_linked_bond","policy_rate","risk_free_rate","trade_weighted_index"],"JPY":["business_confidence","cb_assets","consumer_confidence","core_inflation","current_account_balance","employment","foreign_reserves","full_time_employment","gdp","gov_bond_10y","gov_bond_20y","gov_bond_2y","gov_bond_30y","gov_bond_3y","gov_bond_40y","gov_bond_5y","gov_bond_7y","inflation","inflation_linked_bond","m1","m2","m3","part_time_employment","participation_rate","policy_rate","risk_free_rate","trade_balance","trade_weighted_index","unemployment"],"NGN":["cb_assets","deposit_rates","foreign_reserves","policy_rate","risk_free_rate"],"NOK":["business_confidence","gov_bond_10y","gov_bond_2y","gov_bond_5y","risk_free_rate","trade_weighted_index"],"NZD":["cb_assets","core_inflation","dairy_exports","deposit_rates","employment","foreign_reserves","gdp","gov_bond_10y","gov_bond_2y","gov_bond_3y","gov_bond_5y","inflation","inflation_linked_bond","participation_rate","policy_rate","risk_free_rate","terms_of_trade","trade_balance","trade_weighted_index","unemployment"],"PEN":["foreign_reserves","gov_bond_10y","gov_bond_2y","gov_bond_3y","gov_bond_5y","risk_free_rate","trade_weighted_index"],"SEK":["employment","gdp","gov_bond_10y","gov_bond_2y","gov_bond_5y","inflation","participation_rate","policy_rate","risk_free_rate","trade_weighted_index","unemployment"],"THB":["current_account_balance","employment","gdp","gov_bond_10y","gov_bond_2y","gov_bond_3y","gov_bond_5y","inflation","m1","m2","participation_rate","policy_rate","ppi","risk_free_rate","trade_balance","unemployment"],"USD":["average_hourly_earnings","average_hourly_earnings_mom","breakeven_inflation_rate","building_permits","business_confidence","cb_assets","consumer_confidence","core_inflation","core_inflation_mom","core_pce","core_pce_mom","crude_oil_inventories","current_account_balance","durable_goods_orders","employment","foreign_reserves","full_time_employment","gdp","gdp_growth_q4_yoy","gdp_growth_qoq_saar","gold_reserves","gov_bond_10y","gov_bond_2y","gov_bond_3y","gov_bond_5y","government_debt","house_price_index","housing_starts","inflation","inflation_linked_bond","inflation_mom","initial_jobless_claims","job_openings","nairu","natural_gas_storage","non_farm_payrolls","part_time_employment","participation_rate","pce","pce_mom","policy_rate","policy_rate_midpoint","policy_rate_target_lower","ppi","ppi_mom","retail_sales","retail_sales_control_group","retail_sales_ex_autos","retail_sales_ex_autos_and_gas","risk_free_rate","trade_balance","trade_weighted_index","unemployment","wages"]}}}},"/v1/announcements/{currency}/{indicator}":{"get":{"tags":["announcements"],"summary":"Get macroeconomic indicator data","description":"Fetches historical data for a given macroeconomic indicator of a currency.\n\n**Authentication & limits:**\n- USD data is publicly accessible without an API key, but anonymous callers are limited to the most recent 365 days. Requests for an earlier `start_date` are silently clamped to that 365-day window.\n- All other currencies require a Professional API key supplied via `?api_key=<key>` or the `X-API-Key` header.\n- Authenticated callers (any valid API key) receive the full requested history for every supported currency, including USD.\n\n**Path Parameters:**\n- `currency`: The 3-letter currency code (USD, AUD, EUR, GBP, CHF).\n- `indicator`: The indicator name (e.g., inflation, unemployment).\n\n**Query Parameters:**\n- `start_date`: Optional. Start date in YYYY-MM-DD format. When omitted by authenticated callers, the endpoint pages through the full stored history. Anonymous USD requests are capped to the freemium window.\n- `end_date`: Optional. End date in YYYY-MM-DD format. Defaults to today.\n\n- `limit`: Optional page size. Defaults to 20.\n- `page`: Optional one-based page number. When provided, it takes precedence over `offset`.\n- `offset`: Optional zero-based row offset for offset-based pagination.\n\n- `series_mode`: Optional. `canonical` (default) applies any configured remap rules for continuity across methodology changes; `raw` returns the direct underlying indicator series.\n\n**Response fields:**\n- `remap`: Metadata about the canonical remap rule application (`applied`, `rule_id`, segments, and transform mode).\n- `has_official_forecast`: Whether the relevant central bank or statistics agency publishes a preliminary, flash, or advance estimate of this indicator before the main/final data release.\n- `earliest_available_date` / `latest_available_date`: The full coverage span available in the response window before any pagination is applied.\n- `pagination`: Page metadata for the returned `data[]` slice (`limit`, `offset`, `returned_count`, `total_count`, `has_more`, `next_offset`).\n- `data[].announcement_id`: Stable identifier for this unique announcement, in the form `{currency}_{indicator}_{date}` (lowercase, e.g. `usd_inflation_2026-01-31`). Use this to join predictions from `/v1/predictions/{currency}/{indicator}` and revision history back to the underlying observation.\n- `data[].announcement_datetime`: Release timestamp as Unix epoch seconds (UTC).\n- `data[].announcement_datetime_local`: ISO 8601 release time with offset, rendered in the source agency's local timezone (e.g. USD → America/New_York, AUD → Australia/Sydney).\n- `data[].official_planned_release_datetime`: Official planned release timestamp used by the scheduler, as Unix epoch seconds (UTC), when this row was collected by a scheduled release task.\n- `data[].official_actual_release_datetime`: Official release timestamp on the source row, as Unix epoch seconds (UTC). This is normally the same as `announcement_datetime` unless the source exposes a separate publication timestamp.\n- `data[].collected_at_ns` / `data[].collected_at_iso`: Exact time the ingest process first collected this row from the upstream source.\n- `data[].ingestion_latency_ms`: Milliseconds from the official planned release timestamp to collection time when a planned timestamp is known; otherwise from the official actual release timestamp.\n- `source_series_name`: The actual underlying source series used for this standardized indicator.\n- `value_name`: The actual series name used for the returned `val`. For `policy_rate`, this is the canonical policy-series label chosen by the platform (for example, ECB Deposit Facility Rate or Federal Funds Target Range Upper Bound).\n- `source_local_name`: Official local-language series label when available.\n- `is_proxy`: True when the standardized indicator is populated using a documented proxy rather than a directly named national headline series.\n- `proxy_note`: Short explanation of the proxy choice when `is_proxy=true`.\n- `policy_role`: For `policy_rate`, the role of the canonical rate inside its official rate family (for example `primary` or `target_upper`).\n- `policy_structure`: For `policy_rate`, the policy-regime structure such as `single_primary`, `target_range`, `primary_plus_corridor`, or `non_rate_regime`.\n- `comparison_compatible`: For `policy_rate`, whether the returned `val` can be honestly used in cross-country policy-rate comparisons.\n- `policy_family`: Optional top-level metadata listing sibling policy-rate indicators in the same official family.\n- `data[].predicted_value` *(deprecated — use `/v1/predictions/{currency}/{indicator}` instead)*: Market or professional-forecaster expectation for this indicator reading, in the same units as `val`. Present only where a prediction source is available.\n- `data[].prediction_type` *(deprecated — use `/v1/predictions/{currency}/{indicator}` instead)*: Type of prediction — `market_consensus` (compiled market poll) or `market_prediction` (professional forecasters survey).\n- `data[].prediction_source` *(deprecated — use `/v1/predictions/{currency}/{indicator}` instead)*: Stable identifier for the prediction source (e.g. `ecb_spf` for the ECB Survey of Professional Forecasters). Null when `predicted_value` is absent.","operationId":"get_indicator_data_v1_announcements__currency___indicator__get","parameters":[{"name":"currency","in":"path","required":true,"schema":{"type":"string","title":"Currency","enum":["AUD","BRL","CAD","CHF","CNH","CNY","DKK","EUR","GBP","ILS","JPY","NGN","NOK","NZD","PEN","SEK","THB","USD"],"example":"AUD"},"description":"Required path parameter. Allowed values: AUD, BRL, CAD, CHF, CNH, CNY, DKK, EUR, GBP, ILS, JPY, NGN, NOK, NZD, PEN, SEK, THB, USD."},{"name":"indicator","in":"path","required":true,"schema":{"type":"string","description":"Indicator slug","examples":["inflation"],"title":"Indicator","enum":["average_hourly_earnings","average_hourly_earnings_mom","balance_on_goods","balance_on_services","breakeven_inflation_rate","building_approvals","building_permits","business_confidence","capital_account_balance","cb_assets","commodity_price_energy","commodity_price_ex_energy","commodity_price_index","commodity_prices","consumer_confidence","core_inflation","core_inflation_median","core_inflation_mom","core_inflation_trim","core_pce","core_pce_mom","credit_growth","crude_oil_inventories","current_account_balance","dairy_exports","deposit_rates","durable_goods_orders","employment","exports","financial_account_balance","foreign_reserves","full_time_employment","gdp","gdp_growth_q4_yoy","gdp_growth_qoq_saar","gdp_quarterly","gold_reserves","gov_bond_10y","gov_bond_1y","gov_bond_20y","gov_bond_2y","gov_bond_30y","gov_bond_3y","gov_bond_40y","gov_bond_4y","gov_bond_5y","gov_bond_7y","government_debt","house_price_index","household_credit","housing_starts","imports","inflation","inflation_linked_bond","inflation_mom","initial_jobless_claims","international_assets","international_liabilities","job_openings","m1","m2","m3","monthly_cpi","nairu","natural_gas_storage","net_foreign_asset_position","non_farm_payrolls","non_farm_payrolls_change","part_time_employment","participation_rate","pce","pce_mom","policy_rate","policy_rate_midpoint","policy_rate_mlf","policy_rate_mro","policy_rate_target_lower","ppi","ppi_mom","primary_income_balance","retail_sales","retail_sales_control_group","retail_sales_ex_autos","retail_sales_ex_autos_and_gas","risk_free_rate","secondary_income_balance","sight_deposits","terms_of_trade","trade_balance","trade_weighted_index","trimmed_mean_inflation","unemployment","wage_price_index","wages"],"example":"average_hourly_earnings"},"description":"Required path parameter. Indicator slug Allowed values: average_hourly_earnings, average_hourly_earnings_mom, balance_on_goods, balance_on_services, breakeven_inflation_rate, building_approvals, building_permits, business_confidence, capital_account_balance, cb_assets, commodity_price_energy, commodity_price_ex_energy, commodity_price_index, commodity_prices, consumer_confidence, core_inflation, core_inflation_median, core_inflation_mom, core_inflation_trim, core_pce, core_pce_mom, credit_growth, crude_oil_inventories, current_account_balance, dairy_exports, deposit_rates, durable_goods_orders, employment, exports, financial_account_balance, foreign_reserves, full_time_employment, gdp, gdp_growth_q4_yoy, gdp_growth_qoq_saar, gdp_quarterly, gold_reserves, gov_bond_10y, gov_bond_1y, gov_bond_20y, gov_bond_2y, gov_bond_30y, gov_bond_3y, gov_bond_40y, gov_bond_4y, gov_bond_5y, gov_bond_7y, government_debt, house_price_index, household_credit, housing_starts, imports, inflation, inflation_linked_bond, inflation_mom, initial_jobless_claims, international_assets, international_liabilities, job_openings, m1, m2, m3, monthly_cpi, nairu, natural_gas_storage, net_foreign_asset_position, non_farm_payrolls, non_farm_payrolls_change, part_time_employment, participation_rate, pce, pce_mom, policy_rate, policy_rate_midpoint, policy_rate_mlf, policy_rate_mro, policy_rate_target_lower, ppi, ppi_mom, primary_income_balance, retail_sales, retail_sales_control_group, retail_sales_ex_autos, retail_sales_ex_autos_and_gas, risk_free_rate, secondary_income_balance, sight_deposits, terms_of_trade, trade_balance, trade_weighted_index, trimmed_mean_inflation, unemployment, wage_price_index, wages."},{"name":"start_date","in":"query","required":false,"schema":{"type":"string","description":"Start date YYYY-MM-DD","examples":["2025-01-01"],"title":"Start Date"},"description":"Optional query parameter. Start date YYYY-MM-DD"},{"name":"end_date","in":"query","required":false,"schema":{"type":"string","description":"End date YYYY-MM-DD","examples":["2026-03-01"],"title":"End Date"},"description":"Optional query parameter. End date YYYY-MM-DD"},{"name":"series_mode","in":"query","required":false,"schema":{"type":"string","pattern":"^(raw|canonical)$","description":"Optional series rendering mode. `canonical` applies configured remap rules (for continuity across methodology transitions). `raw` returns the direct indicator series without remapping.","examples":["raw"],"default":"raw","title":"Series Mode"},"description":"Optional query parameter. Optional series rendering mode. `canonical` applies configured remap rules (for continuity across methodology transitions). `raw` returns the direct indicator series without remapping."},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":100,"minimum":1,"description":"Maximum number of rows to return in `data[]`. Rows are ordered most-recent-first, so `limit=10` returns the 10 most recent observations within the requested window. Use together with `offset` to page through long histories. Defaults to 20. Maximum 100.","examples":[20],"default":20,"title":"Limit"},"description":"Optional query parameter. Maximum number of rows to return in `data[]`. Rows are ordered most-recent-first, so `limit=10` returns the 10 most recent observations within the requested window. Use together with `offset` to page through long histories. Defaults to 20. Maximum 100."},{"name":"offset","in":"query","required":false,"schema":{"type":"integer","minimum":0,"description":"Number of rows to skip from the start of `data[]` (after most-recent-first ordering). Use with `limit` for pagination. Defaults to 0.","examples":[0],"default":0,"title":"Offset"},"description":"Optional query parameter. Number of rows to skip from the start of `data[]` (after most-recent-first ordering). Use with `limit` for pagination. Defaults to 0."},{"name":"page","in":"query","required":false,"schema":{"anyOf":[{"type":"integer","minimum":1},{"type":"null"}],"description":"One-based page number for callers that prefer page-based pagination. When supplied, `offset` is derived as `(page - 1) * limit`.","examples":[1],"title":"Page"},"description":"Optional query parameter. One-based page number for callers that prefer page-based pagination. When supplied, `offset` is derived as `(page - 1) * limit`."},{"name":"seasonality","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Optional seasonal adjustment selector. Supported public values are `sa` and `nsa`; check `supported_options.seasonality` in the response/catalogue for values available on this endpoint.","examples":["sa"],"title":"Seasonality","enum":["sa","nsa"],"example":"sa"},"description":"Optional query parameter. Optional seasonal adjustment selector. Supported public values are `sa` and `nsa`; check `supported_options.seasonality` in the response/catalogue for values available on this endpoint. Allowed values: sa, nsa."},{"name":"frequency","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Optional returned change basis. Supported public values are `level`, `yoy`, `qoq`, and `mom`; check `supported_options.frequency` for values available on this endpoint.","examples":["yoy"],"title":"Frequency","enum":["level","yoy","qoq","mom"],"example":"level"},"description":"Optional query parameter. Optional returned change basis. Supported public values are `level`, `yoy`, `qoq`, and `mom`; check `supported_options.frequency` for values available on this endpoint. Allowed values: level, yoy, qoq, mom."},{"name":"annualization","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Optional annualization selector. Supported public values are `not_annualized` and `saar`; check `supported_options.annualization` for values available on this endpoint.","examples":["saar"],"title":"Annualization","enum":["not_annualized","saar"],"example":"not_annualized"},"description":"Optional query parameter. Optional annualization selector. Supported public values are `not_annualized` and `saar`; check `supported_options.annualization` for values available on this endpoint. Allowed values: not_annualized, saar."},{"name":"period_aggregation","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Optional period-aggregation selector. Supported public values are `monthly` and `quarterly_average`; check `supported_options.period_aggregation` for values available on this endpoint.","examples":["quarterly_average"],"title":"Period Aggregation","enum":["monthly","quarterly_average"],"example":"monthly"},"description":"Optional query parameter. Optional period-aggregation selector. Supported public values are `monthly` and `quarterly_average`; check `supported_options.period_aggregation` for values available on this endpoint. Allowed values: monthly, quarterly_average."},{"name":"revisions","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Optional revision view. Supported public values are `latest`, `first`, `final`, and `all`; unsupported views return `unsupported_series_option` with supported values.","examples":["latest"],"default":"latest","title":"Revisions","enum":["latest","first","final","all"],"example":"latest"},"description":"Optional query parameter. Optional revision view. Supported public values are `latest`, `first`, `final`, and `all`; unsupported views return `unsupported_series_option` with supported values. Allowed values: latest, first, final, all."},{"name":"basis","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Optional real/nominal selector. Supported public values are `real` and `nominal`; only endpoints with known basis metadata accept it.","examples":["real"],"title":"Basis","enum":["real","nominal"],"example":"real"},"description":"Optional query parameter. Optional real/nominal selector. Supported public values are `real` and `nominal`; only endpoints with known basis metadata accept it. Allowed values: real, nominal."},{"name":"official_only","in":"query","required":false,"schema":{"type":"boolean","description":"When true, return only official-source rows and remove explicit fallback observations. Prohibited private aggregator rows are always removed regardless of this setting.","examples":[true],"default":true,"title":"Official Only"},"description":"Optional query parameter. When true, return only official-source rows and remove explicit fallback observations. Prohibited private aggregator rows are always removed regardless of this setting."},{"name":"api_key","in":"query","required":false,"schema":{"type":"string","description":"Your Professional API key","title":"Api Key"},"description":"Optional query API key. Recommended for public examples and required for non-USD, paid-only, or full-history requests. The API also accepts the X-API-Key header for server-side clients."}],"responses":{"200":{"description":"Normalized macro series for one currency and indicator.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AnnouncementResponse"},"example":{"currency":"USD","indicator":"inflation","has_official_forecast":false,"start_date":"2025-01-01","end_date":"2026-03-01","earliest_available_date":"2025-01-01","latest_available_date":"2026-02-28","pagination":{"limit":20,"offset":0,"returned_count":2,"total_count":2,"has_more":false},"cb_target":{"description":"Federal Reserve inflation objective (2% goal is defined on PCE, not CPI)","source":"Federal Reserve Statement on Longer-Run Goals and Monetary Policy Strategy","current":{"effective_from":"2020-08-27","target":2.0,"notes":"Flexible Average Inflation Targeting (FAIT) adopted; 2% goal is defined on PCE"},"history":[{"effective_from":"2012-01-25","target":2.0,"notes":"First explicit 2% inflation goal announced by FOMC (defined on the PCE price index)"},{"effective_from":"2020-08-27","target":2.0,"notes":"Flexible Average Inflation Targeting (FAIT) adopted; 2% goal is defined on PCE"}]},"data":[{"date":"2026-01-31","val":2.9,"val_mom":0.5,"announcement_datetime":1769754600,"announcement_datetime_local":"2026-01-30T08:30:00-05:00","pct_change":0.2},{"date":"2026-02-28","val":3.0,"val_mom":0.2,"announcement_datetime":1772433000,"announcement_datetime_local":"2026-03-01T08:30:00-05:00","pct_change":0.1}]}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-parameter-availability":{"currency":["AUD","BRL","CAD","CHF","CNH","CNY","DKK","EUR","GBP","ILS","JPY","NGN","NOK","NZD","PEN","SEK","THB","USD"],"indicator":["average_hourly_earnings","average_hourly_earnings_mom","balance_on_goods","balance_on_services","breakeven_inflation_rate","building_approvals","building_permits","business_confidence","capital_account_balance","cb_assets","commodity_price_energy","commodity_price_ex_energy","commodity_price_index","commodity_prices","consumer_confidence","core_inflation","core_inflation_median","core_inflation_mom","core_inflation_trim","core_pce","core_pce_mom","credit_growth","crude_oil_inventories","current_account_balance","dairy_exports","deposit_rates","durable_goods_orders","employment","exports","financial_account_balance","foreign_reserves","full_time_employment","gdp","gdp_growth_q4_yoy","gdp_growth_qoq_saar","gdp_quarterly","gold_reserves","gov_bond_10y","gov_bond_1y","gov_bond_20y","gov_bond_2y","gov_bond_30y","gov_bond_3y","gov_bond_40y","gov_bond_4y","gov_bond_5y","gov_bond_7y","government_debt","house_price_index","household_credit","housing_starts","imports","inflation","inflation_linked_bond","inflation_mom","initial_jobless_claims","international_assets","international_liabilities","job_openings","m1","m2","m3","monthly_cpi","nairu","natural_gas_storage","net_foreign_asset_position","non_farm_payrolls","non_farm_payrolls_change","part_time_employment","participation_rate","pce","pce_mom","policy_rate","policy_rate_midpoint","policy_rate_mlf","policy_rate_mro","policy_rate_target_lower","ppi","ppi_mom","primary_income_balance","retail_sales","retail_sales_control_group","retail_sales_ex_autos","retail_sales_ex_autos_and_gas","risk_free_rate","secondary_income_balance","sight_deposits","terms_of_trade","trade_balance","trade_weighted_index","trimmed_mean_inflation","unemployment","wage_price_index","wages"],"indicator_by_currency":{"AUD":["balance_on_services","building_approvals","business_confidence","capital_account_balance","cb_assets","commodity_prices","consumer_confidence","core_inflation","credit_growth","current_account_balance","employment","exports","financial_account_balance","foreign_reserves","full_time_employment","gdp","gold_reserves","gov_bond_10y","gov_bond_2y","gov_bond_3y","gov_bond_5y","house_price_index","imports","inflation","inflation_linked_bond","inflation_mom","international_assets","international_liabilities","monthly_cpi","net_foreign_asset_position","part_time_employment","participation_rate","policy_rate","ppi","primary_income_balance","risk_free_rate","secondary_income_balance","terms_of_trade","trade_balance","trade_weighted_index","trimmed_mean_inflation","unemployment","wage_price_index","wages"],"BRL":["foreign_reserves","gdp","inflation","policy_rate","risk_free_rate","trade_weighted_index","unemployment"],"CAD":["building_permits","business_confidence","commodity_price_energy","commodity_price_ex_energy","commodity_price_index","consumer_confidence","core_inflation","core_inflation_median","core_inflation_trim","current_account_balance","employment","full_time_employment","gdp","gdp_quarterly","gov_bond_10y","gov_bond_2y","gov_bond_30y","gov_bond_3y","gov_bond_5y","gov_bond_7y","household_credit","inflation","inflation_linked_bond","part_time_employment","participation_rate","policy_rate","retail_sales","risk_free_rate","trade_balance","trade_weighted_index","unemployment"],"CHF":["business_confidence","cb_assets","consumer_confidence","core_inflation","employment","foreign_reserves","full_time_employment","gdp","gold_reserves","gov_bond_10y","gov_bond_1y","gov_bond_20y","gov_bond_2y","gov_bond_30y","gov_bond_3y","gov_bond_4y","gov_bond_5y","inflation","part_time_employment","participation_rate","policy_rate","ppi","retail_sales","risk_free_rate","sight_deposits","trade_weighted_index","unemployment"],"CNH":["business_confidence","cb_assets","core_inflation","current_account_balance","gdp","gov_bond_10y","gov_bond_2y","gov_bond_3y","gov_bond_5y","inflation","policy_rate","ppi","retail_sales","risk_free_rate","trade_weighted_index","unemployment"],"CNY":["business_confidence","cb_assets","core_inflation","current_account_balance","foreign_reserves","gdp","gold_reserves","gov_bond_10y","gov_bond_2y","gov_bond_3y","gov_bond_5y","inflation","m1","m2","policy_rate","ppi","retail_sales","risk_free_rate","trade_weighted_index","unemployment"],"DKK":["gov_bond_10y","inflation","inflation_mom","risk_free_rate","trade_weighted_index"],"EUR":["balance_on_goods","balance_on_services","breakeven_inflation_rate","business_confidence","consumer_confidence","core_inflation","core_inflation_mom","current_account_balance","employment","full_time_employment","gdp","gov_bond_10y","gov_bond_2y","gov_bond_3y","gov_bond_5y","inflation","inflation_linked_bond","inflation_mom","m1","m2","m3","part_time_employment","participation_rate","policy_rate","policy_rate_mlf","policy_rate_mro","ppi","ppi_mom","retail_sales","risk_free_rate","trade_balance","trade_weighted_index","unemployment"],"GBP":["consumer_confidence","core_inflation","employment","exports","full_time_employment","gdp","gov_bond_10y","gov_bond_20y","gov_bond_2y","gov_bond_3y","gov_bond_5y","imports","inflation","inflation_linked_bond","part_time_employment","participation_rate","policy_rate","ppi","retail_sales","risk_free_rate","trade_balance","trade_weighted_index","unemployment","wages"],"ILS":["gov_bond_10y","gov_bond_2y","gov_bond_3y","gov_bond_5y","inflation_linked_bond","policy_rate","risk_free_rate","trade_weighted_index"],"JPY":["business_confidence","cb_assets","consumer_confidence","core_inflation","current_account_balance","employment","foreign_reserves","full_time_employment","gdp","gov_bond_10y","gov_bond_20y","gov_bond_2y","gov_bond_30y","gov_bond_3y","gov_bond_40y","gov_bond_5y","gov_bond_7y","inflation","inflation_linked_bond","m1","m2","m3","part_time_employment","participation_rate","policy_rate","risk_free_rate","trade_balance","trade_weighted_index","unemployment"],"NGN":["cb_assets","deposit_rates","foreign_reserves","policy_rate","risk_free_rate"],"NOK":["business_confidence","gov_bond_10y","gov_bond_2y","gov_bond_5y","risk_free_rate","trade_weighted_index"],"NZD":["cb_assets","core_inflation","dairy_exports","deposit_rates","employment","foreign_reserves","gdp","gov_bond_10y","gov_bond_2y","gov_bond_3y","gov_bond_5y","inflation","inflation_linked_bond","participation_rate","policy_rate","risk_free_rate","terms_of_trade","trade_balance","trade_weighted_index","unemployment"],"PEN":["foreign_reserves","gov_bond_10y","gov_bond_2y","gov_bond_3y","gov_bond_5y","risk_free_rate","trade_weighted_index"],"SEK":["employment","gdp","gov_bond_10y","gov_bond_2y","gov_bond_5y","inflation","participation_rate","policy_rate","risk_free_rate","trade_weighted_index","unemployment"],"THB":["current_account_balance","employment","gdp","gov_bond_10y","gov_bond_2y","gov_bond_3y","gov_bond_5y","inflation","m1","m2","participation_rate","policy_rate","ppi","risk_free_rate","trade_balance","unemployment"],"USD":["average_hourly_earnings","average_hourly_earnings_mom","breakeven_inflation_rate","building_permits","business_confidence","cb_assets","consumer_confidence","core_inflation","core_inflation_mom","core_pce","core_pce_mom","crude_oil_inventories","current_account_balance","durable_goods_orders","employment","foreign_reserves","full_time_employment","gdp","gdp_growth_q4_yoy","gdp_growth_qoq_saar","gold_reserves","gov_bond_10y","gov_bond_2y","gov_bond_3y","gov_bond_5y","government_debt","house_price_index","housing_starts","inflation","inflation_linked_bond","inflation_mom","initial_jobless_claims","job_openings","nairu","natural_gas_storage","non_farm_payrolls","part_time_employment","participation_rate","pce","pce_mom","policy_rate","policy_rate_midpoint","policy_rate_target_lower","ppi","ppi_mom","retail_sales","retail_sales_control_group","retail_sales_ex_autos","retail_sales_ex_autos_and_gas","risk_free_rate","trade_balance","trade_weighted_index","unemployment","wages"]},"seasonality":["sa","nsa"],"frequency":["level","yoy","qoq","mom"],"annualization":["not_annualized","saar"],"period_aggregation":["monthly","quarterly_average"],"revisions":["latest","first","final","all"],"basis":["real","nominal"]}}},"/v1/cot/{currency}":{"get":{"tags":["fx_markets"],"summary":"Get CFTC Commitment of Traders (COT) data","description":"Returns weekly CFTC Legacy Futures-Only COT report data for the specified currency's FX futures contract.\n\n**Supported currencies:** AUD, CAD, CHF, EUR, GBP, HUF, JPY, MXN, NZD, TRY, USD, XAU\n\n**Path Parameters:**\n- `currency`: 3-letter currency code (e.g., EUR, GBP, JPY).\n\n**Query Parameters:**\n- `start_date`: Optional. Start date YYYY-MM-DD. Defaults to 52 weeks ago.\n- `end_date`: Optional. End date YYYY-MM-DD. Defaults to today.\n\n**Authentication:** USD data is publicly available, but anonymous callers are limited to the most recent 365 days; an earlier `start_date` is clamped automatically. All other currencies require a professional API key supplied via `?api_key=<key>` or the `X-API-Key` header. Authenticated callers (any valid key) receive the full requested history for every currency.\n\n**Data source:** CFTC public API — https://publicreporting.cftc.gov/resource/6dca-aqww.json","operationId":"get_cot_data_v1_cot__currency__get","parameters":[{"name":"currency","in":"path","required":true,"schema":{"type":"string","title":"Currency","enum":["AUD","CAD","CHF","EUR","GBP","HUF","JPY","MXN","NZD","TRY","USD","XAU"],"example":"AUD"},"description":"Required path parameter. Allowed values: AUD, CAD, CHF, EUR, GBP, HUF, JPY, MXN, NZD, TRY, USD, XAU."},{"name":"start_date","in":"query","required":false,"schema":{"type":"string","description":"Start date YYYY-MM-DD","examples":["2025-09-01"],"title":"Start Date"},"description":"Optional query parameter. Start date YYYY-MM-DD"},{"name":"end_date","in":"query","required":false,"schema":{"type":"string","description":"End date YYYY-MM-DD","examples":["2026-03-01"],"title":"End Date"},"description":"Optional query parameter. End date YYYY-MM-DD"},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":100,"minimum":1,"description":"Maximum rows to return. Defaults to 20. Maximum 100.","examples":[20],"default":20,"title":"Limit"},"description":"Optional query parameter. Maximum rows to return. Defaults to 20. Maximum 100."},{"name":"offset","in":"query","required":false,"schema":{"type":"integer","minimum":0,"description":"Number of rows to skip after most-recent-first ordering.","examples":[0],"default":0,"title":"Offset"},"description":"Optional query parameter. Number of rows to skip after most-recent-first ordering."},{"name":"page","in":"query","required":false,"schema":{"anyOf":[{"type":"integer","minimum":1},{"type":"null"}],"description":"One-based page number. When supplied, it takes precedence over offset.","examples":[1],"title":"Page"},"description":"Optional query parameter. One-based page number. When supplied, it takes precedence over offset."},{"name":"api_key","in":"query","required":false,"schema":{"type":"string","description":"Your Professional API key","title":"Api Key"},"description":"Optional query API key. Recommended for public examples and required for non-USD, paid-only, or full-history requests. The API also accepts the X-API-Key header for server-side clients."}],"responses":{"200":{"description":"COT report history for the selected futures market.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/COTResponse"},"example":{"currency":"JPY","instrument":"JAPANESE YEN - CHICAGO MERCANTILE EXCHANGE","source":"CFTC public reporting API","source_url":"https://publicreporting.cftc.gov/resource/6dca-aqww.json","fx_overlay":{"pair":"USD/JPY"},"start_date":"2025-09-01","end_date":"2026-03-01","data":[{"date":"2026-02-24","announcement_datetime":1771996800,"open_interest":245678,"noncommercial_long":62400,"noncommercial_short":70420,"noncommercial_net":-8020}]}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-parameter-availability":{"currency":["AUD","CAD","CHF","EUR","GBP","HUF","JPY","MXN","NZD","TRY","USD","XAU"]}}},"/v1/commodities/latest":{"get":{"tags":["commodities"],"summary":"Get latest stored values for all commodity indicators","operationId":"get_all_commodity_latest_values_v1_commodities_latest_get","parameters":[{"name":"api_key","in":"query","required":false,"schema":{"type":"string","description":"Your Professional API key","title":"Api Key"},"description":"Optional query API key. Recommended for public examples and required for non-USD, paid-only, or full-history requests. The API also accepts the X-API-Key header for server-side clients."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/commodities/{indicator}":{"get":{"tags":["commodities"],"summary":"Get commodity indicator data","description":"Returns a time-series of commodity and energy price data from official sources.\n\n**Supported indicators:** `crude_oil_inventories`, `gold`, `natural_gas`, `natural_gas_storage`, `oil_brent`, `oil_wti`, `platinum`, `silver`.\n\nUse the supported-indicator list above as the authoritative contract; feature-flagged development indicators are not shown or served in production.\n\n**Precious metals** — sourced from The Royal Mint public chart API (https://www.royalmint.com/).\n\n- **Gold** (`gold`): LBMA PM Fix, USD/troy oz.\n- **Silver** (`silver`): LBMA Silver Fix, USD/troy oz.\n- **Platinum** (`platinum`): Spot price, USD/troy oz.\n\n**Energy** — sourced from the U.S. Energy Information Administration (https://api.eia.gov/v2/).\n\n- **WTI crude oil** (`oil_wti`): Cushing, OK spot price, USD/barrel.\n- **Brent crude oil** (`oil_brent`): Europe spot price, USD/barrel.\n- **Natural gas** (`natural_gas`): Henry Hub spot price, USD/MMBtu.\n\n**Query Parameters:**\n- `start_date`: Earliest date to include (YYYY-MM-DD). Defaults to 365 days ago.\n- `end_date`: Latest date to include (YYYY-MM-DD). Defaults to today.\n\n**Authentication:** A professional API key is required. Supply it via `?api_key=<key>` or the `X-API-Key` header.","operationId":"get_commodity_indicator_data_v1_commodities__indicator__get","parameters":[{"name":"indicator","in":"path","required":true,"schema":{"type":"string","description":"Commodity indicator slug","examples":["oil_wti"],"title":"Indicator","enum":["crude_oil_inventories","gold","natural_gas","natural_gas_storage","oil_brent","oil_wti","platinum","silver"],"example":"crude_oil_inventories"},"description":"Required path parameter. Commodity indicator slug Allowed values: crude_oil_inventories, gold, natural_gas, natural_gas_storage, oil_brent, oil_wti, platinum, silver."},{"name":"start_date","in":"query","required":false,"schema":{"type":"string","description":"Start date YYYY-MM-DD","examples":["2025-01-01"],"title":"Start Date"},"description":"Optional query parameter. Start date YYYY-MM-DD"},{"name":"end_date","in":"query","required":false,"schema":{"type":"string","description":"End date YYYY-MM-DD","examples":["2026-03-01"],"title":"End Date"},"description":"Optional query parameter. End date YYYY-MM-DD"},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":100,"minimum":1,"description":"Maximum rows to return. Defaults to 20. Maximum 100.","examples":[20],"default":20,"title":"Limit"},"description":"Optional query parameter. Maximum rows to return. Defaults to 20. Maximum 100."},{"name":"offset","in":"query","required":false,"schema":{"type":"integer","minimum":0,"description":"Number of rows to skip after most-recent-first ordering.","examples":[0],"default":0,"title":"Offset"},"description":"Optional query parameter. Number of rows to skip after most-recent-first ordering."},{"name":"page","in":"query","required":false,"schema":{"anyOf":[{"type":"integer","minimum":1},{"type":"null"}],"description":"One-based page number. When supplied, it takes precedence over offset.","examples":[1],"title":"Page"},"description":"Optional query parameter. One-based page number. When supplied, it takes precedence over offset."},{"name":"api_key","in":"query","required":false,"schema":{"type":"string","description":"Your Professional API key","title":"Api Key"},"description":"Optional query API key. Recommended for public examples and required for non-USD, paid-only, or full-history requests. The API also accepts the X-API-Key header for server-side clients."}],"responses":{"200":{"description":"Time-series data for the requested commodity indicator.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CommodityResponse"},"example":{"currency":"COMM","indicator":"gold","source":"The Royal Mint / LBMA","source_url":"https://www.royalmint.com/","has_official_forecast":false,"start_date":"2025-03-15","end_date":"2026-03-15","data":[{"date":"2026-01-31","val":2835.5,"pct_change":1.8,"pct_change_12m":28.5},{"date":"2026-02-28","val":2870.0,"pct_change":1.2,"pct_change_12m":30.1}]}}}},"404":{"description":"Unsupported commodity indicator.","content":{"application/json":{"example":{"detail":"Unsupported commodity indicator (xyz)"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-parameter-availability":{"indicator":["crude_oil_inventories","gold","natural_gas","natural_gas_storage","oil_brent","oil_wti","platinum","silver"]}}},"/v1/announcements/changes":{"get":{"tags":["announcements"],"summary":"Poll recent live announcement release changes","description":"Returns recent live announcement release events from the same durable fanout used by the real-time SSE stream. Use `next_cursor` as the `since` value on the next poll. This endpoint is intended for serverless clients that cannot hold a persistent SSE connection.\n\n**Authentication:** USD events are available without an API key. Non-USD currencies require a paid API key supplied via `api_key` or `X-API-Key`.\n\n**Retention:** Events are retained for the configured fanout window, currently exposed in `retention_seconds`. If a client is offline longer than that window, re-bootstrap from `/v1/announcements/{currency}/latest` and continue polling changes.","operationId":"get_announcement_changes_v1_announcements_changes_get","parameters":[{"name":"currencies","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Comma-separated currency codes, `g10`, or `all`. Without a paid API key the result is restricted to USD.","examples":["g10"],"title":"Currencies"},"description":"Optional query parameter. Comma-separated currency codes, `g10`, or `all`. Without a paid API key the result is restricted to USD."},{"name":"indicators","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Optional comma-separated announcement indicator slugs.","examples":["inflation,unemployment"],"title":"Indicators","enum":["average_hourly_earnings","average_hourly_earnings_mom","balance_on_goods","balance_on_services","breakeven_inflation_rate","building_approvals","building_permits","business_confidence","capital_account_balance","cb_assets","commodity_price_energy","commodity_price_ex_energy","commodity_price_index","commodity_prices","consumer_confidence","core_inflation","core_inflation_median","core_inflation_mom","core_inflation_trim","core_pce","core_pce_mom","credit_growth","crude_oil_inventories","current_account_balance","dairy_exports","deposit_rates","durable_goods_orders","employment","exports","financial_account_balance","foreign_reserves","full_time_employment","gdp","gdp_growth_q4_yoy","gdp_growth_qoq_saar","gdp_quarterly","gold_reserves","gov_bond_10y","gov_bond_1y","gov_bond_20y","gov_bond_2y","gov_bond_30y","gov_bond_3y","gov_bond_40y","gov_bond_4y","gov_bond_5y","gov_bond_7y","government_debt","house_price_index","household_credit","housing_starts","imports","inflation","inflation_linked_bond","inflation_mom","initial_jobless_claims","international_assets","international_liabilities","job_openings","m1","m2","m3","monthly_cpi","nairu","natural_gas_storage","net_foreign_asset_position","non_farm_payrolls","non_farm_payrolls_change","part_time_employment","participation_rate","pce","pce_mom","policy_rate","policy_rate_midpoint","policy_rate_mlf","policy_rate_mro","policy_rate_target_lower","ppi","ppi_mom","primary_income_balance","retail_sales","retail_sales_control_group","retail_sales_ex_autos","retail_sales_ex_autos_and_gas","risk_free_rate","secondary_income_balance","sight_deposits","terms_of_trade","trade_balance","trade_weighted_index","trimmed_mean_inflation","unemployment","wage_price_index","wages"],"example":"average_hourly_earnings"},"description":"Optional query parameter. Optional comma-separated announcement indicator slugs. Allowed values: average_hourly_earnings, average_hourly_earnings_mom, balance_on_goods, balance_on_services, breakeven_inflation_rate, building_approvals, building_permits, business_confidence, capital_account_balance, cb_assets, commodity_price_energy, commodity_price_ex_energy, commodity_price_index, commodity_prices, consumer_confidence, core_inflation, core_inflation_median, core_inflation_mom, core_inflation_trim, core_pce, core_pce_mom, credit_growth, crude_oil_inventories, current_account_balance, dairy_exports, deposit_rates, durable_goods_orders, employment, exports, financial_account_balance, foreign_reserves, full_time_employment, gdp, gdp_growth_q4_yoy, gdp_growth_qoq_saar, gdp_quarterly, gold_reserves, gov_bond_10y, gov_bond_1y, gov_bond_20y, gov_bond_2y, gov_bond_30y, gov_bond_3y, gov_bond_40y, gov_bond_4y, gov_bond_5y, gov_bond_7y, government_debt, house_price_index, household_credit, housing_starts, imports, inflation, inflation_linked_bond, inflation_mom, initial_jobless_claims, international_assets, international_liabilities, job_openings, m1, m2, m3, monthly_cpi, nairu, natural_gas_storage, net_foreign_asset_position, non_farm_payrolls, non_farm_payrolls_change, part_time_employment, participation_rate, pce, pce_mom, policy_rate, policy_rate_midpoint, policy_rate_mlf, policy_rate_mro, policy_rate_target_lower, ppi, ppi_mom, primary_income_balance, retail_sales, retail_sales_control_group, retail_sales_ex_autos, retail_sales_ex_autos_and_gas, risk_free_rate, secondary_income_balance, sight_deposits, terms_of_trade, trade_balance, trade_weighted_index, trimmed_mean_inflation, unemployment, wage_price_index, wages."},{"name":"since","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Cursor returned as `next_cursor` by the previous response. ISO 8601 timestamps and Unix epoch seconds are also accepted.","title":"Since"},"description":"Optional query parameter. Cursor returned as `next_cursor` by the previous response. ISO 8601 timestamps and Unix epoch seconds are also accepted."},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":500,"minimum":1,"description":"Maximum number of matching change events to return.","default":100,"title":"Limit"},"description":"Optional query parameter. Maximum number of matching change events to return."},{"name":"payload","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Use `compact` for trigger payloads or `full` for row fields.","default":"compact","title":"Payload","enum":["compact","full"],"example":"compact"},"description":"Optional query parameter. Use `compact` for trigger payloads or `full` for row fields. Allowed values: compact, full."},{"name":"api_key","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Api Key"},"description":"Optional query API key. Recommended for public examples and required for non-USD, paid-only, or full-history requests. The API also accepts the X-API-Key header for server-side clients."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AnnouncementChangesResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-parameter-availability":{"currency":["AUD","BRL","CAD","CHF","CNH","CNY","DKK","EUR","GBP","ILS","JPY","NGN","NOK","NZD","PEN","SEK","THB","USD"],"indicator":["average_hourly_earnings","average_hourly_earnings_mom","balance_on_goods","balance_on_services","breakeven_inflation_rate","building_approvals","building_permits","business_confidence","capital_account_balance","cb_assets","commodity_price_energy","commodity_price_ex_energy","commodity_price_index","commodity_prices","consumer_confidence","core_inflation","core_inflation_median","core_inflation_mom","core_inflation_trim","core_pce","core_pce_mom","credit_growth","crude_oil_inventories","current_account_balance","dairy_exports","deposit_rates","durable_goods_orders","employment","exports","financial_account_balance","foreign_reserves","full_time_employment","gdp","gdp_growth_q4_yoy","gdp_growth_qoq_saar","gdp_quarterly","gold_reserves","gov_bond_10y","gov_bond_1y","gov_bond_20y","gov_bond_2y","gov_bond_30y","gov_bond_3y","gov_bond_40y","gov_bond_4y","gov_bond_5y","gov_bond_7y","government_debt","house_price_index","household_credit","housing_starts","imports","inflation","inflation_linked_bond","inflation_mom","initial_jobless_claims","international_assets","international_liabilities","job_openings","m1","m2","m3","monthly_cpi","nairu","natural_gas_storage","net_foreign_asset_position","non_farm_payrolls","non_farm_payrolls_change","part_time_employment","participation_rate","pce","pce_mom","policy_rate","policy_rate_midpoint","policy_rate_mlf","policy_rate_mro","policy_rate_target_lower","ppi","ppi_mom","primary_income_balance","retail_sales","retail_sales_control_group","retail_sales_ex_autos","retail_sales_ex_autos_and_gas","risk_free_rate","secondary_income_balance","sight_deposits","terms_of_trade","trade_balance","trade_weighted_index","trimmed_mean_inflation","unemployment","wage_price_index","wages"],"payload":["compact","full"]}}},"/v1/stream/events":{"get":{"tags":["announcements"],"summary":"Subscribe to real-time announcement events (SSE)","description":"Opens a long-lived Server-Sent Events (SSE) stream.  A new event is pushed to all connected clients whenever an economic data release is ingested.\n\nThe stream payload contains event metadata and a single `latest_announcement` datapoint (`date`, `val`, `announcement_datetime`) when available.  It does not include the full time-series; fetch complete history from the matching announcements endpoint after receiving an event.\n\n**Authentication:** Live SSE delivery requires an active FXMacroData trial or subscription API key supplied via the ``api_key`` query parameter or the ``X-API-Key`` header.\n\n**Reconnection:** Pass the ``Last-Event-ID`` header (the ``event_id`` of the last received event) to replay buffered events on reconnect.\n\n**Filtering:** Use ``currencies`` and ``indicators`` to narrow the stream.  Omit either parameter to receive all live events included in your subscription.\n\n**Payloads:** ``payload=compact`` is the default.  ``payload=full`` adds the latest stored announcement row fields directly to each event.","operationId":"stream_events_v1_stream_events_get","parameters":[{"name":"currencies","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Comma-separated currency codes to subscribe to, e.g. ``usd,eur``. Omit to receive all live events included in your subscription.","title":"Currencies"},"description":"Optional query parameter. Comma-separated currency codes to subscribe to, e.g. ``usd,eur``. Omit to receive all live events included in your subscription."},{"name":"indicators","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Comma-separated indicator slugs, e.g. ``inflation,gdp``. Omit to receive all indicators.","title":"Indicators","enum":["average_hourly_earnings","average_hourly_earnings_mom","balance_on_goods","balance_on_services","breakeven_inflation_rate","building_approvals","building_permits","business_confidence","capital_account_balance","cb_assets","commodity_price_energy","commodity_price_ex_energy","commodity_price_index","commodity_prices","consumer_confidence","core_inflation","core_inflation_median","core_inflation_mom","core_inflation_trim","core_pce","core_pce_mom","credit_growth","crude_oil_inventories","current_account_balance","dairy_exports","deposit_rates","durable_goods_orders","employment","exports","financial_account_balance","foreign_reserves","full_time_employment","gdp","gdp_growth_q4_yoy","gdp_growth_qoq_saar","gdp_quarterly","gold_reserves","gov_bond_10y","gov_bond_1y","gov_bond_20y","gov_bond_2y","gov_bond_30y","gov_bond_3y","gov_bond_40y","gov_bond_4y","gov_bond_5y","gov_bond_7y","government_debt","house_price_index","household_credit","housing_starts","imports","inflation","inflation_linked_bond","inflation_mom","initial_jobless_claims","international_assets","international_liabilities","job_openings","m1","m2","m3","monthly_cpi","nairu","natural_gas_storage","net_foreign_asset_position","non_farm_payrolls","non_farm_payrolls_change","part_time_employment","participation_rate","pce","pce_mom","policy_rate","policy_rate_midpoint","policy_rate_mlf","policy_rate_mro","policy_rate_target_lower","ppi","ppi_mom","primary_income_balance","retail_sales","retail_sales_control_group","retail_sales_ex_autos","retail_sales_ex_autos_and_gas","risk_free_rate","secondary_income_balance","sight_deposits","terms_of_trade","trade_balance","trade_weighted_index","trimmed_mean_inflation","unemployment","wage_price_index","wages"],"example":"average_hourly_earnings"},"description":"Optional query parameter. Comma-separated indicator slugs, e.g. ``inflation,gdp``. Omit to receive all indicators. Allowed values: average_hourly_earnings, average_hourly_earnings_mom, balance_on_goods, balance_on_services, breakeven_inflation_rate, building_approvals, building_permits, business_confidence, capital_account_balance, cb_assets, commodity_price_energy, commodity_price_ex_energy, commodity_price_index, commodity_prices, consumer_confidence, core_inflation, core_inflation_median, core_inflation_mom, core_inflation_trim, core_pce, core_pce_mom, credit_growth, crude_oil_inventories, current_account_balance, dairy_exports, deposit_rates, durable_goods_orders, employment, exports, financial_account_balance, foreign_reserves, full_time_employment, gdp, gdp_growth_q4_yoy, gdp_growth_qoq_saar, gdp_quarterly, gold_reserves, gov_bond_10y, gov_bond_1y, gov_bond_20y, gov_bond_2y, gov_bond_30y, gov_bond_3y, gov_bond_40y, gov_bond_4y, gov_bond_5y, gov_bond_7y, government_debt, house_price_index, household_credit, housing_starts, imports, inflation, inflation_linked_bond, inflation_mom, initial_jobless_claims, international_assets, international_liabilities, job_openings, m1, m2, m3, monthly_cpi, nairu, natural_gas_storage, net_foreign_asset_position, non_farm_payrolls, non_farm_payrolls_change, part_time_employment, participation_rate, pce, pce_mom, policy_rate, policy_rate_midpoint, policy_rate_mlf, policy_rate_mro, policy_rate_target_lower, ppi, ppi_mom, primary_income_balance, retail_sales, retail_sales_control_group, retail_sales_ex_autos, retail_sales_ex_autos_and_gas, risk_free_rate, secondary_income_balance, sight_deposits, terms_of_trade, trade_balance, trade_weighted_index, trimmed_mean_inflation, unemployment, wage_price_index, wages."},{"name":"api_key","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Your active FXMacroData trial or subscription API key.","title":"Api Key"},"description":"Active FXMacroData trial or subscription API key required for live delivery. Use the query parameter for browser or EventSource clients; server-side clients may use the X-API-Key header."},{"name":"payload","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Event payload shape. Use `compact` for the stable trigger payload or `full` to flatten the latest announcement row into each event.","default":"compact","title":"Payload","enum":["compact","full"],"example":"compact"},"description":"Optional query parameter. Event payload shape. Use `compact` for the stable trigger payload or `full` to flatten the latest announcement row into each event. Allowed values: compact, full."},{"name":"live_only","in":"query","required":false,"schema":{"type":"boolean","default":false,"title":"Live Only"},"description":"Optional query parameter."},{"name":"max_age_ms","in":"query","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Max Age Ms"},"description":"Optional query parameter."},{"name":"Last-Event-ID","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Last-Event-Id"}}],"responses":{"200":{"description":"Streaming SSE response.","content":{"text/event-stream":{}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-parameter-availability":{"currency":["AUD","BRL","CAD","CHF","CNH","CNY","DKK","EUR","GBP","ILS","JPY","NGN","NOK","NZD","PEN","SEK","THB","USD"],"indicator":["average_hourly_earnings","average_hourly_earnings_mom","balance_on_goods","balance_on_services","breakeven_inflation_rate","building_approvals","building_permits","business_confidence","capital_account_balance","cb_assets","commodity_price_energy","commodity_price_ex_energy","commodity_price_index","commodity_prices","consumer_confidence","core_inflation","core_inflation_median","core_inflation_mom","core_inflation_trim","core_pce","core_pce_mom","credit_growth","crude_oil_inventories","current_account_balance","dairy_exports","deposit_rates","durable_goods_orders","employment","exports","financial_account_balance","foreign_reserves","full_time_employment","gdp","gdp_growth_q4_yoy","gdp_growth_qoq_saar","gdp_quarterly","gold_reserves","gov_bond_10y","gov_bond_1y","gov_bond_20y","gov_bond_2y","gov_bond_30y","gov_bond_3y","gov_bond_40y","gov_bond_4y","gov_bond_5y","gov_bond_7y","government_debt","house_price_index","household_credit","housing_starts","imports","inflation","inflation_linked_bond","inflation_mom","initial_jobless_claims","international_assets","international_liabilities","job_openings","m1","m2","m3","monthly_cpi","nairu","natural_gas_storage","net_foreign_asset_position","non_farm_payrolls","non_farm_payrolls_change","part_time_employment","participation_rate","pce","pce_mom","policy_rate","policy_rate_midpoint","policy_rate_mlf","policy_rate_mro","policy_rate_target_lower","ppi","ppi_mom","primary_income_balance","retail_sales","retail_sales_control_group","retail_sales_ex_autos","retail_sales_ex_autos_and_gas","risk_free_rate","secondary_income_balance","sight_deposits","terms_of_trade","trade_balance","trade_weighted_index","trimmed_mean_inflation","unemployment","wage_price_index","wages"],"payload":["compact","full"]}}}},"components":{"schemas":{"AnnouncementChangeEvent":{"properties":{"event_id":{"type":"string","title":"Event Id"},"currency":{"type":"string","title":"Currency"},"indicator":{"type":"string","title":"Indicator"},"records_written":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Records Written"},"timestamp":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Timestamp"},"latest_announcement":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Latest Announcement"}},"additionalProperties":true,"type":"object","required":["event_id","currency","indicator"],"title":"AnnouncementChangeEvent"},"AnnouncementChangesResponse":{"properties":{"data":{"items":{"$ref":"#/components/schemas/AnnouncementChangeEvent"},"type":"array","title":"Data"},"count":{"type":"integer","title":"Count"},"next_cursor":{"type":"string","title":"Next Cursor"},"has_more":{"type":"boolean","title":"Has More"},"retention_seconds":{"type":"integer","title":"Retention Seconds"},"scope":{"additionalProperties":true,"type":"object","title":"Scope"}},"type":"object","required":["data","count","next_cursor","has_more","retention_seconds","scope"],"title":"AnnouncementChangesResponse"},"AnnouncementDataPoint":{"properties":{"announcement_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Announcement Id"},"date":{"type":"string","title":"Date"},"val":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Val"},"source":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Source"},"source_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Source Url"},"source_url_scope":{"anyOf":[{"type":"string","enum":["release","dataset","series"]},{"type":"null"}],"title":"Source Url Scope"},"previous_value":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Previous Value"},"previous_date":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Previous Date"},"previous_announcement_datetime":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Previous Announcement Datetime"},"change":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Change"},"change_from_previous":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Change From Previous"},"pct_change_from_previous":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Pct Change From Previous"},"original_val":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Original Val"},"original_unit":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Original Unit"},"val_mom":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Val Mom"},"observation_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Observation Id"},"announcement_datetime":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Announcement Datetime"},"announcement_datetime_local":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Announcement Datetime Local"},"official_planned_release_datetime":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Official Planned Release Datetime"},"official_planned_release_datetime_local":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Official Planned Release Datetime Local"},"official_actual_release_datetime":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Official Actual Release Datetime"},"official_actual_release_datetime_local":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Official Actual Release Datetime Local"},"collected_at_ns":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Collected At Ns"},"collected_at_iso":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Collected At Iso"},"ingestion_latency_ms":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Ingestion Latency Ms"},"ingestion_latency_reference":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Ingestion Latency Reference"},"pct_change":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Pct Change"},"pct_change_yoy":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Pct Change Yoy"},"pct_change_qoq":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Pct Change Qoq"},"pct_change_mom":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Pct Change Mom"},"pct_change_12m":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Pct Change 12M"},"revisions":{"anyOf":[{"items":{"$ref":"#/components/schemas/RevisionEntry"},"type":"array"},{"type":"null"}],"title":"Revisions"},"outside_requested_window":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Outside Requested Window"},"requested_start_date":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Requested Start Date"},"requested_end_date":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Requested End Date"},"returned_reason":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Returned Reason"},"staleness_days":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Staleness Days"},"canonical_indicator":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Canonical Indicator"},"raw_indicator":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Raw Indicator"},"remap_applied":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Remap Applied"},"remap_rule_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Remap Rule Id"},"remap_segment_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Remap Segment Id"}},"type":"object","required":["date"],"title":"AnnouncementDataPoint"},"AnnouncementPredictions":{"properties":{"announcement_id":{"type":"string","title":"Announcement Id","description":"Stable identifier of the announcement these predictions target, in the form ``{currency}_{indicator}_{date}``.","examples":["usd_inflation_2026-01-31"]},"observation_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Observation Id","description":"Variant-safe identifier for the selected series observation. Use this with `selected_series_id` when query selectors choose a non-default series."},"selected_series_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Selected Series Id","description":"Stable identifier of the selected announcement series."},"currency":{"type":"string","title":"Currency"},"indicator":{"type":"string","title":"Indicator"},"date":{"type":"string","title":"Date","description":"Reference period date of the forecast, ``YYYY-MM-DD``."},"announcement_datetime":{"type":"integer","title":"Announcement Datetime","description":"Release timestamp of the forecasted announcement, Unix epoch seconds (UTC)."},"announcement_datetime_local":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Announcement Datetime Local","description":"ISO 8601 release time with timezone offset, rendered in the currency's market timezone."},"announcement_timing":{"anyOf":[{"type":"string","enum":["past","future"]},{"type":"null"}],"title":"Announcement Timing","description":"Whether the forecasted announcement is still upcoming (`future`) or already released (`past`)."},"predictions":{"items":{"$ref":"#/components/schemas/PredictionItem"},"type":"array","title":"Predictions","description":"List of forecasts for this announcement, one entry per prediction source.  Sorted by ``prediction_source`` for deterministic output."}},"type":"object","required":["announcement_id","currency","indicator","date","announcement_datetime"],"title":"AnnouncementPredictions","description":"All available forecasts targeting a single announcement.\n\n``announcement_id`` matches the value surfaced on the corresponding\nrow in ``/v1/announcements/{currency}/{indicator}``, allowing clients\nto join predictions with realised observations.  ``predictions``\ncontains one sub-entry per source (e.g. central-bank projection,\nIMF WEO, market consensus survey, FXMacroData prediction)."},"AnnouncementResponse":{"properties":{"currency":{"type":"string","title":"Currency"},"indicator":{"type":"string","title":"Indicator"},"name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Name"},"value_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Value Name"},"source":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Source"},"source_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Source Url"},"source_series_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Source Series Id"},"source_series_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Source Series Name"},"source_local_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Source Local Name"},"seasonal_adjustment":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Seasonal Adjustment"},"price_basis":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Price Basis"},"is_proxy":{"type":"boolean","title":"Is Proxy","default":false},"proxy_note":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Proxy Note"},"provenance":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Provenance"},"policy_role":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Policy Role"},"policy_structure":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Policy Structure"},"comparison_compatible":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Comparison Compatible"},"policy_family":{"anyOf":[{"items":{"$ref":"#/components/schemas/PolicyFamilyEntry"},"type":"array"},{"type":"null"}],"title":"Policy Family"},"has_official_forecast":{"type":"boolean","title":"Has Official Forecast"},"requested_start_date":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Requested Start Date"},"requested_end_date":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Requested End Date"},"requested_window_has_data":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Requested Window Has Data"},"page_includes_latest_available":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Page Includes Latest Available"},"start_date":{"type":"string","title":"Start Date"},"end_date":{"type":"string","title":"End Date"},"earliest_available_date":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Earliest Available Date"},"latest_available_date":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Latest Available Date"},"cb_target":{"anyOf":[{"$ref":"#/components/schemas/CBTargetInfo"},{"type":"null"}]},"remap":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Remap"},"filters":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Filters"},"selected_series_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Selected Series Id"},"selected_series":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Selected Series"},"supported_options":{"anyOf":[{"additionalProperties":{"items":{"type":"string"},"type":"array"},"type":"object"},{"type":"null"}],"title":"Supported Options"},"data_quality":{"$ref":"#/components/schemas/DataQuality"},"pagination":{"$ref":"#/components/schemas/PaginationInfo"},"data":{"items":{"$ref":"#/components/schemas/AnnouncementDataPoint"},"type":"array","title":"Data"}},"type":"object","required":["currency","indicator","has_official_forecast","start_date","end_date","data_quality","pagination","data"],"title":"AnnouncementResponse"},"Body_oauth_device_authorize_oauth_device_authorize_post":{"properties":{"client_id":{"type":"string","title":"Client Id"},"scope":{"type":"string","title":"Scope","default":"fxmacrodata.read"}},"type":"object","required":["client_id"],"title":"Body_oauth_device_authorize_oauth_device_authorize_post"},"Body_oauth_device_verify_oauth_device_verify_post":{"properties":{"user_code":{"type":"string","title":"User Code"},"api_key":{"type":"string","title":"Api Key"}},"type":"object","required":["user_code","api_key"],"title":"Body_oauth_device_verify_oauth_device_verify_post"},"Body_oauth_revoke_oauth_revoke_post":{"properties":{"token":{"type":"string","title":"Token"},"token_type_hint":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Token Type Hint"},"client_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Client Id"}},"type":"object","required":["token"],"title":"Body_oauth_revoke_oauth_revoke_post"},"Body_oauth_token_oauth_token_post":{"properties":{"grant_type":{"type":"string","title":"Grant Type","examples":["authorization_code"]},"code":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Code","examples":["auth_code_from_authorize_endpoint"]},"redirect_uri":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Redirect Uri","examples":["https://claude.ai/api/mcp/auth_callback"]},"client_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Client Id","examples":["claude-connector"]},"code_verifier":{"type":"string","title":"Code Verifier","examples":["pkce-verifier-value"]},"resource":{"type":"string","title":"Resource","description":"Optional protected resource identifier sent by some MCP OAuth clients.","examples":["https://fxmacrodata.com"]},"client_secret":{"type":"string","title":"Client Secret","examples":["oauth-client-secret"]},"device_code":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Device Code","examples":["device_code_from_authorize"]},"refresh_token":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Refresh Token","examples":["refresh_token_from_prior_token_response"]}},"type":"object","required":["grant_type"],"title":"Body_oauth_token_oauth_token_post"},"CBTargetEntry":{"properties":{"effective_from":{"type":"string","title":"Effective From"},"target":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Target"},"lower":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Lower"},"upper":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Upper"},"notes":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Notes"}},"type":"object","required":["effective_from"],"title":"CBTargetEntry","description":"A single central-bank target entry valid from ``effective_from``."},"CBTargetInfo":{"properties":{"description":{"type":"string","title":"Description"},"source":{"type":"string","title":"Source"},"current":{"$ref":"#/components/schemas/CBTargetEntry"},"history":{"items":{"$ref":"#/components/schemas/CBTargetEntry"},"type":"array","title":"History"}},"type":"object","required":["description","source","current","history"],"title":"CBTargetInfo","description":"Central-bank target metadata for an indicator.\n\n``current`` is the entry effective as of the response ``end_date``.\n``history`` contains every known target regime in ascending date order."},"COTDataPoint":{"properties":{"date":{"type":"string","title":"Date"},"announcement_datetime":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Announcement Datetime"},"open_interest":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Open Interest"},"noncommercial_long":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Noncommercial Long"},"noncommercial_short":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Noncommercial Short"},"noncommercial_net":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Noncommercial Net"},"noncommercial_spread":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Noncommercial Spread"},"commercial_long":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Commercial Long"},"commercial_short":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Commercial Short"},"commercial_net":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Commercial Net"},"total_reportable_long":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Total Reportable Long"},"total_reportable_short":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Total Reportable Short"},"nonreportable_long":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Nonreportable Long"},"nonreportable_short":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Nonreportable Short"},"open_interest_zscore":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Open Interest Zscore"},"noncommercial_long_zscore":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Noncommercial Long Zscore"},"noncommercial_short_zscore":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Noncommercial Short Zscore"},"noncommercial_net_zscore":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Noncommercial Net Zscore"},"noncommercial_spread_zscore":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Noncommercial Spread Zscore"},"commercial_long_zscore":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Commercial Long Zscore"},"commercial_short_zscore":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Commercial Short Zscore"},"commercial_net_zscore":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Commercial Net Zscore"},"total_reportable_long_zscore":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Total Reportable Long Zscore"},"total_reportable_short_zscore":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Total Reportable Short Zscore"},"nonreportable_long_zscore":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Nonreportable Long Zscore"},"nonreportable_short_zscore":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Nonreportable Short Zscore"},"report_date":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Report Date"},"cutoff_date":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Cutoff Date"},"release_date":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Release Date"},"release_datetime":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Release Datetime"},"release_date_confirmed":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Release Date Confirmed"},"release_source":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Release Source"},"release_source_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Release Source Url"},"holiday_adjusted_release":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Holiday Adjusted Release"}},"type":"object","required":["date"],"title":"COTDataPoint"},"COTFXOverlay":{"properties":{"pair":{"type":"string","title":"Pair"}},"type":"object","required":["pair"],"title":"COTFXOverlay"},"COTLatestResponse":{"properties":{"currency":{"type":"string","title":"Currency"},"instrument":{"type":"string","title":"Instrument"},"fx_overlay":{"$ref":"#/components/schemas/COTFXOverlay"},"source":{"type":"string","title":"Source"},"latest_available_date":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Latest Available Date"},"latest_available_announcement_datetime":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Latest Available Announcement Datetime"},"expected_next_release":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Expected Next Release"},"expected_next_release_epoch":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Expected Next Release Epoch"},"last_sync_status":{"type":"string","title":"Last Sync Status"},"last_sync_datetime":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Last Sync Datetime"},"data_lag_days":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Data Lag Days"},"next_expected_cftc_report_date":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Next Expected Cftc Report Date"},"next_expected_cftc_release_date":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Next Expected Cftc Release Date"},"expected_next_release_holiday_adjusted":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Expected Next Release Holiday Adjusted"},"expected_next_release_source":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Expected Next Release Source"},"expected_next_release_source_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Expected Next Release Source Url"},"expected_next_release_schedule_storage":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Expected Next Release Schedule Storage"},"expected_next_release_schedule_last_updated":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Expected Next Release Schedule Last Updated"},"last_updated":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Last Updated"},"data_quality":{"$ref":"#/components/schemas/DataQuality"},"latest":{"$ref":"#/components/schemas/COTDataPoint"},"previous":{"anyOf":[{"$ref":"#/components/schemas/COTDataPoint"},{"type":"null"}]},"pct_diff_prev":{"additionalProperties":{"type":"number"},"type":"object","title":"Pct Diff Prev"}},"type":"object","required":["currency","instrument","fx_overlay","source","last_sync_status","data_quality","latest","pct_diff_prev"],"title":"COTLatestResponse"},"COTPaginationInfo":{"properties":{"limit":{"type":"integer","title":"Limit"},"offset":{"type":"integer","title":"Offset"},"returned_count":{"type":"integer","title":"Returned Count"},"total_count":{"type":"integer","title":"Total Count"},"has_more":{"type":"boolean","title":"Has More"},"next_offset":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Next Offset"}},"type":"object","required":["limit","offset","returned_count","total_count","has_more"],"title":"COTPaginationInfo"},"COTProvenance":{"properties":{"publisher":{"type":"string","title":"Publisher"},"publisher_url":{"type":"string","title":"Publisher Url"},"storage":{"type":"string","title":"Storage"},"served_by":{"type":"string","title":"Served By"},"timestamp_field":{"type":"string","title":"Timestamp Field"},"value_field":{"type":"string","title":"Value Field"}},"type":"object","required":["publisher","publisher_url","storage","served_by","timestamp_field","value_field"],"title":"COTProvenance"},"COTResponse":{"properties":{"currency":{"type":"string","title":"Currency"},"instrument":{"type":"string","title":"Instrument"},"source":{"type":"string","title":"Source"},"source_url":{"type":"string","title":"Source Url"},"provenance":{"$ref":"#/components/schemas/COTProvenance"},"fx_overlay":{"$ref":"#/components/schemas/COTFXOverlay"},"start_date":{"type":"string","title":"Start Date"},"end_date":{"type":"string","title":"End Date"},"latest_available_date":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Latest Available Date"},"latest_available_announcement_datetime":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Latest Available Announcement Datetime"},"expected_next_release":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Expected Next Release"},"expected_next_release_epoch":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Expected Next Release Epoch"},"last_sync_status":{"type":"string","title":"Last Sync Status"},"last_sync_datetime":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Last Sync Datetime"},"data_lag_days":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Data Lag Days"},"next_expected_cftc_report_date":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Next Expected Cftc Report Date"},"next_expected_cftc_release_date":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Next Expected Cftc Release Date"},"expected_next_release_holiday_adjusted":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Expected Next Release Holiday Adjusted"},"expected_next_release_source":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Expected Next Release Source"},"expected_next_release_source_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Expected Next Release Source Url"},"expected_next_release_schedule_storage":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Expected Next Release Schedule Storage"},"expected_next_release_schedule_last_updated":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Expected Next Release Schedule Last Updated"},"requested_window_has_data":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Requested Window Has Data"},"requested_window_latest_date":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Requested Window Latest Date"},"requested_window_includes_latest_available":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Requested Window Includes Latest Available"},"page_includes_latest_available":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Page Includes Latest Available"},"last_updated":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Last Updated"},"data_quality":{"$ref":"#/components/schemas/DataQuality"},"pagination":{"$ref":"#/components/schemas/COTPaginationInfo"},"data":{"items":{"$ref":"#/components/schemas/COTDataPoint"},"type":"array","title":"Data"}},"type":"object","required":["currency","instrument","source","source_url","provenance","fx_overlay","start_date","end_date","last_sync_status","data_quality","pagination","data"],"title":"COTResponse"},"CalendarReleaseRow":{"properties":{"announcement_datetime":{"type":"integer","title":"Announcement Datetime"},"release":{"type":"string","title":"Release"},"announcement_datetime_utc":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Announcement Datetime Utc"},"announcement_datetime_local":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Announcement Datetime Local"},"announcement_datetime_requested_timezone":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Announcement Datetime Requested Timezone"},"release_date_confirmed":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Release Date Confirmed"},"release_time_assumed":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Release Time Assumed"},"release_time_status":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Release Time Status"},"release_time_assumption":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Release Time Assumption"},"name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Name"},"source":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Source"},"source_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Source Url"},"source_release":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Source Release"},"schedule_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Schedule Url"},"release_stage":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Release Stage"},"reference_period":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Reference Period"},"dataset_codes":{"anyOf":[{"type":"string"},{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Dataset Codes"},"date":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Date"},"domain":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Domain"},"data_currency":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Data Currency"},"endpoint_family":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Endpoint Family"},"endpoint_path":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Endpoint Path"},"requires_api_key":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Requires Api Key"},"event_importance":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Event Importance"},"market_tier":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Market Tier"},"top_tier_for_currency":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Top Tier For Currency"}},"type":"object","required":["announcement_datetime","release"],"title":"CalendarReleaseRow"},"CalendarResponse":{"properties":{"currency":{"type":"string","title":"Currency"},"timezone":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Timezone"},"requested_timezone":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Requested Timezone"},"indicator":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Indicator"},"start_date":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Start Date"},"end_date":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"End Date"},"data_quality":{"$ref":"#/components/schemas/DataQuality"},"data":{"items":{"$ref":"#/components/schemas/CalendarReleaseRow"},"type":"array","title":"Data"}},"type":"object","required":["currency","data_quality","data"],"title":"CalendarResponse"},"CommodityDataPoint":{"properties":{"date":{"type":"string","title":"Date"},"val":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Val"},"announcement_datetime":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Announcement Datetime"},"pct_change":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Pct Change"},"pct_change_12m":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Pct Change 12M"}},"additionalProperties":true,"type":"object","required":["date"],"title":"CommodityDataPoint"},"CommodityResponse":{"properties":{"currency":{"type":"string","title":"Currency"},"indicator":{"type":"string","title":"Indicator"},"source":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Source"},"source_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Source Url"},"provenance":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Provenance"},"has_official_forecast":{"type":"boolean","title":"Has Official Forecast"},"last_updated":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Last Updated"},"latest_available_date":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Latest Available Date"},"data_quality":{"$ref":"#/components/schemas/DataQuality"},"start_date":{"type":"string","title":"Start Date"},"end_date":{"type":"string","title":"End Date"},"pagination":{"additionalProperties":true,"type":"object","title":"Pagination"},"data":{"items":{"$ref":"#/components/schemas/CommodityDataPoint"},"type":"array","title":"Data"}},"type":"object","required":["currency","indicator","has_official_forecast","data_quality","start_date","end_date","pagination","data"],"title":"CommodityResponse"},"CurveAnalyticsResponse":{"properties":{"currency":{"type":"string","title":"Currency"},"curve_family":{"type":"string","title":"Curve Family"},"view":{"type":"string","title":"View","default":"nodes"},"metric":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Metric"},"method":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Method"},"requested_date":{"type":"string","title":"Requested Date"},"as_of":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"As Of"},"node_count":{"type":"integer","title":"Node Count"},"slope_count":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Slope Count"},"inverted_count":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Inverted Count"},"segment_count":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Segment Count"},"sources":{"items":{"type":"string"},"type":"array","title":"Sources"},"official_forward_source_support":{"additionalProperties":true,"type":"object","title":"Official Forward Source Support"},"data_quality":{"$ref":"#/components/schemas/DataQuality"},"data":{"items":{"additionalProperties":true,"type":"object"},"type":"array","title":"Data"}},"type":"object","required":["currency","curve_family","requested_date","node_count","sources","official_forward_source_support","data_quality","data"],"title":"CurveAnalyticsResponse"},"DataQuality":{"properties":{"is_official":{"type":"boolean","title":"Is Official"},"is_proxy":{"type":"boolean","title":"Is Proxy"},"is_fallback":{"type":"boolean","title":"Is Fallback"},"is_stale":{"type":"boolean","title":"Is Stale"},"has_announcement_datetime":{"type":"boolean","title":"Has Announcement Datetime"},"point_in_time_safe":{"type":"boolean","title":"Point In Time Safe"},"latest_available_date":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Latest Available Date"},"last_updated":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Last Updated"},"data_lag_days":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Data Lag Days"},"source_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Source Name"},"source_type":{"type":"string","enum":["official","public","fallback","derived"],"title":"Source Type"},"is_derived":{"type":"boolean","title":"Is Derived","default":false},"row_count":{"type":"integer","title":"Row Count","default":0},"announcement_datetime_count":{"type":"integer","title":"Announcement Datetime Count","default":0},"missing_announcement_datetime_count":{"type":"integer","title":"Missing Announcement Datetime Count","default":0},"has_assumed_release_times":{"type":"boolean","title":"Has Assumed Release Times","default":false},"assumed_release_time_count":{"type":"integer","title":"Assumed Release Time Count","default":0},"quality_scope":{"type":"string","title":"Quality Scope","default":"full_result"},"stale_after_days":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Stale After Days"},"requested_window_has_data":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Requested Window Has Data"},"requested_window_latest_date":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Requested Window Latest Date"},"requested_window_includes_latest_available":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Requested Window Includes Latest Available"},"page_includes_latest_available":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Page Includes Latest Available"},"returned_latest_available_before_window":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Returned Latest Available Before Window"},"staleness_days":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Staleness Days"},"reason":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Reason"},"datetime_field":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Datetime Field"},"datetime_precision":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Datetime Precision"},"datetime_semantics":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Datetime Semantics"},"source_legs":{"anyOf":[{"items":{"additionalProperties":true,"type":"object"},"type":"array"},{"type":"null"}],"title":"Source Legs"},"historical_point_in_time":{"anyOf":[{"$ref":"#/components/schemas/PointInTimeCompleteness"},{"type":"null"}]}},"type":"object","required":["is_official","is_proxy","is_fallback","is_stale","has_announcement_datetime","point_in_time_safe","source_type"],"title":"DataQuality"},"FactorDataPoint":{"properties":{"date":{"type":"string","title":"Date"},"val":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Val"},"score":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Score"},"level_score":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Level Score"},"impulse_score":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Impulse Score"},"rate_repricing_score":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Rate Repricing Score"},"macro_pressure_score":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Macro Pressure Score"},"label":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Label"},"stance_context":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Stance Context"},"announcement_datetime":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Announcement Datetime"},"coverage_ratio":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Coverage Ratio"},"component_count":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Component Count"},"point_in_time_safe":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Point In Time Safe"},"components":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Components"},"source_observations":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Source Observations"},"source_endpoints":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Source Endpoints"}},"additionalProperties":true,"type":"object","required":["date"],"title":"FactorDataPoint"},"FactorResponse":{"properties":{"currency":{"type":"string","title":"Currency"},"factor":{"type":"string","title":"Factor"},"methodology":{"type":"string","title":"Methodology"},"as_of":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"As Of"},"score":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Score"},"level_score":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Level Score"},"impulse_score":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Impulse Score"},"rate_repricing_score":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Rate Repricing Score"},"macro_pressure_score":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Macro Pressure Score"},"label":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Label"},"stance_context":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Stance Context"},"latest_available_date":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Latest Available Date"},"last_updated":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Last Updated"},"start_date":{"type":"string","title":"Start Date"},"end_date":{"type":"string","title":"End Date"},"data_quality":{"$ref":"#/components/schemas/DataQuality"},"pagination":{"additionalProperties":true,"type":"object","title":"Pagination"},"data":{"items":{"$ref":"#/components/schemas/FactorDataPoint"},"type":"array","title":"Data"}},"type":"object","required":["currency","factor","methodology","start_date","end_date","data_quality","pagination","data"],"title":"FactorResponse"},"ForexDataPoint":{"properties":{"date":{"type":"string","title":"Date"},"val":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Val"},"open":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Open"},"high":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"High"},"low":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Low"},"close":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Close"},"ohlc_point_count":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Ohlc Point Count"},"ohlc_source_count":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Ohlc Source Count"},"ohlc_timestamp_start_utc":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Ohlc Timestamp Start Utc"},"ohlc_timestamp_end_utc":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Ohlc Timestamp End Utc"},"ohlc_type":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Ohlc Type"},"announcement_datetime":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Announcement Datetime"},"observation_datetime":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Observation Datetime"},"observation_datetime_iso":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Observation Datetime Iso"},"observation_datetime_precision":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Observation Datetime Precision"},"source":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Source"},"sma_20":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Sma 20"},"sma_50":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Sma 50"},"sma_200":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Sma 200"},"ema_12":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Ema 12"},"ema_20":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Ema 20"},"ema_26":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Ema 26"},"ema_50":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Ema 50"},"ema_200":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Ema 200"},"rsi_14":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Rsi 14"},"atr_14":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Atr 14"},"adx_14":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Adx 14"},"stoch_k_14":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Stoch K 14"},"stoch_d_3":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Stoch D 3"},"williams_r_14":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Williams R 14"},"cci_20":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Cci 20"},"donchian_upper_20":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Donchian Upper 20"},"donchian_middle_20":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Donchian Middle 20"},"donchian_lower_20":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Donchian Lower 20"},"macd":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Macd"},"macd_signal":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Macd Signal"},"macd_histogram":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Macd Histogram"},"bb_upper":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Bb Upper"},"bb_middle":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Bb Middle"},"bb_lower":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Bb Lower"}},"type":"object","required":["date"],"title":"ForexDataPoint"},"ForexResponse":{"properties":{"base":{"type":"string","title":"Base"},"quote":{"type":"string","title":"Quote"},"source":{"type":"string","title":"Source"},"provenance":{"additionalProperties":true,"type":"object","title":"Provenance"},"pair_metadata":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Pair Metadata"},"data_quality":{"$ref":"#/components/schemas/DataQuality"},"start_date":{"type":"string","title":"Start Date"},"end_date":{"type":"string","title":"End Date"},"pagination":{"additionalProperties":true,"type":"object","title":"Pagination"},"data":{"items":{"$ref":"#/components/schemas/ForexDataPoint"},"type":"array","title":"Data"},"indicators":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Indicators"},"daily_ohlc_basis":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Daily Ohlc Basis"},"technical_indicator_basis":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Technical Indicator Basis"}},"type":"object","required":["base","quote","source","provenance","data_quality","start_date","end_date","pagination","data"],"title":"ForexResponse"},"FxIntradayReferenceRatePoint":{"properties":{"timestamp":{"type":"string","title":"Timestamp"},"price":{"type":"number","title":"Price"},"reference_date":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Reference Date"},"timestamp_type":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Timestamp Type"},"source":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Source"},"source_pair":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Source Pair"},"derivation_method":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Derivation Method"}},"type":"object","required":["timestamp","price"],"title":"FxIntradayReferenceRatePoint"},"FxIntradayReferenceRatesResponse":{"properties":{"pair":{"type":"string","title":"Pair"},"start_time":{"type":"string","title":"Start Time"},"end_time":{"type":"string","title":"End Time"},"data":{"items":{"$ref":"#/components/schemas/FxIntradayReferenceRatePoint"},"type":"array","title":"Data"}},"type":"object","required":["pair","start_time","end_time","data"],"title":"FxIntradayReferenceRatesResponse"},"FxReferencePoint":{"properties":{"date":{"type":"string","title":"Date"},"reference_date":{"type":"string","title":"Reference Date"},"base":{"type":"string","title":"Base"},"quote":{"type":"string","title":"Quote"},"pair":{"type":"string","title":"Pair"},"rate":{"type":"number","title":"Rate"},"timestamp_utc":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Timestamp Utc"},"timestamp_type":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Timestamp Type"},"fixing_time_utc":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Fixing Time Utc"},"published_at_utc":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Published At Utc"},"time_precision":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Time Precision"},"source":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Source"},"native_or_derived":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Native Or Derived"},"derivation_method":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Derivation Method"},"source_pair":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Source Pair"},"source_legs":{"anyOf":[{"items":{"additionalProperties":true,"type":"object"},"type":"array"},{"type":"null"}],"title":"Source Legs"},"staleness_minutes":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Staleness Minutes"}},"type":"object","required":["date","reference_date","base","quote","pair","rate"],"title":"FxReferencePoint"},"FxReferenceResponse":{"properties":{"base":{"type":"string","title":"Base"},"quote":{"type":"string","title":"Quote"},"start_date":{"type":"string","title":"Start Date"},"end_date":{"type":"string","title":"End Date"},"timestamp_basis":{"type":"string","title":"Timestamp Basis"},"source_policy":{"additionalProperties":true,"type":"object","title":"Source Policy"},"pagination":{"additionalProperties":true,"type":"object","title":"Pagination"},"data":{"items":{"$ref":"#/components/schemas/FxReferencePoint"},"type":"array","title":"Data"}},"type":"object","required":["base","quote","start_date","end_date","timestamp_basis","source_policy","pagination","data"],"title":"FxReferenceResponse"},"FxSessionRatePoint":{"properties":{"date":{"type":"string","title":"Date"},"reference_date":{"type":"string","title":"Reference Date"},"base":{"type":"string","title":"Base"},"quote":{"type":"string","title":"Quote"},"pair":{"type":"string","title":"Pair"},"rate":{"type":"number","title":"Rate"},"timestamp_utc":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Timestamp Utc"},"timestamp_type":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Timestamp Type"},"fixing_time_utc":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Fixing Time Utc"},"published_at_utc":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Published At Utc"},"time_precision":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Time Precision"},"source":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Source"},"native_or_derived":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Native Or Derived"},"derivation_method":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Derivation Method"},"source_pair":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Source Pair"},"source_legs":{"anyOf":[{"items":{"additionalProperties":true,"type":"object"},"type":"array"},{"type":"null"}],"title":"Source Legs"},"staleness_minutes":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Staleness Minutes"},"session":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Session"},"session_close_utc":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Session Close Utc"},"selected_timestamp_utc":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Selected Timestamp Utc"},"selected_source_timestamp_utc":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Selected Source Timestamp Utc"},"selection_rule":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Selection Rule"}},"type":"object","required":["date","reference_date","base","quote","pair","rate"],"title":"FxSessionRatePoint"},"FxSessionRateResponse":{"properties":{"base":{"type":"string","title":"Base"},"quote":{"type":"string","title":"Quote"},"session":{"type":"string","title":"Session"},"start_date":{"type":"string","title":"Start Date"},"end_date":{"type":"string","title":"End Date"},"source_policy":{"additionalProperties":true,"type":"object","title":"Source Policy"},"pagination":{"additionalProperties":true,"type":"object","title":"Pagination"},"data":{"items":{"$ref":"#/components/schemas/FxSessionRatePoint"},"type":"array","title":"Data"}},"type":"object","required":["base","quote","session","start_date","end_date","source_policy","pagination","data"],"title":"FxSessionRateResponse"},"FxSourceUniverseResponse":{"properties":{"source_policy":{"additionalProperties":true,"type":"object","title":"Source Policy"},"currency":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Currency"},"source":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Source"},"data":{"items":{"additionalProperties":true,"type":"object"},"type":"array","title":"Data"}},"type":"object","required":["source_policy","data"],"title":"FxSourceUniverseResponse"},"FxSourcesResponse":{"properties":{"source_policy":{"additionalProperties":true,"type":"object","title":"Source Policy"},"sources":{"items":{"additionalProperties":true,"type":"object"},"type":"array","title":"Sources"}},"type":"object","required":["source_policy","sources"],"title":"FxSourcesResponse"},"HTTPValidationError":{"properties":{"detail":{"items":{"$ref":"#/components/schemas/ValidationError"},"type":"array","title":"Detail"}},"type":"object","title":"HTTPValidationError"},"PaginationInfo":{"properties":{"limit":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Limit"},"offset":{"type":"integer","title":"Offset"},"returned_count":{"type":"integer","title":"Returned Count"},"total_count":{"type":"integer","title":"Total Count"},"has_more":{"type":"boolean","title":"Has More"},"next_offset":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Next Offset"},"page_includes_latest_available":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Page Includes Latest Available"}},"type":"object","required":["offset","returned_count","total_count","has_more"],"title":"PaginationInfo"},"PointInTimeCompleteness":{"properties":{"row_count":{"type":"integer","title":"Row Count"},"announcement_datetime_count":{"type":"integer","title":"Announcement Datetime Count"},"missing_announcement_datetime_count":{"type":"integer","title":"Missing Announcement Datetime Count"},"point_in_time_safe":{"type":"boolean","title":"Point In Time Safe"}},"type":"object","required":["row_count","announcement_datetime_count","missing_announcement_datetime_count","point_in_time_safe"],"title":"PointInTimeCompleteness","description":"Coverage of source-confirmed publication timestamps for a dataset."},"PolicyFamilyEntry":{"properties":{"indicator":{"type":"string","title":"Indicator"},"value_name":{"type":"string","title":"Value Name"},"role":{"type":"string","title":"Role"}},"type":"object","required":["indicator","value_name","role"],"title":"PolicyFamilyEntry"},"PredictionItem":{"properties":{"predicted_value":{"type":"number","title":"Predicted Value"},"prediction_type":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Prediction Type","description":"Category of forecast — one of ``market_consensus``, ``market_prediction``, ``model_nowcast``, ``survey``, ``central_bank_forecast``, ``central_bank_projection``, ``imf_weo``, or ``fxmacrodata``."},"prediction_source":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Prediction Source","description":"Stable source identifier slug (e.g. ``philly_fed_spf``, ``cleveland_fed_nowcast``, ``fomc_sep``, ``atlanta_fed_gdpnow``, ``ny_fed_sme``, ``ecb_spf``, ``imf_weo``, ``rbnz_mps``, ``fxmacrodata_blended``). Use this value when filtering via the ``prediction_source`` query parameter."},"prediction_source_label":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Prediction Source Label","description":"Human-readable name for ``prediction_source`` (e.g. \"RBA Statement on Monetary Policy (Table J1)\", \"Philadelphia Fed Survey of Professional Forecasters\", \"IMF World Economic Outlook\"). Suitable for display in UI surfaces; use ``prediction_source`` for filtering and joins."},"generated_at":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Generated At","description":"Unix epoch seconds (UTC) when this prediction was generated. Present for any prediction stored in the multi-prediction list (``predictions`` field on the announcement row). Legacy single-prediction field rows do not carry this value."},"is_pre_release":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Is Pre Release","description":"Whether `generated_at` is strictly earlier than the linked `announcement_datetime`. Null when the source did not provide a generation timestamp."},"confidence":{"anyOf":[{"type":"number","maximum":1.0,"minimum":0.0},{"type":"null"}],"title":"Confidence","description":"Confidence score in ``[0.0, 1.0]`` indicating how strong this prediction is. ``1.0`` is maximally confident, ``0.0`` is no confidence. When the source did not record an explicit value, a per-source default is returned (central-bank publications and official surveys score higher than the FXMacroData blended forecast). Use this to weight or filter predictions in client applications."},"prediction_reason":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Prediction Reason","description":"Short human-readable explanation of how this prediction was derived. Currently populated for FXMacroData-generated predictions (``prediction_source=fxmacrodata_blended``); it summarises the persistence anchor, momentum/trend extrapolation, cross-indicator pressure, and any external forecast that was blended in. Other prediction sources may omit this field."}},"type":"object","required":["predicted_value"],"title":"PredictionItem","description":"A single per-source forecast inside an announcement group."},"PredictionsResponse":{"properties":{"currency":{"type":"string","title":"Currency"},"indicator":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Indicator"},"filters":{"anyOf":[{"additionalProperties":{"anyOf":[{"type":"string"},{"type":"null"}]},"type":"object"},{"type":"null"}],"title":"Filters"},"selected_series_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Selected Series Id"},"selected_series":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Selected Series"},"supported_options":{"anyOf":[{"additionalProperties":{"items":{"type":"string"},"type":"array"},"type":"object"},{"type":"null"}],"title":"Supported Options"},"prediction_type":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Prediction Type"},"prediction_source":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Prediction Source"},"pre_release_only":{"type":"boolean","title":"Pre Release Only","default":true},"start_date":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Start Date"},"end_date":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"End Date"},"next_cursor":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Next Cursor","description":"Exclusive `before_date` cursor for the next page. Prefer this over deep offset pagination to keep Firestore reads bounded."},"has_more":{"type":"boolean","title":"Has More","default":false},"count":{"type":"integer","title":"Count","description":"Number of announcement groups returned in ``data``.","default":0},"prediction_count":{"type":"integer","title":"Prediction Count","description":"Total number of per-source predictions across all groups.","default":0},"data_quality":{"$ref":"#/components/schemas/DataQuality"},"data":{"items":{"$ref":"#/components/schemas/AnnouncementPredictions"},"type":"array","title":"Data"}},"type":"object","required":["currency","data_quality","data"],"title":"PredictionsResponse"},"RateDifferentialPoint":{"properties":{"date":{"type":"string","title":"Date"},"base_val":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Base Val"},"quote_val":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Quote Val"},"spread":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Spread"},"spread_bps":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Spread Bps"},"differential":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Differential"},"differential_bps":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Differential Bps"},"base_forward_val":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Base Forward Val"},"quote_forward_val":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Quote Forward Val"},"base_start_val":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Base Start Val"},"base_end_val":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Base End Val"},"quote_start_val":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Quote Start Val"},"quote_end_val":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Quote End Val"},"base_announcement_datetime":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Base Announcement Datetime"},"quote_announcement_datetime":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Quote Announcement Datetime"},"base_start_announcement_datetime":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Base Start Announcement Datetime"},"base_end_announcement_datetime":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Base End Announcement Datetime"},"quote_start_announcement_datetime":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Quote Start Announcement Datetime"},"quote_end_announcement_datetime":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Quote End Announcement Datetime"}},"type":"object","required":["date"],"title":"RateDifferentialPoint"},"RateDifferentialResponse":{"properties":{"base":{"type":"string","title":"Base"},"quote":{"type":"string","title":"Quote"},"rate_type":{"type":"string","title":"Rate Type","default":"spot"},"measure_requested":{"type":"string","title":"Measure Requested"},"measure_used":{"type":"string","title":"Measure Used"},"base_indicator":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Base Indicator"},"quote_indicator":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Quote Indicator"},"curve_family":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Curve Family"},"start_tenor":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Start Tenor"},"end_tenor":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"End Tenor"},"forward_label":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Forward Label"},"start_date":{"type":"string","title":"Start Date"},"end_date":{"type":"string","title":"End Date"},"matched_points":{"type":"integer","title":"Matched Points"},"unit":{"type":"string","title":"Unit"},"latest_spread":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Latest Spread"},"latest_spread_bps":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Latest Spread Bps"},"latest_differential":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Latest Differential"},"latest_differential_bps":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Latest Differential Bps"},"base_latest":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Base Latest"},"quote_latest":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Quote Latest"},"sources":{"additionalProperties":true,"type":"object","title":"Sources"},"official_forward_source_support":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Official Forward Source Support"},"data_quality":{"$ref":"#/components/schemas/DataQuality"},"pagination":{"additionalProperties":true,"type":"object","title":"Pagination"},"data":{"items":{"$ref":"#/components/schemas/RateDifferentialPoint"},"type":"array","title":"Data"}},"type":"object","required":["base","quote","measure_requested","measure_used","start_date","end_date","matched_points","unit","sources","data_quality","pagination","data"],"title":"RateDifferentialResponse"},"RevisionEntry":{"properties":{"epoch":{"type":"integer","title":"Epoch"},"val":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Val"}},"type":"object","required":["epoch"],"title":"RevisionEntry","description":"A single published value for a given period, identified by release epoch.\n\n``val`` is ``Optional`` because some upstream sources publish placeholder\nrevisions (e.g. NZ DMO inflation-linked bond yields on non-trading days)\nwhere the value is NaN; those are normalised to ``None`` by\n``make_json_safe`` before serialisation."},"SeasonalityResponse":{"properties":{"instrument":{"type":"string","title":"Instrument"},"base":{"type":"string","title":"Base"},"quote":{"type":"string","title":"Quote"},"source":{"type":"string","title":"Source"},"provenance":{"additionalProperties":true,"type":"object","title":"Provenance"},"start_date":{"type":"string","title":"Start Date"},"end_date":{"type":"string","title":"End Date"},"lookback_years":{"type":"integer","title":"Lookback Years"},"month":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Month"},"data_quality":{"$ref":"#/components/schemas/DataQuality"},"data":{"items":{"$ref":"#/components/schemas/SeasonalityRow"},"type":"array","title":"Data"}},"type":"object","required":["instrument","base","quote","source","provenance","start_date","end_date","lookback_years","data_quality","data"],"title":"SeasonalityResponse"},"SeasonalityReturn":{"properties":{"year":{"type":"integer","title":"Year"},"month":{"type":"integer","title":"Month"},"start_date":{"type":"string","title":"Start Date"},"end_date":{"type":"string","title":"End Date"},"start_value":{"type":"number","title":"Start Value"},"end_value":{"type":"number","title":"End Value"},"return_pct":{"type":"number","title":"Return Pct"}},"type":"object","required":["year","month","start_date","end_date","start_value","end_value","return_pct"],"title":"SeasonalityReturn"},"SeasonalityRow":{"properties":{"month":{"type":"integer","title":"Month"},"month_name":{"type":"string","title":"Month Name"},"sample_size":{"type":"integer","title":"Sample Size"},"avg_return_pct":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Avg Return Pct"},"median_return_pct":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Median Return Pct"},"win_rate":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Win Rate"},"best_return_pct":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Best Return Pct"},"worst_return_pct":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Worst Return Pct"},"std_dev_pct":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Std Dev Pct"},"signal":{"type":"string","title":"Signal"},"seasonality_strength":{"type":"string","title":"Seasonality Strength"},"years":{"items":{"type":"integer"},"type":"array","title":"Years"},"returns":{"items":{"$ref":"#/components/schemas/SeasonalityReturn"},"type":"array","title":"Returns"}},"type":"object","required":["month","month_name","sample_size","signal","seasonality_strength","years","returns"],"title":"SeasonalityRow"},"SummarizeRequest":{"properties":{"text":{"type":"string","title":"Text"},"max_sentences":{"type":"integer","title":"Max Sentences","default":3}},"type":"object","required":["text"],"title":"SummarizeRequest"},"SummarizeResponse":{"properties":{"summary":{"type":"string","title":"Summary"},"source":{"type":"string","title":"Source","default":"extractive"}},"type":"object","required":["summary"],"title":"SummarizeResponse"},"ValidationError":{"properties":{"loc":{"items":{"anyOf":[{"type":"string"},{"type":"integer"}]},"type":"array","title":"Location"},"msg":{"type":"string","title":"Message"},"type":{"type":"string","title":"Error Type"}},"type":"object","required":["loc","msg","type"],"title":"ValidationError"},"WebhookSubscriptionCreate":{"properties":{"url":{"type":"string","title":"Url","description":"HTTPS endpoint that receives webhook POSTs."},"events":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Events","description":"Webhook events. Currently only `announcement` is supported."},"currencies":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Currencies","description":"Optional lowercase currency filters. Empty means all currencies."},"indicators":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Indicators","description":"Optional indicator slug filters. Empty means all indicators."},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description","description":"Optional customer label for support and operations."}},"type":"object","required":["url"],"title":"WebhookSubscriptionCreate"},"WebhookSubscriptionUpdate":{"properties":{"url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Url"},"events":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Events"},"currencies":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Currencies"},"indicators":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Indicators"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description"},"status":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Status","description":"Use `active` or `disabled`."}},"type":"object","title":"WebhookSubscriptionUpdate"}}},"tags":[{"name":"health","description":"Service health status endpoint."},{"name":"announcements","description":"Primary product: macroeconomic announcement time series."},{"name":"predictions","description":"Forecasts/predictions for macroeconomic announcements, linked to the unique announcement they target via ``announcement_id``. Covers market consensus, central-bank forecasts, IMF WEO, and professional-forecaster surveys."},{"name":"calendar","description":"Standalone economic and policy release calendar endpoint spanning announcements and central-bank decision timing."},{"name":"press_releases","description":"Official central-bank press-release archive endpoints."},{"name":"commodities","description":"Commodity and energy datasets, including OPEC and planned commodity price endpoints."},{"name":"fx_markets","description":"FX market-state datasets including spot FX, market sessions, risk sentiment, and COT positioning."},{"name":"data_catalogue","description":"Cross-domain metadata index for available indicators."}],"servers":[{"url":"/api"}]}