{
  "version": 1,
  "generated_at": "2026-10-04",
  "purpose": "Einfacher und sicherer Datenvertrag für neue oder geänderte Veranstaltungen.",
  "required_fields": [
    "id",
    "title",
    "start",
    "venue",
    "city",
    "organizer",
    "source_url",
    "status"
  ],
  "optional_fields": [
    "end",
    "time_start",
    "time_end",
    "region",
    "category",
    "scope",
    "source_type",
    "summary",
    "tags",
    "related_partner_ids",
    "related_knowledge_ids",
    "newsletter_eligible",
    "image",
    "image_rights"
  ],
  "identity_key": [
    "title",
    "start",
    "venue",
    "organizer"
  ],
  "allowed_status": [
    "draft",
    "review_required",
    "published",
    "archived",
    "cancelled"
  ],
  "publication_gate": [
    "source_url vorhanden",
    "Datum plausibel und lokal interpretierbar",
    "Veranstalter benannt",
    "Ort oder Venue benannt",
    "keine Dublette nach identity_key",
    "bei externer Veranstaltung Quelle und Fremdveranstalter erhalten",
    "Bildrechte separat geklärt, bevor Bild veröffentlicht wird"
  ],
  "lifecycle": {
    "current": "start <= heute <= end",
    "upcoming": "start > heute",
    "archived": "end < heute",
    "review_required": "fehlende oder widersprüchliche Felder",
    "cancelled": "explizit abgesagt"
  },
  "source_priority": [
    "offizielle Veranstalter- oder Betreiberquelle",
    "kommunaler oder Naturpark-Veranstaltungskalender",
    "Fachpartner",
    "regionale Sekundärquelle"
  ],
  "ingestion_modes": [
    {
      "id": "manual-json",
      "status": "active",
      "note": "Aktueller sicherer Basispfad."
    },
    {
      "id": "los-event-intake",
      "status": "prepared",
      "note": "Späterer zentraler Event-Intake mit Validierung und Freigabegate."
    },
    {
      "id": "source-monitor",
      "status": "prepared",
      "note": "Quellenmonitor darf Änderungen melden, aber nicht ungeprüft veröffentlichen."
    }
  ]
}
