B2Base

Bürokratie vereinfachen durch Standards

Benutzer-Werkzeuge

Webseiten-Werkzeuge


schemes:person:contactdetails

Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen der Seite angezeigt.

Link zu der Vergleichsansicht

Beide Seiten, vorherige ÜberarbeitungVorherige Überarbeitung
Nächste Überarbeitung
Vorherige Überarbeitung
schemes:person:contactdetails [2024/12/13 11:43] – [descripton] lars_gerulatschemes:person:contactdetails [2026/09/08 14:34] (aktuell) – B2Base-Schemaentwurf: internationale Datenmodelle, Beispiele und Erläuterungen 0.0.0.0
Zeile 1: Zeile 1:
-====== contactdetails ====== +====== Kontaktmöglichkeiten ====== 
-===== descripton ===== + 
-Das Schema für **[[schemes:person|person]]:contactdetails** enthält folgende Eigenschaften: +<WRAP b2hero> 
-  * E-Mail-Adresse: Das Hauptkontaktmittel (erforderlich)+**B2Base · 1.0.0-draft.1 · Projektentwurf** 
-  * Telefonnummern: Eine Liste mit Details zu verschiedenen Telefonnummern, einschließlich Typ (zBMobilArbeit)+ 
-  * Social-Media-Handles: Optionale Plattformen und Benutzernamen+E-Mail, Telefonnummern und Webkontakte ohne ein weltweit vorgeschriebenes Kontaktmittel. 
-===== examples ===== + 
-==== json notation ==== +[[schemes:scheme|Bibliothek]] · [[schemes:person|Personen]] · [[schemes:principles|Internationale Grundregeln]] 
-<code>+</WRAP> 
 + 
 +===== Direkt verwenden ===== 
 + 
 +[[b2schema>1.0.0-draft.1/person/contactdetails.schema.json|Austauschschema (JSON)]] · [[b2schema>1.0.0-draft.1/person/contactdetails.editor.schema.json|Schema für den Designer]] · [[b2schema>1.0.0-draft.1/person/contactdetails.examples.json|Beispieldaten]] 
 + 
 +**Austauschschema:** vollständige Strukturprüfung mit JSON Schema 2020-12. **Designer-Fassung:** gleiche Datenfelder mit reduzierten Strukturregeln zur Feldübernahme. [[:guidelines#im_workflowdesigner_verwenden|Anleitung und Grenzen]] 
 + 
 +===== Felder im Überblick ===== 
 + 
 +^ Feld ^ Typ ^ Pflicht im Modul ^ Bedeutung ^ 
 +| ''emails'' | array | Nein | E-Mail-Adressen; Unicode ist zulässig| 
 +| ''phoneNumbers'' | array | Nein | Internationale Telefonnummern. | 
 +| ''socialMedia'' | array | Nein | Weitere Plattformkontakte. | 
 +| ''websites'' | array | Nein | Webseiten. | 
 +| ''extensions'' | object | Nein | Vereinbarte Erweiterungen; Schlüssel als absolute URI des Herausgebers. Keine stillschweigende Änderung von Kernfeldern. | 
 + 
 +Pflichtangaben gelten für das jeweilige Objektwenn dieses Modul verwendet wirdZusätzliche Alternativen und Statusregeln stehen im AustauschschemaOptionale Felder weglassenwenn sie unbekannt oder nicht anwendbar sind; ein leeres Pflichtfeld ist kein gültiger Ersatz. 
 + 
 +===== International richtig einsetzen ===== 
 + 
 +  * E-Mail ist keine Pflicht. Auch reine Telefonkontakte oder Webseiten lassen sich austauschen. 
 +  * Einige Nummernpläne besitzen keine eigenständige Ortsvorwahl. Normalisierung benötigt Landeskontext; führende nationale Präfixe nicht blind aneinanderhängen. 
 +  * idn-email und iri benötigen passende Formatprüfer. Speicherung einer Unicode-Adresse belegt nicht, dass der vorhandene Mailserver sie versenden kann. 
 + 
 +===== Gültige Beispiele ===== 
 + 
 +Alle Beispiele sind synthetisch. Sie werden mit dem mitgelieferten Schema geprüft; daraus folgt keine fachliche Echtheit oder externe Erreichbarkeit. 
 + 
 +==== Beispiel 1 ==== 
 + 
 +<file json example-1.json>
 { {
-  "emails": [+  "phoneNumbers": [
     {     {
       "type": "work",       "type": "work",
-      "address": "example@work.com" +      "number": "+442079460958", 
-    }, +      "extension": "42"
-    { +
-      "type": "personal", +
-      "address": "example@personal.com"+
     }     }
-  ], +  ] 
-  "phoneNumbers": [ +} 
-    { +</file> 
-      "type": "mobile", + 
-      "countryCode": "+49", +==== Beispiel 2 ==== 
-      "areaCode": "30", + 
-      "number": "123456789" +<file json example-2.json> 
-    },+
 +  "emails": [
     {     {
-      "type": "home", +      "address": "δοκιμή@παράδειγμα.δοκιμή"
-      "countryCode": "+1", +
-      "areaCode": "212", +
-      "number": "5551234", +
-      "extension": "56" +
-    } +
-  ], +
-  "socialMedia":+
-    { +
-      "platform": "Twitter", +
-      "handle": "@example_user" +
-    }, +
-    { +
-      "platform": "LinkedIn", +
-      "handle": "example-user"+
     }     }
   ],   ],
   "websites": [   "websites": [
     {     {
-      "type": "personal", +      "url": "https://例え.テスト/"
-      "url": "https://personal.example.com" +
-    }, +
-    { +
-      "type": "work", +
-      "url": "https://work.example.com"+
     }     }
   ]   ]
 } }
-</code> +</file>
-==== array noatation ==== +
-<code> +
-$person['contactDetails']['emails'][0]['type'] = "work"; +
-$person['contactDetails']['emails'][0]['address'] = "example@work.com"; +
-$person['contactDetails']['emails'][1]['type'] = "personal"; +
-$person['contactDetails']['emails'][1]['address'] = "example@personal.com";+
  
-$person['contactDetails']['phoneNumbers'][0]['type'"mobile"; +===== Umstellung aus dem bisherigen Wiki =====
-$person['contactDetails']['phoneNumbers'][0]['countryCode'"+49"; +
-$person['contactDetails']['phoneNumbers'][0]['areaCode'"30"; +
-$person['contactDetails']['phoneNumbers'][0]['number'"123456789";+
  
-$person['contactDetails']['phoneNumbers'][1]['type'] = "home"; +Breaking Change: countryCode und areaCode werden nicht mehr als Telefonpflichtfelder geführt. number enthält jetzt die vollständige E.164-Nummer. Altdaten mit Landeskontext normalisieren und displayNumber zur Erhaltung der Originaldarstellung nutzen.
-$person['contactDetails']['phoneNumbers'][1]['countryCode'] = "+1"; +
-$person['contactDetails']['phoneNumbers'][1]['areaCode'] = "212"; +
-$person['contactDetails']['phoneNumbers'][1]['number'] = "5551234"; +
-$person['contactDetails']['phoneNumbers'][1]['extension'] = "56";+
  
-$person['contactDetails']['socialMedia'][0]['platform'] = "Twitter"; +[[schemes:migration|Änderungsübersicht und Migrationsregeln]]
-$person['contactDetails']['socialMedia'][0]['handle'] = "@example_user"; +
-$person['contactDetails']['socialMedia'][1]['platform'] = "LinkedIn"; +
-$person['contactDetails']['socialMedia'][1]['handle'= "example-user";+
  
-$person['contactDetails']['websites'][0]['type'"personal"; +===== Vollständiges Schema =====
-$person['contactDetails']['websites'][0]['url'"https://personal.example.com"; +
-$person['contactDetails']['websites'][1]['type'"work"; +
-$person['contactDetails']['websites'][1]['url'"https://work.example.com"; +
-</code>+
  
-===== schema ===== +Die Datei ist eigenständig: verwendete Bausteine sind unter ''$defs'' eingebettet, Referenzen bleiben lokal. ''$id'' ist die kanonische Kennung. Die Downloads oben verwenden den aktuellen Server; eine Veröffentlichung unter der kanonischen Domain ist damit nicht behauptet. 
-<code>+ 
 +<file json contactdetails.schema.json>
 { {
   "$schema": "https://json-schema.org/draft/2020-12/schema",   "$schema": "https://json-schema.org/draft/2020-12/schema",
-  "$id": "https://b2base.eu/doku.php?id=schemes:person:contactdetails", +  "$id": "https://b2base.eu/schemas/1.0.0-draft.1/person/contactdetails.schema.json", 
-  "title": "b2base:schemes:person:contactdetails", +  "title": "Kontaktmöglichkeiten", 
-  "description": "A schema for representing a person's contact details.",+  "$comment": "B2Base 1.0.0-draft.1. Projektentwurf, kein durch ISO oder andere Normungsgremien verabschiedeter Standard.",
   "type": "object",   "type": "object",
 +  "description": "Mindestens ein bekannter Kontaktkanal.",
   "properties": {   "properties": {
     "emails": {     "emails": {
       "type": "array",       "type": "array",
-      "description": "A list of the person's email addresses with optional types.",+      "description": "E-Mail-Adressen; Unicode ist zulässig.",
       "items": {       "items": {
         "type": "object",         "type": "object",
 +        "description": "Ein E-Mail-Kontakt.",
         "properties": {         "properties": {
           "type": {           "type": {
             "type": "string",             "type": "string",
-            "description": "The type of email address, e.g., work, personal."+            "minLength": 1
-            "example": "work"+            "description": "Verwendungszweck."
           },           },
           "address": {           "address": {
             "type": "string",             "type": "string",
-            "format": "email", +            "minLength": 1, 
-            "description": "The email address.", +            "description": "Internationale E-Mail-Adresse; Zustellbarkeit und SMTPUTF8-Unterstützung separat prüfen.", 
-            "example": "example@work.com"+            "format": "idn-email" 
 +          }, 
 +          "language": { 
 +            "$ref": "#/$defs/LanguageTag"
           }           }
         },         },
-        "required": ["address"]+        "required": [ 
 +          "address" 
 +        ]
 +        "additionalProperties": false
       },       },
-      "example": +      "minItems": 1
-        {"type": "work", "address": "example@work.com"}, +
-        {"type": "personal", "address": "example@personal.com"+
-      ]+
     },     },
     "phoneNumbers": {     "phoneNumbers": {
       "type": "array",       "type": "array",
-      "description": "A list of the person's phone numbers.",+      "description": "Internationale Telefonnummern.",
       "items": {       "items": {
         "type": "object",         "type": "object",
 +        "description": "Eine vollständig normalisierte Rufnummer ohne Durchwahl.",
         "properties": {         "properties": {
           "type": {           "type": {
             "type": "string",             "type": "string",
-            "description": "The type of phone number, e.g., mobile, home, work.", +            "minLength": 1
-            "example": "mobile" +            "description": "Verwendungszweck."
-          }, +
-          "countryCode":+
-            "type": "string"+
-            "description": "The international country code.", +
-            "example": "+49" +
-          }, +
-          "areaCode":+
-            "type": "string", +
-            "description": "The regional or area code.", +
-            "example": "30"+
           },           },
           "number": {           "number": {
             "type": "string",             "type": "string",
-            "description": "The local phone number.", +            "minLength": 1, 
-            "example": "123456789"+            "description": "Pluszeichen und höchstens 15 Ziffern nach E.164; keine Aussage über tatsächliche Vergabe.", 
 +            "pattern": "^\\+[1-9][0-9]{1,14}$"
           },           },
           "extension": {           "extension": {
             "type": "string",             "type": "string",
-            "description": "Optional phone extension.", +            "minLength": 1, 
-            "example": "123"+            "description": "Durchwahl separat; kein Bestandteil der E.164-Rufnummer." 
 +          }, 
 +          "displayNumber": { 
 +            "type": "string", 
 +            "minLength": 1, 
 +            "description": "Optionale ursprüngliche Schreibweise."
           }           }
         },         },
-        "required": ["type", "countryCode", "areaCode", "number"]+        "required": [ 
 +          "number" 
 +        ], 
 +        "additionalProperties": false
       },       },
-      "example": +      "minItems": 1
-        {"type": "mobile", "countryCode": "+49", "areaCode": "30", "number": "123456789"}, +
-        {"type": "home", "countryCode": "+1", "areaCode": "212", "number": "5551234", "extension": "56"+
-      ]+
     },     },
     "socialMedia": {     "socialMedia": {
       "type": "array",       "type": "array",
-      "description": "A list of the person's social media handles.",+      "description": "Weitere Plattformkontakte.",
       "items": {       "items": {
         "type": "object",         "type": "object",
 +        "description": "Plattform und Kennung.",
         "properties": {         "properties": {
           "platform": {           "platform": {
             "type": "string",             "type": "string",
-            "description": "The name of the social media platform."+            "minLength": 1
-            "example": "Twitter"+            "description": "Plattform."
           },           },
           "handle": {           "handle": {
             "type": "string",             "type": "string",
-            "description": "The person's username or handle on the platform.", +            "minLength": 1, 
-            "example": "@example_user"+            "description": "Unveränderter Benutzername." 
 +          }, 
 +          "url":
 +            "type": "string", 
 +            "minLength": 1, 
 +            "description": "Optionaler Profil-Link.", 
 +            "format": "uri"
           }           }
         },         },
-        "required": ["platform", "handle"]+        "required": [ 
 +          "platform", 
 +          "handle" 
 +        ]
 +        "additionalProperties": false
       },       },
-      "example": +      "minItems": 1
-        {"platform": "Twitter", "handle": "@example_user"}, +
-        {"platform": "LinkedIn", "handle": "example-user"+
-      ]+
     },     },
     "websites": {     "websites": {
       "type": "array",       "type": "array",
-      "description": "A list of the person's websites.",+      "description": "Webseiten.",
       "items": {       "items": {
         "type": "object",         "type": "object",
 +        "description": "Eine Webseite.",
         "properties": {         "properties": {
           "type": {           "type": {
             "type": "string",             "type": "string",
-            "description": "The type of website, e.g., personal, work, portfolio."+            "minLength": 1
-            "example": "portfolio"+            "description": "Verwendungszweck."
           },           },
           "url": {           "url": {
             "type": "string",             "type": "string",
-            "format": "uri"+            "minLength": 1
-            "description": "The URL of the website.", +            "description": "Internationale Webadresse; Abruf gesondert entscheiden.", 
-            "example": "https://example.com"+            "format": "iri", 
 +            "pattern": "^https?://"
           }           }
         },         },
-        "required": ["url"]+        "required": [ 
 +          "url" 
 +        ]
 +        "additionalProperties": false
       },       },
-      "example": [ +      "minItems": 1 
-        {"type": "personal", "url": "https://personal.example.com"}, +    }, 
-        {"type": "work", "url": "https://work.example.com"}+    "extensions": { 
 +      "type": "object", 
 +      "description": "Vereinbarte Erweiterungen; Schlüssel als absolute URI des HerausgebersKeine 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})*$"
     }     }
   },   },
-  "required": ["emails"]+  "examples": [ 
 +    { 
 +      "phoneNumbers":
 +        { 
 +          "type": "work", 
 +          "number": "+442079460958", 
 +          "extension": "42" 
 +        } 
 +      ] 
 +    }, 
 +    { 
 +      "emails": [ 
 +        { 
 +          "address": "δοκιμή@παράδειγμα.δοκιμή" 
 +        } 
 +      ], 
 +      "websites":
 +        { 
 +          "url": "https://例え.テスト/" 
 +        } 
 +      ] 
 +    } 
 +  ]
 } }
-</code>+</file> 
 + 
 +===== Quellen und Abgrenzung ===== 
 + 
 +  * [[https://www.itu.int/rec/T-REC-E.164|ITU-T E.164: Internationaler Rufnummernplan]] 
 +  * [[https://www.rfc-editor.org/info/rfc6531/|IETF RFC 6531: Internationalisierte E-Mail / SMTPUTF8]] 
 +  * [[https://json-schema.org/draft/2020-12/json-schema-validation|JSON Schema 2020-12: Validierung und Formate]] 
 + 
 +Quellen geprüft am 8. September 2026. Die B2Base-Felder und ihre Kombination sind ein eigener Entwurf. Code-Register, nationale Regeln, Echtheit, Zeitfolgen und Referenzziele benötigen die im jeweiligen Verfahren vereinbarten Zusatzprüfungen. 
 + 
 +[[schemes:scheme|Zur Bibliothek]] · [[:guidelines|Integration]] · [[:faq|Häufige Fragen]] 
schemes/person/contactdetails.1734086606.txt.gz · Zuletzt geändert: (Externe Bearbeitung)

Falls nicht anders bezeichnet, ist der Inhalt dieses Wikis unter der folgenden Lizenz veröffentlicht: CC0 1.0 Universal
CC0 1.0 Universal Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki