{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://schema.fitko.de/fit-connect/process-definition/vereinsfest/schemas/MessageFlow6_Einwendungen.schema.json",
  "title": "Einwendungen",
  "description": "Payload für MessageFlow #6: Einwendung/Widerspruch zur Anzeige bzw. zur Rückmeldung/Bescheid im Kontext eines vorübergehenden Gaststättenbetriebs (z.B. Vereinsfest).",
  "type": "object",
  "additionalProperties": false,
  "$defs": {
    "Id": {
      "type": "string",
      "minLength": 1,
      "maxLength": 128,
      "description": "Eindeutige Kennung (System-/Vorgangs-ID)."
    },
    "Timestamp": {
      "type": "string",
      "format": "date-time",
      "description": "Zeitpunkt im ISO-8601-Format (UTC oder mit Zeitzonenoffset)."
    },
    "Kontakt": {
      "type": "object",
      "title": "Kontakt (optional)",
      "description": "Kontaktmöglichkeit für Rückfragen zur Einwendung.",
      "additionalProperties": false,
      "properties": {
        "name": {
          "type": "string",
          "minLength": 1,
          "maxLength": 200,
          "description": "Ansprechperson oder Funktionspostfach (Name)."
        },
        "organisation": {
          "type": "string",
          "minLength": 1,
          "maxLength": 200,
          "description": "Organisation/Verein/Behörde/Einheit."
        },
        "email": {
          "type": "string",
          "format": "email",
          "description": "E-Mail-Adresse für Rückfragen."
        },
        "telefon": {
          "type": "string",
          "minLength": 3,
          "maxLength": 30,
          "description": "Telefonnummer für Rückfragen."
        },
        "fax": {
          "type": "string",
          "minLength": 3,
          "maxLength": 30,
          "description": "Faxnummer (falls noch genutzt)."
        }
      }
    },
    "Dokument": {
      "type": "object",
      "title": "Dokument/Anlage",
      "description": "Optionales Dokument zur Einwendung (z.B. Schreiben, Nachweis, sonstige Anlage).",
      "additionalProperties": false,
      "properties": {
        "dokumentId": {
          "$ref": "#/$defs/Id",
          "description": "Optionale Dokument-ID."
        },
        "kategorie": {
          "type": "string",
          "description": "Kategorie/Typ des Dokuments.",
          "enum": [
            "einwendungsschreiben",
            "begruendung",
            "nachweis",
            "anlage",
            "sonstiges"
          ]
        },
        "titel": {
          "type": "string",
          "maxLength": 200,
          "description": "Optionaler Titel."
        },
        "dateiname": {
          "type": "string",
          "maxLength": 255,
          "description": "Optionaler Dateiname."
        },
        "mimeType": {
          "type": "string",
          "maxLength": 100,
          "description": "Optionaler MIME-Type (z.B. application/pdf)."
        },
        "dateiRef": {
          "type": "string",
          "minLength": 1,
          "maxLength": 500,
          "description": "Referenz/ID auf die Datei im Austausch-/Dokumenten-System (keine Binärdaten)."
        },
        "hashSha256": {
          "type": "string",
          "pattern": "^[A-Fa-f0-9]{64}$",
          "description": "Optionaler SHA-256 Hash der Datei (hex)."
        }
      },
      "required": [
        "kategorie",
        "dateiRef"
      ]
    },
    "Bezug": {
      "type": "object",
      "title": "Bezug (optional)",
      "description": "Optionaler Bezug auf ein vorheriges Ereignis/Dokument im Vorgang (z.B. Rückmeldung/Bescheid, Auflage, Nachforderung).",
      "additionalProperties": false,
      "properties": {
        "rueckmeldungId": {
          "$ref": "#/$defs/Id",
          "description": "Referenz auf die Rückmeldung/Bescheid-ID (MessageFlow #4), gegen die sich die Einwendung richtet."
        },
        "aktenzeichen": {
          "type": "string",
          "minLength": 1,
          "maxLength": 128,
          "description": "Optionales Aktenzeichen der Behörde."
        },
        "nachforderungId": {
          "$ref": "#/$defs/Id",
          "description": "Optionaler Bezug auf eine Nachforderung (MessageFlow #2), falls sich die Einwendung darauf bezieht."
        },
        "betroffenerPunkt": {
          "type": "string",
          "minLength": 1,
          "maxLength": 500,
          "description": "Optionaler genauer Bezug (z.B. Auflagen-ID, JSON-Pfad, Dokumenttyp oder fachlicher Verweis)."
        }
      }
    }
  },
  "properties": {
    "vorgangsId": {
      "$ref": "#/$defs/Id",
      "description": "ID/Aktenzeichen zur eindeutigen Zuordnung des Vorgangs (Anzeige)."
    },
    "einwendungId": {
      "$ref": "#/$defs/Id",
      "description": "Eindeutige ID der Einwendung/Widerspruchs (wird in der Antwort zur Referenzierung verwendet)."
    },
    "erstelltAm": {
      "$ref": "#/$defs/Timestamp",
      "description": "Zeitpunkt der Erstellung/Absendung der Einwendung."
    },
    "art": {
      "type": "string",
      "description": "Art der Rückmeldung aus Sicht der einreichenden Stelle.",
      "enum": [
        "einwendung",
        "widerspruch",
        "rueckfrage",
        "korrekturbitte"
      ],
      "default": "einwendung"
    },
    "bezug": {
      "$ref": "#/$defs/Bezug"
    },
    "text": {
      "type": "string",
      "minLength": 1,
      "maxLength": 10000,
      "description": "Freitext der Einwendung (Begründung, Hinweise, Klarstellungen)."
    },
    "anlagen": {
      "type": "array",
      "minItems": 0,
      "items": {
        "$ref": "#/$defs/Dokument"
      },
      "description": "Optionale Anlagen zur Einwendung."
    },
    "kontakt": {
      "$ref": "#/$defs/Kontakt"
    },
    "hinweise": {
      "type": "string",
      "maxLength": 8000,
      "description": "Optionale zusätzliche Hinweise (z.B. gewünschter Kommunikationsweg, Verweise)."
    },
    "bezugAnzeigeSchema": {
      "type": "object",
      "title": "Bezug zum Anzeige-Schema (optional)",
      "description": "Optionaler Hinweis, auf welches Fachdatenschema (Anzeige) sich die Einwendung bezieht.",
      "additionalProperties": false,
      "properties": {
        "schemaId": {
          "type": "string",
          "minLength": 1,
          "maxLength": 500,
          "description": "Schema-$id oder andere Kennung.",
          "default": "https://schema.fitko.de/fit-connect/process-definition/vereinsfest/schemas/MessageFlow1_S05000581V1.1_2025-11-25-1764059338437.schema.json"
        },
        "schemaVersion": {
          "type": "string",
          "minLength": 1,
          "maxLength": 100,
          "description": "Version des Fachdatenschemas.",
          "default": "S05000581V1.1"
        }
      }
    }
  },
  "required": [
    "vorgangsId",
    "einwendungId",
    "erstelltAm",
    "text"
  ],
  "examples": [
    {
      "vorgangsId": "VF-2026-000123",
      "einwendungId": "EW-2026-000007",
      "erstelltAm": "2026-02-16T12:40:00+01:00",
      "art": "einwendung",
      "bezug": {
        "rueckmeldungId": "RB-2026-000015",
        "aktenzeichen": "34.1-123/2026",
        "betroffenerPunkt": "Auflage: Ausschank nur bis 22:00 Uhr"
      },
      "text": "Wir bitten um Überprüfung der Auflage zur Ausschankzeit. Das Vereinsfest endet um 23:00 Uhr; wir können zusätzliche Sicherheitsmaßnahmen (Ordnerdienst) nachweisen.",
      "anlagen": [
        {
          "kategorie": "nachweis",
          "titel": "Sicherheitskonzept",
          "dateiname": "sicherheitskonzept.pdf",
          "mimeType": "application/pdf",
          "dateiRef": "DOC-STORE-8f3f2b2a"
        }
      ],
      "kontakt": {
        "organisation": "SV Musterhausen e.V.",
        "email": "vorstand@sv-musterhausen.de",
        "telefon": "+49 30 1234567"
      },
      "hinweise": "Bitte Rückmeldung bevorzugt per E-Mail.",
      "bezugAnzeigeSchema": {
        "schemaId": "https://schema.fitko.de/fit-connect/process-definition/vereinsfest/schemas/MessageFlow1_S05000581V1.1_2025-11-25-1764059338437.schema.json",
        "schemaVersion": "S05000581V1.1"
      }
    }
  ]
}