{ "$schema": "https://json-schema.org/draft/2020-12/schema", "$id": "https://raw.githubusercontent.com/api-evangelist/fxmacrodata/main/json-schema/fxmacrodata-predictions-response-schema.json", "title": "PredictionsResponse", "x-generated": "2026-10-18", "x-method": "derived", "x-generator": "derive-json-schema.py", "x-source": "openapi/fxmacrodata-openapi.json#/components/schemas/PredictionsResponse", "properties": { "as_of": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "As Of" }, "event_compatible_only": { "type": "boolean", "title": "Event Compatible Only", "default": false }, "currency": { "type": "string", "title": "Currency" }, "indicator": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Indicator" }, "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" }, "prediction_type": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Prediction Type" }, "prediction_class": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Prediction Class" }, "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 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": "#/$defs/DataQuality" }, "availability": { "anyOf": [ { "additionalProperties": true, "type": "object" }, { "type": "null" } ], "title": "Availability", "description": "Why a filter returned what it returned. ``classes_with_sources`` and ``types_with_sources`` list what any caller could ever get for this pair; ``reason`` explains a requested filter that came back empty. ``no_source_for_pair`` means no publisher provides it and no plan adds it." }, "official_forecasts": { "items": { "additionalProperties": true, "type": "object" }, "type": "array", "title": "Official Forecasts", "description": "Official forecasts and surveys for this indicator in the publisher's own period and unit (quarterly averages, annual rates, survey horizons), newest publication first, every vintage. Not merged into ``data`` because their period basis differs from the monthly announcement; ``target_period``, ``period_basis`` and ``unit`` say exactly what each number is. Same ``prediction_class`` vocabulary as ``data``; filtered by ``prediction_class``, ``prediction_source``, ``start_date`` and ``end_date`` (on the publication date)." }, "official_forecast_count": { "type": "integer", "title": "Official Forecast Count", "description": "Number of rows in ``official_forecasts``.", "default": 0 }, "official_forecast_calendar": { "items": { "additionalProperties": true, "type": "object" }, "type": "array", "title": "Official Forecast Calendar", "description": "Confirmed official forecast publication times for this currency over the next 366 days. These are publisher releases, separate from the indicator's announcement times." }, "official_forecasts_truncated": { "type": "boolean", "title": "Official Forecasts Truncated", "description": "True when more official forecast vintages exist than the ``official_limit`` returned; narrow ``start_date``/``end_date`` or ``prediction_source`` to see the rest.", "default": false }, "data": { "items": { "$ref": "#/$defs/AnnouncementPredictions" }, "type": "array", "title": "Data" } }, "type": "object", "required": [ "currency", "data_quality", "data" ], "$defs": { "AnnouncementPredictions": { "properties": { "announcement_id": { "type": "string", "title": "Announcement Id", "description": "Stable identifier of the announcement these predictions target, in the form ``{currency}_{indicator}_{date}``." }, "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": "#/$defs/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)." }, "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": "#/$defs/CommodityMissingWeekdayRange" }, "type": "array", "title": "Missing Weekday Ranges" }, "longest_continuous_weekday_segment": { "$ref": "#/$defs/CommodityCoverageSegment" }, "latest_continuous_weekday_segment": { "$ref": "#/$defs/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" }, "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" }, "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": "#/$defs/CommodityCoverage" }, { "type": "null" } ] }, "stored_history_coverage": { "anyOf": [ { "$ref": "#/$defs/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": "#/$defs/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" }, "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." }, "PredictionItem": { "properties": { "predicted_value": { "type": "number", "title": "Predicted Value" }, "event_compatible": { "type": "boolean", "title": "Event Compatible", "default": false }, "event_compatibility_reason": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Event Compatibility Reason" }, "source_url": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Source Url" }, "target_period": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Target Period" }, "period_basis": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Period Basis" }, "unit": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Unit" }, "statistic": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Statistic" }, "publication_date": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Publication Date" }, "publication_datetime": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Publication Datetime" }, "publication_precision": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Publication Precision" }, "forecast_observation_id": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Forecast Observation Id" }, "seasonal_adjustment": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Seasonal Adjustment" }, "geography": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Geography" }, "announcement_mapping_verified": { "type": "boolean", "title": "Announcement Mapping Verified", "default": false }, "prediction_class": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Prediction Class", "description": "How the forecast was produced, and the field to filter on. One of ``compiled_consensus`` (a publisher's compilation of independent forecasters), ``forecaster_survey`` (an official survey of forecasters or market participants), ``expectations_survey`` (households or businesses), ``market_implied`` (derived from traded prices), ``model_nowcast`` (a published statistical model), ``central_bank_projection`` (the central bank's own projection), ``institutional_projection`` (IMF, OECD), or ``fxmacrodata`` (an FXMacroData estimate, never a market consensus)." }, "prediction_class_label": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Prediction Class Label", "description": "Human-readable name for ``prediction_class``, for display. Filter on ``prediction_class``, not on this." }, "prediction_type": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Prediction Type", "description": "Original per-source category, retained unchanged for backward compatibility: ``market_consensus``, ``market_prediction``, ``model_nowcast``, ``survey``, ``central_bank_forecast``, ``central_bank_projection``, ``imf_weo``, ``oecd_eo`` or ``fxmacrodata``. These slugs split identical instruments (the ECB and Philadelphia Fed Surveys of Professional Forecasters landed in different values) and two of them name a publisher rather than a category. Prefer ``prediction_class``." }, "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) for the prediction's known-at marker. Inspect `provenance.generated_at_basis` and `provenance.generated_at_precision`: publisher archives may provide a date that FXMacroData normalizes to a documented source-local publication time rather than an original intraday timestamp." }, "provenance": { "anyOf": [ { "$ref": "#/$defs/PredictionProvenance" }, { "type": "null" } ], "description": "Documented origin, capture, timestamp, reconstruction, and vintage semantics for this source. Omitted for sources whose provenance is not yet documented." }, "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." }, "PredictionProvenance": { "properties": { "value_origin": { "type": "string", "title": "Value Origin", "description": "Whether the value is a publisher historical vintage or an FXMacroData model output." }, "capture_mode": { "type": "string", "title": "Capture Mode", "description": "Whether FXMacroData recorded the value when it was published or later imported it from the publisher's official archive." }, "archived_in_real_time_by_fxmacrodata": { "type": "boolean", "title": "Archived In Real Time By Fxmacrodata", "description": "True only when FXMacroData captured the prediction at the time it was generated or published." }, "generated_at_basis": { "type": "string", "title": "Generated At Basis", "description": "The source fact used to construct `generated_at`." }, "generated_at_precision": { "type": "string", "title": "Generated At Precision", "description": "Precision of the underlying source timestamp. `date` means an official source date was normalized to a documented source-local time." }, "reconstructed_with_later_data": { "type": "boolean", "title": "Reconstructed With Later Data", "description": "Whether the prediction value was recomputed using later data or a newer model version." }, "vintage_selection": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Vintage Selection", "description": "Which publisher or model vintages are retained in this feed." } }, "type": "object", "required": [ "value_origin", "capture_mode", "archived_in_real_time_by_fxmacrodata", "generated_at_basis", "generated_at_precision", "reconstructed_with_later_data" ], "title": "PredictionProvenance", "description": "Documented origin and timestamp semantics for a forecast value." } } }