openapi: 3.2.0 info: title: FX Macrodata Calendar API description: Official-source macroeconomic indicators, release calendars, central-bank policy rates, FX reference rates, COT positioning and commodities across 22 currencies. USD data is available without an API key; other currencies and datasets need an `X-API-Key` header. version: 1.0.0 servers: - url: https://api.fxmacrodata.com description: FXMacroData API security: - {} - APIKeyHeader: [] - HTTPBearer: [] tags: - name: Calendar description: Standalone economic and policy release calendar endpoint spanning announcements and central-bank decision timing. paths: /v1/calendar/{currency}: get: tags: - Calendar summary: Get upcoming economic data release dates description: 'Returns upcoming economic data release dates for a given currency. Announcement rows keep the `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`. Each row also includes a deterministic `calendar_event_id` for joins across calendar exports. **Path Parameters:** - `currency`: The 3-letter currency code (e.g., USD). **Query Parameters:** - `indicator`: Optional. Filter to a specific indicator (e.g., gdp, inflation, unemployment, non_farm_payrolls). - `start_date`: Optional inclusive lower bound, YYYY-MM-DD. - `end_date`: Optional inclusive upper bound, YYYY-MM-DD. Past releases are retained for a bounded window. When `start_date` is given, `history_start_date` reports the oldest retained release and `history_truncated` is true if the requested window starts before it. Released values and their announcement times for older periods are available from `/v1/announcements/{currency}/{indicator}`. **Time not announced:** some official publishers announce a release date but not its time. Those rows are included with `time_announced: false` and `announcement_date` set to the publisher''s local date; their `announcement_datetime` is 00:00 of that date in the publisher''s timezone and is not a release time. Rows with an exact official time have `time_announced: true`. When the publisher later announces the time, the timed row replaces the date-only row. **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: - AUD - BRL - CAD - CHF - CNH - CNY - COMM - DKK - EUR - GBP - HUF - ILS - JPY - KRW - MYR - NGN - NOK - NZD - PEN - SEK - THB - TWD - USD example: AUD description: 'Required path parameter. Allowed values: AUD, BRL, CAD, CHF, CNH, CNY, COMM, DKK, EUR, GBP, HUF, ILS, JPY, KRW, MYR, NGN, NOK, NZD, PEN, SEK, THB, TWD, USD.' - name: indicator in: query required: false schema: type: string description: Filter by indicator name (e.g., gdp, inflation, unemployment) examples: - inflation title: Indicator enum: - afe_dollar_index - average_hourly_earnings - average_hourly_earnings_mom - balance_on_goods - balance_on_services - bgcr - breakeven_inflation_rate - broad_dollar_index - broad_money - 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 - effr - eme_dollar_index - employment - exports - financial_account_balance - foreign_reserves - full_time_employment - fx_reserves - gdp - gdp_growth_q4_yoy - gold_reserves - gov_bond_10y - gov_bond_15y - gov_bond_1_5m - gov_bond_1m - gov_bond_1y - gov_bond_20y - gov_bond_25y - gov_bond_2m - gov_bond_2y - gov_bond_30y - gov_bond_3m - gov_bond_3y - gov_bond_40y - gov_bond_4m - gov_bond_4y - gov_bond_5y - gov_bond_6m - gov_bond_6y - gov_bond_7y - gov_bond_8y - gov_bond_9y - government_debt - house_price_index - house_prices - household_credit - household_spending - housing_starts - import_prices - imports - industrial_production - inflation - inflation_linked_bond - inflation_mom - initial_jobless_claims - international_assets - international_liabilities - job_openings - m1 - m2 - m3 - nairu - natural_gas_storage - net_foreign_asset_position - non_farm_payrolls - non_farm_payrolls_change - obfr - part_time_employment - participation_rate - pce - pce_mom - policy_rate - policy_rate_midpoint - policy_rate_mlf - policy_rate_mro - policy_rate_target_lower - ppi - primary_income_balance - productivity - real_yield_20y - real_yield_30y - real_yield_5y - real_yield_7y - retail_sales - retail_sales_control_group - retail_sales_ex_autos - retail_sales_ex_autos_and_gas - risk_free_rate - secondary_income_balance - sight_deposits - snb_balance_sheet - sofr_average_180d - sofr_average_30d - sofr_average_90d - sofr_index - terms_of_trade - tgcr - trade_balance - trade_weighted_index - trimmed_mean_inflation - unemployment - wage_price_index - wages example: afe_dollar_index description: 'Optional query parameter. Filter by indicator name (e.g., gdp, inflation, unemployment) Allowed values: afe_dollar_index, average_hourly_earnings, average_hourly_earnings_mom, balance_on_goods, balance_on_services, bgcr, breakeven_inflation_rate, broad_dollar_index, broad_money, 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, effr, eme_dollar_index, employment, exports, financial_account_balance, foreign_reserves, full_time_employment, fx_reserves, gdp, gdp_growth_q4_yoy, gold_reserves, gov_bond_10y, gov_bond_15y, gov_bond_1_5m, gov_bond_1m, gov_bond_1y, gov_bond_20y, gov_bond_25y, gov_bond_2m, gov_bond_2y, gov_bond_30y, gov_bond_3m, gov_bond_3y, gov_bond_40y, gov_bond_4m, gov_bond_4y, gov_bond_5y, gov_bond_6m, gov_bond_6y, gov_bond_7y, gov_bond_8y, gov_bond_9y, government_debt, house_price_index, house_prices, household_credit, household_spending, housing_starts, import_prices, imports, industrial_production, inflation, inflation_linked_bond, inflation_mom, initial_jobless_claims, international_assets, international_liabilities, job_openings, m1, m2, m3, nairu, natural_gas_storage, net_foreign_asset_position, non_farm_payrolls, non_farm_payrolls_change, obfr, part_time_employment, participation_rate, pce, pce_mom, policy_rate, policy_rate_midpoint, policy_rate_mlf, policy_rate_mro, policy_rate_target_lower, ppi, primary_income_balance, productivity, real_yield_20y, real_yield_30y, real_yield_5y, real_yield_7y, retail_sales, retail_sales_control_group, retail_sales_ex_autos, retail_sales_ex_autos_and_gas, risk_free_rate, secondary_income_balance, sight_deposits, snb_balance_sheet, sofr_average_180d, sofr_average_30d, sofr_average_90d, sofr_index, terms_of_trade, tgcr, 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 Individual or Business API key title: Api Key description: 'Deprecated: legacy query-string API key. Still accepted so existing integrations keep working, but new integrations must send the key in the X-API-Key header (or Authorization: Bearer). A key is required for non-USD, paid-only, or full-history requests. Responses to requests authenticated this way carry a Deprecation header.' deprecated: true 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 calendar_event_id: usd_inflation_1773077400 - announcement_datetime: 1773682200 announcement_datetime_local: '2026-03-18T08:30:00-04:00' release: non_farm_payrolls calendar_event_id: usd_non_farm_payrolls_1773682200 '422': description: Validation Error content: application/json: schema: $ref: '#/components/schemas/HTTPValidationError' x-parameter-availability: currency: - AUD - BRL - CAD - CHF - CNH - CNY - COMM - DKK - EUR - GBP - HUF - ILS - JPY - KRW - MYR - NGN - NOK - NZD - PEN - SEK - THB - TWD - USD indicator: - afe_dollar_index - average_hourly_earnings - average_hourly_earnings_mom - balance_on_goods - balance_on_services - bgcr - breakeven_inflation_rate - broad_dollar_index - broad_money - 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 - effr - eme_dollar_index - employment - exports - financial_account_balance - foreign_reserves - full_time_employment - fx_reserves - gdp - gdp_growth_q4_yoy - gold_reserves - gov_bond_10y - gov_bond_15y - gov_bond_1_5m - gov_bond_1m - gov_bond_1y - gov_bond_20y - gov_bond_25y - gov_bond_2m - gov_bond_2y - gov_bond_30y - gov_bond_3m - gov_bond_3y - gov_bond_40y - gov_bond_4m - gov_bond_4y - gov_bond_5y - gov_bond_6m - gov_bond_6y - gov_bond_7y - gov_bond_8y - gov_bond_9y - government_debt - house_price_index - house_prices - household_credit - household_spending - housing_starts - import_prices - imports - industrial_production - inflation - inflation_linked_bond - inflation_mom - initial_jobless_claims - international_assets - international_liabilities - job_openings - m1 - m2 - m3 - nairu - natural_gas_storage - net_foreign_asset_position - non_farm_payrolls - non_farm_payrolls_change - obfr - part_time_employment - participation_rate - pce - pce_mom - policy_rate - policy_rate_midpoint - policy_rate_mlf - policy_rate_mro - policy_rate_target_lower - ppi - primary_income_balance - productivity - real_yield_20y - real_yield_30y - real_yield_5y - real_yield_7y - retail_sales - retail_sales_control_group - retail_sales_ex_autos - retail_sales_ex_autos_and_gas - risk_free_rate - secondary_income_balance - sight_deposits - snb_balance_sheet - sofr_average_180d - sofr_average_30d - sofr_average_90d - sofr_index - terms_of_trade - tgcr - trade_balance - trade_weighted_index - trimmed_mean_inflation - unemployment - wage_price_index - wages /v1/calendar/{currency}/snapshot: get: tags: - Calendar summary: Get the economic schedule known at a historical time description: Selects the latest eligible version of each event at as_of before applying scheduled-date, importance and event-kind filters. Times are UTC; date-only events retain their publisher date without an invented UTC time. Includes explicit cancellations. Use the returned checkpoint and cursor on every subsequent page for a consistent export. Historical reconstruction is an explicit evidence-qualified mode. Coverage is reported separately at `/v1/calendar/{currency}/coverage`. Requires an active API key. operationId: get_calendar_snapshot_v1_calendar__currency__snapshot_get parameters: - name: currency in: path required: true schema: type: string title: Currency enum: - AUD - BRL - CAD - CHF - CNH - CNY - COMM - DKK - EUR - GBP - HUF - ILS - JPY - KRW - MYR - NGN - NOK - NZD - PEN - SEK - THB - TWD - USD example: AUD description: 'Required path parameter. Allowed values: AUD, BRL, CAD, CHF, CNH, CNY, COMM, DKK, EUR, GBP, HUF, ILS, JPY, KRW, MYR, NGN, NOK, NZD, PEN, SEK, THB, TWD, USD.' - name: as_of in: query required: true schema: type: string format: date-time description: Knowledge cutoff, ISO 8601 with UTC offset. title: As Of description: Required query parameter. Knowledge cutoff, ISO 8601 with UTC offset. - name: start_date in: query required: false schema: anyOf: - type: string format: date - type: 'null' title: Start Date description: Optional query parameter. - name: end_date in: query required: false schema: anyOf: - type: string format: date - type: 'null' title: End Date description: Optional query parameter. - name: importance in: query required: false schema: anyOf: - enum: - high - medium - low - unknown type: string - type: 'null' title: Importance description: Optional query parameter. - name: event_kind in: query required: false schema: anyOf: - enum: - release - speech - meeting - policy_decision - press_conference - other type: string - type: 'null' title: Event Kind description: Optional query parameter. - name: knowledge_mode in: query required: false schema: enum: - accepted - reconstruction type: string default: accepted title: Knowledge Mode description: Optional query parameter. - name: checkpoint in: query required: false schema: anyOf: - type: integer minimum: 0 - type: 'null' title: Checkpoint description: Optional query parameter. - name: cursor in: query required: false schema: anyOf: - type: string maxLength: 2048 - type: 'null' title: Cursor description: Optional query parameter. - name: limit in: query required: false schema: type: integer maximum: 1000 minimum: 1 default: 250 title: Limit description: Optional query parameter. - name: api_key in: query required: false schema: type: string description: Your Individual or Business API key title: Api Key description: 'Deprecated: legacy query-string API key. Still accepted so existing integrations keep working, but new integrations must send the key in the X-API-Key header (or Authorization: Bearer). A key is required for non-USD, paid-only, or full-history requests. Responses to requests authenticated this way carry a Deprecation header.' deprecated: true responses: '200': description: Successful Response content: application/json: schema: $ref: '#/components/schemas/CalendarSnapshot' '422': description: Validation Error content: application/json: schema: $ref: '#/components/schemas/HTTPValidationError' x-parameter-availability: currency: - AUD - BRL - CAD - CHF - CNH - CNY - COMM - DKK - EUR - GBP - HUF - ILS - JPY - KRW - MYR - NGN - NOK - NZD - PEN - SEK - THB - TWD - USD /v1/calendar/{currency}/events/{archive_event_id}/versions: get: tags: - Calendar summary: Get immutable schedule versions for an event description: Returns accepted versions and their source, capture and documentary evidence. The archive event ID remains stable when its scheduled time changes; existing calendar_event_id values on the current calendar retain their original meaning. Reuse checkpoint and cursor to continue an export. Requires an active API key. operationId: get_calendar_versions_v1_calendar__currency__events__archive_event_id__versions_get parameters: - name: currency in: path required: true schema: type: string title: Currency enum: - AUD - BRL - CAD - CHF - CNH - CNY - COMM - DKK - EUR - GBP - HUF - ILS - JPY - KRW - MYR - NGN - NOK - NZD - PEN - SEK - THB - TWD - USD example: AUD description: 'Required path parameter. Allowed values: AUD, BRL, CAD, CHF, CNH, CNY, COMM, DKK, EUR, GBP, HUF, ILS, JPY, KRW, MYR, NGN, NOK, NZD, PEN, SEK, THB, TWD, USD.' - name: archive_event_id in: path required: true schema: type: string title: Archive Event Id description: Required path parameter. - name: checkpoint in: query required: false schema: anyOf: - type: integer minimum: 0 - type: 'null' title: Checkpoint description: Optional query parameter. - name: cursor in: query required: false schema: anyOf: - type: string maxLength: 2048 - type: 'null' title: Cursor description: Optional query parameter. - name: limit in: query required: false schema: type: integer maximum: 1000 minimum: 1 default: 250 title: Limit description: Optional query parameter. - name: api_key in: query required: false schema: type: string description: Your Individual or Business API key title: Api Key description: 'Deprecated: legacy query-string API key. Still accepted so existing integrations keep working, but new integrations must send the key in the X-API-Key header (or Authorization: Bearer). A key is required for non-USD, paid-only, or full-history requests. Responses to requests authenticated this way carry a Deprecation header.' deprecated: true responses: '200': description: Successful Response content: application/json: schema: $ref: '#/components/schemas/CalendarVersions' '422': description: Validation Error content: application/json: schema: $ref: '#/components/schemas/HTTPValidationError' x-parameter-availability: currency: - AUD - BRL - CAD - CHF - CNH - CNY - COMM - DKK - EUR - GBP - HUF - ILS - JPY - KRW - MYR - NGN - NOK - NZD - PEN - SEK - THB - TWD - USD /v1/calendar/{currency}/coverage: get: tags: - Calendar summary: Inspect calendar archive evidence coverage and capture gaps description: Reports persisted capture outcomes and coverage limitations. A successful source fetch does not prove complete speech or historical calendar coverage. Requires an active API key. operationId: get_calendar_archive_coverage_v1_calendar__currency__coverage_get parameters: - name: currency in: path required: true schema: type: string title: Currency enum: - AUD - BRL - CAD - CHF - CNH - CNY - COMM - DKK - EUR - GBP - HUF - ILS - JPY - KRW - MYR - NGN - NOK - NZD - PEN - SEK - THB - TWD - USD example: AUD description: 'Required path parameter. Allowed values: AUD, BRL, CAD, CHF, CNH, CNY, COMM, DKK, EUR, GBP, HUF, ILS, JPY, KRW, MYR, NGN, NOK, NZD, PEN, SEK, THB, TWD, USD.' - name: api_key in: query required: false schema: type: string description: Your Individual or Business API key title: Api Key description: 'Deprecated: legacy query-string API key. Still accepted so existing integrations keep working, but new integrations must send the key in the X-API-Key header (or Authorization: Bearer). A key is required for non-USD, paid-only, or full-history requests. Responses to requests authenticated this way carry a Deprecation header.' deprecated: true responses: '200': description: Successful Response content: application/json: schema: type: object additionalProperties: true title: Response Get Calendar Archive Coverage V1 Calendar Currency Coverage Get '422': description: Validation Error content: application/json: schema: $ref: '#/components/schemas/HTTPValidationError' x-parameter-availability: currency: - AUD - BRL - CAD - CHF - CNH - CNY - COMM - DKK - EUR - GBP - HUF - ILS - JPY - KRW - MYR - NGN - NOK - NZD - PEN - SEK - THB - TWD - USD components: schemas: CalendarVersions: properties: currency: type: string title: Currency archive_event_id: type: string title: Archive Event Id checkpoint: type: integer title: Checkpoint next_cursor: anyOf: - type: string - type: 'null' title: Next Cursor versions: items: additionalProperties: true type: object type: array title: Versions type: object required: - currency - archive_event_id - checkpoint - versions title: CalendarVersions CommodityCoverageSegment: properties: start_date: anyOf: - type: string - type: 'null' title: Start Date end_date: anyOf: - type: string - type: 'null' title: End Date row_count: type: integer title: Row Count type: object required: - row_count title: CommodityCoverageSegment 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 requested_indicator: anyOf: - type: string - type: 'null' title: Requested Indicator start_date: anyOf: - type: string - type: 'null' title: Start Date end_date: anyOf: - type: string - type: 'null' title: End Date history_start_date: anyOf: - type: string - type: 'null' title: History Start Date history_truncated: anyOf: - type: boolean - type: 'null' title: History Truncated 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 CommodityMissingWeekdayRange: properties: start_date: type: string title: Start Date end_date: type: string title: End Date weekday_count: type: integer title: Weekday Count type: object required: - start_date - end_date - weekday_count title: CommodityMissingWeekdayRange DataQuality: properties: source_freshness: anyOf: - type: string - type: 'null' title: Source Freshness source_monitoring_complete: anyOf: - type: boolean - type: 'null' title: Source Monitoring Complete known_source_gap: anyOf: - type: boolean - type: 'null' title: Known Source Gap source_checked_at: anyOf: - type: integer - type: 'null' title: Source Checked At source_check_expires_at: anyOf: - type: integer - type: 'null' title: Source Check Expires At latest_published_period: anyOf: - type: string - type: 'null' title: Latest Published Period source_permission_status: anyOf: - type: string - type: 'null' title: Source Permission Status commodity_coverage: anyOf: - $ref: '#/components/schemas/CommodityCoverage' - type: 'null' stored_history_coverage: anyOf: - $ref: '#/components/schemas/CommodityCoverage' - type: 'null' point_in_time_basis: anyOf: - type: string - type: 'null' title: Point In Time Basis 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 description: Whether the returned values have verified availability and vintage evidence; estimated release times do not qualify. unverified_vintage_count: type: integer title: Unverified Vintage Count default: 0 unknown_publication_time_count: type: integer title: Unknown Publication Time Count default: 0 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 description: True when at least one row in the quality scope carries a publication timestamp derived from the publication lag measured on that series' own confirmed releases, because no official release calendar reaches the period. default: false assumed_release_time_count: type: integer title: Assumed Release Time Count description: Number of rows in the quality scope whose publication timestamp was derived rather than captured. Compare against row_count to size the derived portion of the requested window. default: 0 bounded_release_time_count: type: integer title: Bounded Release Time Count description: Legacy rows carrying an upper-bound estimate flag; this does not certify replay safety. default: 0 unbounded_release_time_count: type: integer title: Unbounded Release Time Count description: Assumed timestamps without proven availability bounds. 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 CalendarReleaseRow: properties: announcement_datetime: type: integer title: Announcement Datetime release: type: string title: Release calendar_event_id: anyOf: - type: string - type: 'null' title: Calendar Event Id 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_date_status: anyOf: - type: string - type: 'null' title: Release Date Status release_time_assumption: anyOf: - type: string - type: 'null' title: Release Time Assumption time_announced: anyOf: - type: boolean - type: 'null' title: Time Announced description: 'true when the official publisher has announced the exact release time, so announcement_datetime is the scheduled release instant. false when the publisher has announced only the release date (time not announced): announcement_date then holds the publisher''s local date, announcement_datetime is 00:00 of that date in the publisher''s timezone and is a day marker, not a release time. false is also used for rows with release_time_assumed=true. A row with time_announced=false is replaced by a timed row once an official source publishes the time.' announcement_date: anyOf: - type: string - type: 'null' title: Announcement Date description: Official release date (YYYY-MM-DD) in the publisher's local timezone. Present when time_announced is false because the publisher has announced the date but not the time. name: anyOf: - type: string - type: 'null' title: Name unit: anyOf: - type: string - type: 'null' title: Unit description: Unit of the corresponding normalized historical series. value_unit: anyOf: - type: string - type: 'null' title: Value Unit description: Unit of the values this release publishes, as served by /v1/announcements/{currency}/{indicator} for the same release (for example Persons, %YoY, Million Barrels). Taken from the series catalogue; omitted when the catalogue declares no unit. examples: - '%YoY' frequency: anyOf: - type: string - type: 'null' title: Frequency description: Observation frequency of the corresponding historical series. annualization: anyOf: - type: string - type: 'null' title: Annualization description: Declared annualization basis of the historical series, such as SAAR for an annual-rate level. annualization_source_url: anyOf: - type: string - type: 'null' title: Annualization Source Url description: Official source documenting the declared annualization basis; not captured-vintage evidence. 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 description: high, medium or low. Always consistent with market_tier (1 = high, 2 = medium, 3 = low). market_tier: anyOf: - type: integer - type: 'null' title: Market Tier description: Cross-market importance tier of the release type (1 = policy rates, CPI, GDP, labour market, retail sales; 2 = trade, PPI, surveys; 3 = everything else). A release listed as top tier for the row's own currency is promoted to 1. top_tier_for_currency: anyOf: - type: boolean - type: 'null' title: Top Tier For Currency description: True when the release is one of the handful of events that move this currency, from the per-currency list in calendar_top_tier_overrides.json (e.g. dairy exports for NZD, Tankan for JPY, IPCA-15 for BRL). Currencies without a list use market_tier == 1. A global tier-1 release can therefore carry market_tier 1 with top_tier_for_currency false. type: object required: - announcement_datetime - release title: CalendarReleaseRow CalendarSnapshot: properties: currency: type: string title: Currency as_of: type: string title: As Of knowledge_mode: type: string enum: - accepted - reconstruction title: Knowledge Mode checkpoint: type: integer title: Checkpoint next_cursor: anyOf: - type: string - type: 'null' title: Next Cursor events: items: additionalProperties: true type: object type: array title: Events evidence_notice: type: string title: Evidence Notice default: Accepted mode shows versions accepted into this archive by as_of. Reconstruction may include official documents recovered later; it does not establish that FXMacroData held those schedules at the historical time. An empty result does not establish that no events were scheduled. type: object required: - currency - as_of - knowledge_mode - checkpoint - events title: CalendarSnapshot CommodityCoverage: properties: scope: type: string title: Scope requested_start: anyOf: - type: string - type: 'null' title: Requested Start requested_end: anyOf: - type: string - type: 'null' title: Requested End available_start: anyOf: - type: string - type: 'null' title: Available Start available_end: anyOf: - type: string - type: 'null' title: Available End input_row_count: type: integer title: Input Row Count row_count: type: integer title: Row Count distinct_date_count: type: integer title: Distinct Date Count duplicate_date_row_count: type: integer title: Duplicate Date Row Count excluded_weekend_row_count: type: integer title: Excluded Weekend Row Count invalid_date_row_count: type: integer title: Invalid Date Row Count expected_weekday_label_count: type: integer title: Expected Weekday Label Count missing_weekday_label_count: type: integer title: Missing Weekday Label Count largest_missing_weekday_run: type: integer title: Largest Missing Weekday Run largest_calendar_gap_days: type: integer title: Largest Calendar Gap Days missing_weekday_ranges: items: $ref: '#/components/schemas/CommodityMissingWeekdayRange' type: array title: Missing Weekday Ranges longest_continuous_weekday_segment: $ref: '#/components/schemas/CommodityCoverageSegment' latest_continuous_weekday_segment: $ref: '#/components/schemas/CommodityCoverageSegment' sparse_history: type: boolean title: Sparse History coverage_basis: type: string title: Coverage Basis continuous_coverage_verified: type: boolean title: Continuous Coverage Verified default: false reference_only: type: boolean title: Reference Only default: true executable_quotes: type: boolean title: Executable Quotes default: false provenance_version: type: integer title: Provenance Version repaired_excluded_weekend_row_count: type: integer title: Repaired Excluded Weekend Row Count default: 0 repaired_invalid_date_row_count: type: integer title: Repaired Invalid Date Row Count default: 0 type: object required: - scope - input_row_count - row_count - distinct_date_count - duplicate_date_row_count - excluded_weekend_row_count - invalid_date_row_count - expected_weekday_label_count - missing_weekday_label_count - largest_missing_weekday_run - largest_calendar_gap_days - missing_weekday_ranges - longest_continuous_weekday_segment - latest_continuous_weekday_segment - sparse_history - coverage_basis - provenance_version title: CommodityCoverage 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 HTTPValidationError: properties: detail: items: $ref: '#/components/schemas/ValidationError' type: array title: Detail type: object title: HTTPValidationError 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 assumed_release_time_count: type: integer title: Assumed Release Time Count default: 0 bounded_release_time_count: type: integer title: Bounded Release Time Count default: 0 unbounded_release_time_count: type: integer title: Unbounded Release Time Count default: 0 unverified_vintage_count: type: integer title: Unverified Vintage Count default: 0 unknown_publication_time_count: type: integer title: Unknown Publication Time Count default: 0 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. securitySchemes: APIKeyHeader: type: apiKey in: header name: X-API-Key description: 'FXMacroData API key. Preferred transport for server-side clients: the key stays out of URLs and access logs.' HTTPBearer: type: http scheme: bearer description: 'FXMacroData API key or OAuth access token supplied as ``Authorization: Bearer ``.' APIKeyQuery: type: apiKey in: query name: api_key x-deprecated: true description: 'Deprecated. FXMacroData API key as a query parameter. Still accepted so existing integrations keep working, but new integrations must use the X-API-Key header (APIKeyHeader) or Authorization: Bearer. The only exception is browser EventSource clients of the live-delivery streams, which cannot set request headers.'