{
  "$schema": "http://json-schema.org/draft-07/schema#",
  "$id": "https://example.com/schemas/DWDBerichte.schema.json",
  "title": "DWD Berichte",
  "type": "object",
  "required": [
    "schemaVersion",
    "productId",
    "productName",
    "region",
    "contact",
    "issuer",
    "language",
    "category",
    "issued",
    "validFrom",
    "validTo",
    "sections"
  ],
  "properties": {
    "schemaVersion": {
      "type": "string",
      "pattern": "^\\d+\\.\\d+$",
      "description": "Versionsnummer des Schemas"
    },
    "productId": {
      "type": "string",
      "description": "Produktkennung"
    },
    "productName": {
      "type": "string",
      "description": "Name des Produkts"
    },
    "region": {
      "type": "string",
      "description": "Regionale Kennzeichnung"
    },
    "contact": {
      "type": "string",
      "description": "Kontaktadresse"
    },
    "web": {
      "type": "string",
      "description": "Webadresse des Produkts"
    },
    "issuer": {
      "type": "string",
      "description": "Herausgeber der Meldung"
    },
    "language": {
      "type": "string",
      "minLength": 2,
      "maxLength": 2,
      "description": "Sprachcode, z.B. 'de'"
    },
    "category": {
      "type": "string",
      "description": "Produktkategorie, z.B. 'Met'"
    },
    "office": {
      "type": "string",
      "description": "Ausstellendes Büro"
    },
    "issued": {
      "type": "string",
      "description": "Ausgabezeitpunkt des Produkts (ISO8601)"
    },
    "validFrom": {
      "type": "string",
      "description": "Beginn der Gültigkeit (ISO8601)"
    },
    "validTo": {
      "type": "string",
      "description": "Ende der Gültigkeit (ISO8601)"
    },
    "sections": {
      "type": "array",
      "description": "Vorhersageabschnitte für unterschiedliche Zeiträume oder Regionen",
      "items": {
        "type": "object",
        "required": ["id", "timeRange", "area"],
        "properties": {
          "id": {
            "type": "string",
            "description": "Interne Kennung der Section",
			"enum": [
          "HEADER","SYNOPTIC", "WARND0", "WARND1", "WARND2", "WARND3", "WARND4", "WARND5", "FORECASTD0", "FORECASTD1", "FORECASTD2", "FORECASTD3", "FORECASTD4", "FORECASTD5", "FORECASTD6", "FORECASTD7", "FORECASTD8", "FORECASTD9","FORECASTD10","OUTLOOK", "ROADD0", "ROADD1", "ROADD2"
        ]
          },
          "title": {
            "type": "string",
            "description": "Titel des Abschnitts"
          },
          "timeRange": {
            "type": "object",
            "required": ["from", "to"],
            "properties": {
              "from": {
                "type": "string"
              },
              "to": {
                "type": "string"
              }
            },
            "additionalProperties": false
          },
          "area": {
            "type": "array",
            "description": "Gebiete mit individuellen Textvorhersagen",
            "items": {
              "type": "object",
              "required": ["name", "elements"],
              "properties": {
                "name": {
                  "type": "string",
                  "description": "Gebietsname"
                },
				"parentArea": {
                  "type": "string",
                  "description": "Übergeordnetete Gebietsbezeichnung"
                },
				"ags": {
                  "type": "string",
                  "description": "AGS-Schlüssel"
                },
                "elements": {
                  "type": "array",
                  "description": "Liste meteorologischer Elemente für das Gebiet",
                  "items": {
                    "type": "object",
                    "required": ["id","element","text"],
                    "properties": {
                      "id": {
                        "type": "string",
                        "description": "ID des Elements",
						"enum": ["WX", "WW", "SYN", "HEAD","FF","VISWW","SWELL"]
                      },
                      "element": {
                        "type": "string",
                        "description": "Name des Wetterelements"
                      },
                      "text": {
                        "type": "string",
                        "description": "Textbeschreibung der Vorhersage"
                      },
                      "source": {
                        "type": "string",
                        "description": "Quelle der Produktion",
						"enum": ["MAN", "AUTO"]
                      }
                    },
                    "additionalProperties": false
                  }
                }
              },
              "additionalProperties": false
            }
          }
        },
        "additionalProperties": false
      }
    }
  },
  "additionalProperties": false
}
