Properties
| Name | Type | Description |
|---|---|---|
| currency | string | |
| indicator | string | |
| name | object | |
| unit | object | Unit of `data[].val` in this response, from the series catalogue: the normalized unit by default, the percent unit of a derived `frequency` view (`%YoY`, `%QoQ`, `%MoM`), or `value_metadata.source_uni |
| value_name | object | |
| source | object | |
| source_url | object | |
| source_series_id | object | |
| source_series_name | object | |
| source_local_name | object | |
| seasonal_adjustment | object | |
| price_basis | object | |
| is_proxy | boolean | |
| proxy_note | object | |
| provenance | object | Publisher and source lineage for the served series. |
| policy_role | object | |
| policy_structure | object | |
| comparison_compatible | object | |
| policy_family | object | |
| has_official_forecast | boolean | |
| requested_start_date | object | |
| requested_end_date | object | |
| requested_window_has_data | object | |
| page_includes_latest_available | object | |
| start_date | string | |
| end_date | string | |
| earliest_available_date | object | |
| latest_available_date | object | |
| cb_target | object | |
| remap | object | Set when the requested indicator resolved to a canonical series. |
| filters | object | The series-variant filters this request was resolved with. A null means the caller did not constrain that dimension. |
| selected_series_id | object | |
| selected_series | object | The concrete series variant chosen for this response. |
| supported_options | object | |
| data_quality | object | |
| replay | object | |
| dataset_version | object | |
| value_mode | string | |
| value_metadata | object | |
| pagination | object | |
| freemium_window | object | |
| freemium_delay | object | |
| no_data | object | |
| data | array |
JSON Schema
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"$id": "https://raw.githubusercontent.com/api-evangelist/fxmacrodata/main/json-schema/fxmacrodata-announcement-response-schema.json",
"title": "AnnouncementResponse",
"x-generated": "2026-10-18",
"x-method": "derived",
"x-generator": "derive-json-schema.py",
"x-source": "openapi/fxmacrodata-openapi.json#/components/schemas/AnnouncementResponse",
"properties": {
"currency": {
"type": "string",
"title": "Currency"
},
"indicator": {
"type": "string",
"title": "Indicator"
},
"name": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Name"
},
"unit": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Unit",
"description": "Unit of `data[].val` in this response, from the series catalogue: the normalized unit by default, the percent unit of a derived `frequency` view (`%YoY`, `%QoQ`, `%MoM`), or `value_metadata.source_unit` when `value_mode=source`. Omitted when the catalogue declares no unit."
},
"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": {
"properties": {
"publisher": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Publisher"
},
"publisher_url": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Publisher 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"
},
"storage": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Storage",
"description": "Data provider label for the served series. Always `FXMacroData`."
},
"served_by": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Served By",
"description": "FXMacroData endpoint that serves this series."
},
"timestamp_field": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Timestamp Field"
},
"value_field": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Value Field"
},
"is_proxy": {
"anyOf": [
{
"type": "boolean"
},
{
"type": "null"
}
],
"title": "Is Proxy"
},
"proxy_note": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Proxy Note"
}
},
"type": "object",
"title": "AnnouncementProvenance",
"description": "Publisher and source lineage for the served series."
},
"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": "#/$defs/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": "#/$defs/CBTargetInfo"
},
{
"type": "null"
}
]
},
"remap": {
"properties": {
"applied": {
"anyOf": [
{
"type": "boolean"
},
{
"type": "null"
}
],
"title": "Applied"
},
"canonical_indicator": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Canonical Indicator"
},
"rule_id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Rule Id"
},
"transform": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Transform"
}
},
"type": "object",
"title": "AnnouncementRemap",
"description": "Set when the requested indicator resolved to a canonical series."
},
"filters": {
"properties": {
"seasonality": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Seasonality"
},
"basis": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Basis"
},
"annualization": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Annualization"
},
"period_aggregation": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Period Aggregation"
},
"frequency": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Frequency"
},
"revisions": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Revisions"
}
},
"type": "object",
"title": "SeriesFilters",
"description": "The series-variant filters this request was resolved with.\n\nA null means the caller did not constrain that dimension."
},
"selected_series_id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Selected Series Id"
},
"selected_series": {
"properties": {
"series_id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Series Id"
},
"label": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Label"
},
"source_series_id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Source Series Id"
},
"seasonality": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Seasonality"
},
"basis": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Basis"
},
"annualization": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Annualization"
},
"period_aggregation": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Period Aggregation"
},
"frequency": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Frequency"
},
"revisions": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Revisions"
}
},
"type": "object",
"title": "SelectedSeries",
"description": "The concrete series variant chosen for this response."
},
"supported_options": {
"anyOf": [
{
"additionalProperties": {
"items": {
"type": "string"
},
"type": "array"
},
"type": "object"
},
{
"type": "null"
}
],
"title": "Supported Options"
},
"data_quality": {
"$ref": "#/$defs/DataQuality"
},
"replay": {
"anyOf": [
{
"additionalProperties": true,
"type": "object"
},
{
"type": "null"
}
],
"title": "Replay"
},
"dataset_version": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Dataset Version"
},
"value_mode": {
"type": "string",
"enum": [
"normalized",
"source"
],
"title": "Value Mode",
"default": "normalized"
},
"value_metadata": {
"anyOf": [
{
"additionalProperties": true,
"type": "object"
},
{
"type": "null"
}
],
"title": "Value Metadata"
},
"pagination": {
"$ref": "#/$defs/PaginationInfo"
},
"freemium_window": {
"anyOf": [
{
"$ref": "#/$defs/FreemiumWindow"
},
{
"type": "null"
}
]
},
"freemium_delay": {
"anyOf": [
{
"$ref": "#/$defs/FreemiumDelayNotice"
},
{
"type": "null"
}
]
},
"no_data": {
"anyOf": [
{
"additionalProperties": true,
"type": "object"
},
{
"type": "null"
}
],
"title": "No Data"
},
"data": {
"items": {
"$ref": "#/$defs/AnnouncementDataPoint"
},
"type": "array",
"title": "Data"
}
},
"type": "object",
"required": [
"currency",
"indicator",
"has_official_forecast",
"start_date",
"end_date",
"data_quality",
"pagination",
"data"
],
"$defs": {
"AnnouncementDataPoint": {
"properties": {
"source_validity_status": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Source Validity Status",
"description": "`invalid_source_capture` marks a proven source/parser mistake retained only in the raw source/all audit view. It is excluded from economic revision selection and point-in-time replay. Absence is not source verification."
},
"source_correction": {
"anyOf": [
{
"additionalProperties": true,
"type": "object"
},
{
"type": "null"
}
],
"title": "Source Correction",
"description": "Audit evidence for an incorrect source capture, including the observed and expected series identities and any official correction citation. Original values and capture clocks remain unchanged."
},
"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"
},
"release_time_assumed": {
"anyOf": [
{
"type": "boolean"
},
{
"type": "null"
}
],
"title": "Release Time Assumed",
"description": "Present and true when announcement_datetime was derived from the publication lag measured on this series' confirmed releases, because no official release calendar reaches the period. Omitted on rows whose publication time was captured from the release."
},
"release_time_upper_bound": {
"anyOf": [
{
"type": "boolean"
},
{
"type": "null"
}
],
"title": "Release Time Upper Bound",
"description": "Legacy estimate flag; does not establish point-in-time safety."
},
"publication_time_status": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Publication Time Status",
"description": "What `announcement_datetime` on this row actually is. Present on every row that carries a value.\n\n- `confirmed`: read from the publisher's own release - an embargo instant printed on the document, or a publication timestamp the source served with the data.\n- `unverified`: a real timestamp that this row does not evidence the origin of. Most historical rows are in this state. It is not an estimate, and it is not proof.\n- `assumed_historical`: derived by this service from the lag its own confirmed releases show. Only permitted where both the period and the estimated publication precede 2025-11-06; see `release_time_assumed`.\n- `unknown`: no publication time. `announcement_datetime` is null and the observation is served on its period date alone.\n\nOnly `confirmed` is evidence of when the value became public. Gate point-in-time work on this field per row, never on a series-level claim."
},
"publication_time_precision": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Publication Time Precision",
"description": "Resolution of `announcement_datetime`: `minute` when the publisher gave a clock time, `day` when only the release date was sourced, `unknown` otherwise."
},
"publication_time_basis": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Publication Time Basis",
"description": "Where an `unverified` time came from: `official_schedule` means the publisher's own release calendar listed this release at this time (a planned time, equal to `official_planned_release_datetime`). Absent for `confirmed` rows, which carry the publisher's own timestamp for the release."
},
"vintage_status": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Vintage Status"
},
"is_first_release": {
"anyOf": [
{
"type": "boolean"
},
{
"type": "null"
}
],
"title": "Is First Release"
},
"observed_at_ns": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"title": "Observed At Ns"
},
"observed_at_ns_string": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Observed At Ns String"
},
"collected_at_ns_string": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Collected At Ns String"
},
"publication_at_ns": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"title": "Publication At Ns",
"description": "Publisher-sourced publication instant, Unix epoch nanoseconds (UTC). Present only when the source states one; omitted otherwise."
},
"publication_at_ns_string": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Publication At Ns String",
"description": "`publication_at_ns` as a decimal string; present only alongside it."
},
"announcement_source_url": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Announcement Source Url",
"description": "The specific release this value was read from - for USD CPI, the BLS archive page for that month's news release. Present only when a release-scoped citation is available; a dataset or landing-page URL is reported as `source_url` instead and is never promoted to this field."
},
"source_artifact_sha256": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Source Artifact Sha256"
},
"capture_time_basis": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Capture Time Basis"
},
"geography": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Geography"
},
"period_basis": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Period Basis"
},
"methodology_id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Methodology Id"
},
"source_period_label_conflict": {
"anyOf": [
{
"type": "boolean"
},
{
"type": "null"
}
],
"title": "Source Period Label Conflict"
},
"source_methodology_status": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Source Methodology Status"
},
"selected_vintage_known_at_ns": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Selected Vintage Known At Ns"
},
"replay_vintage_verified": {
"anyOf": [
{
"type": "boolean"
},
{
"type": "null"
}
],
"title": "Replay Vintage Verified"
},
"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",
"description": "Legacy stored nonnegative collection-minus-reference diagnostic in milliseconds, rounded to three decimals. Interpret only with `ingestion_latency_reference`; a planned reference measures from the schedule, not actual publication. Early captures clamp to zero. Use `release_timing` for separately evidenced publication/pickup bounds. Missing historical measurements are not synthesized.",
"deprecated": true
},
"ingestion_latency_reference": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Ingestion Latency Reference",
"description": "Original clock for `ingestion_latency_ms`: `official_planned_release_datetime`, or `official_actual_release_datetime` when confirmed. Retained with the stored diagnostic; not reinterpreted as source-pickup or customer-delivery latency.",
"deprecated": true
},
"release_timing": {
"properties": {
"scheduled_at": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Scheduled At",
"description": "Official scheduled release time (ISO 8601, UTC), or null when no exact time was scheduled. Latency is never measured from this time."
},
"published_at": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Published At",
"description": "The first observed read showing this period (ISO 8601, UTC, microsecond precision). This is an upper bound on publication, not an exact publisher timestamp. Same instant as `published_by`. Null when the capture did not record it."
},
"available_at": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Available At",
"description": "When this value was committed to the FXMacroData API data store (ISO 8601, UTC, microsecond precision). This clock does not measure client receipt. Null when the commit time was not recorded."
},
# --- truncated at 32 KB (75 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/fxmacrodata/refs/heads/main/json-schema/fxmacrodata-announcement-response-schema.json
Work with this as data
Every JSON Schema here is available over the APIs.io API and to AI agents over MCP.
MCP server
One button, every client — Claude, Cursor, VS Code and the rest.
https://apis.io/mcp
Tools for schemas
4 MCP tools reach this
find_json_schemasBrowse and filter every JSON Schema in the catalog.apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.resolveTurn a domain, URL or GitHub org into the provider it belongs to.find_cohortsEvery scored population of providers in the catalog.
Call it yourself
curl for this page
This JSON Schema
curl "https://apis.io/api/v1/json-schemas/fxmacrodata-announcement-response"
All schemas
curl "https://apis.io/api/v1/json-schemas?limit=25"
Discovery needs no key. Ratings and market analysis are Pro.
Get an API key
Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.
A second provider on the same verified email joins the account you already have.