{
  "$schema": "http://json-schema.org/draft-07/schema#",
  "$id": "https://globalfinancialinfo.info/schemas/policy-rates.schema.json",
  "title": "Global Policy Rate Map — row schema",
  "description": "One row per economy. Served as the rows array of https://globalfinancialinfo.info/functions/publicData?dataset=policy-rates. Nullable fields are omitted for an economy where the figure does not exist (for example a pegged regime has no inflation target).",
  "type": "object",
  "additionalProperties": false,
  "properties": {
    "country": { "type": "string", "description": "Display name of the economy, e.g. United States." },
    "iso3": { "type": "string", "pattern": "^[A-Z]{3}$", "description": "ISO 3166-1 alpha-3 code. Unique key." },
    "region": { "type": "string", "enum": ["Americas", "Europe", "Asia-Pacific", "Middle East & Africa"] },
    "currency_code": { "type": "string", "description": "ISO 4217 code, e.g. USD." },
    "policy_rate": { "type": "number", "description": "Current central bank policy rate, percent." },
    "policy_rate_date": { "type": "string", "format": "date", "description": "Date of the latest rate observation." },
    "last_move_direction": { "type": "string", "enum": ["hike", "cut", "hold"] },
    "last_move_bps": { "type": "integer", "description": "Signed basis points of the last move; 0 for a hold." },
    "last_move_date": { "type": "string", "format": "date" },
    "target_inflation": { "type": "number", "description": "Midpoint of the inflation target, percent. Absent where the central bank sets no explicit target." },
    "real_policy_rate": { "type": "number", "description": "Policy rate minus the latest inflation rate, percent." },
    "debt_gdp": { "type": "number", "description": "General government gross debt, percent of GDP." },
    "gdp_growth": { "type": "number", "description": "Annual real GDP growth, percent." },
    "momentum_90d_bps": { "type": "integer", "description": "Net change in the policy rate over the trailing 90 days." },
    "momentum_12m_bps": { "type": "integer", "description": "Net change in the policy rate over the trailing twelve months." },
    "stance_quadrant": { "type": "string", "description": "Monetary stance label derived from the real rate and the gap to target." },
    "next_meeting_date": { "type": "string", "format": "date", "description": "Next scheduled policy meeting, where the calendar is verified." },
    "peak_rate_cycle": { "type": "number", "description": "Highest policy rate in the observed series history." },
    "cut_from_peak_bps": { "type": "integer", "description": "Current rate minus cycle peak, in basis points." },
    "updated_date": { "type": "string", "format": "date", "description": "Date this row was last refreshed." }
  },
  "required": ["country", "iso3", "region"]
}
