Properties
| Name | Type | Description |
|---|---|---|
| research | object | |
| base | string | |
| quote | string | |
| rate_type | string | |
| measure_requested | string | |
| measure_used | string | |
| base_indicator | object | |
| quote_indicator | object | |
| curve_family | object | |
| start_tenor | object | |
| end_tenor | object | |
| forward_label | object | |
| start_date | string | |
| end_date | string | |
| matched_points | integer | |
| unit | string | |
| latest_spread | object | |
| latest_spread_bps | object | |
| latest_differential | object | |
| latest_differential_bps | object | |
| base_latest | object | |
| quote_latest | object | |
| sources | object | |
| official_forward_source_support | object | How the official publisher makes forward rates available, if at all. |
| data_quality | object | |
| pagination | object | Offset pagination state for one page of results. |
| 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-rate-differential-response-schema.json",
"title": "RateDifferentialResponse",
"x-generated": "2026-10-18",
"x-method": "derived",
"x-generator": "derive-json-schema.py",
"x-source": "openapi/fxmacrodata-openapi.json#/components/schemas/RateDifferentialResponse",
"properties": {
"research": {
"anyOf": [
{
"additionalProperties": true,
"type": "object"
},
{
"type": "null"
}
],
"title": "Research"
},
"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": {
"$ref": "#/$defs/RateDifferentialSources"
},
"official_forward_source_support": {
"properties": {
"source_type": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Source Type"
},
"source_note": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Source Note"
}
},
"type": "object",
"title": "OfficialForwardSourceSupport",
"description": "How the official publisher makes forward rates available, if at all."
},
"data_quality": {
"$ref": "#/$defs/DataQuality"
},
"pagination": {
"properties": {
"limit": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"title": "Limit"
},
"offset": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"title": "Offset"
},
"returned_count": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"title": "Returned Count"
},
"total_count": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"title": "Total Count"
},
"has_more": {
"anyOf": [
{
"type": "boolean"
},
{
"type": "null"
}
],
"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",
"title": "Pagination",
"description": "Offset pagination state for one page of results."
},
"data": {
"items": {
"$ref": "#/$defs/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"
],
"$defs": {
"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."
},
"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"
},
"base_selected_vintage_known_at_ns": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Base Selected Vintage Known At Ns"
},
"quote_selected_vintage_known_at_ns": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Quote Selected Vintage Known At Ns"
},
"base_start_selected_vintage_known_at_ns": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Base Start Selected Vintage Known At Ns"
},
"base_end_selected_vintage_known_at_ns": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Base End Selected Vintage Known At Ns"
},
"quote_start_selected_vintage_known_at_ns": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Quote Start Selected Vintage Known At Ns"
},
"quote_end_selected_vintage_known_at_ns": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Quote End Selected Vintage Known At Ns"
}
},
"type": "object",
"required": [
"date"
],
"title": "RateDifferentialPoint"
},
"RateDifferentialSources": {
"properties": {
"base": {
"anyOf": [
{
"type": "string"
},
{
"items": {
"type": "string"
},
"type": "array"
},
{
"type": "null"
}
],
"title": "Base"
},
"quote": {
"anyOf": [
{
"type": "string"
},
{
"items": {
"type": "string"
},
"type": "array"
},
{
"type": "null"
}
],
"title": "Quote"
}
},
"type": "object",
"title": "RateDifferentialSources",
"description": "Publisher of each leg's rate.\n\nThe spot path reports a single publisher name per leg; the curve and\nforward paths report the list of curve sources each leg was built from, so\nboth shapes are declared."
}
}
}
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-rate-differential-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.