{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://opendata.chmi.cz/air_quality/now/maps/airquality_map.schema.json",

  "title": "Schéma mapy kvality ovzduší",
  "description": "Schéma JSON souboru obsahujícího rastrovou mapu koncentrací nebo indexu kvality ovzduší zakódovanou ve formátu Base64.",

  "type": "object",

  "required": [
    "zaznamID",
    "datovyZdrojID",
    "datovyTokID",
    "datumVytvoreni",
    "verzeDat",
    "data"
  ],

  "properties": {

    "zaznamID": {
      "type": "string",
      "description": "Identifikátor záznamu. V kombinaci s atributem datumVytvoreni tvoří jednoznačný identifikátor publikovaného objektu."
    },

    "datovyZdrojID": {
      "type": "string",
      "enum": [
        "ovzdusi.mereni",
        "ovzdusi.predpovedi"
      ],
      "description": "Identifikátor datového zdroje."
    },

    "datovyTokID": {
      "type": "string",
      "enum": [
        "air_pollution_aim_maps_data_1h",
        "air_pollution_aim_maps_data_24h",
        "air_pollution_aim_maps_data"
      ],
      "description": "Identifikátor datového toku."
    },

    "datumVytvoreni": {
      "type": "string",
      "format": "date-time",
      "description": "Datum vytvoření souboru (UTC)."
    },

    "verzeDat": {
      "type": "string",
      "description": "Verze datového formátu."
    },

    "data": {

      "type": "object",

      "required": [
        "componentCode",
        "type",
        "dt_beg_utc",
        "dt_end_utc",
        "mapFormat",
        "mapEncoding",
        "map"
      ],

      "properties": {

        "componentCode": {
          "type": "string",
          "enum": [
            "NO2",
            "PM10",
            "PM2_5",
            "O3",
            "SO2",
            "IKO"
          ],
          "description": "Kód zobrazované veličiny."
        },

        "type": {
          "type": "string",
          "enum": [
            "hours",
            "days",
            "max1h",
            "max8h"
          ],
          "description": "Typ zobrazované agregace."
        },

        "fc_beg_utc": {
          "type": "string",
          "format": "date-time",
          "description": "Čas počátku předpovědi (UTC)."
        },

        "dt_beg_utc": {
          "type": "string",
          "format": "date-time",
          "description": "Začátek intervalu, který mapa reprezentuje (UTC)."
        },

        "dt_end_utc": {
          "type": "string",
          "format": "date-time",
          "description": "Konec intervalu, který mapa reprezentuje (UTC)."
        },

        "mapFormat": {
          "type": "string",
          "enum": [
            "png"
          ],
          "description": "Formát obrázku."
        },

        "mapEncoding": {
          "type": "string",
          "const": "base64",
          "description": "Způsob kódování obrázku."
        },

        "map": {
          "type": "string",
          "contentEncoding": "base64",
          "description": "Obrázek mapy zakódovaný metodou Base64."
        }

      },

      "additionalProperties": false

    }

  },

  "allOf": [
    {
      "if": {
        "properties": {
          "datovyZdrojID": {
            "const": "ovzdusi.predpovedi"
          }
        }
      },
      "then": {
        "properties": {
          "data": {
            "required": [
              "fc_beg_utc"
            ]
          }
        }
      },
      "else": {
        "properties": {
          "data": {
            "not": {
              "required": [
                "fc_beg_utc"
              ]
            }
          }
        }
      }
    }
  ],

  "additionalProperties": false

}