{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "title": "grocery_basket",
  "type": "object",
  "required": ["published_at", "as_of", "items", "skipped"],
  "additionalProperties": false,
  "properties": {
    "published_at": {"type": "string"},
    "as_of": {"type": ["string", "null"], "pattern": "^\\d{4}-\\d{2}-\\d{2}$|null"},
    "items": {
      "type": "array",
      "items": {
        "type": "object",
        "required": ["code", "name", "month", "price", "mom_pct", "yoy_pct", "series"],
        "additionalProperties": false,
        "properties": {
          "code": {"type": "string"},
          "name": {"type": "string"},
          "month": {"type": "string", "pattern": "^\\d{4}-\\d{2}-\\d{2}$"},
          "price": {"type": "number"},
          "mom_pct": {"type": "number"},
          "yoy_pct": {"type": "number"},
          "series": {
            "type": "object",
            "required": ["months", "prices"],
            "additionalProperties": false,
            "properties": {
              "months": {"type": "array",
                         "items": {"type": "string", "pattern": "^\\d{4}-\\d{2}-\\d{2}$"}},
              "prices": {"type": "array", "items": {"type": "number"}}
            }
          }
        }
      }
    },
    "skipped": {
      "type": "array",
      "items": {"type": "string"}
    },
    "wholesale": {
      "type": "array",
      "items": {
        "type": "object",
        "required": ["code", "name", "retail_code", "as_of", "value", "yoy_pct",
                     "retail_yoy_pct", "spread_pp", "series"],
        "additionalProperties": false,
        "properties": {
          "code": {"type": "string"},
          "name": {"type": "string"},
          "retail_code": {"type": "string"},
          "as_of": {"type": ["string", "null"]},
          "value": {"type": ["number", "null"]},
          "yoy_pct": {"type": ["number", "null"]},
          "retail_yoy_pct": {"type": ["number", "null"]},
          "spread_pp": {"type": ["number", "null"]},
          "series": {
            "type": "object",
            "required": ["dates", "values"],
            "additionalProperties": false,
            "properties": {
              "dates": {"type": "array", "items": {"type": "string"}},
              "values": {"type": "array", "items": {"type": "number"}}
            }
          }
        }
      }
    }
  }
}
