{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://nexaisoftware.de/schemas/automatisierungen-export.json",
  "title": "NexAI Automatisierungen – Exportpaket",
  "description": "Struktur des Exportpakets der Automatisierungen, die NexAI für einen Kunden betreibt (Datenverordnung (EU) 2023/2854: Register nach Art. 26 Buchst. b, Export nach Art. 30 Abs. 5). Enthalten sind die Vorgaben und Inhalte des Kunden in seinen Abläufen, etwa Texte, Empfänger und verknüpfte Zielsysteme, und die Ausführungsprotokolle, soweit gespeichert: Erfolgreiche Ausführungen speichert NexAI nicht, fehlgeschlagene höchstens 24 Stunden. Nicht enthalten sind die Abläufe selbst, ihr Code und die Anweisungen an Sprachmodelle (Arbeitsergebnisse von NexAI, Art. 30 Abs. 6) sowie Zugangsdaten. Was eine Automatisierung in Systeme des Kunden schreibt, liegt dort. Das Paket ist eine JSON-Datei nach RFC 8259, Zeichenkodierung UTF-8 (RFC 3629).",
  "type": "object",
  "additionalProperties": false,
  "required": [
    "schema",
    "formatVersion",
    "exportiertAm",
    "kunde",
    "ablaeufe",
    "ausfuehrungen"
  ],
  "properties": {
    "schema": {
      "const": "https://nexaisoftware.de/schemas/automatisierungen-export.json"
    },
    "formatVersion": {
      "const": "1.0",
      "description": "Fassung dieses Formats."
    },
    "exportiertAm": {
      "type": "string",
      "format": "date-time",
      "description": "Zeitpunkt, zu dem NexAI dieses Paket erzeugt hat, nach RFC 3339."
    },
    "kunde": {
      "type": "string",
      "minLength": 1,
      "description": "Name des Kunden."
    },
    "ablaeufe": {
      "type": "array",
      "description": "Die Abläufe des Kunden, je mit seinen Vorgaben und Inhalten.",
      "items": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "kennung",
          "name",
          "zweck",
          "eingeschaltet",
          "ausloeser",
          "vorgaben",
          "texte",
          "empfaenger",
          "zielsysteme"
        ],
        "properties": {
          "kennung": {
            "type": "string",
            "description": "Kennung des Ablaufs, gleich in allen Exporten."
          },
          "name": {
            "type": "string",
            "minLength": 1
          },
          "zweck": {
            "type": "string",
            "description": "Was der Ablauf für den Kunden tut, in Worten."
          },
          "eingeschaltet": {
            "type": "boolean"
          },
          "ausloeser": {
            "type": "object",
            "additionalProperties": false,
            "required": [
              "art",
              "beschreibung"
            ],
            "properties": {
              "art": {
                "enum": [
                  "zeitplan",
                  "ereignis",
                  "eingang",
                  "manuell"
                ],
                "description": "zeitplan: zu festen Zeiten; ereignis: bei einem Ereignis in einem Zielsystem; eingang: bei einer eingehenden Nachricht oder Anfrage; manuell: nur auf Auslösung."
              },
              "beschreibung": {
                "type": "string",
                "description": "Wann der Ablauf startet, in Worten."
              },
              "zeitplan": {
                "type": "string",
                "description": "Bei art zeitplan: Ausdruck nach cron (fünf Felder), in der Zeitzone unter zeitzone."
              },
              "zeitzone": {
                "type": "string",
                "description": "IANA-Zeitzone, z. B. Europe/Berlin."
              }
            }
          },
          "vorgaben": {
            "type": "array",
            "description": "Einstellungen des Kunden, z. B. Fristen, Schwellenwerte, Filter.",
            "items": {
              "type": "object",
              "additionalProperties": false,
              "required": [
                "bezeichnung",
                "wert"
              ],
              "properties": {
                "bezeichnung": {
                  "type": "string",
                  "minLength": 1
                },
                "wert": {
                  "type": [
                    "string",
                    "number",
                    "boolean",
                    "array"
                  ],
                  "items": {
                    "type": "string"
                  }
                }
              }
            }
          },
          "texte": {
            "type": "array",
            "description": "Texte des Kunden, z. B. Vorlagen für Mails oder Nachrichten.",
            "items": {
              "type": "object",
              "additionalProperties": false,
              "required": [
                "bezeichnung",
                "text"
              ],
              "properties": {
                "bezeichnung": {
                  "type": "string",
                  "minLength": 1
                },
                "text": {
                  "type": "string"
                }
              }
            }
          },
          "empfaenger": {
            "type": "array",
            "description": "An wen der Ablauf schreibt.",
            "items": {
              "type": "object",
              "additionalProperties": false,
              "required": [
                "adresse"
              ],
              "properties": {
                "bezeichnung": {
                  "type": "string"
                },
                "adresse": {
                  "type": "string",
                  "description": "E-Mail-Adresse, Rufnummer nach E.164 oder Kanal."
                }
              }
            }
          },
          "zielsysteme": {
            "type": "array",
            "description": "Verknüpfte Systeme des Kunden. Nur die Bezeichnung, keine Zugangsdaten.",
            "items": {
              "type": "object",
              "additionalProperties": false,
              "required": [
                "bezeichnung"
              ],
              "properties": {
                "bezeichnung": {
                  "type": "string",
                  "description": "z. B. NexAI CRM, Google Kalender."
                },
                "zweck": {
                  "type": "string",
                  "description": "Wofür der Ablauf das System nutzt."
                }
              }
            }
          },
          "geaendertAm": {
            "type": "string",
            "format": "date-time",
            "description": "Letzte Änderung an Vorgaben oder Texten, nach RFC 3339."
          }
        }
      }
    },
    "ausfuehrungen": {
      "type": "array",
      "description": "Fehlgeschlagene Ausführungen der letzten 24 Stunden; ältere sind gelöscht.",
      "items": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "ablauf",
          "beginn",
          "status",
          "fehler"
        ],
        "properties": {
          "ablauf": {
            "type": "string",
            "description": "Kennung des Ablaufs."
          },
          "beginn": {
            "type": "string",
            "format": "date-time",
            "description": "Beginn, nach RFC 3339."
          },
          "status": {
            "enum": [
              "fehlgeschlagen"
            ],
            "description": "Erfolgreiche Ausführungen speichert NexAI nicht."
          },
          "fehler": {
            "type": "string",
            "description": "Fehlermeldung, ohne Programmcode."
          }
        }
      }
    }
  }
}
