{
  "openapi": "3.1.0",
  "info": {
    "title": "lueneburg.city: offene Daten der Morgenausgabe",
    "version": "2.0.0",
    "summary": "Lage, Verkehr, Termine und Ausgaben für Stadt und Landkreis Lüneburg als JSON",
    "description": "Alle Endpunkte sind frei abrufbar, ohne Schlüssel und ohne Anmeldung, mit CORS für alle Herkünfte. Jede Angabe trägt quelle_url und Stand. Die Daten stammen aus amtlichen und offen lizenzierten Quellen; deren Lizenzen und Vermerke gelten weiter (siehe /quellen). Bitte höchstens einmal je Minute abrufen; die Live-Lage ändert sich alle fünf Minuten.",
    "contact": {
      "name": "lueneburg.city",
      "email": "mail@lueneburg.city",
      "url": "https://lueneburg.city/daten"
    },
    "license": {
      "name": "Lizenz je Quelle, Vermerk je Angabe",
      "url": "https://lueneburg.city/quellen"
    }
  },
  "servers": [
    {
      "url": "https://lueneburg.city"
    }
  ],
  "externalDocs": {
    "description": "Offene Daten",
    "url": "https://lueneburg.city/daten"
  },
  "tags": [
    {
      "name": "Live",
      "description": "Live-Lage alle fünf Minuten"
    },
    {
      "name": "Morgenausgabe",
      "description": "Datensätze der Morgenausgabe, neu mit jeder Ausgabe"
    },
    {
      "name": "OB-Wahl 2026",
      "description": "Archiv der Wahlseite"
    },
    {
      "name": "Assistenten",
      "description": "Schnittstelle für KI-Assistenten"
    }
  ],
  "paths": {
    "/api/lage": {
      "get": {
        "operationId": "liveLage",
        "summary": "Live-Lage",
        "description": "Die acht Felder der Lage, aktive Alarme, Himmel und Tagessatz, alle fünf Minuten neu berechnet. Antwort unter 3 KB, 60 Sekunden im CDN, CORS für alle Herkünfte. Grundlage der Startseite, der Einbett-Karte und des Lage-Bildschirms.",
        "tags": [
          "Live"
        ],
        "responses": {
          "200": {
            "description": "Live-Lage",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/LiveLage"
                }
              }
            }
          },
          "503": {
            "description": "Lage gerade nicht verfügbar",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "fehler"
                  ],
                  "properties": {
                    "fehler": {
                      "type": "string"
                    }
                  }
                }
              }
            }
          }
        }
      }
    },
    "/daten/lage.json": {
      "get": {
        "operationId": "lage",
        "summary": "Lage der Morgenausgabe",
        "description": "Die Felder der Lage zum Stand der neuesten Ausgabe mit allen Quellen.",
        "tags": [
          "Morgenausgabe"
        ],
        "responses": {
          "200": {
            "description": "Datensatz",
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "$ref": "#/components/schemas/Datensatz"
                    },
                    {
                      "type": "object",
                      "required": [
                        "daten"
                      ],
                      "properties": {
                        "daten": {
                          "type": "object",
                          "required": [
                            "datum",
                            "stand",
                            "lage",
                            "quellen"
                          ],
                          "properties": {
                            "datum": {
                              "type": "string",
                              "description": "Tag der Ausgabe, JJJJ-MM-TT"
                            },
                            "stand": {
                              "type": "string",
                              "description": "Stand der Ausgabe"
                            },
                            "lage": {
                              "type": "array",
                              "items": {
                                "$ref": "#/components/schemas/Zelle"
                              }
                            },
                            "quellen": {
                              "type": "array",
                              "items": {
                                "$ref": "#/components/schemas/QuelleStatus"
                              }
                            }
                          }
                        }
                      }
                    }
                  ]
                }
              }
            }
          }
        }
      }
    },
    "/daten/verkehr.json": {
      "get": {
        "operationId": "verkehr",
        "summary": "Verkehrsmeldungen und Baustellen",
        "description": "Meldungen der Verkehrsmanagementzentrale Niedersachsen mit Bezug zum Landkreis und Baustellen des Landkreises.",
        "tags": [
          "Morgenausgabe"
        ],
        "responses": {
          "200": {
            "description": "Datensatz",
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "$ref": "#/components/schemas/Datensatz"
                    },
                    {
                      "type": "object",
                      "required": [
                        "daten"
                      ],
                      "properties": {
                        "daten": {
                          "$ref": "#/components/schemas/Verkehr"
                        }
                      }
                    }
                  ]
                }
              }
            }
          }
        }
      }
    },
    "/daten/veranstaltungen.json": {
      "get": {
        "operationId": "veranstaltungen",
        "summary": "Veranstaltungen heute und morgen",
        "description": "Termine aus destination.one, nur Einträge mit freier Lizenz, Vermerk je Eintrag.",
        "tags": [
          "Morgenausgabe"
        ],
        "responses": {
          "200": {
            "description": "Datensatz",
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "$ref": "#/components/schemas/Datensatz"
                    },
                    {
                      "type": "object",
                      "required": [
                        "daten"
                      ],
                      "properties": {
                        "daten": {
                          "type": "object",
                          "required": [
                            "datum",
                            "heute",
                            "morgen"
                          ],
                          "properties": {
                            "datum": {
                              "type": "string",
                              "description": "Tag der Ausgabe, JJJJ-MM-TT"
                            },
                            "heute": {
                              "type": "array",
                              "items": {
                                "$ref": "#/components/schemas/Termin"
                              }
                            },
                            "morgen": {
                              "type": "array",
                              "items": {
                                "$ref": "#/components/schemas/Termin"
                              }
                            }
                          }
                        }
                      }
                    }
                  ]
                }
              }
            }
          }
        }
      }
    },
    "/daten/sitzungen.json": {
      "get": {
        "operationId": "sitzungen",
        "summary": "Sitzungen der Gremien der Hansestadt",
        "description": "Sitzungstermine aus dem Kalender-Abo des Bürgerinformationssystems mit dem öffentlichen Teil der Tagesordnung, zwei Wochen zurück bis vier Monate voraus. Täglich neu.",
        "tags": [
          "Morgenausgabe"
        ],
        "responses": {
          "200": {
            "description": "Datensatz",
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "$ref": "#/components/schemas/Datensatz"
                    },
                    {
                      "type": "object",
                      "required": [
                        "daten"
                      ],
                      "properties": {
                        "daten": {
                          "$ref": "#/components/schemas/Sitzungen"
                        }
                      }
                    }
                  ]
                }
              }
            }
          }
        }
      }
    },
    "/daten/bekanntmachungen.json": {
      "get": {
        "operationId": "bekanntmachungen",
        "summary": "Amtliche Bekanntmachungen",
        "description": "Bekanntmachungen von Landkreis und Hansestadt Lüneburg und Ausgaben des Amtsblatts für den Landkreis, mit dem Tag des ersten Erscheinens. Täglich neu.",
        "tags": [
          "Morgenausgabe"
        ],
        "responses": {
          "200": {
            "description": "Datensatz",
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "$ref": "#/components/schemas/Datensatz"
                    },
                    {
                      "type": "object",
                      "required": [
                        "daten"
                      ],
                      "properties": {
                        "daten": {
                          "$ref": "#/components/schemas/Bekanntmachungen"
                        }
                      }
                    }
                  ]
                }
              }
            }
          }
        }
      }
    },
    "/daten/arbeitsmarkt.json": {
      "get": {
        "operationId": "arbeitsmarkt",
        "summary": "Arbeitsmarkt im Landkreis",
        "description": "Eckwerte der Statistik der Bundesagentur für Arbeit: Arbeitslose, Quote, Unterbeschäftigung, gemeldete Stellen. Monatlich neu.",
        "tags": [
          "Morgenausgabe"
        ],
        "responses": {
          "200": {
            "description": "Datensatz",
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "$ref": "#/components/schemas/Datensatz"
                    },
                    {
                      "type": "object",
                      "required": [
                        "daten"
                      ],
                      "properties": {
                        "daten": {
                          "$ref": "#/components/schemas/Arbeitsmarkt"
                        }
                      }
                    }
                  ]
                }
              }
            }
          }
        }
      }
    },
    "/daten/ladesaeulen.json": {
      "get": {
        "operationId": "ladesaeulen",
        "summary": "Öffentliche Ladesäulen im Landkreis",
        "description": "Ladeeinrichtungen aus dem Ladesäulenregister der Bundesnetzagentur, CC BY 4.0. Monatlich neu.",
        "tags": [
          "Morgenausgabe"
        ],
        "responses": {
          "200": {
            "description": "Datensatz",
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "$ref": "#/components/schemas/Datensatz"
                    },
                    {
                      "type": "object",
                      "required": [
                        "daten"
                      ],
                      "properties": {
                        "daten": {
                          "$ref": "#/components/schemas/Ladesaeulen"
                        }
                      }
                    }
                  ]
                }
              }
            }
          }
        }
      }
    },
    "/daten/bodenrichtwerte.json": {
      "get": {
        "operationId": "bodenrichtwerte",
        "summary": "Bodenrichtwerte im Landkreis",
        "description": "Bodenrichtwertzonen aus BORIS-NI ohne Geometrie, Datenlizenz Deutschland Namensnennung 2.0. Monatlich geprüft, neue Werte jährlich.",
        "tags": [
          "Morgenausgabe"
        ],
        "responses": {
          "200": {
            "description": "Datensatz",
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "$ref": "#/components/schemas/Datensatz"
                    },
                    {
                      "type": "object",
                      "required": [
                        "daten"
                      ],
                      "properties": {
                        "daten": {
                          "$ref": "#/components/schemas/Bodenrichtwerte"
                        }
                      }
                    }
                  ]
                }
              }
            }
          }
        }
      }
    },
    "/daten/abfall-strassen.json": {
      "get": {
        "operationId": "abfallStrassen",
        "summary": "Straßen im Abfuhrkalender der GfA",
        "description": "Orte und Straßen, für die die GfA Lüneburg Abfuhrtermine führt. Die Termine je Adresse liefert /api/abfall. Monatlich neu.",
        "tags": [
          "Morgenausgabe"
        ],
        "responses": {
          "200": {
            "description": "Datensatz",
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "$ref": "#/components/schemas/Datensatz"
                    },
                    {
                      "type": "object",
                      "required": [
                        "daten"
                      ],
                      "properties": {
                        "daten": {
                          "$ref": "#/components/schemas/AbfallStrassen"
                        }
                      }
                    }
                  ]
                }
              }
            }
          }
        }
      }
    },
    "/daten/ausgabe-{datum}.json": {
      "get": {
        "operationId": "ausgabe",
        "summary": "Morgenausgabe eines Tages",
        "description": "Vollständiger Datensatz einer Ausgabe nach dem Datenvertrag. Jede Ausgabe seit dem 6. Oktober 2026 bleibt abrufbar; welche es gibt, steht im Archiv unter /archiv.",
        "tags": [
          "Morgenausgabe"
        ],
        "parameters": [
          {
            "name": "datum",
            "in": "path",
            "required": true,
            "description": "Tag der Ausgabe",
            "schema": {
              "type": "string",
              "pattern": "^\\d{4}-\\d{2}-\\d{2}$"
            },
            "example": "2026-10-07"
          }
        ],
        "responses": {
          "200": {
            "description": "Datensatz",
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "$ref": "#/components/schemas/Datensatz"
                    },
                    {
                      "type": "object",
                      "required": [
                        "daten"
                      ],
                      "properties": {
                        "daten": {
                          "$ref": "#/components/schemas/Ausgabe"
                        }
                      }
                    }
                  ]
                }
              }
            }
          },
          "404": {
            "description": "Für diesen Tag gibt es keine Ausgabe."
          }
        }
      }
    },
    "/daten/ergebnis.json": {
      "get": {
        "operationId": "wahl_ergebnis",
        "summary": "Ergebnis der OB-Wahl 2026",
        "description": "Erster Wahlgang vom 13. September 2026 und Stichwahl vom 27. September 2026, amtliche Zahlen.",
        "tags": [
          "OB-Wahl 2026"
        ],
        "responses": {
          "200": {
            "description": "Datensatz",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/WahlDatensatz"
                }
              }
            }
          }
        }
      }
    },
    "/daten/kandidierende.json": {
      "get": {
        "operationId": "wahl_kandidierende",
        "summary": "Kandidaturen der Stichwahl",
        "description": "Profile, Quellen und Themenpositionen der beiden Kandidaturen der Stichwahl.",
        "tags": [
          "OB-Wahl 2026"
        ],
        "responses": {
          "200": {
            "description": "Datensatz",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/WahlDatensatz"
                }
              }
            }
          }
        }
      }
    },
    "/daten/themen.json": {
      "get": {
        "operationId": "wahl_themen",
        "summary": "Themenfelder der Wahl",
        "description": "Zehn Themenfelder mit Kennzahlen, Positionen und Quellen.",
        "tags": [
          "OB-Wahl 2026"
        ],
        "responses": {
          "200": {
            "description": "Datensatz",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/WahlDatensatz"
                }
              }
            }
          }
        }
      }
    },
    "/daten/faktencheck.json": {
      "get": {
        "operationId": "wahl_faktencheck",
        "summary": "Faktencheck zur Wahl",
        "description": "Geprüfte Behauptungen mit Urteil, Begründung und Quellen.",
        "tags": [
          "OB-Wahl 2026"
        ],
        "responses": {
          "200": {
            "description": "Datensatz",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/WahlDatensatz"
                }
              }
            }
          }
        }
      }
    },
    "/daten/termine.json": {
      "get": {
        "operationId": "wahl_termine",
        "summary": "Termine und Fristen der Wahl",
        "description": "Amtliche Fristen, Podien und Wahltermine.",
        "tags": [
          "OB-Wahl 2026"
        ],
        "responses": {
          "200": {
            "description": "Datensatz",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/WahlDatensatz"
                }
              }
            }
          }
        }
      }
    },
    "/daten/quellen.json": {
      "get": {
        "operationId": "wahl_quellen",
        "summary": "Quellenregister der Wahlseite",
        "description": "Alle Quellen des Wahlarchivs nach Klasse.",
        "tags": [
          "OB-Wahl 2026"
        ],
        "responses": {
          "200": {
            "description": "Datensatz",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/WahlDatensatz"
                }
              }
            }
          }
        }
      }
    },
    "/api/abfall": {
      "get": {
        "operationId": "abfall",
        "summary": "Abfuhrtermine je Adresse",
        "description": "Fragt den Abfuhrkalender der GfA Lüneburg ab. Nur mit Ort: Straßen. Mit Straße: Hausnummern, oder die Termine, wenn es nur eine gibt. Mit Hausnummer: Termine je Abfallart. Mit format=ics als Kalender-Abo mit Erinnerung am Vorabend. Antworten liegen einen Tag im CDN.",
        "tags": [
          "Live"
        ],
        "parameters": [
          {
            "name": "ort",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            },
            "example": "Lüneburg"
          },
          {
            "name": "strasse",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            },
            "example": "Am Sande"
          },
          {
            "name": "hausnummer",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            },
            "example": "1"
          },
          {
            "name": "format",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "enum": [
                "json",
                "ics"
              ]
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Straßen, Hausnummern oder Termine; mit format=ics ein Kalender",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object"
                }
              },
              "text/calendar": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "400": {
            "description": "Unzulässige Angabe",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "fehler"
                  ],
                  "properties": {
                    "fehler": {
                      "type": "string"
                    }
                  }
                }
              }
            }
          },
          "404": {
            "description": "Ort, Straße oder Hausnummer nicht im Abfuhrkalender",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "fehler"
                  ],
                  "properties": {
                    "fehler": {
                      "type": "string"
                    }
                  }
                }
              }
            }
          },
          "502": {
            "description": "Abfuhrkalender der GfA nicht erreichbar",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "fehler"
                  ],
                  "properties": {
                    "fehler": {
                      "type": "string"
                    }
                  }
                }
              }
            }
          }
        }
      }
    },
    "/mcp": {
      "post": {
        "operationId": "mcp",
        "summary": "MCP-Server für Assistenten",
        "description": "Model Context Protocol über Streamable HTTP, zustandslos, nur lesend, ohne Anmeldung. Werkzeuge und Beispiele unter /schnittstelle.",
        "tags": [
          "Assistenten"
        ],
        "externalDocs": {
          "url": "https://lueneburg.city/schnittstelle"
        },
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "required": [
                  "jsonrpc",
                  "method"
                ],
                "properties": {
                  "jsonrpc": {
                    "const": "2.0"
                  },
                  "id": {
                    "type": [
                      "string",
                      "integer"
                    ]
                  },
                  "method": {
                    "type": "string",
                    "examples": [
                      "tools/list",
                      "tools/call"
                    ]
                  },
                  "params": {
                    "type": "object"
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Antwort nach JSON-RPC 2.0",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "jsonrpc"
                  ],
                  "properties": {
                    "jsonrpc": {
                      "const": "2.0"
                    },
                    "id": {},
                    "result": {},
                    "error": {}
                  }
                }
              }
            }
          }
        }
      }
    }
  },
  "components": {
    "schemas": {
      "Datensatz": {
        "type": "object",
        "description": "Hülle jedes Datensatzes der Morgenausgabe: Herkunft, Stand und Lizenzhinweis, die Daten unter `daten`.",
        "required": [
          "@context",
          "@type",
          "name",
          "description",
          "url",
          "inLanguage",
          "dateModified",
          "isAccessibleForFree",
          "creator",
          "hinweise",
          "daten"
        ],
        "properties": {
          "@context": {
            "const": "https://schema.org"
          },
          "@type": {
            "const": "Dataset"
          },
          "name": {
            "type": "string",
            "description": "Name des Datensatzes"
          },
          "description": {
            "type": "string",
            "description": "Beschreibung"
          },
          "url": {
            "type": "string",
            "description": "Seite mit allen Datensätzen",
            "format": "uri"
          },
          "inLanguage": {
            "const": "de-DE"
          },
          "dateModified": {
            "type": "string",
            "description": "Stand des Datensatzes"
          },
          "isAccessibleForFree": {
            "const": true
          },
          "creator": {
            "type": "object",
            "required": [
              "@type",
              "name",
              "url"
            ],
            "properties": {
              "@type": {
                "type": "string"
              },
              "name": {
                "type": "string"
              },
              "url": {
                "type": "string",
                "format": "uri"
              }
            }
          },
          "hinweise": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "Hinweise zu Herkunft, Lizenz und Grenzen der Daten"
          },
          "daten": {
            "description": "Die Daten selbst"
          }
        }
      },
      "WahlDatensatz": {
        "type": "object",
        "description": "Hülle der Datensätze des Wahlarchivs (OB-Wahl 2026) mit Hinweisen zur Neutralität.",
        "required": [
          "@context",
          "@type",
          "name",
          "description",
          "url",
          "inLanguage",
          "dateModified",
          "isAccessibleForFree",
          "creator",
          "citation",
          "hinweise",
          "stand",
          "daten"
        ],
        "properties": {
          "@context": {
            "const": "https://schema.org"
          },
          "@type": {
            "const": "Dataset"
          },
          "name": {
            "type": "string",
            "description": "Name des Datensatzes"
          },
          "description": {
            "type": "string",
            "description": "Beschreibung"
          },
          "url": {
            "type": "string",
            "description": "Seite mit allen Datensätzen",
            "format": "uri"
          },
          "inLanguage": {
            "const": "de-DE"
          },
          "dateModified": {
            "type": "string",
            "description": "Stand des Datensatzes"
          },
          "isAccessibleForFree": {
            "const": true
          },
          "creator": {
            "type": "object",
            "required": [
              "@type",
              "name",
              "url"
            ],
            "properties": {
              "@type": {
                "type": "string"
              },
              "name": {
                "type": "string"
              },
              "url": {
                "type": "string",
                "format": "uri"
              }
            }
          },
          "citation": {
            "type": "string",
            "description": "Zitierhinweis"
          },
          "stand": {
            "type": "string",
            "description": "Redaktionsstand"
          },
          "hinweise": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "Hinweise zu Herkunft, Lizenz und Grenzen der Daten"
          },
          "daten": {
            "description": "Die Daten selbst"
          }
        }
      },
      "LiveLage": {
        "type": "object",
        "properties": {
          "stand": {
            "type": "string",
            "pattern": "^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}"
          },
          "zellen": {
            "minItems": 1,
            "maxItems": 8,
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Zelle"
            }
          },
          "alarme": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Alarm"
            }
          },
          "himmel": {
            "type": "object",
            "properties": {
              "bewoelkung": {
                "anyOf": [
                  {
                    "type": "number",
                    "minimum": 0,
                    "maximum": 100
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "regen": {
                "type": "boolean"
              },
              "glatteis": {
                "type": "boolean"
              },
              "sturm": {
                "type": "boolean"
              }
            },
            "required": [
              "bewoelkung",
              "regen",
              "glatteis",
              "sturm"
            ]
          },
          "tagessatz": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "text": {
                  "type": "string"
                },
                "farbe": {
                  "type": "string",
                  "enum": [
                    "ok",
                    "warn",
                    "alarm",
                    "neutral"
                  ]
                },
                "ziel": {
                  "type": "string",
                  "enum": [
                    "wetter",
                    "regen",
                    "schule",
                    "verkehr",
                    "bahn",
                    "pegel",
                    "luft",
                    "strom"
                  ]
                }
              },
              "required": [
                "text",
                "farbe",
                "ziel"
              ]
            }
          }
        },
        "required": [
          "stand",
          "zellen",
          "alarme",
          "himmel",
          "tagessatz"
        ]
      },
      "Zelle": {
        "type": "object",
        "properties": {
          "schluessel": {
            "type": "string",
            "enum": [
              "wetter",
              "regen",
              "schule",
              "verkehr",
              "bahn",
              "pegel",
              "luft",
              "strom"
            ]
          },
          "wert": {
            "type": "string",
            "minLength": 1
          },
          "einheit": {
            "type": [
              "string",
              "null"
            ]
          },
          "satz": {
            "type": "string",
            "minLength": 1
          },
          "farbe": {
            "type": "string",
            "enum": [
              "ok",
              "warn",
              "alarm",
              "neutral"
            ]
          },
          "pill": {
            "type": "string",
            "minLength": 1
          },
          "quelle": {
            "type": "string",
            "minLength": 1
          },
          "quelle_url": {
            "type": "string",
            "format": "uri"
          },
          "stand": {
            "type": "string",
            "pattern": "^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}"
          },
          "mini": {
            "$ref": "#/components/schemas/Mini"
          }
        },
        "required": [
          "schluessel",
          "wert",
          "einheit",
          "satz",
          "farbe",
          "quelle",
          "quelle_url",
          "stand"
        ]
      },
      "Mini": {
        "oneOf": [
          {
            "type": "object",
            "properties": {
              "art": {
                "type": "string",
                "const": "kurve"
              },
              "werte": {
                "type": "array",
                "items": {
                  "type": [
                    "number",
                    "null"
                  ]
                }
              },
              "von": {
                "type": "integer"
              },
              "jetzt": {
                "anyOf": [
                  {
                    "type": "integer"
                  },
                  {
                    "type": "null"
                  }
                ]
              }
            },
            "required": [
              "art",
              "werte",
              "von",
              "jetzt"
            ]
          },
          {
            "type": "object",
            "properties": {
              "art": {
                "type": "string",
                "const": "radar"
              },
              "werte": {
                "type": "array",
                "items": {
                  "type": "number"
                }
              },
              "schritt_min": {
                "type": "integer"
              }
            },
            "required": [
              "art",
              "werte",
              "schritt_min"
            ]
          },
          {
            "type": "object",
            "properties": {
              "art": {
                "type": "string",
                "const": "woche"
              },
              "tage": {
                "type": "array",
                "items": {
                  "type": "object",
                  "properties": {
                    "kurz": {
                      "type": "string"
                    },
                    "datum": {
                      "type": "string",
                      "pattern": "^\\d{4}-\\d{2}-\\d{2}$"
                    },
                    "status": {
                      "type": "string",
                      "enum": [
                        "schule",
                        "ferien",
                        "feiertag",
                        "ausfall",
                        "frei"
                      ]
                    },
                    "heute": {
                      "type": "boolean"
                    }
                  },
                  "required": [
                    "kurz",
                    "datum",
                    "status",
                    "heute"
                  ]
                }
              },
              "hinweis": {
                "type": [
                  "string",
                  "null"
                ]
              }
            },
            "required": [
              "art",
              "tage",
              "hinweis"
            ]
          },
          {
            "type": "object",
            "properties": {
              "art": {
                "type": "string",
                "const": "schilder"
              },
              "schilder": {
                "type": "array",
                "items": {
                  "type": "object",
                  "properties": {
                    "typ": {
                      "type": "string",
                      "enum": [
                        "A",
                        "B",
                        "L",
                        "K",
                        "F",
                        "S"
                      ]
                    },
                    "nummer": {
                      "type": "string"
                    }
                  },
                  "required": [
                    "typ",
                    "nummer"
                  ]
                }
              }
            },
            "required": [
              "art",
              "schilder"
            ]
          },
          {
            "type": "object",
            "properties": {
              "art": {
                "type": "string",
                "const": "abfahrten"
              },
              "abfahrten": {
                "type": "array",
                "items": {
                  "type": "object",
                  "properties": {
                    "zeit": {
                      "type": "string"
                    },
                    "linie": {
                      "type": "string"
                    },
                    "verspaetung_min": {
                      "anyOf": [
                        {
                          "type": "integer"
                        },
                        {
                          "type": "null"
                        }
                      ]
                    },
                    "ausfall": {
                      "type": "boolean"
                    }
                  },
                  "required": [
                    "zeit",
                    "linie",
                    "verspaetung_min",
                    "ausfall"
                  ]
                }
              }
            },
            "required": [
              "art",
              "abfahrten"
            ]
          },
          {
            "type": "object",
            "properties": {
              "art": {
                "type": "string",
                "const": "pegel"
              },
              "wert": {
                "type": "number"
              },
              "mnw": {
                "type": "number"
              },
              "mw": {
                "type": "number"
              },
              "mhw": {
                "type": "number"
              }
            },
            "required": [
              "art",
              "wert",
              "mnw",
              "mw",
              "mhw"
            ]
          },
          {
            "type": "object",
            "properties": {
              "art": {
                "type": "string",
                "const": "skala"
              },
              "index": {
                "type": "integer",
                "minimum": 0,
                "maximum": 4
              }
            },
            "required": [
              "art",
              "index"
            ]
          },
          {
            "type": "object",
            "properties": {
              "art": {
                "type": "string",
                "const": "ampel"
              },
              "werte": {
                "type": "array",
                "items": {
                  "type": "integer",
                  "minimum": -1,
                  "maximum": 2
                }
              },
              "von": {
                "type": "integer"
              },
              "jetzt": {
                "anyOf": [
                  {
                    "type": "integer"
                  },
                  {
                    "type": "null"
                  }
                ]
              }
            },
            "required": [
              "art",
              "werte",
              "von",
              "jetzt"
            ]
          }
        ]
      },
      "Alarm": {
        "type": "object",
        "properties": {
          "art": {
            "type": "string",
            "enum": [
              "schule",
              "unwetter",
              "glaette",
              "hochwasser",
              "bevoelkerungsschutz",
              "test"
            ]
          },
          "titel": {
            "type": "string",
            "minLength": 3
          },
          "text": {
            "type": "string"
          },
          "gueltig_bis": {
            "anyOf": [
              {
                "type": "string",
                "pattern": "^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}"
              },
              {
                "type": "null"
              }
            ]
          },
          "test": {
            "type": "boolean"
          },
          "quelle": {
            "type": "string",
            "minLength": 1
          },
          "quelle_url": {
            "type": "string",
            "format": "uri"
          },
          "stand": {
            "type": "string",
            "pattern": "^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}"
          }
        },
        "required": [
          "art",
          "titel",
          "text",
          "gueltig_bis",
          "quelle",
          "quelle_url",
          "stand"
        ]
      },
      "Punkt": {
        "type": "object",
        "properties": {
          "art": {
            "type": "string",
            "enum": [
              "schule",
              "warnung",
              "stadt",
              "landkreis",
              "polizei"
            ]
          },
          "leitsatz": {
            "type": "string",
            "minLength": 3
          },
          "text": {
            "type": [
              "string",
              "null"
            ]
          },
          "quelle": {
            "type": "string",
            "minLength": 1
          },
          "quelle_url": {
            "type": "string",
            "format": "uri"
          },
          "datum": {
            "type": "string",
            "pattern": "^\\d{4}-\\d{2}-\\d{2}$"
          }
        },
        "required": [
          "art",
          "leitsatz",
          "text",
          "quelle",
          "quelle_url",
          "datum"
        ]
      },
      "Termin": {
        "type": "object",
        "properties": {
          "zeit": {
            "type": [
              "string",
              "null"
            ]
          },
          "titel": {
            "type": "string",
            "minLength": 2
          },
          "ort": {
            "type": "string"
          },
          "einmalig": {
            "type": "boolean"
          },
          "lizenz": {
            "type": "string",
            "enum": [
              "CC0",
              "CC-BY",
              "CC-BY-SA",
              "link"
            ]
          },
          "vermerk": {
            "type": "string"
          },
          "quelle_url": {
            "type": "string",
            "format": "uri"
          },
          "kategorie": {
            "type": "string",
            "enum": [
              "kultur",
              "uni",
              "sport",
              "blutspende",
              "sonstiges"
            ]
          }
        },
        "required": [
          "zeit",
          "titel",
          "ort",
          "einmalig",
          "lizenz",
          "vermerk",
          "quelle_url"
        ]
      },
      "Verkehr": {
        "type": "object",
        "properties": {
          "meldungen": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "titel": {
                  "type": "string"
                },
                "text": {
                  "type": "string"
                },
                "gesperrt": {
                  "type": "boolean"
                },
                "bis": {
                  "anyOf": [
                    {
                      "type": "string",
                      "pattern": "^\\d{4}-\\d{2}-\\d{2}$"
                    },
                    {
                      "type": "null"
                    }
                  ]
                },
                "quelle": {
                  "type": "string"
                },
                "quelle_url": {
                  "type": "string",
                  "format": "uri"
                },
                "stand": {
                  "type": [
                    "string",
                    "null"
                  ]
                }
              },
              "required": [
                "titel",
                "text",
                "gesperrt",
                "bis",
                "quelle",
                "quelle_url",
                "stand"
              ]
            }
          },
          "baustellen": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "zeitraum": {
                  "type": "string"
                },
                "ort": {
                  "type": "string"
                },
                "text": {
                  "type": "string"
                },
                "bis": {
                  "anyOf": [
                    {
                      "type": "string",
                      "pattern": "^\\d{4}-\\d{2}-\\d{2}$"
                    },
                    {
                      "type": "null"
                    }
                  ]
                },
                "quelle": {
                  "type": "string"
                },
                "quelle_url": {
                  "type": "string",
                  "format": "uri"
                }
              },
              "required": [
                "zeitraum",
                "ort",
                "text",
                "bis",
                "quelle",
                "quelle_url"
              ]
            }
          },
          "stand": {
            "type": "string",
            "pattern": "^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}"
          }
        },
        "required": [
          "meldungen",
          "baustellen",
          "stand"
        ]
      },
      "PegelStation": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string"
          },
          "gewaesser": {
            "type": "string"
          },
          "wert": {
            "type": "number"
          },
          "einheit": {
            "type": "string"
          },
          "zustand": {
            "type": "string"
          },
          "trend_6h": {
            "type": [
              "number",
              "null"
            ]
          },
          "kennwerte": {
            "type": "object",
            "propertyNames": {
              "type": "string"
            },
            "additionalProperties": {
              "type": "number"
            }
          },
          "quelle": {
            "type": "string",
            "minLength": 1
          },
          "quelle_url": {
            "type": "string",
            "format": "uri"
          },
          "stand": {
            "type": "string",
            "pattern": "^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}"
          }
        },
        "required": [
          "name",
          "gewaesser",
          "wert",
          "einheit",
          "zustand",
          "trend_6h",
          "kennwerte",
          "quelle",
          "quelle_url",
          "stand"
        ]
      },
      "QuelleStatus": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string"
          },
          "name": {
            "type": "string"
          },
          "url": {
            "type": "string",
            "format": "uri"
          },
          "vermerk": {
            "type": "string"
          },
          "status": {
            "type": "string",
            "enum": [
              "ok",
              "fehler"
            ]
          },
          "abgerufen": {
            "type": "string",
            "pattern": "^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}"
          },
          "fehler": {
            "type": "string"
          }
        },
        "required": [
          "id",
          "name",
          "url",
          "vermerk",
          "status",
          "abgerufen"
        ]
      },
      "Ausgabe": {
        "type": "object",
        "properties": {
          "datum": {
            "type": "string",
            "pattern": "^\\d{4}-\\d{2}-\\d{2}$"
          },
          "stand": {
            "type": "string",
            "pattern": "^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}"
          },
          "kennzeichnung": {
            "type": "string",
            "enum": [
              "automatisch",
              "redaktionell geprueft"
            ]
          },
          "lage": {
            "minItems": 5,
            "maxItems": 8,
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Zelle"
            }
          },
          "heute": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Punkt"
            }
          },
          "alarme": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Alarm"
            }
          },
          "module": {
            "type": "object",
            "properties": {
              "termine": {
                "type": "array",
                "items": {
                  "$ref": "#/components/schemas/Termin"
                }
              },
              "termine_morgen": {
                "type": "array",
                "items": {
                  "$ref": "#/components/schemas/Termin"
                }
              },
              "rathaus": {
                "type": "array",
                "items": {
                  "type": "object",
                  "properties": {
                    "absender": {
                      "type": "string",
                      "enum": [
                        "Hansestadt",
                        "Landkreis"
                      ]
                    },
                    "titel": {
                      "type": "string",
                      "minLength": 3
                    },
                    "datum": {
                      "type": "string",
                      "pattern": "^\\d{4}-\\d{2}-\\d{2}$"
                    },
                    "quelle": {
                      "type": "string"
                    },
                    "quelle_url": {
                      "type": "string",
                      "format": "uri"
                    }
                  },
                  "required": [
                    "absender",
                    "titel",
                    "datum",
                    "quelle",
                    "quelle_url"
                  ]
                }
              },
              "mitteilungen": {
                "type": "array",
                "items": {
                  "type": "object",
                  "properties": {
                    "absender": {
                      "type": "string",
                      "enum": [
                        "Hansestadt",
                        "Landkreis"
                      ]
                    },
                    "titel": {
                      "type": "string",
                      "minLength": 3
                    },
                    "datum": {
                      "type": "string",
                      "pattern": "^\\d{4}-\\d{2}-\\d{2}$"
                    },
                    "quelle": {
                      "type": "string"
                    },
                    "quelle_url": {
                      "type": "string",
                      "format": "uri"
                    }
                  },
                  "required": [
                    "absender",
                    "titel",
                    "datum",
                    "quelle",
                    "quelle_url"
                  ]
                }
              },
              "verkehr": {
                "$ref": "#/components/schemas/Verkehr"
              },
              "blaulicht": {
                "type": "array",
                "items": {
                  "type": "object",
                  "properties": {
                    "titel": {
                      "type": "string",
                      "minLength": 3
                    },
                    "datum": {
                      "type": "string"
                    },
                    "quelle": {
                      "type": "string"
                    },
                    "quelle_url": {
                      "type": "string",
                      "format": "uri"
                    }
                  },
                  "required": [
                    "titel",
                    "datum",
                    "quelle",
                    "quelle_url"
                  ]
                }
              },
              "wetter": {
                "anyOf": [
                  {
                    "type": "object",
                    "properties": {
                      "min": {
                        "type": [
                          "number",
                          "null"
                        ]
                      },
                      "max": {
                        "type": [
                          "number",
                          "null"
                        ]
                      },
                      "lage": {
                        "type": [
                          "string",
                          "null"
                        ]
                      },
                      "regen_ab": {
                        "type": [
                          "number",
                          "null"
                        ]
                      },
                      "aktuell": {
                        "type": [
                          "number",
                          "null"
                        ]
                      },
                      "stunden": {
                        "type": "array",
                        "items": {
                          "type": "object",
                          "properties": {
                            "zeit": {
                              "type": "string"
                            },
                            "temperatur": {
                              "type": [
                                "number",
                                "null"
                              ]
                            },
                            "regen_wahrscheinlichkeit": {
                              "type": [
                                "number",
                                "null"
                              ]
                            },
                            "zustand": {
                              "type": [
                                "string",
                                "null"
                              ]
                            }
                          },
                          "required": [
                            "zeit",
                            "temperatur",
                            "regen_wahrscheinlichkeit",
                            "zustand"
                          ]
                        }
                      },
                      "warnungen": {
                        "type": "array",
                        "items": {
                          "type": "object",
                          "properties": {
                            "ereignis": {
                              "type": [
                                "string",
                                "null"
                              ]
                            },
                            "titel": {
                              "type": [
                                "string",
                                "null"
                              ]
                            },
                            "schwere": {
                              "type": [
                                "string",
                                "null"
                              ]
                            },
                            "beginn": {
                              "type": [
                                "string",
                                "null"
                              ]
                            },
                            "ende": {
                              "type": [
                                "string",
                                "null"
                              ]
                            }
                          },
                          "required": [
                            "ereignis",
                            "titel",
                            "schwere",
                            "beginn",
                            "ende"
                          ]
                        }
                      },
                      "bewoelkung": {
                        "type": [
                          "number",
                          "null"
                        ]
                      },
                      "boeen": {
                        "type": [
                          "number",
                          "null"
                        ]
                      },
                      "temperaturen": {
                        "type": "array",
                        "items": {
                          "type": [
                            "number",
                            "null"
                          ]
                        }
                      },
                      "quelle_url": {
                        "type": "string",
                        "format": "uri"
                      },
                      "stand": {
                        "type": "string",
                        "pattern": "^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}"
                      }
                    },
                    "required": [
                      "min",
                      "max",
                      "lage",
                      "regen_ab",
                      "aktuell",
                      "stunden",
                      "warnungen",
                      "quelle_url",
                      "stand"
                    ]
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "schule": {
                "type": "object",
                "properties": {
                  "status": {
                    "type": "string",
                    "enum": [
                      "kein_ausfall",
                      "ausfall",
                      "hinweis",
                      "unbekannt",
                      "wochenende",
                      "ferien"
                    ]
                  },
                  "meldungen": {
                    "type": "array",
                    "items": {
                      "type": "object",
                      "properties": {
                        "titel": {
                          "type": "string"
                        },
                        "text": {
                          "type": "string"
                        },
                        "datum": {
                          "type": [
                            "string",
                            "null"
                          ]
                        },
                        "quelle": {
                          "type": "string"
                        },
                        "quelle_url": {
                          "type": "string",
                          "format": "uri"
                        }
                      },
                      "required": [
                        "titel",
                        "text",
                        "datum",
                        "quelle",
                        "quelle_url"
                      ]
                    }
                  },
                  "hinweis": {
                    "anyOf": [
                      {
                        "type": "object",
                        "properties": {
                          "text": {
                            "type": "string"
                          },
                          "quelle": {
                            "type": "string"
                          },
                          "quelle_url": {
                            "type": "string",
                            "format": "uri"
                          }
                        },
                        "required": [
                          "text",
                          "quelle",
                          "quelle_url"
                        ]
                      },
                      {
                        "type": "null"
                      }
                    ]
                  },
                  "stand": {
                    "type": "string",
                    "pattern": "^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}"
                  }
                },
                "required": [
                  "status",
                  "meldungen",
                  "hinweis",
                  "stand"
                ]
              },
              "pegel": {
                "anyOf": [
                  {
                    "type": "object",
                    "properties": {
                      "wert": {
                        "type": "number"
                      },
                      "zustand": {
                        "type": "string"
                      },
                      "trend_6h": {
                        "type": [
                          "number",
                          "null"
                        ]
                      },
                      "stand": {
                        "type": "string",
                        "pattern": "^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}"
                      },
                      "kennwerte": {
                        "type": "object",
                        "propertyNames": {
                          "type": "string"
                        },
                        "additionalProperties": {
                          "type": "number"
                        }
                      },
                      "verlauf": {
                        "type": "array",
                        "items": {
                          "type": "object",
                          "properties": {
                            "zeit": {
                              "type": "string"
                            },
                            "wert": {
                              "type": "number"
                            }
                          },
                          "required": [
                            "zeit",
                            "wert"
                          ]
                        }
                      },
                      "quelle_url": {
                        "type": "string",
                        "format": "uri"
                      },
                      "weitere": {
                        "type": "array",
                        "items": {
                          "$ref": "#/components/schemas/PegelStation"
                        }
                      }
                    },
                    "required": [
                      "wert",
                      "zustand",
                      "trend_6h",
                      "stand",
                      "kennwerte",
                      "verlauf",
                      "quelle_url"
                    ]
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "luft": {
                "anyOf": [
                  {
                    "type": "object",
                    "properties": {
                      "index": {
                        "type": "integer",
                        "minimum": 0,
                        "maximum": 4
                      },
                      "wort": {
                        "type": "string"
                      },
                      "komponenten": {
                        "type": "object",
                        "propertyNames": {
                          "type": "string"
                        },
                        "additionalProperties": {
                          "type": "number"
                        }
                      },
                      "stand": {
                        "type": "string",
                        "pattern": "^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}"
                      },
                      "beginn": {
                        "type": "string"
                      },
                      "quelle_url": {
                        "type": "string",
                        "format": "uri"
                      }
                    },
                    "required": [
                      "index",
                      "wort",
                      "komponenten",
                      "stand",
                      "beginn",
                      "quelle_url"
                    ]
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "radar": {
                "anyOf": [
                  {
                    "type": "object",
                    "properties": {
                      "summe_2h_mm": {
                        "type": "number"
                      },
                      "regen_ab": {
                        "anyOf": [
                          {
                            "type": "string",
                            "pattern": "^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}"
                          },
                          {
                            "type": "null"
                          }
                        ]
                      },
                      "regen_bis": {
                        "anyOf": [
                          {
                            "type": "string",
                            "pattern": "^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}"
                          },
                          {
                            "type": "null"
                          }
                        ]
                      },
                      "werte": {
                        "type": "array",
                        "items": {
                          "type": "object",
                          "properties": {
                            "zeit": {
                              "type": "string",
                              "pattern": "^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}"
                            },
                            "mm_h": {
                              "type": "number"
                            }
                          },
                          "required": [
                            "zeit",
                            "mm_h"
                          ]
                        }
                      },
                      "quelle": {
                        "type": "string",
                        "minLength": 1
                      },
                      "quelle_url": {
                        "type": "string",
                        "format": "uri"
                      },
                      "stand": {
                        "type": "string",
                        "pattern": "^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}"
                      }
                    },
                    "required": [
                      "summe_2h_mm",
                      "regen_ab",
                      "regen_bis",
                      "werte",
                      "quelle",
                      "quelle_url",
                      "stand"
                    ]
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "bahn": {
                "anyOf": [
                  {
                    "type": "object",
                    "properties": {
                      "echtzeit": {
                        "type": "boolean"
                      },
                      "richtung": {
                        "type": "string"
                      },
                      "abfahrten": {
                        "type": "array",
                        "items": {
                          "type": "object",
                          "properties": {
                            "zeit": {
                              "type": "string",
                              "pattern": "^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}"
                            },
                            "linie": {
                              "type": "string"
                            },
                            "ziel": {
                              "type": "string"
                            },
                            "gleis": {
                              "type": [
                                "string",
                                "null"
                              ]
                            },
                            "verspaetung_min": {
                              "anyOf": [
                                {
                                  "type": "integer"
                                },
                                {
                                  "type": "null"
                                }
                              ]
                            },
                            "ausfall": {
                              "type": "boolean"
                            }
                          },
                          "required": [
                            "zeit",
                            "linie",
                            "ziel",
                            "gleis",
                            "verspaetung_min",
                            "ausfall"
                          ]
                        }
                      },
                      "quelle": {
                        "type": "string",
                        "minLength": 1
                      },
                      "quelle_url": {
                        "type": "string",
                        "format": "uri"
                      },
                      "stand": {
                        "type": "string",
                        "pattern": "^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}"
                      }
                    },
                    "required": [
                      "echtzeit",
                      "richtung",
                      "abfahrten",
                      "quelle",
                      "quelle_url",
                      "stand"
                    ]
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "strom": {
                "anyOf": [
                  {
                    "type": "object",
                    "properties": {
                      "regional": {
                        "type": "boolean"
                      },
                      "stunden": {
                        "type": "array",
                        "items": {
                          "type": "object",
                          "properties": {
                            "zeit": {
                              "type": "string",
                              "pattern": "^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}"
                            },
                            "signal": {
                              "type": "integer",
                              "minimum": -1,
                              "maximum": 2
                            },
                            "anteil": {
                              "type": [
                                "number",
                                "null"
                              ]
                            }
                          },
                          "required": [
                            "zeit",
                            "signal",
                            "anteil"
                          ]
                        }
                      },
                      "quelle": {
                        "type": "string",
                        "minLength": 1
                      },
                      "quelle_url": {
                        "type": "string",
                        "format": "uri"
                      },
                      "stand": {
                        "type": "string",
                        "pattern": "^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}"
                      }
                    },
                    "required": [
                      "regional",
                      "stunden",
                      "quelle",
                      "quelle_url",
                      "stand"
                    ]
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "pollen": {
                "anyOf": [
                  {
                    "type": "object",
                    "properties": {
                      "region": {
                        "type": "string"
                      },
                      "heute": {
                        "type": "object",
                        "propertyNames": {
                          "type": "string"
                        },
                        "additionalProperties": {
                          "type": "string"
                        }
                      },
                      "morgen": {
                        "type": "object",
                        "propertyNames": {
                          "type": "string"
                        },
                        "additionalProperties": {
                          "type": "string"
                        }
                      },
                      "quelle": {
                        "type": "string",
                        "minLength": 1
                      },
                      "quelle_url": {
                        "type": "string",
                        "format": "uri"
                      },
                      "stand": {
                        "type": "string",
                        "pattern": "^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}"
                      }
                    },
                    "required": [
                      "region",
                      "heute",
                      "morgen",
                      "quelle",
                      "quelle_url",
                      "stand"
                    ]
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "uv": {
                "anyOf": [
                  {
                    "type": "object",
                    "properties": {
                      "ort": {
                        "type": "string"
                      },
                      "heute": {
                        "type": [
                          "number",
                          "null"
                        ]
                      },
                      "morgen": {
                        "type": [
                          "number",
                          "null"
                        ]
                      },
                      "quelle": {
                        "type": "string",
                        "minLength": 1
                      },
                      "quelle_url": {
                        "type": "string",
                        "format": "uri"
                      },
                      "stand": {
                        "type": "string",
                        "pattern": "^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}"
                      }
                    },
                    "required": [
                      "ort",
                      "heute",
                      "morgen",
                      "quelle",
                      "quelle_url",
                      "stand"
                    ]
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "waldbrand": {
                "anyOf": [
                  {
                    "type": "object",
                    "properties": {
                      "station": {
                        "type": "string"
                      },
                      "wald": {
                        "type": "array",
                        "items": {
                          "type": "object",
                          "properties": {
                            "datum": {
                              "type": "string",
                              "pattern": "^\\d{4}-\\d{2}-\\d{2}$"
                            },
                            "stufe": {
                              "type": "integer",
                              "minimum": 1,
                              "maximum": 5
                            }
                          },
                          "required": [
                            "datum",
                            "stufe"
                          ]
                        }
                      },
                      "gras": {
                        "type": "array",
                        "items": {
                          "type": "object",
                          "properties": {
                            "datum": {
                              "type": "string",
                              "pattern": "^\\d{4}-\\d{2}-\\d{2}$"
                            },
                            "stufe": {
                              "type": "integer",
                              "minimum": 1,
                              "maximum": 5
                            }
                          },
                          "required": [
                            "datum",
                            "stufe"
                          ]
                        }
                      },
                      "quelle": {
                        "type": "string",
                        "minLength": 1
                      },
                      "quelle_url": {
                        "type": "string",
                        "format": "uri"
                      },
                      "stand": {
                        "type": "string",
                        "pattern": "^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}"
                      }
                    },
                    "required": [
                      "station",
                      "wald",
                      "gras",
                      "quelle",
                      "quelle_url",
                      "stand"
                    ]
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "ferien": {
                "anyOf": [
                  {
                    "type": "object",
                    "properties": {
                      "aktuell": {
                        "anyOf": [
                          {
                            "type": "object",
                            "properties": {
                              "name": {
                                "type": "string"
                              },
                              "von": {
                                "type": "string",
                                "pattern": "^\\d{4}-\\d{2}-\\d{2}$"
                              },
                              "bis": {
                                "type": "string",
                                "pattern": "^\\d{4}-\\d{2}-\\d{2}$"
                              }
                            },
                            "required": [
                              "name",
                              "von",
                              "bis"
                            ]
                          },
                          {
                            "type": "null"
                          }
                        ]
                      },
                      "naechste": {
                        "anyOf": [
                          {
                            "type": "object",
                            "properties": {
                              "name": {
                                "type": "string"
                              },
                              "von": {
                                "type": "string",
                                "pattern": "^\\d{4}-\\d{2}-\\d{2}$"
                              },
                              "bis": {
                                "type": "string",
                                "pattern": "^\\d{4}-\\d{2}-\\d{2}$"
                              }
                            },
                            "required": [
                              "name",
                              "von",
                              "bis"
                            ]
                          },
                          {
                            "type": "null"
                          }
                        ]
                      },
                      "feiertage": {
                        "type": "array",
                        "items": {
                          "type": "object",
                          "properties": {
                            "datum": {
                              "type": "string",
                              "pattern": "^\\d{4}-\\d{2}-\\d{2}$"
                            },
                            "name": {
                              "type": "string"
                            }
                          },
                          "required": [
                            "datum",
                            "name"
                          ]
                        }
                      },
                      "quelle": {
                        "type": "string",
                        "minLength": 1
                      },
                      "quelle_url": {
                        "type": "string",
                        "format": "uri"
                      },
                      "stand": {
                        "type": "string",
                        "pattern": "^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}"
                      }
                    },
                    "required": [
                      "aktuell",
                      "naechste",
                      "feiertage",
                      "quelle",
                      "quelle_url",
                      "stand"
                    ]
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "elbe": {
                "anyOf": [
                  {
                    "type": "object",
                    "properties": {
                      "pegel": {
                        "type": "array",
                        "items": {
                          "$ref": "#/components/schemas/PegelStation"
                        }
                      },
                      "faehren": {
                        "type": "array",
                        "items": {
                          "type": "object",
                          "properties": {
                            "name": {
                              "type": "string"
                            },
                            "status": {
                              "type": "string",
                              "enum": [
                                "in_betrieb",
                                "eingestellt",
                                "eingeschraenkt",
                                "unbekannt"
                              ]
                            },
                            "text": {
                              "type": "string"
                            },
                            "quelle": {
                              "type": "string"
                            },
                            "quelle_url": {
                              "type": "string",
                              "format": "uri"
                            },
                            "stand": {
                              "anyOf": [
                                {
                                  "type": "string",
                                  "pattern": "^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}"
                                },
                                {
                                  "type": "null"
                                }
                              ]
                            }
                          },
                          "required": [
                            "name",
                            "status",
                            "text",
                            "quelle",
                            "quelle_url",
                            "stand"
                          ]
                        }
                      },
                      "quelle": {
                        "type": "string",
                        "minLength": 1
                      },
                      "quelle_url": {
                        "type": "string",
                        "format": "uri"
                      },
                      "stand": {
                        "type": "string",
                        "pattern": "^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}"
                      }
                    },
                    "required": [
                      "pegel",
                      "faehren",
                      "quelle",
                      "quelle_url",
                      "stand"
                    ]
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "warnungen": {
                "type": "array",
                "items": {
                  "type": "object",
                  "properties": {
                    "id": {
                      "type": "string"
                    },
                    "herkunft": {
                      "type": "string",
                      "enum": [
                        "mowas",
                        "katwarn",
                        "biwapp",
                        "dwd",
                        "lhp",
                        "police"
                      ]
                    },
                    "titel": {
                      "type": "string"
                    },
                    "schwere": {
                      "type": [
                        "string",
                        "null"
                      ]
                    },
                    "beginn": {
                      "type": [
                        "string",
                        "null"
                      ]
                    },
                    "ende": {
                      "type": [
                        "string",
                        "null"
                      ]
                    },
                    "quelle": {
                      "type": "string"
                    },
                    "quelle_url": {
                      "type": "string",
                      "format": "uri"
                    }
                  },
                  "required": [
                    "id",
                    "herkunft",
                    "titel",
                    "schwere",
                    "beginn",
                    "ende",
                    "quelle",
                    "quelle_url"
                  ]
                }
              },
              "jobs": {
                "type": "array",
                "items": {
                  "type": "object",
                  "properties": {
                    "titel": {
                      "type": "string",
                      "minLength": 3
                    },
                    "arbeitgeber": {
                      "type": "string"
                    },
                    "ort": {
                      "type": [
                        "string",
                        "null"
                      ]
                    },
                    "datum": {
                      "anyOf": [
                        {
                          "type": "string",
                          "pattern": "^\\d{4}-\\d{2}-\\d{2}$"
                        },
                        {
                          "type": "null"
                        }
                      ]
                    },
                    "quelle": {
                      "type": "string"
                    },
                    "quelle_url": {
                      "type": "string",
                      "format": "uri"
                    }
                  },
                  "required": [
                    "titel",
                    "arbeitgeber",
                    "ort",
                    "datum",
                    "quelle",
                    "quelle_url"
                  ]
                }
              },
              "atemwege": {
                "anyOf": [
                  {
                    "type": "object",
                    "properties": {
                      "region": {
                        "type": "string"
                      },
                      "woche": {
                        "type": "string",
                        "pattern": "^\\d{4}-W\\d{2}$"
                      },
                      "von": {
                        "type": "string",
                        "pattern": "^\\d{4}-\\d{2}-\\d{2}$"
                      },
                      "bis": {
                        "type": "string",
                        "pattern": "^\\d{4}-\\d{2}-\\d{2}$"
                      },
                      "inzidenz": {
                        "type": "number"
                      },
                      "vorwoche": {
                        "type": [
                          "number",
                          "null"
                        ]
                      },
                      "bundesweit": {
                        "type": [
                          "number",
                          "null"
                        ]
                      },
                      "verlauf": {
                        "type": "array",
                        "items": {
                          "type": "object",
                          "properties": {
                            "woche": {
                              "type": "string"
                            },
                            "wert": {
                              "type": "number"
                            }
                          },
                          "required": [
                            "woche",
                            "wert"
                          ]
                        }
                      },
                      "quelle": {
                        "type": "string",
                        "minLength": 1
                      },
                      "quelle_url": {
                        "type": "string",
                        "format": "uri"
                      },
                      "stand": {
                        "type": "string",
                        "pattern": "^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}"
                      }
                    },
                    "required": [
                      "region",
                      "woche",
                      "von",
                      "bis",
                      "inzidenz",
                      "vorwoche",
                      "bundesweit",
                      "verlauf",
                      "quelle",
                      "quelle_url",
                      "stand"
                    ]
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "abwasser": {
                "anyOf": [
                  {
                    "type": "object",
                    "properties": {
                      "standorte": {
                        "type": "array",
                        "items": {
                          "type": "object",
                          "properties": {
                            "standort": {
                              "type": "string"
                            },
                            "bundesland": {
                              "type": "string"
                            },
                            "aktuell": {
                              "type": "boolean"
                            },
                            "letzte_messung": {
                              "anyOf": [
                                {
                                  "type": "string",
                                  "pattern": "^\\d{4}-\\d{2}-\\d{2}$"
                                },
                                {
                                  "type": "null"
                                }
                              ]
                            },
                            "werte": {
                              "type": "array",
                              "items": {
                                "type": "object",
                                "properties": {
                                  "erreger": {
                                    "type": "string"
                                  },
                                  "datum": {
                                    "type": "string",
                                    "pattern": "^\\d{4}-\\d{2}-\\d{2}$"
                                  },
                                  "viruslast": {
                                    "type": "number"
                                  },
                                  "trend_7t": {
                                    "type": [
                                      "number",
                                      "null"
                                    ]
                                  }
                                },
                                "required": [
                                  "erreger",
                                  "datum",
                                  "viruslast",
                                  "trend_7t"
                                ]
                              }
                            }
                          },
                          "required": [
                            "standort",
                            "bundesland",
                            "aktuell",
                            "letzte_messung",
                            "werte"
                          ]
                        }
                      },
                      "quelle": {
                        "type": "string",
                        "minLength": 1
                      },
                      "quelle_url": {
                        "type": "string",
                        "format": "uri"
                      },
                      "stand": {
                        "type": "string",
                        "pattern": "^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}"
                      }
                    },
                    "required": [
                      "standorte",
                      "quelle",
                      "quelle_url",
                      "stand"
                    ]
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "lebensmittel": {
                "anyOf": [
                  {
                    "type": "object",
                    "properties": {
                      "warnungen": {
                        "type": "array",
                        "items": {
                          "type": "object",
                          "properties": {
                            "titel": {
                              "type": "string",
                              "minLength": 2
                            },
                            "datum": {
                              "type": "string",
                              "pattern": "^\\d{4}-\\d{2}-\\d{2}$"
                            },
                            "quelle_url": {
                              "type": "string",
                              "format": "uri"
                            },
                            "vermerk": {
                              "type": "string"
                            }
                          },
                          "required": [
                            "titel",
                            "datum",
                            "quelle_url",
                            "vermerk"
                          ]
                        }
                      },
                      "gesamt": {
                        "type": "integer"
                      },
                      "quelle": {
                        "type": "string",
                        "minLength": 1
                      },
                      "quelle_url": {
                        "type": "string",
                        "format": "uri"
                      },
                      "stand": {
                        "type": "string",
                        "pattern": "^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}"
                      }
                    },
                    "required": [
                      "warnungen",
                      "gesamt",
                      "quelle",
                      "quelle_url",
                      "stand"
                    ]
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "autobahn": {
                "anyOf": [
                  {
                    "type": "object",
                    "properties": {
                      "strassen": {
                        "type": "array",
                        "items": {
                          "type": "string"
                        }
                      },
                      "umkreis_km": {
                        "type": "number"
                      },
                      "meldungen": {
                        "type": "array",
                        "items": {
                          "type": "object",
                          "properties": {
                            "id": {
                              "type": "string"
                            },
                            "strasse": {
                              "type": "string"
                            },
                            "art": {
                              "type": "string",
                              "enum": [
                                "warnung",
                                "sperrung",
                                "baustelle"
                              ]
                            },
                            "titel": {
                              "type": "string",
                              "minLength": 2
                            },
                            "abschnitt": {
                              "type": "string"
                            },
                            "aktiv": {
                              "type": "boolean"
                            },
                            "gesperrt": {
                              "type": "boolean"
                            },
                            "zeitraum": {
                              "type": [
                                "string",
                                "null"
                              ]
                            },
                            "hinweis": {
                              "type": [
                                "string",
                                "null"
                              ]
                            },
                            "beginn": {
                              "anyOf": [
                                {
                                  "type": "string",
                                  "pattern": "^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}"
                                },
                                {
                                  "type": "null"
                                }
                              ]
                            },
                            "entfernung_km": {
                              "type": "number"
                            }
                          },
                          "required": [
                            "id",
                            "strasse",
                            "art",
                            "titel",
                            "abschnitt",
                            "aktiv",
                            "gesperrt",
                            "zeitraum",
                            "hinweis",
                            "beginn",
                            "entfernung_km"
                          ]
                        }
                      },
                      "quelle": {
                        "type": "string",
                        "minLength": 1
                      },
                      "quelle_url": {
                        "type": "string",
                        "format": "uri"
                      },
                      "stand": {
                        "type": "string",
                        "pattern": "^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}"
                      }
                    },
                    "required": [
                      "strassen",
                      "umkreis_km",
                      "meldungen",
                      "quelle",
                      "quelle_url",
                      "stand"
                    ]
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "sprit": {
                "anyOf": [
                  {
                    "type": "object",
                    "properties": {
                      "umkreis_km": {
                        "type": "number"
                      },
                      "tankstellen": {
                        "type": "integer"
                      },
                      "geoeffnet": {
                        "type": "integer"
                      },
                      "sorten": {
                        "type": "array",
                        "items": {
                          "type": "object",
                          "properties": {
                            "sorte": {
                              "type": "string",
                              "enum": [
                                "e5",
                                "e10",
                                "diesel"
                              ]
                            },
                            "name": {
                              "type": "string"
                            },
                            "guenstigste": {
                              "type": "array",
                              "items": {
                                "type": "object",
                                "properties": {
                                  "name": {
                                    "type": "string"
                                  },
                                  "marke": {
                                    "type": [
                                      "string",
                                      "null"
                                    ]
                                  },
                                  "adresse": {
                                    "type": "string"
                                  },
                                  "ort": {
                                    "type": "string"
                                  },
                                  "preis": {
                                    "type": "number"
                                  },
                                  "entfernung_km": {
                                    "type": "number"
                                  }
                                },
                                "required": [
                                  "name",
                                  "marke",
                                  "adresse",
                                  "ort",
                                  "preis",
                                  "entfernung_km"
                                ]
                              }
                            },
                            "median": {
                              "type": [
                                "number",
                                "null"
                              ]
                            }
                          },
                          "required": [
                            "sorte",
                            "name",
                            "guenstigste",
                            "median"
                          ]
                        }
                      },
                      "quelle": {
                        "type": "string",
                        "minLength": 1
                      },
                      "quelle_url": {
                        "type": "string",
                        "format": "uri"
                      },
                      "stand": {
                        "type": "string",
                        "pattern": "^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}"
                      }
                    },
                    "required": [
                      "umkreis_km",
                      "tankstellen",
                      "geoeffnet",
                      "sorten",
                      "quelle",
                      "quelle_url",
                      "stand"
                    ]
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "buergersensoren": {
                "anyOf": [
                  {
                    "type": "object",
                    "properties": {
                      "umkreis_km": {
                        "type": "number"
                      },
                      "sensoren": {
                        "type": "integer"
                      },
                      "werte": {
                        "type": "array",
                        "items": {
                          "type": "object",
                          "properties": {
                            "groesse": {
                              "type": "string"
                            },
                            "name": {
                              "type": "string"
                            },
                            "median": {
                              "type": "number"
                            },
                            "einheit": {
                              "type": "string"
                            },
                            "sensoren": {
                              "type": "integer"
                            }
                          },
                          "required": [
                            "groesse",
                            "name",
                            "median",
                            "einheit",
                            "sensoren"
                          ]
                        }
                      },
                      "quelle": {
                        "type": "string",
                        "minLength": 1
                      },
                      "quelle_url": {
                        "type": "string",
                        "format": "uri"
                      },
                      "stand": {
                        "type": "string",
                        "pattern": "^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}"
                      }
                    },
                    "required": [
                      "umkreis_km",
                      "sensoren",
                      "werte",
                      "quelle",
                      "quelle_url",
                      "stand"
                    ]
                  },
                  {
                    "type": "null"
                  }
                ]
              }
            },
            "required": [
              "termine",
              "termine_morgen",
              "rathaus",
              "mitteilungen",
              "verkehr",
              "blaulicht",
              "wetter",
              "schule",
              "pegel",
              "luft"
            ]
          },
          "quellen": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/QuelleStatus"
            }
          },
          "anzahl_quellen": {
            "type": "integer"
          }
        },
        "required": [
          "datum",
          "stand",
          "kennzeichnung",
          "lage",
          "heute",
          "module",
          "quellen",
          "anzahl_quellen"
        ]
      },
      "Sitzungen": {
        "type": "object",
        "properties": {
          "stand": {
            "type": "string",
            "pattern": "^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}"
          },
          "quelle": {
            "type": "string"
          },
          "quelle_url": {
            "type": "string",
            "format": "uri"
          },
          "kalender_url": {
            "type": "string",
            "format": "uri"
          },
          "vermerk": {
            "type": "string"
          },
          "status": {
            "type": "string",
            "enum": [
              "ok",
              "fehler"
            ]
          },
          "fehler": {
            "type": "string"
          },
          "sitzungen": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "id": {
                  "type": "string",
                  "pattern": "^\\d+$"
                },
                "gremium": {
                  "type": "string",
                  "minLength": 2
                },
                "art": {
                  "type": "string",
                  "enum": [
                    "rat",
                    "verwaltungsausschuss",
                    "ausschuss",
                    "ortsrat",
                    "beirat",
                    "gesellschaft",
                    "sonstige"
                  ]
                },
                "beginn": {
                  "type": "string",
                  "pattern": "^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}"
                },
                "uhrzeit_bekannt": {
                  "type": "boolean"
                },
                "raum": {
                  "type": [
                    "string",
                    "null"
                  ]
                },
                "quelle_url": {
                  "type": "string",
                  "format": "uri"
                },
                "tagesordnung": {
                  "anyOf": [
                    {
                      "type": "object",
                      "properties": {
                        "stand": {
                          "type": "string",
                          "pattern": "^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}"
                        },
                        "ort": {
                          "type": [
                            "string",
                            "null"
                          ]
                        },
                        "oeffentlich": {
                          "type": "array",
                          "items": {
                            "type": "object",
                            "properties": {
                              "nummer": {
                                "type": "string",
                                "minLength": 2
                              },
                              "betreff": {
                                "type": "string",
                                "minLength": 2
                              },
                              "vorlage": {
                                "type": [
                                  "string",
                                  "null"
                                ]
                              },
                              "vorlage_url": {
                                "anyOf": [
                                  {
                                    "type": "string",
                                    "format": "uri"
                                  },
                                  {
                                    "type": "null"
                                  }
                                ]
                              },
                              "beschluss": {
                                "type": [
                                  "string",
                                  "null"
                                ]
                              },
                              "quelle_url": {
                                "type": "string",
                                "format": "uri"
                              }
                            },
                            "required": [
                              "nummer",
                              "betreff",
                              "vorlage",
                              "vorlage_url",
                              "beschluss",
                              "quelle_url"
                            ]
                          }
                        },
                        "nichtoeffentlich": {
                          "type": "integer"
                        }
                      },
                      "required": [
                        "stand",
                        "ort",
                        "oeffentlich",
                        "nichtoeffentlich"
                      ]
                    },
                    {
                      "type": "null"
                    }
                  ]
                }
              },
              "required": [
                "id",
                "gremium",
                "art",
                "beginn",
                "uhrzeit_bekannt",
                "raum",
                "quelle_url",
                "tagesordnung"
              ]
            }
          }
        },
        "required": [
          "stand",
          "quelle",
          "quelle_url",
          "kalender_url",
          "vermerk",
          "status",
          "sitzungen"
        ]
      },
      "Bekanntmachungen": {
        "type": "object",
        "properties": {
          "stand": {
            "type": "string",
            "pattern": "^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}"
          },
          "seit": {
            "type": "string",
            "pattern": "^\\d{4}-\\d{2}-\\d{2}$"
          },
          "vermerk": {
            "type": "string"
          },
          "quellen": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "id": {
                  "type": "string"
                },
                "name": {
                  "type": "string"
                },
                "url": {
                  "type": "string",
                  "format": "uri"
                },
                "status": {
                  "type": "string",
                  "enum": [
                    "ok",
                    "fehler"
                  ]
                },
                "fehler": {
                  "type": "string"
                }
              },
              "required": [
                "id",
                "name",
                "url",
                "status"
              ]
            }
          },
          "amtsblatt": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "nummer": {
                  "type": "string",
                  "minLength": 1
                },
                "datum": {
                  "type": "string",
                  "pattern": "^\\d{4}-\\d{2}-\\d{2}$"
                },
                "quelle_url": {
                  "type": "string",
                  "format": "uri"
                }
              },
              "required": [
                "nummer",
                "datum",
                "quelle_url"
              ]
            }
          },
          "eintraege": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "id": {
                  "type": "string",
                  "minLength": 8
                },
                "absender": {
                  "type": "string",
                  "enum": [
                    "Landkreis",
                    "Hansestadt"
                  ]
                },
                "rubrik": {
                  "type": [
                    "string",
                    "null"
                  ]
                },
                "titel": {
                  "type": "string",
                  "minLength": 3
                },
                "dokument": {
                  "type": [
                    "string",
                    "null"
                  ]
                },
                "amtsblatt": {
                  "anyOf": [
                    {
                      "type": "object",
                      "properties": {
                        "nummer": {
                          "type": "string"
                        },
                        "datum": {
                          "type": "string",
                          "pattern": "^\\d{4}-\\d{2}-\\d{2}$"
                        }
                      },
                      "required": [
                        "nummer",
                        "datum"
                      ]
                    },
                    {
                      "type": "null"
                    }
                  ]
                },
                "erstmals": {
                  "type": "string",
                  "pattern": "^\\d{4}-\\d{2}-\\d{2}$"
                },
                "quelle_url": {
                  "type": "string",
                  "format": "uri"
                }
              },
              "required": [
                "id",
                "absender",
                "rubrik",
                "titel",
                "dokument",
                "amtsblatt",
                "erstmals",
                "quelle_url"
              ]
            }
          }
        },
        "required": [
          "stand",
          "seit",
          "vermerk",
          "quellen",
          "amtsblatt",
          "eintraege"
        ]
      },
      "Arbeitsmarkt": {
        "type": "object",
        "properties": {
          "stand": {
            "type": "string",
            "pattern": "^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}"
          },
          "region": {
            "type": "string"
          },
          "monat": {
            "type": "string",
            "pattern": "^\\d{4}-\\d{2}$"
          },
          "arbeitslose": {
            "type": "object",
            "properties": {
              "wert": {
                "type": "number"
              },
              "vormonat": {
                "type": [
                  "number",
                  "null"
                ]
              },
              "vorjahr": {
                "type": [
                  "number",
                  "null"
                ]
              }
            },
            "required": [
              "wert",
              "vormonat",
              "vorjahr"
            ]
          },
          "quote": {
            "type": "object",
            "properties": {
              "wert": {
                "type": "number"
              },
              "vormonat": {
                "type": [
                  "number",
                  "null"
                ]
              },
              "vorjahr": {
                "type": [
                  "number",
                  "null"
                ]
              }
            },
            "required": [
              "wert",
              "vormonat",
              "vorjahr"
            ]
          },
          "unterbeschaeftigung": {
            "anyOf": [
              {
                "type": "object",
                "properties": {
                  "wert": {
                    "type": "number"
                  },
                  "vormonat": {
                    "type": [
                      "number",
                      "null"
                    ]
                  },
                  "vorjahr": {
                    "type": [
                      "number",
                      "null"
                    ]
                  }
                },
                "required": [
                  "wert",
                  "vormonat",
                  "vorjahr"
                ]
              },
              {
                "type": "null"
              }
            ]
          },
          "stellen": {
            "anyOf": [
              {
                "type": "object",
                "properties": {
                  "wert": {
                    "type": "number"
                  },
                  "vormonat": {
                    "type": [
                      "number",
                      "null"
                    ]
                  },
                  "vorjahr": {
                    "type": [
                      "number",
                      "null"
                    ]
                  }
                },
                "required": [
                  "wert",
                  "vormonat",
                  "vorjahr"
                ]
              },
              {
                "type": "null"
              }
            ]
          },
          "stellen_zugang": {
            "anyOf": [
              {
                "type": "object",
                "properties": {
                  "wert": {
                    "type": "number"
                  },
                  "vormonat": {
                    "type": [
                      "number",
                      "null"
                    ]
                  },
                  "vorjahr": {
                    "type": [
                      "number",
                      "null"
                    ]
                  }
                },
                "required": [
                  "wert",
                  "vormonat",
                  "vorjahr"
                ]
              },
              {
                "type": "null"
              }
            ]
          },
          "verlauf": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "monat": {
                  "type": "string",
                  "pattern": "^\\d{4}-\\d{2}$"
                },
                "stellen": {
                  "type": [
                    "number",
                    "null"
                  ]
                }
              },
              "required": [
                "monat",
                "stellen"
              ]
            }
          },
          "quelle": {
            "type": "string"
          },
          "quelle_url": {
            "type": "string",
            "format": "uri"
          },
          "vermerk": {
            "type": "string"
          }
        },
        "required": [
          "stand",
          "region",
          "monat",
          "arbeitslose",
          "quote",
          "unterbeschaeftigung",
          "stellen",
          "stellen_zugang",
          "verlauf",
          "quelle",
          "quelle_url",
          "vermerk"
        ]
      },
      "Ladesaeulen": {
        "type": "object",
        "properties": {
          "stand": {
            "type": "string",
            "pattern": "^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}"
          },
          "datenstand": {
            "type": "string",
            "pattern": "^\\d{4}-\\d{2}-\\d{2}$"
          },
          "quelle": {
            "type": "string"
          },
          "quelle_url": {
            "type": "string",
            "format": "uri"
          },
          "datei_url": {
            "type": "string",
            "format": "uri"
          },
          "lizenz": {
            "type": "string"
          },
          "vermerk": {
            "type": "string"
          },
          "eintraege": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "id": {
                  "type": "string"
                },
                "betreiber": {
                  "type": "string"
                },
                "art": {
                  "type": "string",
                  "enum": [
                    "normal",
                    "schnell"
                  ]
                },
                "ladepunkte": {
                  "type": "integer",
                  "minimum": 1
                },
                "leistung_kw": {
                  "type": "number"
                },
                "inbetrieb": {
                  "anyOf": [
                    {
                      "type": "string",
                      "pattern": "^\\d{4}-\\d{2}-\\d{2}$"
                    },
                    {
                      "type": "null"
                    }
                  ]
                },
                "adresse": {
                  "type": "string"
                },
                "plz": {
                  "type": "string"
                },
                "ort": {
                  "type": "string"
                },
                "lat": {
                  "type": "number"
                },
                "lon": {
                  "type": "number"
                },
                "stecker": {
                  "type": "array",
                  "items": {
                    "type": "string"
                  }
                }
              },
              "required": [
                "id",
                "betreiber",
                "art",
                "ladepunkte",
                "leistung_kw",
                "inbetrieb",
                "adresse",
                "plz",
                "ort",
                "lat",
                "lon",
                "stecker"
              ]
            }
          }
        },
        "required": [
          "stand",
          "datenstand",
          "quelle",
          "quelle_url",
          "datei_url",
          "lizenz",
          "vermerk",
          "eintraege"
        ]
      },
      "AbfallStrassen": {
        "type": "object",
        "properties": {
          "stand": {
            "type": "string",
            "pattern": "^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}"
          },
          "quelle": {
            "type": "string"
          },
          "quelle_url": {
            "type": "string",
            "format": "uri"
          },
          "orte": {
            "minItems": 1,
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "ort": {
                  "type": "string",
                  "minLength": 2
                },
                "strassen": {
                  "minItems": 1,
                  "type": "array",
                  "items": {
                    "type": "string",
                    "minLength": 1
                  }
                }
              },
              "required": [
                "ort",
                "strassen"
              ]
            }
          }
        },
        "required": [
          "stand",
          "quelle",
          "quelle_url",
          "orte"
        ]
      },
      "Bodenrichtwerte": {
        "type": "object",
        "properties": {
          "stand": {
            "type": "string",
            "pattern": "^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}"
          },
          "stichtag": {
            "type": "string",
            "pattern": "^\\d{4}-\\d{2}-\\d{2}$"
          },
          "quelle": {
            "type": "string"
          },
          "quelle_url": {
            "type": "string",
            "format": "uri"
          },
          "lizenz": {
            "type": "string"
          },
          "vermerk": {
            "type": "string"
          },
          "zonen": {
            "minItems": 1,
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "nummer": {
                  "type": "string"
                },
                "zone": {
                  "type": "string"
                },
                "gemeinde": {
                  "type": "string"
                },
                "art": {
                  "type": "string"
                },
                "zustand": {
                  "type": "string"
                },
                "wert": {
                  "type": "number"
                }
              },
              "required": [
                "nummer",
                "zone",
                "gemeinde",
                "art",
                "zustand",
                "wert"
              ]
            }
          }
        },
        "required": [
          "stand",
          "stichtag",
          "quelle",
          "quelle_url",
          "lizenz",
          "vermerk",
          "zonen"
        ]
      }
    }
  }
}