{ "$schema": "https://json-schema.org/draft/2020-12/schema", "$id": "https://b2base.eu/schemas/1.0.0-draft.1/person/contactdetails.schema.json", "title": "Kontaktmöglichkeiten", "$comment": "B2Base 1.0.0-draft.1. Projektentwurf, kein durch ISO oder andere Normungsgremien verabschiedeter Standard.", "type": "object", "description": "Mindestens ein bekannter Kontaktkanal.", "properties": { "emails": { "type": "array", "description": "E-Mail-Adressen; Unicode ist zulässig.", "items": { "type": "object", "description": "Ein E-Mail-Kontakt.", "properties": { "type": { "type": "string", "minLength": 1, "description": "Verwendungszweck." }, "address": { "type": "string", "minLength": 1, "description": "Internationale E-Mail-Adresse; Zustellbarkeit und SMTPUTF8-Unterstützung separat prüfen.", "format": "idn-email" }, "language": { "$ref": "#/$defs/LanguageTag" } }, "required": [ "address" ], "additionalProperties": false }, "minItems": 1 }, "phoneNumbers": { "type": "array", "description": "Internationale Telefonnummern.", "items": { "type": "object", "description": "Eine vollständig normalisierte Rufnummer ohne Durchwahl.", "properties": { "type": { "type": "string", "minLength": 1, "description": "Verwendungszweck." }, "number": { "type": "string", "minLength": 1, "description": "Pluszeichen und höchstens 15 Ziffern nach E.164; keine Aussage über tatsächliche Vergabe.", "pattern": "^\\+[1-9][0-9]{1,14}$" }, "extension": { "type": "string", "minLength": 1, "description": "Durchwahl separat; kein Bestandteil der E.164-Rufnummer." }, "displayNumber": { "type": "string", "minLength": 1, "description": "Optionale ursprüngliche Schreibweise." } }, "required": [ "number" ], "additionalProperties": false }, "minItems": 1 }, "socialMedia": { "type": "array", "description": "Weitere Plattformkontakte.", "items": { "type": "object", "description": "Plattform und Kennung.", "properties": { "platform": { "type": "string", "minLength": 1, "description": "Plattform." }, "handle": { "type": "string", "minLength": 1, "description": "Unveränderter Benutzername." }, "url": { "type": "string", "minLength": 1, "description": "Optionaler Profil-Link.", "format": "uri" } }, "required": [ "platform", "handle" ], "additionalProperties": false }, "minItems": 1 }, "websites": { "type": "array", "description": "Webseiten.", "items": { "type": "object", "description": "Eine Webseite.", "properties": { "type": { "type": "string", "minLength": 1, "description": "Verwendungszweck." }, "url": { "type": "string", "minLength": 1, "description": "Internationale Webadresse; Abruf gesondert entscheiden.", "format": "iri", "pattern": "^https?://" } }, "required": [ "url" ], "additionalProperties": false }, "minItems": 1 }, "extensions": { "type": "object", "description": "Vereinbarte Erweiterungen; Schlüssel als absolute URI des Herausgebers. Keine stillschweigende Änderung von Kernfeldern.", "properties": {}, "additionalProperties": true, "propertyNames": { "format": "uri" } } }, "additionalProperties": false, "anyOf": [ { "required": [ "emails" ] }, { "required": [ "phoneNumbers" ] }, { "required": [ "socialMedia" ] }, { "required": [ "websites" ] } ], "$defs": { "LanguageTag": { "type": "string", "minLength": 1, "description": "BCP-47-Sprachtag, etwa de, zh-Hant-TW, sr-Latn oder x-internal. Das Muster prüft nur die Grundform, nicht Registrierung oder alle BCP-47-Regeln.", "pattern": "^[A-Za-z]{1,8}(-[A-Za-z0-9]{1,8})*$" } }, "examples": [ { "phoneNumbers": [ { "type": "work", "number": "+442079460958", "extension": "42" } ] }, { "emails": [ { "address": "δοκιμή@παράδειγμα.δοκιμή" } ], "websites": [ { "url": "https://例え.テスト/" } ] } ] }