{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://b2base.eu/schemas/1.0.0-draft.1/process/task.editor.schema.json",
  "title": "Aufgaben – Feldübernahme",
  "$comment": "Nur zur Feldübernahme im B2Base-Designer. Struktur-, Listen- und bedingte Regeln sind reduziert; vollständige Prüfung mit https://b2base.eu/schemas/1.0.0-draft.1/process/task.schema.json. Formate außer date/email werden derzeit nicht durch die Runtime geprüft. Freie Daten-/Erweiterungsobjekte benötigen eigene Feldschemata.",
  "type": "object",
  "description": "Eine Aufgabe; Teilaufgaben werden über stabile IDs verknüpft.",
  "properties": {
    "id": {
      "type": "string",
      "minLength": 1,
      "description": "Aufgabenkennung.",
      "format": "uri"
    },
    "title": {
      "type": "string",
      "minLength": 1,
      "description": "Aufgabentitel."
    },
    "description": {
      "type": "string",
      "minLength": 1,
      "description": "Optionale Arbeitsanweisung."
    },
    "status": {
      "type": "string",
      "minLength": 1,
      "description": "Bearbeitungsstatus.",
      "enum": [
        "pending",
        "inProgress",
        "completed",
        "cancelled"
      ]
    },
    "assignee": {
      "$ref": "#/$defs/PartyRef"
    },
    "parentTaskId": {
      "type": "string",
      "minLength": 1,
      "description": "Optionale übergeordnete Aufgabe.",
      "format": "uri"
    },
    "workflowInstanceId": {
      "type": "string",
      "minLength": 1,
      "description": "Zugehöriger Workflowlauf.",
      "format": "uri"
    },
    "dueAt": {
      "type": "string",
      "minLength": 1,
      "description": "Frist als Zeitpunkt mit Offset.",
      "format": "date-time"
    },
    "completedAt": {
      "type": "string",
      "minLength": 1,
      "description": "Zeitpunkt des Abschlusses.",
      "format": "date-time"
    },
    "documentRefs": {
      "type": "array",
      "description": "Zugehörige Dokumentkennungen.",
      "items": {
        "type": "string",
        "minLength": 1,
        "description": "Dokument-URI.",
        "format": "uri"
      }
    },
    "extensions": {
      "type": "object",
      "description": "Vereinbarte Erweiterungen; Schlüssel als absolute URI des Herausgebers. Keine stillschweigende Änderung von Kernfeldern.",
      "properties": {}
    }
  },
  "required": [
    "id",
    "title",
    "status"
  ],
  "$defs": {
    "PartyRef": {
      "type": "object",
      "description": "Verweis auf eine separat gespeicherte Person oder juristische Person; kein JSON-Schema-Verweis.",
      "properties": {
        "entityType": {
          "type": "string",
          "minLength": 1,
          "description": "Art der referenzierten Einheit.",
          "enum": [
            "person",
            "legalEntity"
          ]
        },
        "id": {
          "type": "string",
          "minLength": 1,
          "description": "Stabile absolute URI oder URN des Datensatzes, nicht dessen Name.",
          "format": "uri"
        },
        "name": {
          "type": "string",
          "minLength": 1,
          "description": "Optionale Anzeige; nicht als Identitätsschlüssel verwenden."
        }
      },
      "required": [
        "entityType",
        "id"
      ]
    }
  },
  "examples": [
    {
      "id": "urn:example:task:42",
      "title": "Unterlagen prüfen",
      "status": "pending",
      "dueAt": "2026-10-01T17:00:00+02:00"
    },
    {
      "id": "urn:example:task:43",
      "title": "Daten übernommen",
      "status": "completed",
      "completedAt": "2026-09-08T08:30:00Z"
    }
  ]
}
