{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "title": "InGrid Index - Umweltnavi",
  "$id": "https://schema.ingrid-oss.eu/index/draft/schema/index-umweltnavi.json",
  "type": "object",
  "allOf": [
    {
      "$schema": "https://json-schema.org/draft/2020-12/schema",
      "type": "object",
      "title": "Root fields",
      "properties": {
        "id": {
          "type": "string",
          "description": "Die ID des Datensatzes. Die ID **muss** eindeutig im Index sein.",
          "examples": [
            "Für UMWELTNAVI <oid>-<part> i.e. 'nlwkn-dsk-4922-21000-0'",
            "For InGrid Editor i.e. 'd43dad1f-a19f-4043-bca4-447cf5e7cabb'"
          ]
        },
        "$schema": {
          "type": "string",
          "description": "Enthält die URL des JSON-Schemas, das für die Validierung verwendet wird.",
          "examples": [
            "https://example.com/schemas/order/v2.1.0/schema.json"
          ]
        },
        "schema_version": {
          "type": "string",
          "description": "Die Version des Schemas des Indexes. \nDie Version richtet sich nach der Versionierung des InGrid Releases. \nSemantic Versioning soll verwendet werden.\nZusätzlich kann eine Schema- Release-Nummer verwendet werden, z.B. 1.0.0-1\n",
          "examples": [
            "1.0.0",
            "1.1.0-1",
            "1.2.0-1"
          ]
        },
        "metadata": {
          "description": "Enthält Metadaten über den Datensatz. Dies kann das Erstellungs- oder Änderungsdatum sein, oder aus welcher Quelle der Datensatz stammt.",
          "type": "object",
          "properties": {
            "data_type": {
              "type": "string",
              "description": "Beschreibt den Typ des Metadatensatzes im Index. Jeder Eintrag beschreibt eine bestimmte Eigenschaft des Datensatzes. Die Eigenschaften z.B. im Portal verwendet, um eine bestimmte Darstellung des Metadatensatzes zu steuern. Der Wert muss vom Profil bestimmt werden.\n",
              "examples": [
                "UmweltNAVI Datensatz ['UMWELTNAVI']",
                "InGrid Datensatz ['INGRID']",
                "UVP Datensatz ['UVP']"
              ]
            },
            "document_type": {
              "type": "string",
              "description": "Beschreibt den genauen Typ des Metadatensatzes. Dies kann als Unterkategorie Wird im Profil definiert.",
              "examples": [
                "InGridGeoDataset",
                "InGridGeoService"
              ]
            },
            "created": {
              "type": [
                "string",
                "null"
              ],
              "format": "date-time",
              "description": "Das Datum der Erstellung des Metadatensatzes. ISO 8601 Format.\n",
              "examples": [
                "2026-04-22T12:00:00Z",
                "2026-04-22T12:00:00+01:00"
              ]
            },
            "modified": {
              "type": [
                "string",
                "null"
              ],
              "format": "date-time",
              "description": "Das Datum der letzten Änderung des Metadatensatzes. ISO 8601 Format.\n",
              "examples": [
                "2026-04-22T12:00:00Z",
                "2026-04-22T12:00:00+01:00"
              ]
            },
            "issued": {
              "type": [
                "string",
                "null"
              ],
              "format": "date-time",
              "description": "Das Datum der ersten Veröffentlichung des Metadatensatzes. ISO 8601 Format.\n"
            },
            "partner": {
              "type": "string",
              "description": "Der Partner der Datenquelle als Kürzel.\n",
              "examples": [
                "bb",
                "st"
              ]
            },
            "provider": {
              "type": "string",
              "description": "Der Anbieter der Datenquelle.",
              "examples": [
                "ni_gll",
                "bw_mj"
              ]
            },
            "language": {
              "title": "language",
              "description": "Enthält die Sprache des Metadatensatzes.",
              "additionalProperties": false,
              "properties": {
                "key": {
                  "type": [
                    "string",
                    "null"
                  ]
                },
                "value": {
                  "type": [
                    "string",
                    "null"
                  ]
                }
              }
            },
            "datasource": {
              "properties": {
                "id": {
                  "type": "string",
                  "description": "Die ID der Datenquelle."
                },
                "name": {
                  "type": "string",
                  "description": "Der Name der Datenquelle."
                }
              }
            }
          },
          "required": [
            "data_type",
            "created",
            "modified"
          ]
        },
        "sort_uuid": {
          "description": "Sortier-UUID für die Sortierung von Datensätzen, die bei einer leeren Suche durchmischt angezeigt werden sollen. Außerdem wird hiermit gewährt, dass die Reihenfolge der Datensätze beim Paging erhalten bleibt. Hier wird eine UUID verwendet, die über alle Indizes einmalig sein sollte.",
          "type": "string"
        },
        "title": {
          "type": "string",
          "description": "Der Titel des Datensatzes.\n"
        },
        "description": {
          "description": "Die Beschreibung des Datensatzes.\n",
          "type": "string"
        },
        "language": {
          "type": "string",
          "description": "Welches Format hat die Sprache, wo wird es verwendet."
        },
        "contacts": {
          "type": "array",
          "items": {
            "properties": {
              "role": {
                "type": "string"
              },
              "name": {
                "type": "string"
              },
              "communications": {
                "type": "array",
                "items": {
                  "properties": {
                    "type": {
                      "type": "string",
                      "enum": [
                        "email",
                        "phone",
                        "fax",
                        "website",
                        "social",
                        "other"
                      ]
                    },
                    "value": {
                      "type": "string"
                    }
                  }
                }
              },
              "street": {
                "type": "string"
              },
              "code": {
                "type": "string"
              },
              "pocode": {
                "type": "string"
              },
              "pobox": {
                "type": "string"
              },
              "locality": {
                "type": "string"
              },
              "country": {
                "type": "string"
              },
              "administrative_area": {
                "type": "string"
              }
            }
          }
        },
        "spatials": {
          "type": "array",
          "description": "Dieser Bereich enthält Informationen über den Raumbezug.",
          "items": {
            "type": "object",
            "title": "Spatial Core",
            "properties": {
              "name": {
                "type": "string",
                "description": "Kann einen Namen oder eine ID gür eine Geometrie enthalten.",
                "examples": [
                  "<oid>-<geometrie-id> (für UMWELTNAVI)"
                ]
              },
              "geometry": {
                "type": "object",
                "description": "Enthält die GeoJSON-Repräsentation, die für eine optimierte Suche benötigt wird. Siehe auch https://de.wikipedia.org/wiki/GeoJSON",
                "properties": {
                  "type": {
                    "type": "string",
                    "enum": [
                      "Point",
                      "LineString",
                      "Polygon",
                      "MultiPoint",
                      "MultiLineString",
                      "MultiPolygon"
                    ]
                  },
                  "coordinates": {
                    "type": "array",
                    "items": {
                      "type": "array",
                      "minItems": 4,
                      "items": {
                        "type": "array",
                        "minItems": 2,
                        "items": {
                          "type": "number"
                        }
                      }
                    },
                    "description": "Koordinaten des Geometrieelements",
                    "examples": [
                      "..."
                    ]
                  }
                }
              },
              "bbox": {
                "type": "array",
                "title": "Bounding Box",
                "description": "Umschließende BBOX der Geometrie",
                "items": {
                  "type": "number",
                  "minimum": -180,
                  "maximum": 180,
                  "minItems": 4,
                  "maxItems": 4
                }
              },
              "wkt": {
                "type": "string",
                "title": "Well-known text",
                "description": "Angabe eines Well-known text-Formats."
              },
              "toponym": {
                "type": "array",
                "title": "Toponym",
                "items": {
                  "type": "string",
                  "description": "Textueller Raumbezug (wie Stadtnamen oder Flussnamen)",
                  "examples": [
                    "Frankfurt am Main",
                    "Hamburg"
                  ]
                },
                "minItems": 0
              },
              "administrative": {
                "type": "object",
                "properties": {
                  "state": {
                    "type": "array",
                    "items": {
                      "type": "string",
                      "description": "Land (z.B. ni, sh, rp)"
                    },
                    "minItems": 0
                  },
                  "regional_key": {
                    "type": "string"
                  }
                },
                "description": "Administrative Zuordnung"
              }
            },
            "anyOf": [
              {
                "required": [
                  "bbox"
                ]
              },
              {
                "required": [
                  "wkt"
                ]
              },
              {
                "required": [
                  "toponym"
                ]
              },
              {
                "required": [
                  "administrative"
                ]
              }
            ]
          },
          "$comment": "Ehemaliges Indexfeld: layer"
        },
        "temporal": {
          "description": "Gültigkeitsdatumsbereich der beschriebenen Daten",
          "$comment": "Ehemaliges Indexfeld: object_date",
          "type": "object",
          "properties": {
            "data_temporal": {
              "type": "array",
              "items": {
                "type": "object",
                "properties": {
                  "date": {
                    "type": "string",
                    "format": "date-time",
                    "description": "Datum des Ereignisses"
                  },
                  "date_range": {
                    "type": "object",
                    "title": "Zeitabschnitt",
                    "description": "Zeitabschnitt des Ereignis. Diese Angabe ist optimiert für die Verwendung in Elasticsearch, welches den Typ \"date_range\" unterstützt und optimiert abgefragt werden kann.",
                    "properties": {
                      "gte": {
                        "type": "string",
                        "format": "date-time",
                        "description": "Startdatum der Zeitangabe"
                      },
                      "lte": {
                        "type": "string",
                        "format": "date-time",
                        "description": "Enddatum der Zeitangabe"
                      }
                    }
                  },
                  "date_text": {
                    "type": "string",
                    "description": "Wird verwendet, wenn der Wert nicht in eine gültige DateRange Übertragbar ist",
                    "examples": [
                      "Sommer 2010"
                    ]
                  },
                  "date_type": {
                    "type": "string",
                    "description": "Typ der Zeitangabe",
                    "enum": [
                      "created",
                      "last_updated",
                      "first_published"
                    ]
                  }
                },
                "oneOf": [
                  {
                    "required": [
                      "date"
                    ]
                  },
                  {
                    "required": [
                      "date_range"
                    ]
                  },
                  {
                    "required": [
                      "date_text"
                    ]
                  }
                ]
              }
            }
          }
        },
        "keywords": {
          "type": "array",
          "items": {
            "type": "object",
            "title": "item",
            "properties": {
              "term": {
                "type": "string",
                "description": "Name des Keywords"
              },
              "id": {
                "type": "string",
                "description": "Eindeutiger Identifier des Keywords bezüglich der Quelle oder auch  URL-freundliche Form des Keywords (Slug)",
                "examples": [
                  "wk000680"
                ]
              },
              "source": {
                "type": "string",
                "description": "Quelle des Keywords",
                "examples": [
                  "gemet",
                  "umthes",
                  "iso_topic"
                ]
              }
            },
            "required": [
              "term",
              "source"
            ]
          }
        },
        "references": {
          "type": "array",
          "description": "Enthält Verweise zu externen Ressourcen oder Downloads, die mit dem Datensatz verbunden sind. Hier können auch URLs zu getCapabilities-Anfragen angegeben werden.",
          "items": {
            "type": "object",
            "title": "item",
            "if": {
              "properties": {
                "internal": {
                  "const": true
                }
              }
            },
            "then": {
              "required": [
                "uuid_ref"
              ]
            },
            "else": {
              "required": [
                "url"
              ]
            },
            "properties": {
              "internal": {
                "type": "boolean",
                "description": "Gibt an, ob es sich um einen internen oder externen Verweis handelt."
              },
              "url": {
                "$comment": "Sollten url und uuidRef vereint werden? Wodurch die Logik vereinfacht wird?",
                "type": "string",
                "description": "Die URL zur externen Ressource oder Download."
              },
              "uuid_ref": {
                "type": "string",
                "description": "Die UUID des internen Datensatzes."
              },
              "type": {
                "type": "object",
                "title": "type",
                "description": "Gibt den Typ der externen Ressource oder Download an.",
                "examples": [
                  "3600 - Gekoppelte Daten",
                  "5304 - Bestellung",
                  "3535 - Schlüsselkatalog"
                ],
                "additionalProperties": false,
                "properties": {
                  "key": {
                    "type": [
                      "string",
                      "null"
                    ]
                  },
                  "value": {
                    "type": [
                      "string",
                      "null"
                    ]
                  }
                }
              },
              "title": {
                "type": "string",
                "description": "Ein Titel der externen Ressource oder Download."
              },
              "explanation": {
                "type": "string",
                "description": "Eine Beschreibung der externen Ressource oder Download."
              }
            }
          }
        },
        "fulltext": {
          "type": "array",
          "description": "Für Full Text Suche. Signifikanz von genauen Treffern kann hier geboostet werden. Entsprechende Felder sollten mit copy_to-Operation in Elasticsearch kopiert werden.",
          "$comment": "Früher content-Feld",
          "items": {
            "type": "string"
          }
        },
        "exports": {
          "type": "object",
          "description": "Hier werden die zusätzlichen Export-Formate gehalten, die mit dem Datensatz ausgeliefert werden. Die Export-Formate können z.B. CSV, JSON oder andere Formate sein."
        }
      },
      "required": [
        "id",
        "$schema",
        "metadata",
        "title"
      ],
      "$defs": {
        "SpatialItem": {
          "title": "Spatial Core",
          "type": "object",
          "properties": {
            "name": {
              "type": "string",
              "description": "Kann einen Namen oder eine ID gür eine Geometrie enthalten.",
              "examples": [
                "<oid>-<geometrie-id> (für UMWELTNAVI)"
              ]
            },
            "geometry": {
              "type": "object",
              "description": "Enthält die GeoJSON-Repräsentation, die für eine optimierte Suche benötigt wird. Siehe auch https://de.wikipedia.org/wiki/GeoJSON",
              "properties": {
                "type": {
                  "type": "string",
                  "enum": [
                    "Point",
                    "LineString",
                    "Polygon",
                    "MultiPoint",
                    "MultiLineString",
                    "MultiPolygon"
                  ]
                },
                "coordinates": {
                  "type": "array",
                  "items": {
                    "type": "array",
                    "minItems": 4,
                    "items": {
                      "type": "array",
                      "minItems": 2,
                      "items": {
                        "type": "number"
                      }
                    }
                  },
                  "description": "Koordinaten des Geometrieelements",
                  "examples": [
                    "..."
                  ]
                }
              }
            },
            "bbox": {
              "type": "array",
              "title": "Bounding Box",
              "description": "Umschließende BBOX der Geometrie",
              "items": {
                "type": "number",
                "minimum": -180,
                "maximum": 180,
                "minItems": 4,
                "maxItems": 4
              }
            },
            "wkt": {
              "type": "string",
              "title": "Well-known text",
              "description": "Angabe eines Well-known text-Formats."
            },
            "toponym": {
              "type": "array",
              "title": "Toponym",
              "items": {
                "type": "string",
                "description": "Textueller Raumbezug (wie Stadtnamen oder Flussnamen)",
                "examples": [
                  "Frankfurt am Main",
                  "Hamburg"
                ]
              },
              "minItems": 0
            },
            "administrative": {
              "type": "object",
              "properties": {
                "state": {
                  "type": "array",
                  "items": {
                    "type": "string",
                    "description": "Land (z.B. ni, sh, rp)"
                  },
                  "minItems": 0
                },
                "regional_key": {
                  "type": "string"
                }
              },
              "description": "Administrative Zuordnung"
            }
          },
          "anyOf": [
            {
              "required": [
                "bbox"
              ]
            },
            {
              "required": [
                "wkt"
              ]
            },
            {
              "required": [
                "toponym"
              ]
            },
            {
              "required": [
                "administrative"
              ]
            }
          ]
        },
        "Metadata": {
          "type": "object",
          "properties": {
            "data_type": {
              "type": "string",
              "description": "Beschreibt den Typ des Metadatensatzes im Index. Jeder Eintrag beschreibt eine bestimmte Eigenschaft des Datensatzes. Die Eigenschaften z.B. im Portal verwendet, um eine bestimmte Darstellung des Metadatensatzes zu steuern. Der Wert muss vom Profil bestimmt werden.\n",
              "examples": [
                "UmweltNAVI Datensatz ['UMWELTNAVI']",
                "InGrid Datensatz ['INGRID']",
                "UVP Datensatz ['UVP']"
              ]
            },
            "document_type": {
              "type": "string",
              "description": "Beschreibt den genauen Typ des Metadatensatzes. Dies kann als Unterkategorie Wird im Profil definiert.",
              "examples": [
                "InGridGeoDataset",
                "InGridGeoService"
              ]
            },
            "created": {
              "type": [
                "string",
                "null"
              ],
              "format": "date-time",
              "description": "Das Datum der Erstellung des Metadatensatzes. ISO 8601 Format.\n",
              "examples": [
                "2026-04-22T12:00:00Z",
                "2026-04-22T12:00:00+01:00"
              ]
            },
            "modified": {
              "type": [
                "string",
                "null"
              ],
              "format": "date-time",
              "description": "Das Datum der letzten Änderung des Metadatensatzes. ISO 8601 Format.\n",
              "examples": [
                "2026-04-22T12:00:00Z",
                "2026-04-22T12:00:00+01:00"
              ]
            },
            "issued": {
              "type": [
                "string",
                "null"
              ],
              "format": "date-time",
              "description": "Das Datum der ersten Veröffentlichung des Metadatensatzes. ISO 8601 Format.\n"
            },
            "partner": {
              "type": "string",
              "description": "Der Partner der Datenquelle als Kürzel.\n",
              "examples": [
                "bb",
                "st"
              ]
            },
            "provider": {
              "type": "string",
              "description": "Der Anbieter der Datenquelle.",
              "examples": [
                "ni_gll",
                "bw_mj"
              ]
            },
            "language": {
              "title": "language",
              "description": "Enthält die Sprache des Metadatensatzes.",
              "additionalProperties": false,
              "properties": {
                "key": {
                  "type": [
                    "string",
                    "null"
                  ]
                },
                "value": {
                  "type": [
                    "string",
                    "null"
                  ]
                }
              }
            },
            "datasource": {
              "properties": {
                "id": {
                  "type": "string",
                  "description": "Die ID der Datenquelle."
                },
                "name": {
                  "type": "string",
                  "description": "Der Name der Datenquelle."
                }
              }
            }
          },
          "required": [
            "data_type",
            "created",
            "modified"
          ]
        },
        "ReferenceItem": {
          "type": "object",
          "properties": {
            "internal": {
              "type": "boolean",
              "description": "Gibt an, ob es sich um einen internen oder externen Verweis handelt."
            },
            "url": {
              "$comment": "Sollten url und uuidRef vereint werden? Wodurch die Logik vereinfacht wird?",
              "type": "string",
              "description": "Die URL zur externen Ressource oder Download."
            },
            "uuid_ref": {
              "type": "string",
              "description": "Die UUID des internen Datensatzes."
            },
            "type": {
              "type": "object",
              "title": "type",
              "description": "Gibt den Typ der externen Ressource oder Download an.",
              "examples": [
                "3600 - Gekoppelte Daten",
                "5304 - Bestellung",
                "3535 - Schlüsselkatalog"
              ],
              "additionalProperties": false,
              "properties": {
                "key": {
                  "type": [
                    "string",
                    "null"
                  ]
                },
                "value": {
                  "type": [
                    "string",
                    "null"
                  ]
                }
              }
            },
            "title": {
              "type": "string",
              "description": "Ein Titel der externen Ressource oder Download."
            },
            "explanation": {
              "type": "string",
              "description": "Eine Beschreibung der externen Ressource oder Download."
            }
          }
        }
      }
    },
    {
      "title": "InGrid",
      "type": "object",
      "properties": {
        "metadata": {
          "type": "object",
          "description": "Enthält zusätzliche Metadaten zum Datensatz.",
          "unevaluatedProperties": false,
          "allOf": [
            {
              "type": "object",
              "properties": {
                "data_type": {
                  "type": "string",
                  "description": "Beschreibt den Typ des Metadatensatzes im Index. Jeder Eintrag beschreibt eine bestimmte Eigenschaft des Datensatzes. Die Eigenschaften z.B. im Portal verwendet, um eine bestimmte Darstellung des Metadatensatzes zu steuern. Der Wert muss vom Profil bestimmt werden.\n",
                  "examples": [
                    "UmweltNAVI Datensatz ['UMWELTNAVI']",
                    "InGrid Datensatz ['INGRID']",
                    "UVP Datensatz ['UVP']"
                  ]
                },
                "document_type": {
                  "type": "string",
                  "description": "Beschreibt den genauen Typ des Metadatensatzes. Dies kann als Unterkategorie Wird im Profil definiert.",
                  "examples": [
                    "InGridGeoDataset",
                    "InGridGeoService"
                  ]
                },
                "created": {
                  "type": [
                    "string",
                    "null"
                  ],
                  "format": "date-time",
                  "description": "Das Datum der Erstellung des Metadatensatzes. ISO 8601 Format.\n",
                  "examples": [
                    "2026-04-22T12:00:00Z",
                    "2026-04-22T12:00:00+01:00"
                  ]
                },
                "modified": {
                  "type": [
                    "string",
                    "null"
                  ],
                  "format": "date-time",
                  "description": "Das Datum der letzten Änderung des Metadatensatzes. ISO 8601 Format.\n",
                  "examples": [
                    "2026-04-22T12:00:00Z",
                    "2026-04-22T12:00:00+01:00"
                  ]
                },
                "issued": {
                  "type": [
                    "string",
                    "null"
                  ],
                  "format": "date-time",
                  "description": "Das Datum der ersten Veröffentlichung des Metadatensatzes. ISO 8601 Format.\n"
                },
                "partner": {
                  "type": "string",
                  "description": "Der Partner der Datenquelle als Kürzel.\n",
                  "examples": [
                    "bb",
                    "st"
                  ]
                },
                "provider": {
                  "type": "string",
                  "description": "Der Anbieter der Datenquelle.",
                  "examples": [
                    "ni_gll",
                    "bw_mj"
                  ]
                },
                "language": {
                  "title": "language",
                  "description": "Enthält die Sprache des Metadatensatzes.",
                  "additionalProperties": false,
                  "properties": {
                    "key": {
                      "type": [
                        "string",
                        "null"
                      ]
                    },
                    "value": {
                      "type": [
                        "string",
                        "null"
                      ]
                    }
                  }
                },
                "datasource": {
                  "properties": {
                    "id": {
                      "type": "string",
                      "description": "Die ID der Datenquelle."
                    },
                    "name": {
                      "type": "string",
                      "description": "Der Name der Datenquelle."
                    }
                  }
                }
              },
              "required": [
                "data_type",
                "created",
                "modified"
              ]
            },
            {
              "type": "object",
              "title": "InGrid Metadata",
              "properties": {
                "data_type": {
                  "type": "string",
                  "enum": [
                    "INGRID",
                    "UMWELTNAVI"
                  ]
                },
                "document_type": {
                  "type": "string",
                  "description": "Beschreibt den Typ des Metadatensatzes."
                },
                "language": {
                  "type": "string",
                  "description": "Enthält die Sprache des Metadatensatzes. Hier wird die Codeliste 99999999 verwendet."
                },
                "partner": {
                  "type": "string",
                  "description": "Der Partner der Datenquelle als Kürzel. Siehe auch Codeliste 110."
                },
                "provider": {
                  "type": "string",
                  "description": "Der Anbieter der Datenquelle als Kürzel. Dieser wird aus der Codeliste 111 genommen.",
                  "examples": [
                    "ni_gll"
                  ]
                }
              },
              "if": {
                "properties": {
                  "data_type": {
                    "const": "INGRID"
                  }
                },
                "required": [
                  "data_type"
                ]
              },
              "then": {
                "properties": {
                  "document_type": {
                    "enum": [
                      "InGridGeoDataset",
                      "InGridDataCollection",
                      "InGridGeoService",
                      "InGridInformationSystem",
                      "InGridPublication",
                      "InGridProject",
                      "InGridSpecialisedTask"
                    ]
                  }
                }
              },
              "required": [
                "data_type"
              ]
            }
          ]
        },
        "temporal": {
          "type": "object",
          "description": "Enthält zusätzliche Informationen zur Aktualität des Datensatzes, einschließlich Status, Pflegeintervall und benutzerdefinierten Pflegeintervall.",
          "unevaluatedProperties": false,
          "allOf": [
            {
              "type": "object",
              "properties": {
                "data_temporal": {
                  "type": "array",
                  "items": {
                    "type": "object",
                    "properties": {
                      "date": {
                        "type": "string",
                        "format": "date-time",
                        "description": "Datum des Ereignisses"
                      },
                      "date_range": {
                        "type": "object",
                        "title": "Zeitabschnitt",
                        "description": "Zeitabschnitt des Ereignis. Diese Angabe ist optimiert für die Verwendung in Elasticsearch, welches den Typ \"date_range\" unterstützt und optimiert abgefragt werden kann.",
                        "properties": {
                          "gte": {
                            "type": "string",
                            "format": "date-time",
                            "description": "Startdatum der Zeitangabe"
                          },
                          "lte": {
                            "type": "string",
                            "format": "date-time",
                            "description": "Enddatum der Zeitangabe"
                          }
                        }
                      },
                      "date_text": {
                        "type": "string",
                        "description": "Wird verwendet, wenn der Wert nicht in eine gültige DateRange Übertragbar ist",
                        "examples": [
                          "Sommer 2010"
                        ]
                      },
                      "date_type": {
                        "type": "string",
                        "description": "Typ der Zeitangabe",
                        "enum": [
                          "created",
                          "last_updated",
                          "first_published"
                        ]
                      }
                    },
                    "oneOf": [
                      {
                        "required": [
                          "date"
                        ]
                      },
                      {
                        "required": [
                          "date_range"
                        ]
                      },
                      {
                        "required": [
                          "date_text"
                        ]
                      }
                    ]
                  }
                }
              }
            },
            {
              "type": "object",
              "title": "InGrid Temporal",
              "properties": {
                "status": {
                  "description": "In welchem Zustand ist der Datensatz? Hier wird die Codeliste 523 verwendet.",
                  "examples": [
                    "1 - abgeschlossen",
                    "2 - historisches Archiv"
                  ],
                  "additionalProperties": false,
                  "properties": {
                    "key": {
                      "type": [
                        "string",
                        "null"
                      ]
                    },
                    "value": {
                      "type": [
                        "string",
                        "null"
                      ]
                    }
                  }
                },
                "maintenance_frequency": {
                  "description": "Enthält das Pflegeintervall des Datensatzes. Es wird die Codeliste 518 verwendet.",
                  "examples": [
                    "2 - täglich",
                    "3 - wöchentlich",
                    "5 - monatlich"
                  ],
                  "additionalProperties": false,
                  "properties": {
                    "key": {
                      "type": [
                        "string",
                        "null"
                      ]
                    },
                    "value": {
                      "type": [
                        "string",
                        "null"
                      ]
                    }
                  }
                },
                "user_defined_maintenance_frequency_in_sec": {
                  "type": "string",
                  "description": "Enthält das benutzerdefinierte Pflegeintervall des Datensatzes in Sekunden.",
                  "examples": [
                    60
                  ]
                }
              }
            }
          ]
        },
        "exports": {
          "unevaluatedProperties": false,
          "properties": {
            "iso": {
              "type": "string",
              "description": "Enthält das vollständige ISO-19139-Dokument im XML-Format."
            }
          }
        },
        "ingrid": {
          "properties": {
            "alternate_title": {
              "type": "string",
              "description": "Ermöglicht das Setzen eines alternativen Titels oder eine Kurzbeschreibung des Datensatzes."
            },
            "licenses": {
              "type": "array",
              "description": "Liste der Nutzungsbedingungen oder Einschränkungen für die Verwendung der externen Ressource oder Download.",
              "items": {
                "type": "object",
                "title": "item",
                "properties": {
                  "type": {
                    "type": "string",
                    "description": "Typ der Nutzungsbedingung oder Einschränkung. Kann 'accessConstraints', 'useConstraints' oder 'useLimitations' sein.",
                    "enum": [
                      "accessConstraints",
                      "useConstraints",
                      "useLimitations"
                    ]
                  },
                  "items": {
                    "type": "array",
                    "description": "Liste von Einschränkungen oder Nutzungsbedingungen abhängig vom Typ. Es wird die Codeliste 6500 für useConstraints, 6010 für accessConstraints und freie Werte für useLimitations verwendet.",
                    "items": {
                      "title": "item",
                      "additionalProperties": false,
                      "properties": {
                        "key": {
                          "type": [
                            "string",
                            "null"
                          ]
                        },
                        "value": {
                          "type": [
                            "string",
                            "null"
                          ]
                        }
                      }
                    }
                  }
                }
              }
            },
            "parent_identifier": {
              "type": "string",
              "description": "UUID des übergeordneten Datensatzes. Kann für die Strukturierung von Datensätzen verwendet werden."
            },
            "datasource_identifier": {
              "type": "string",
              "description": "Enthält den Identifikator der Datenquelle. Dieser muss eine auflösbare URL sein, die den Direktzugriff auf das XML des Daten-Metadatensatzes ermöglicht.",
              "examples": [
                "https://registry.gdi-de.org/id/ingrid_cat/d848fd14-7a22-40ba-980a-3ea7e3fcbcae"
              ]
            },
            "spatial_representation": {
              "type": "array",
              "title": "Digitale Repräsentation",
              "items": {
                "properties": {
                  "type": {
                    "type": "string",
                    "title": "Typ",
                    "description": "Beschreibt den Typ der Repräsentation",
                    "enum": [
                      "text",
                      "vector",
                      "tin",
                      "video",
                      "stereomodel",
                      "grid"
                    ]
                  },
                  "vector": {
                    "type": "array",
                    "title": "Vector",
                    "description": "Beschreibt die digitale Repräsentation als eine Liste von Vektor-Daten.",
                    "items": {
                      "properties": {
                        "topology": {
                          "type": "string",
                          "description": "Beschreibt die Topologie des Vektor-Datensatzes"
                        },
                        "geometry_type": {
                          "type": "string",
                          "description": "Beschreibt den Typ der Geometrie"
                        },
                        "number": {
                          "type": "integer",
                          "description": "Beschreibt die Anzahl der Punkt- oder Vektortypelemente im Datensatz"
                        }
                      }
                    }
                  },
                  "grid": {
                    "title": "Raster/Gitter",
                    "description": "Enthält die Information über die Strukturelemente der Rasterdaten. Aktuell nicht im Portal angezeigt?",
                    "properties": {
                      "axes": {
                        "type": "array",
                        "items": {
                          "properties": {
                            "label": {
                              "type": "string",
                              "description": "Beschreibt den Namen der Achse"
                            },
                            "number": {
                              "type": "integer",
                              "description": "Beschreibt die Anzahl der Achsen im Raster"
                            },
                            "resolution": {
                              "type": "integer",
                              "description": "Beschreibt die Auflösung der Achsen im Raster in Metern"
                            }
                          }
                        }
                      },
                      "available_parameters": {
                        "type": "boolean",
                        "description": "Beschreibt, ob Parameter für das Raster verfügbar sind"
                      },
                      "number_dimensions": {
                        "type": "integer",
                        "description": "Beschreibt die Anzahl der unabhängigen räumlich-zeitlichen Achsen"
                      },
                      "cell_geometry": {
                        "description": "Angabe, ob die Rasterdatenzelle einen Punkt oder eine Fläche beschreibt. Hier wird die Codeliste 509 verwendet.",
                        "additionalProperties": false,
                        "properties": {
                          "key": {
                            "type": [
                              "string",
                              "null"
                            ]
                          },
                          "value": {
                            "type": [
                              "string",
                              "null"
                            ]
                          }
                        }
                      },
                      "rectified": {
                        "title": "Georektifiziertes Raster",
                        "properties": {
                          "checkPointAvailability": {
                            "type": "boolean",
                            "description": "Beschreibt, ob die Punkte für die Rasterdatenzelle geprüft werden."
                          },
                          "checkPointDescription": {
                            "type": "string",
                            "description": "Beschreibt die Beschreibung der Punkte, die für die Rasterdatenzelle verwendet werden. Hier wird die Codeliste 510 verwendet."
                          },
                          "cornerPoints": {
                            "type": "string"
                          },
                          "pointInPixel": {
                            "description": "Enthält den Punkt im Pixel, an welchem der Bezug zur Erde besteht. Hier wird die Codeliste 2100 verwendet.",
                            "additionalProperties": false,
                            "properties": {
                              "key": {
                                "type": [
                                  "string",
                                  "null"
                                ]
                              },
                              "value": {
                                "type": [
                                  "string",
                                  "null"
                                ]
                              }
                            }
                          }
                        }
                      },
                      "referenced": {
                        "title": "Georeferenzierbares Raster",
                        "properties": {
                          "orientationParameterAvailability": {
                            "type": "boolean",
                            "description": "Angabe, ob Orientierungsparameter verfügbar sind."
                          },
                          "controlPointAvaliability": {
                            "type": "boolean",
                            "description": "Angabe, ob Passpunkte existieren."
                          },
                          "parameters": {
                            "type": "string",
                            "description": "Parameter, die die Georeferenzierung der Rasterdaten ermöglichen"
                          }
                        }
                      }
                    }
                  }
                }
              }
            },
            "specific_usage": {
              "type": "string"
            },
            "purpose": {
              "type": "string"
            },
            "conformance_result": {
              "type": "array",
              "items": {
                "title": "item",
                "properties": {
                  "pass": {
                    "type": "string",
                    "enum": [
                      "conformant",
                      "not-conformant",
                      "not-evaluated"
                    ]
                  },
                  "specification": {
                    "type": "object",
                    "additionalProperties": false,
                    "properties": {
                      "key": {
                        "type": [
                          "string",
                          "null"
                        ]
                      },
                      "value": {
                        "type": [
                          "string",
                          "null"
                        ]
                      }
                    }
                  },
                  "publicationDate": {
                    "type": "string"
                  },
                  "explanation": {
                    "type": "string"
                  }
                }
              }
            },
            "order_info": {
              "type": "string"
            },
            "data_quality": {
              "properties": {
                "completenessOmission": {
                  "type": "number"
                },
                "positionalAccuracy": {
                  "properties": {
                    "horizontal": {
                      "type": "number"
                    },
                    "vertical": {
                      "type": "number"
                    }
                  }
                },
                "qualities": {
                  "type": "array",
                  "items": {
                    "type": "object",
                    "properties": {
                      "type": {
                        "type": "string",
                        "enum": [
                          "completenessComission",
                          "conceptualConsistency",
                          "domainConsistency",
                          "formatConsistency",
                          "topologicalConsistency",
                          "temporalConsistency",
                          "thematicClassificationCorrectness",
                          "nonQuantitativeAttributeAccuracy",
                          "quantitativeAttributeAccuracy",
                          "relativeInternalPositionalAccuracy"
                        ]
                      },
                      "measure_type": {
                        "type": "object",
                        "additionalProperties": false,
                        "properties": {
                          "key": {
                            "type": [
                              "string",
                              "null"
                            ]
                          },
                          "value": {
                            "type": [
                              "string",
                              "null"
                            ]
                          }
                        }
                      },
                      "value": {
                        "type": "number"
                      },
                      "parameter": {
                        "type": "string"
                      }
                    }
                  }
                }
              }
            },
            "character_set": {
              "type": "object",
              "description": "Angaben zu dem im beschriebenen Datensatz benutzten Zeichensatz.",
              "additionalProperties": false,
              "properties": {
                "key": {
                  "type": [
                    "string",
                    "null"
                  ]
                },
                "value": {
                  "type": [
                    "string",
                    "null"
                  ]
                }
              }
            }
          }
        }
      }
    },
    {
      "type": "object",
      "title": "UmweltNavi",
      "properties": {
        "metadata": {
          "properties": {
            "data_type": {
              "type": "string",
              "const": "UMWELTNAVI"
            },
            "document_type": {
              "description": "Definiert den Statuslayer des Dokuments",
              "type": "string",
              "enum": [
                "object",
                "map",
                "statistic"
              ]
            },
            "datasource": {
              "description": "Beschreibt Datenkatalog (Herkunft)",
              "examples": [
                "NLWKN_DSK"
              ],
              "properties": {
                "id": {
                  "type": "string",
                  "description": "Die ID der Datenquelle."
                },
                "name": {
                  "type": "string",
                  "description": "Der Name der Datenquelle."
                }
              }
            }
          },
          "required": [
            "data_type",
            "document_type",
            "datasource",
            "provider"
          ]
        },
        "spatials": {
          "type": "array",
          "items": {
            "type": "object",
            "allOf": [
              {
                "title": "Spatial Core",
                "type": "object",
                "properties": {
                  "name": {
                    "type": "string",
                    "description": "Kann einen Namen oder eine ID gür eine Geometrie enthalten.",
                    "examples": [
                      "<oid>-<geometrie-id> (für UMWELTNAVI)"
                    ]
                  },
                  "geometry": {
                    "type": "object",
                    "description": "Enthält die GeoJSON-Repräsentation, die für eine optimierte Suche benötigt wird. Siehe auch https://de.wikipedia.org/wiki/GeoJSON",
                    "properties": {
                      "type": {
                        "type": "string",
                        "enum": [
                          "Point",
                          "LineString",
                          "Polygon",
                          "MultiPoint",
                          "MultiLineString",
                          "MultiPolygon"
                        ]
                      },
                      "coordinates": {
                        "type": "array",
                        "items": {
                          "type": "array",
                          "minItems": 4,
                          "items": {
                            "type": "array",
                            "minItems": 2,
                            "items": {
                              "type": "number"
                            }
                          }
                        },
                        "description": "Koordinaten des Geometrieelements",
                        "examples": [
                          "..."
                        ]
                      }
                    }
                  },
                  "bbox": {
                    "type": "array",
                    "title": "Bounding Box",
                    "description": "Umschließende BBOX der Geometrie",
                    "items": {
                      "type": "number",
                      "minimum": -180,
                      "maximum": 180,
                      "minItems": 4,
                      "maxItems": 4
                    }
                  },
                  "wkt": {
                    "type": "string",
                    "title": "Well-known text",
                    "description": "Angabe eines Well-known text-Formats."
                  },
                  "toponym": {
                    "type": "array",
                    "title": "Toponym",
                    "items": {
                      "type": "string",
                      "description": "Textueller Raumbezug (wie Stadtnamen oder Flussnamen)",
                      "examples": [
                        "Frankfurt am Main",
                        "Hamburg"
                      ]
                    },
                    "minItems": 0
                  },
                  "administrative": {
                    "type": "object",
                    "properties": {
                      "state": {
                        "type": "array",
                        "items": {
                          "type": "string",
                          "description": "Land (z.B. ni, sh, rp)"
                        },
                        "minItems": 0
                      },
                      "regional_key": {
                        "type": "string"
                      }
                    },
                    "description": "Administrative Zuordnung"
                  }
                },
                "anyOf": [
                  {
                    "required": [
                      "bbox"
                    ]
                  },
                  {
                    "required": [
                      "wkt"
                    ]
                  },
                  {
                    "required": [
                      "toponym"
                    ]
                  },
                  {
                    "required": [
                      "administrative"
                    ]
                  }
                ]
              },
              {
                "type": "object",
                "title": "UmweltNavi Spatial",
                "properties": {
                  "centroid": {
                    "type": "string",
                    "description": "Schwerpunkt der Geometrie"
                  },
                  "inside_point": {
                    "type": "string",
                    "description": "Punkt innerhalb der Geometrie, der dem Schwerpunkt am nächsten liegt."
                  },
                  "geometry_points": {
                    "type": "string",
                    "description": "Geometrie als Punkte, wird für Distanz Berechnung verwendet (geo_distance Sortierung funktioniert nicht mit geo_shape)",
                    "$comment": "Ehemaliges Indexfeld: location_points"
                  },
                  "outline": {
                    "type": "array",
                    "items": {
                      "type": "string",
                      "description": "Outline für die Darstellung, ggf. reduzierte Geometrie"
                    },
                    "minItems": 0
                  }
                }
              }
            ]
          }
        },
        "umweltnavi": {
          "type": "object",
          "description": "All field for umweltnavi",
          "properties": {
            "oid": {
              "type": "string",
              "description": "Objekt ID (eindeutig über alle Datenkataloge). Setzt sich aus  \"source\" und \"source_id\" (bzw. \"source\" und \"origin\" und \"classification\") zusammen und wird für Eigenschaft \"id\" verwendet.",
              "examples": [
                "nlwkn-dsk-4922-21000"
              ]
            },
            "part": {
              "type": "number",
              "description": "Wegen zu großer Geometrien, können für Objekte verschiedene Sub Geometrien existieren. \nBIPU Index Modell\nIn UMWELTNAVI immer 0; in UMWELTNAVI_SUB_GEOMETRY immer > 0\nWenn > 0 dann wird nur das Feld \"geometrie\" verwendet.\n",
              "minimum": 0,
              "$comment": "Ehemaliges Indexfeld: doc_index"
            },
            "provider": {
              "type": "object",
              "description": "Enthält Informationen über den Anbieter für die Facetten-Auswahl",
              "properties": {
                "id": {
                  "type": "string",
                  "description": "Der Slug für die Filterung nach dem Anbieter",
                  "examples": [
                    "bundesanstalt-fuer-gewaesserkunde-bfg"
                  ]
                },
                "name": {
                  "type": "string",
                  "description": "Name des Anbieters",
                  "examples": [
                    "Bundesanstalt für Gewässerkunde (BfG)"
                  ]
                }
              },
              "required": [
                "id"
              ]
            },
            "category": {
              "type": "object",
              "properties": {
                "name": {
                  "type": "string",
                  "examples": [
                    "Lärmindex Nacht"
                  ]
                },
                "slug": {
                  "type": "string",
                  "examples": [
                    "laermindex-nacht"
                  ]
                }
              },
              "required": [
                "name",
                "slug"
              ],
              "description": "Kategorie im BIPU Datenmodell"
            },
            "lod_weight": {
              "type": "number",
              "description": "Level of Detail für das Einblenden von Objekten, wenn weiter raus",
              "$comment": "Ehemaliges Indexfeld: lod_sort_weight"
            },
            "source_id": {
              "type": "string",
              "description": "ID des Objektes innerhalb des Datenkataloges, Teil der OID, Nicht für \"Status-Layer\"",
              "$comment": "Ehemaliges Indexfeld: code"
            },
            "origin": {
              "type": "string",
              "description": "Nur für \"Status-Layer\", zusammen mit Kategorie \"Lärmindex Nacht\" ergibt sich folgende Id: laermindex-nacht-strasse-city-50",
              "examples": [
                "Straße (City)"
              ]
            },
            "classification": {
              "type": "string",
              "description": "Nur für \"Status-Layer\", zusammen mit Kategorie \"Lärmindex Nacht\" ergibt sich folgende Id: laermindex-nacht-strasse-city-50",
              "examples": [
                "50"
              ],
              "$comment": "Ehemaliges Indexfeld: weight"
            },
            "service": {
              "type": "array",
              "description": "Verpflichtend für Datensätze mit WMS Diensten",
              "items": {
                "type": "object",
                "properties": {
                  "url": {
                    "type": "string",
                    "$comment": "Ehemaliges Indexfeld: wms.url"
                  },
                  "type": {
                    "type": "string",
                    "enum": [
                      "wms",
                      "wmts"
                    ],
                    "$comment": "Ehemaliges Indexfeld: wms.type"
                  },
                  "layer": {
                    "type": "array",
                    "items": {
                      "type": "object",
                      "properties": {
                        "legend": {
                          "type": "string",
                          "$comment": "Ehemaliges Indexfeld: wms.legend.url"
                        },
                        "name": {
                          "type": "string",
                          "description": "WMS Layername"
                        },
                        "title": {
                          "type": "string",
                          "description": "Display Title"
                        }
                      },
                      "required": [
                        "name"
                      ],
                      "$comment": "Ehemaliges Indexfeld: wms.layer"
                    },
                    "minItems": 1
                  }
                },
                "required": [
                  "url",
                  "type",
                  "layer"
                ]
              },
              "minItems": 1
            },
            "info_text": {
              "type": "string",
              "$comment": "Ehemaliges Indexfeld: info"
            },
            "icon": {
              "type": "string"
            },
            "license": {
              "type": "object",
              "properties": {
                "name": {
                  "type": "string"
                },
                "url": {
                  "type": "string"
                }
              },
              "required": [
                "name"
              ]
            },
            "owner": {
              "type": "object",
              "properties": {
                "name": {
                  "type": "string"
                },
                "url": {
                  "type": "string"
                }
              },
              "required": [
                "name"
              ]
            },
            "contact": {
              "type": "string",
              "description": "Adresse des Objekts",
              "examples": [
                "Hanauer Landstr. 52, 60314 Frankfurt",
                "Ansprechpartner: Frank Kruse"
              ],
              "$comment": "Ehemaliges Indexfeld: address"
            },
            "metadata_url": {
              "type": "string",
              "description": "Referenz zu externem Metadatensatz",
              "$comment": "Ehemaliges Indexfeld: meta_data_url"
            },
            "content_items": {
              "type": "array",
              "items": {
                "properties": {
                  "name": {
                    "type": "string",
                    "description": "Name des Inhaltsbereichs",
                    "examples": [
                      "Bilder, Beschreibung, Wikipedia, Steckbrief"
                    ]
                  },
                  "items": {
                    "allOf": [
                      {
                        "type": "object",
                        "title": "Basisinformationen",
                        "required": [
                          "type"
                        ],
                        "description": "Liste der Inhalte",
                        "properties": {
                          "type": {
                            "type": "string",
                            "enum": [
                              "image",
                              "text",
                              "link"
                            ]
                          },
                          "url": {
                            "type": "string",
                            "description": "Für Link und Bild"
                          },
                          "title": {
                            "type": "string",
                            "description": "Titel des Elementes"
                          },
                          "content": {
                            "type": "string",
                            "description": "Angaben zur Herkunft des Inhalts",
                            "$comment": "Ehemaliges Indexfeld: object_date"
                          },
                          "assigned_to": {
                            "type": "string",
                            "description": "Partner für den das Detail spezifisch erstellt wurde. Leer bedeutet für alle Partner.",
                            "enum": [
                              "ni",
                              "sh",
                              "rp"
                            ]
                          }
                        }
                      },
                      {
                        "type": "object",
                        "title": "Zusätzliche Informationen",
                        "properties": {
                          "temporal": {
                            "type": "object",
                            "properties": {
                              "date": {
                                "type": "string",
                                "format": "date-time",
                                "description": "Datum des Ereignisses"
                              },
                              "date_range": {
                                "type": "object",
                                "title": "Zeitabschnitt",
                                "description": "Zeitabschnitt des Ereignis. Diese Angabe ist optimiert für die Verwendung in Elasticsearch, welches den Typ \"date_range\" unterstützt und optimiert abgefragt werden kann.",
                                "properties": {
                                  "gte": {
                                    "type": "string",
                                    "format": "date-time",
                                    "description": "Startdatum der Zeitangabe"
                                  },
                                  "lte": {
                                    "type": "string",
                                    "format": "date-time",
                                    "description": "Enddatum der Zeitangabe"
                                  }
                                }
                              },
                              "date_text": {
                                "type": "string",
                                "description": "Wird verwendet, wenn der Wert nicht in eine gültige DateRange Übertragbar ist",
                                "examples": [
                                  "Sommer 2010"
                                ]
                              },
                              "date_type": {
                                "type": "string",
                                "description": "Typ der Zeitangabe",
                                "enum": [
                                  "created",
                                  "last_updated",
                                  "first_published"
                                ]
                              }
                            },
                            "oneOf": [
                              {
                                "required": [
                                  "date"
                                ]
                              },
                              {
                                "required": [
                                  "date_range"
                                ]
                              },
                              {
                                "required": [
                                  "date_text"
                                ]
                              }
                            ],
                            "description": "z.B. Aufnahmedatum eines Bildes",
                            "$comment": "Ehemaliges Indexfeld: object_date"
                          },
                          "source": {
                            "type": "object",
                            "properties": {
                              "name": {
                                "type": "string"
                              },
                              "url": {
                                "type": "string"
                              }
                            },
                            "required": [
                              "name"
                            ]
                          },
                          "license": {
                            "type": "object",
                            "properties": {
                              "name": {
                                "type": "string"
                              },
                              "url": {
                                "type": "string"
                              }
                            },
                            "required": [
                              "name"
                            ]
                          },
                          "author": {
                            "type": "object",
                            "properties": {
                              "name": {
                                "type": "string"
                              },
                              "url": {
                                "type": "string"
                              }
                            },
                            "required": [
                              "name"
                            ]
                          }
                        },
                        "description": "Wird verwendet, um die Herkunft eines Inhalts zu beschreiben"
                      }
                    ]
                  }
                },
                "required": [
                  "name",
                  "items"
                ]
              },
              "description": "Liste der Inhalte zum Objekt unterteilt in Bereiche",
              "$comment": "Ehemaliges Indexfeld: data"
            },
            "relations": {
              "type": "array",
              "items": {
                "properties": {
                  "name": {
                    "type": "string",
                    "description": "Name der Relation",
                    "examples": [
                      "enthält, gehört zu"
                    ]
                  },
                  "items": {
                    "type": "object",
                    "properties": {
                      "oid": {
                        "type": "string"
                      },
                      "name": {
                        "type": "string"
                      }
                    },
                    "required": [
                      "oid",
                      "name"
                    ]
                  }
                },
                "required": [
                  "name",
                  "items"
                ]
              }
            },
            "import_ref": {
              "type": "object",
              "description": "Enthält Datenbank ID des Objekts (Attribut \"original\") und ggf. des überschreibenden Objekts (Attribut: \"override\")",
              "properties": {
                "original": {
                  "type": "integer",
                  "description": "Datenbank ID des Objekts"
                },
                "override": {
                  "type": "integer",
                  "description": "Datenbank ID des überschreibenden Objekts"
                }
              },
              "examples": [
                {
                  "original": 27900,
                  "override": 1
                }
              ]
            },
            "target_platform": {
              "type": "string",
              "description": "Target des Datensatzes (App oder Portal)",
              "enum": [
                "web",
                "app",
                "none"
              ]
            },
            "assigned_to": {
              "type": "string",
              "description": "Partner für den der Datensatz spezifisch erstellt wurde. Leer bedeutet für alle Partner.",
              "enum": [
                "ni",
                "sh",
                "rp",
                "none"
              ]
            },
            "tags": {
              "type": "array",
              "items": {
                "type": "string",
                "examples": [
                  "spatial-object, map-service "
                ]
              },
              "minItems": 0
            },
            "indexed_terms": {
              "type": "array",
              "items": {
                "type": "string",
                "description": "Für Volltextsuche, enthält Kategorienamen und Namen von Sammlungen, Statistiken etc für separate Gewichtung von fulltext"
              },
              "minItems": 0
            },
            "statistics": {
              "type": "array",
              "items": {
                "type": "object",
                "properties": {
                  "oid": {
                    "type": "string",
                    "description": "Eindeutige ID der Statistik",
                    "examples": [
                      "bevoelkerungsentwicklung-bis-2021-bkg-vg250-gemeinden-10046118 "
                    ]
                  },
                  "name": {
                    "type": "string",
                    "description": "Name der Statistik",
                    "examples": [
                      "Bevölkerungsentwicklung bis 2021 "
                    ]
                  },
                  "category": {
                    "type": "object",
                    "properties": {
                      "name": {
                        "type": "string",
                        "examples": [
                          "Bevölkerungsentwicklung"
                        ]
                      },
                      "slug": {
                        "type": "string",
                        "examples": [
                          "bevoelkerungsentwicklung"
                        ]
                      }
                    },
                    "required": [
                      "name",
                      "slug"
                    ],
                    "description": "Kategorie im BIPU Datenmodell, wird für die Suche verwendet, damit nach Statistik-Kategorie gesucht werden kann."
                  },
                  "source": {
                    "type": "string",
                    "description": "Beschreibt Statistik (Herkunft)"
                  },
                  "info_text": {
                    "type": "string"
                  },
                  "property": {
                    "type": "string",
                    "examples": [
                      "Bodenversiegelung [%]"
                    ]
                  },
                  "unit": {
                    "type": "string",
                    "examples": [
                      "%"
                    ]
                  },
                  "values": {
                    "type": "array",
                    "items": {
                      "properties": {
                        "display_date": {
                          "type": "string",
                          "description": "Zeitwert für die Anzeige im Diagramm",
                          "$comment": "Ehemaliges Indexfeld: time"
                        },
                        "value": {
                          "type": "string",
                          "description": "Wert pro Zeitwert"
                        }
                      },
                      "required": [
                        "display_date",
                        "value"
                      ]
                    }
                  },
                  "license": {
                    "type": "object",
                    "properties": {
                      "name": {
                        "type": "string"
                      },
                      "url": {
                        "type": "string"
                      }
                    },
                    "required": [
                      "name"
                    ]
                  },
                  "owner": {
                    "type": "object",
                    "properties": {
                      "name": {
                        "type": "string"
                      },
                      "url": {
                        "type": "string"
                      }
                    },
                    "required": [
                      "name"
                    ]
                  },
                  "temporal": {
                    "type": "object",
                    "properties": {
                      "date": {
                        "type": "string",
                        "format": "date-time",
                        "description": "Datum des Ereignisses"
                      },
                      "date_range": {
                        "type": "object",
                        "title": "Zeitabschnitt",
                        "description": "Zeitabschnitt des Ereignis. Diese Angabe ist optimiert für die Verwendung in Elasticsearch, welches den Typ \"date_range\" unterstützt und optimiert abgefragt werden kann.",
                        "properties": {
                          "gte": {
                            "type": "string",
                            "format": "date-time",
                            "description": "Startdatum der Zeitangabe"
                          },
                          "lte": {
                            "type": "string",
                            "format": "date-time",
                            "description": "Enddatum der Zeitangabe"
                          }
                        }
                      },
                      "date_text": {
                        "type": "string",
                        "description": "Wird verwendet, wenn der Wert nicht in eine gültige DateRange Übertragbar ist",
                        "examples": [
                          "Sommer 2010"
                        ]
                      },
                      "date_type": {
                        "type": "string",
                        "description": "Typ der Zeitangabe",
                        "enum": [
                          "created",
                          "last_updated",
                          "first_published"
                        ]
                      }
                    },
                    "oneOf": [
                      {
                        "required": [
                          "date"
                        ]
                      },
                      {
                        "required": [
                          "date_range"
                        ]
                      },
                      {
                        "required": [
                          "date_text"
                        ]
                      }
                    ],
                    "description": "Datum der Erhebung der Statistik",
                    "$comment": "Ehemaliges Indexfeld: object_date"
                  },
                  "import_ref": {
                    "type": "object",
                    "properties": {
                      "original": {
                        "type": "integer",
                        "description": "enthält Datenbank ID der Statistik"
                      }
                    }
                  }
                },
                "required": [
                  "oid",
                  "name",
                  "property",
                  "unit",
                  "values",
                  "import_ref"
                ],
                "description": "Statistiken, die einem Objekt zugeordnet sind. Z.B. Einwohnerzahlen, Flächenversiegelung über mehrere Jahre",
                "$comment": "Ehemaliges Indexfeld: properties.statistics"
              },
              "minItems": 0
            },
            "collections": {
              "type": "array",
              "items": {
                "type": "object",
                "properties": {
                  "oid": {
                    "type": "string",
                    "description": "Eindeutige ID der Sammlung",
                    "examples": [
                      "Arten-bfn-ffh-de4622302"
                    ]
                  },
                  "name": {
                    "type": "string",
                    "description": "Name der Sammlung",
                    "examples": [
                      "Arten"
                    ]
                  },
                  "category": {
                    "type": "object",
                    "properties": {
                      "name": {
                        "type": "string",
                        "examples": [
                          "Bevölkerungsentwicklung "
                        ]
                      },
                      "slug": {
                        "type": "string",
                        "examples": [
                          "bevoelkerungsentwicklung "
                        ]
                      }
                    },
                    "required": [
                      "name",
                      "slug"
                    ],
                    "description": "Kategorie im BIPU Datenmodell, wird für die Suche verwendet, damit nach Sammlungs-Kategorie gesucht werden kann."
                  },
                  "source": {
                    "type": "string",
                    "description": "Beschreibt Sammlung (Herkunft)"
                  },
                  "info_text": {
                    "type": "string"
                  },
                  "url": {
                    "type": "string",
                    "description": "URL zu einer Sammlung, z.B. zu den Arten eines Naturschutzgebietes in observation.org"
                  },
                  "groups": {
                    "type": "array",
                    "items": {
                      "type": "object",
                      "properties": {
                        "name": {
                          "type": "string",
                          "description": "Name der Artengruppe"
                        },
                        "url": {
                          "type": "string",
                          "description": "URL, z.B. für Artengruppenanzeige eines Naturschutzgebietes auf observation.org"
                        },
                        "items": {
                          "type": "array",
                          "items": {
                            "type": "object",
                            "properties": {
                              "name": {
                                "type": "string"
                              },
                              "url": {
                                "type": "string"
                              },
                              "temporal": {
                                "type": "object",
                                "properties": {
                                  "date": {
                                    "type": "string",
                                    "format": "date-time",
                                    "description": "Datum des Ereignisses"
                                  },
                                  "date_range": {
                                    "type": "object",
                                    "title": "Zeitabschnitt",
                                    "description": "Zeitabschnitt des Ereignis. Diese Angabe ist optimiert für die Verwendung in Elasticsearch, welches den Typ \"date_range\" unterstützt und optimiert abgefragt werden kann.",
                                    "properties": {
                                      "gte": {
                                        "type": "string",
                                        "format": "date-time",
                                        "description": "Startdatum der Zeitangabe"
                                      },
                                      "lte": {
                                        "type": "string",
                                        "format": "date-time",
                                        "description": "Enddatum der Zeitangabe"
                                      }
                                    }
                                  },
                                  "date_text": {
                                    "type": "string",
                                    "description": "Wird verwendet, wenn der Wert nicht in eine gültige DateRange Übertragbar ist",
                                    "examples": [
                                      "Sommer 2010"
                                    ]
                                  },
                                  "date_type": {
                                    "type": "string",
                                    "description": "Typ der Zeitangabe",
                                    "enum": [
                                      "created",
                                      "last_updated",
                                      "first_published"
                                    ]
                                  }
                                },
                                "oneOf": [
                                  {
                                    "required": [
                                      "date"
                                    ]
                                  },
                                  {
                                    "required": [
                                      "date_range"
                                    ]
                                  },
                                  {
                                    "required": [
                                      "date_text"
                                    ]
                                  }
                                ],
                                "description": "Fund, Beobachtung in Observation.org",
                                "$comment": "Ehemaliges Indexfeld: object_date"
                              },
                              "image": {
                                "allOf": [
                                  {
                                    "type": "object",
                                    "title": "Basisinformationen",
                                    "required": [
                                      "url"
                                    ],
                                    "description": "Liste der Inhalte",
                                    "properties": {
                                      "url": {
                                        "type": "string"
                                      },
                                      "title": {
                                        "type": "string"
                                      },
                                      "description": {
                                        "type": "string"
                                      }
                                    }
                                  },
                                  {
                                    "description": "Angaben zur Herkunft des Bildes",
                                    "type": "object",
                                    "title": "Zusätzliche Informationen",
                                    "properties": {
                                      "temporal": {
                                        "type": "object",
                                        "properties": {
                                          "date": {
                                            "type": "string",
                                            "format": "date-time",
                                            "description": "Datum des Ereignisses"
                                          },
                                          "date_range": {
                                            "type": "object",
                                            "title": "Zeitabschnitt",
                                            "description": "Zeitabschnitt des Ereignis. Diese Angabe ist optimiert für die Verwendung in Elasticsearch, welches den Typ \"date_range\" unterstützt und optimiert abgefragt werden kann.",
                                            "properties": {
                                              "gte": {
                                                "type": "string",
                                                "format": "date-time",
                                                "description": "Startdatum der Zeitangabe"
                                              },
                                              "lte": {
                                                "type": "string",
                                                "format": "date-time",
                                                "description": "Enddatum der Zeitangabe"
                                              }
                                            }
                                          },
                                          "date_text": {
                                            "type": "string",
                                            "description": "Wird verwendet, wenn der Wert nicht in eine gültige DateRange Übertragbar ist",
                                            "examples": [
                                              "Sommer 2010"
                                            ]
                                          },
                                          "date_type": {
                                            "type": "string",
                                            "description": "Typ der Zeitangabe",
                                            "enum": [
                                              "created",
                                              "last_updated",
                                              "first_published"
                                            ]
                                          }
                                        },
                                        "oneOf": [
                                          {
                                            "required": [
                                              "date"
                                            ]
                                          },
                                          {
                                            "required": [
                                              "date_range"
                                            ]
                                          },
                                          {
                                            "required": [
                                              "date_text"
                                            ]
                                          }
                                        ],
                                        "description": "z.B. Aufnahmedatum eines Bildes",
                                        "$comment": "Ehemaliges Indexfeld: object_date"
                                      },
                                      "source": {
                                        "type": "object",
                                        "properties": {
                                          "name": {
                                            "type": "string"
                                          },
                                          "url": {
                                            "type": "string"
                                          }
                                        },
                                        "required": [
                                          "name"
                                        ]
                                      },
                                      "license": {
                                        "type": "object",
                                        "properties": {
                                          "name": {
                                            "type": "string"
                                          },
                                          "url": {
                                            "type": "string"
                                          }
                                        },
                                        "required": [
                                          "name"
                                        ]
                                      },
                                      "author": {
                                        "type": "object",
                                        "properties": {
                                          "name": {
                                            "type": "string"
                                          },
                                          "url": {
                                            "type": "string"
                                          }
                                        },
                                        "required": [
                                          "name"
                                        ]
                                      }
                                    }
                                  }
                                ],
                                "required": [
                                  "url"
                                ]
                              }
                            },
                            "required": [
                              "name"
                            ]
                          },
                          "minItems": 0
                        }
                      },
                      "required": [
                        "name"
                      ],
                      "description": "z.B. eine Artengruppen"
                    },
                    "minItems": 0
                  },
                  "license": {
                    "type": "object",
                    "properties": {
                      "name": {
                        "type": "string"
                      },
                      "url": {
                        "type": "string"
                      }
                    },
                    "required": [
                      "name"
                    ]
                  },
                  "owner": {
                    "type": "object",
                    "properties": {
                      "name": {
                        "type": "string"
                      },
                      "url": {
                        "type": "string"
                      }
                    },
                    "required": [
                      "name"
                    ]
                  },
                  "temporal": {
                    "type": "string",
                    "description": "Datum der Erhebung der Statistik",
                    "$comment": "Ehemaliges Indexfeld: object_date"
                  },
                  "import_ref": {
                    "type": "object",
                    "properties": {
                      "original": {
                        "type": "integer",
                        "description": "enthält Datenbank ID der collection"
                      }
                    }
                  }
                },
                "required": [
                  "oid",
                  "name",
                  "import_ref"
                ],
                "description": "z.B. Beobachtete Arten in einem Naturschutzgebiet",
                "$comment": "Ehemaliges Indexfeld: properties.collections"
              },
              "minItems": 0
            },
            "sensor": {
              "type": "object",
              "properties": {
                "measurements": {
                  "type": "array",
                  "title": "Messwertequellen",
                  "items": {
                    "type": "object",
                    "properties": {
                      "name": {
                        "type": "string",
                        "description": "Anzeigename der Messreihe",
                        "examples": [
                          "Luftqualitätsindex"
                        ]
                      },
                      "unit": {
                        "type": "string",
                        "description": "Einheit der Messreihe",
                        "examples": [
                          "Index [1-6]"
                        ]
                      },
                      "property": {
                        "type": "string",
                        "description": "technischer Name der Messreihe, wird in API zu einem Datastream im STA server aufgelöst (entspricht datasources.id)",
                        "examples": [
                          "LQI"
                        ]
                      },
                      "resolutions": {
                        "type": "object",
                        "description": "Zeitliche Auflösungen der Messreihe zusammen mit Messwerttyp. Hier werden die unterschiedlichen Messwerttypen als dynamische Properties eingetragen. Jeder Messwerttyp hat dabei eine Liste von Auflösungen.",
                        "examples": [
                          {
                            "P1M": [
                              "MEAN",
                              "MIN",
                              "MAX"
                            ]
                          }
                        ]
                      },
                      "interface": {
                        "type": "string",
                        "description": "Name des Interfaces über das die Messreihe abgerufen wird",
                        "examples": [
                          "sta"
                        ]
                      },
                      "url": {
                        "type": "string",
                        "description": "Sensor-URL (kann zukünftig entfallen, wenn z.B. LQI als Datastream vorliegt und nicht berechnet werden muss)"
                      },
                      "datasource": {
                        "type": "array",
                        "title": "Datenquelle",
                        "items": {
                          "type": "object",
                          "properties": {
                            "url": {
                              "type": "string",
                              "title": "Datastream-URL"
                            },
                            "type": {
                              "type": "string",
                              "title": "Messwerttyp",
                              "examples": [
                                "MEAN"
                              ]
                            },
                            "resolution": {
                              "type": "string",
                              "title": "Messwerttyp",
                              "examples": [
                                "P1M"
                              ]
                            }
                          }
                        }
                      }
                    }
                  }
                }
              }
            }
          },
          "allOf": [
            {
              "if": {
                "properties": {
                  "metadata": {
                    "properties": {
                      "document_type": {
                        "const": "object"
                      }
                    }
                  }
                },
                "required": [
                  "type"
                ]
              },
              "then": {
                "required": [
                  "source_id"
                ]
              }
            },
            {
              "if": {
                "properties": {
                  "metadata": {
                    "properties": {
                      "document_type": {
                        "const": "map"
                      }
                    }
                  }
                },
                "required": [
                  "type"
                ]
              },
              "then": {
                "required": [
                  "origin",
                  "classification"
                ]
              }
            }
          ],
          "required": [
            "oid",
            "part",
            "category",
            "import_ref"
          ]
        }
      },
      "required": [
        "metadata"
      ]
    }
  ]
}