{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "title": "metros",
  "type": "object",
  "required": ["published_at", "metros", "national"],
  "additionalProperties": false,
  "properties": {
    "published_at": {"type": "string"},
    "metros": {
      "type": "array",
      "items": {
        "type": "object",
        "required": ["region_id", "name", "zori", "zhvi"],
        "additionalProperties": false,
        "properties": {
          "region_id": {"type": "string"},
          "name": {"type": "string"},
          "zori": {"$ref": "#/$defs/block"},
          "zhvi": {"$ref": "#/$defs/block"}
        }
      }
    },
    "national": {
      "type": "object",
      "required": ["zori", "zhvi"],
      "additionalProperties": false,
      "properties": {
        "zori": {"$ref": "#/$defs/block"},
        "zhvi": {"$ref": "#/$defs/block"}
      }
    }
  },
  "$defs": {
    "block": {
      "type": "object",
      "required": ["value", "as_of", "yoy_pct", "yoy_tail"],
      "additionalProperties": false,
      "properties": {
        "value": {"type": ["number", "null"]},
        "as_of": {"type": ["string", "null"], "pattern": "^\\d{4}-\\d{2}-\\d{2}$"},
        "yoy_pct": {"type": ["number", "null"]},
        "yoy_tail": {
          "type": "object",
          "required": ["months", "yoy_pct"],
          "additionalProperties": false,
          "properties": {
            "months": {"type": "array",
                       "items": {"type": "string", "pattern": "^\\d{4}-\\d{2}-\\d{2}$"}},
            "yoy_pct": {"type": "array", "items": {"type": ["number", "null"]}}
          }
        }
      }
    }
  }
}
