{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://b2base.eu/schemas/1.0.0-draft.1/person/identificationnumbers.editor.schema.json",
  "title": "Identifikationsnummern – 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/person/identificationnumbers.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": "Systembezogene Kennungen einer Person.",
  "properties": {
    "identifiers": {
      "type": "array",
      "description": "Kennungen aus ausdrücklich bezeichneten Systemen.",
      "items": {
        "$ref": "#/$defs/Identifier"
      }
    },
    "extensions": {
      "type": "object",
      "description": "Vereinbarte Erweiterungen; Schlüssel als absolute URI des Herausgebers. Keine stillschweigende Änderung von Kernfeldern.",
      "properties": {}
    }
  },
  "required": [
    "identifiers"
  ],
  "$defs": {
    "Identifier": {
      "type": "object",
      "description": "Kennung zusammen mit ihrem Namensraum. Führende Nullen, Trennzeichen und Groß-/Kleinschreibung erhalten.",
      "properties": {
        "value": {
          "type": "string",
          "minLength": 1,
          "description": "Kennung als Text."
        },
        "scheme": {
          "type": "string",
          "minLength": 1,
          "description": "URI des Kennungssystems; kein allgemeines weltweites Nummernformat.",
          "format": "uri"
        },
        "type": {
          "type": "string",
          "minLength": 1,
          "description": "Optionale fachliche Bezeichnung."
        },
        "issuer": {
          "$ref": "#/$defs/Issuer"
        },
        "country": {
          "$ref": "#/$defs/CountryCode"
        },
        "validFrom": {
          "type": "string",
          "minLength": 1,
          "description": "Beginn der angegebenen Gültigkeit.",
          "format": "date"
        },
        "validUntil": {
          "type": "string",
          "minLength": 1,
          "description": "Letzter Gültigkeitstag, falls bekannt.",
          "format": "date"
        }
      },
      "required": [
        "value",
        "scheme"
      ]
    },
    "Issuer": {
      "type": "object",
      "description": "Aussteller einschließlich internationaler Organisationen.",
      "properties": {
        "authority": {
          "type": "string",
          "minLength": 1,
          "description": "Originalname der Behörde oder Organisation."
        },
        "id": {
          "type": "string",
          "minLength": 1,
          "description": "Stabile Kennung des Ausstellers.",
          "format": "uri"
        },
        "country": {
          "$ref": "#/$defs/CountryCode",
          "description": "Optional: Land des Ausstellers; keine erfundene Länderkennung für internationale Organisationen."
        },
        "region": {
          "type": "string",
          "minLength": 1,
          "description": "Optionale Verwaltungseinheit oder Zuständigkeitsbezeichnung."
        }
      },
      "required": [
        "authority"
      ]
    },
    "CountryCode": {
      "type": "string",
      "minLength": 1,
      "description": "ISO 3166-1 Alpha-2, Großbuchstaben. Das Muster prüft nur die Schreibweise; zugewiesenen Code und Gültigkeitszeitpunkt gesondert prüfen.",
      "pattern": "^[A-Z]{2}$"
    }
  },
  "examples": [
    {
      "identifiers": [
        {
          "value": "001-ABC-42",
          "scheme": "https://example.org/identifiers/customer",
          "type": "customerId"
        }
      ]
    }
  ]
}
