====== Lieferungen ====== **B2Base · 1.0.0-draft.1 · Projektentwurf** Sendungskennung, Beteiligte, Zustelladresse und Ereigniszeitpunkte. [[schemes:scheme|Bibliothek]] · [[schemes:logistics|Logistik]] · [[schemes:principles|Internationale Grundregeln]] ===== Direkt verwenden ===== [[b2schema>1.0.0-draft.1/logistics/shipment.schema.json|Austauschschema (JSON)]] · [[b2schema>1.0.0-draft.1/logistics/shipment.editor.schema.json|Schema für den Designer]] · [[b2schema>1.0.0-draft.1/logistics/shipment.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 ^ | ''id'' | string | Ja | Sendungskennung. | | ''sender'' | object | Nein | Verweis auf eine separat gespeicherte Person oder juristische Person; kein JSON-Schema-Verweis. | | ''recipient'' | object | Nein | Verweis auf eine separat gespeicherte Person oder juristische Person; kein JSON-Schema-Verweis. | | ''deliveryAddress'' | object | Ja | Internationale Post- oder Standortadresse. Weder Straße, Hausnummer, Stadt noch Postleitzahl sind weltweit obligatorisch. | | ''carrier'' | object | Nein | Verweis auf eine separat gespeicherte Person oder juristische Person; kein JSON-Schema-Verweis. | | ''trackingIdentifiers'' | array | Nein | Trackingnummern mit Herausgebersystem. | | ''status'' | string | Ja | Gemeinsamer Mindeststatus. | | ''dispatchedAt'' | string | Nein | Tatsächlicher Versandzeitpunkt. | | ''deliveredAt'' | string | Nein | Tatsächlicher Zustellzeitpunkt. | | ''documentRefs'' | array | Nein | Begleitdokumente. | | ''extensions'' | object | Nein | Vereinbarte Erweiterungen; Schlüssel als absolute URI des Herausgebers. Keine stillschweigende Änderung von Kernfeldern. | Pflichtangaben gelten für das jeweilige Objekt, wenn dieses Modul verwendet wird. Zusätzliche Alternativen und Statusregeln stehen im Austauschschema. Optionale Felder weglassen, wenn sie unbekannt oder nicht anwendbar sind; ein leeres Pflichtfeld ist kein gültiger Ersatz. ===== International richtig einsetzen ===== * Eine Sendung kann mehrere Packstücke oder Bestellungen betreffen. Deren Identitäten nicht mit der Sendungskennung vermischen. * Trackingnummern sind ohne Carrier beziehungsweise Kennungssystem nicht global eindeutig. * Zustellung verlangt einen tatsächlich erfassten deliveredAt-Zeitpunkt; Carrier-spezifische Ereignisse lassen sich über vereinbarte Erweiterungen abbilden. ===== 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 ==== { "id": "urn:example:shipment:42", "deliveryAddress": { "country": { "code": "GB" }, "addressLines": [ "Example House", "London SW1A 1AA" ] }, "status": "planned" } ===== Umstellung aus dem bisherigen Wiki ===== Die angekündigte Logistikkategorie erhält einen ersten Standard mit demselben Adress- und Referenzmodell. [[schemes:migration|Änderungsübersicht und Migrationsregeln]] ===== Vollständiges 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. { "$schema": "https://json-schema.org/draft/2020-12/schema", "$id": "https://b2base.eu/schemas/1.0.0-draft.1/logistics/shipment.schema.json", "title": "Lieferungen", "$comment": "B2Base 1.0.0-draft.1. Projektentwurf, kein durch ISO oder andere Normungsgremien verabschiedeter Standard.", "type": "object", "description": "Eine logistische Sendung.", "properties": { "id": { "type": "string", "minLength": 1, "description": "Sendungskennung.", "format": "uri" }, "sender": { "$ref": "#/$defs/PartyRef" }, "recipient": { "$ref": "#/$defs/PartyRef" }, "deliveryAddress": { "$ref": "#/$defs/Address" }, "carrier": { "$ref": "#/$defs/PartyRef" }, "trackingIdentifiers": { "type": "array", "description": "Trackingnummern mit Herausgebersystem.", "items": { "$ref": "#/$defs/Identifier" } }, "status": { "type": "string", "minLength": 1, "description": "Gemeinsamer Mindeststatus.", "enum": [ "planned", "dispatched", "inTransit", "delivered", "exception", "cancelled" ] }, "dispatchedAt": { "type": "string", "minLength": 1, "description": "Tatsächlicher Versandzeitpunkt.", "format": "date-time" }, "deliveredAt": { "type": "string", "minLength": 1, "description": "Tatsächlicher Zustellzeitpunkt.", "format": "date-time" }, "documentRefs": { "type": "array", "description": "Begleitdokumente.", "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": {}, "additionalProperties": true, "propertyNames": { "format": "uri" } } }, "required": [ "id", "deliveryAddress", "status" ], "additionalProperties": false, "allOf": [ { "if": { "properties": { "status": { "const": "delivered" } }, "required": [ "status" ] }, "then": { "required": [ "deliveredAt" ] } } ], "$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" ], "additionalProperties": false }, "Address": { "type": "object", "description": "Internationale Post- oder Standortadresse. Weder Straße, Hausnummer, Stadt noch Postleitzahl sind weltweit obligatorisch.", "properties": { "type": { "type": "string", "minLength": 1, "description": "Verwendungszweck, etwa home, work oder delivery." }, "addressLines": { "type": "array", "description": "Geordnete Druckzeilen in der Originalschrift; bei Angabe maßgeblich für die Darstellung.", "items": { "type": "string", "minLength": 1, "description": "Eine Adresszeile." }, "minItems": 1 }, "language": { "$ref": "#/$defs/LanguageTag" }, "recipient": { "type": "string", "minLength": 1, "description": "Optionale Empfängerbezeichnung." }, "street": { "type": "object", "description": "Straßenname.", "properties": { "name": { "type": "string", "minLength": 1, "description": "Straßenname." }, "line_in_address": { "type": "integer", "description": "Optionale Druckzeile, beginnend bei 1; aus dem bisherigen Modell beibehalten.", "minimum": 1 }, "position_in_address_line": { "type": "integer", "description": "Optionale Position in der Druckzeile, beginnend bei 1.", "minimum": 1 } }, "required": [ "name" ], "additionalProperties": false }, "number": { "type": "object", "description": "Hausnummer, auch alphanumerisch.", "properties": { "value": { "type": "string", "minLength": 1, "description": "Hausnummer, auch alphanumerisch." }, "line_in_address": { "type": "integer", "description": "Optionale Druckzeile, beginnend bei 1; aus dem bisherigen Modell beibehalten.", "minimum": 1 }, "position_in_address_line": { "type": "integer", "description": "Optionale Position in der Druckzeile, beginnend bei 1.", "minimum": 1 } }, "required": [ "value" ], "additionalProperties": false }, "unit": { "type": "object", "description": "Einheit oder Wohnung.", "properties": { "value": { "type": "string", "minLength": 1, "description": "Einheit oder Wohnung." }, "line_in_address": { "type": "integer", "description": "Optionale Druckzeile, beginnend bei 1; aus dem bisherigen Modell beibehalten.", "minimum": 1 }, "position_in_address_line": { "type": "integer", "description": "Optionale Position in der Druckzeile, beginnend bei 1.", "minimum": 1 } }, "required": [ "value" ], "additionalProperties": false }, "floor": { "type": "object", "description": "Etagenbezeichnung.", "properties": { "value": { "type": "string", "minLength": 1, "description": "Etagenbezeichnung." }, "line_in_address": { "type": "integer", "description": "Optionale Druckzeile, beginnend bei 1; aus dem bisherigen Modell beibehalten.", "minimum": 1 }, "position_in_address_line": { "type": "integer", "description": "Optionale Position in der Druckzeile, beginnend bei 1.", "minimum": 1 } }, "required": [ "value" ], "additionalProperties": false }, "postBox": { "type": "object", "description": "Postfach.", "properties": { "value": { "type": "string", "minLength": 1, "description": "Postfach." }, "line_in_address": { "type": "integer", "description": "Optionale Druckzeile, beginnend bei 1; aus dem bisherigen Modell beibehalten.", "minimum": 1 }, "position_in_address_line": { "type": "integer", "description": "Optionale Position in der Druckzeile, beginnend bei 1.", "minimum": 1 } }, "required": [ "value" ], "additionalProperties": false }, "blockOrPlotNumber": { "type": "object", "description": "Block- oder Parzellenbezeichnung.", "properties": { "value": { "type": "string", "minLength": 1, "description": "Block- oder Parzellenbezeichnung." }, "line_in_address": { "type": "integer", "description": "Optionale Druckzeile, beginnend bei 1; aus dem bisherigen Modell beibehalten.", "minimum": 1 }, "position_in_address_line": { "type": "integer", "description": "Optionale Position in der Druckzeile, beginnend bei 1.", "minimum": 1 } }, "required": [ "value" ], "additionalProperties": false }, "city": { "type": "object", "description": "Ort oder Zustellbezirk.", "properties": { "name": { "type": "string", "minLength": 1, "description": "Ort oder Zustellbezirk." }, "line_in_address": { "type": "integer", "description": "Optionale Druckzeile, beginnend bei 1; aus dem bisherigen Modell beibehalten.", "minimum": 1 }, "position_in_address_line": { "type": "integer", "description": "Optionale Position in der Druckzeile, beginnend bei 1.", "minimum": 1 } }, "required": [ "name" ], "additionalProperties": false }, "state": { "type": "object", "description": "Region, Provinz oder Bundesstaat.", "properties": { "name": { "type": "string", "minLength": 1, "description": "Region, Provinz oder Bundesstaat." }, "line_in_address": { "type": "integer", "description": "Optionale Druckzeile, beginnend bei 1; aus dem bisherigen Modell beibehalten.", "minimum": 1 }, "position_in_address_line": { "type": "integer", "description": "Optionale Position in der Druckzeile, beginnend bei 1.", "minimum": 1 } }, "required": [ "name" ], "additionalProperties": false }, "postalCode": { "type": "object", "description": "Postleitzahl als Text; keine globale fünfstellige Regel.", "properties": { "value": { "type": "string", "minLength": 1, "description": "Postleitzahl als Text; keine globale fünfstellige Regel." }, "line_in_address": { "type": "integer", "description": "Optionale Druckzeile, beginnend bei 1; aus dem bisherigen Modell beibehalten.", "minimum": 1 }, "position_in_address_line": { "type": "integer", "description": "Optionale Position in der Druckzeile, beginnend bei 1.", "minimum": 1 } }, "required": [ "value" ], "additionalProperties": false }, "wardNumber": { "type": "object", "description": "Verwaltungsbezirk.", "properties": { "value": { "type": "string", "minLength": 1, "description": "Verwaltungsbezirk." }, "line_in_address": { "type": "integer", "description": "Optionale Druckzeile, beginnend bei 1; aus dem bisherigen Modell beibehalten.", "minimum": 1 }, "position_in_address_line": { "type": "integer", "description": "Optionale Position in der Druckzeile, beginnend bei 1.", "minimum": 1 } }, "required": [ "value" ], "additionalProperties": false }, "country": { "type": "object", "description": "Zielland. Name und Code sind verschiedene Informationen.", "properties": { "code": { "$ref": "#/$defs/CountryCode" }, "name": { "type": "string", "minLength": 1, "description": "Landesname in der angegebenen Sprache." }, "line_in_address": { "type": "integer", "description": "Optionale Druckzeile, beginnend bei 1; aus dem bisherigen Modell beibehalten.", "minimum": 1 }, "position_in_address_line": { "type": "integer", "description": "Optionale Position in der Druckzeile, beginnend bei 1.", "minimum": 1 } }, "additionalProperties": false, "anyOf": [ { "required": [ "code" ] }, { "required": [ "name" ] } ] }, "militaryAddress": { "type": "boolean", "description": "Kennzeichnet eine militärische Adresse, falls bekannt." }, "geolocation": { "$ref": "#/$defs/Geolocation" }, "extensions": { "type": "object", "description": "Vereinbarte Erweiterungen; Schlüssel als absolute URI des Herausgebers. Keine stillschweigende Änderung von Kernfeldern.", "properties": {}, "additionalProperties": true, "propertyNames": { "format": "uri" } } }, "required": [ "country" ], "additionalProperties": false, "anyOf": [ { "required": [ "addressLines" ] }, { "required": [ "street" ] }, { "required": [ "postBox" ] }, { "required": [ "city" ] }, { "required": [ "geolocation" ] }, { "required": [ "blockOrPlotNumber" ] } ] }, "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})*$" }, "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}$" }, "Geolocation": { "type": "object", "description": "WGS-84-Koordinaten in Dezimalgrad. Benannte Felder vermeiden eine vertauschte Achsenreihenfolge.", "properties": { "latitude": { "type": "number", "description": "Breitengrad.", "minimum": -90, "maximum": 90 }, "longitude": { "type": "number", "description": "Längengrad.", "minimum": -180, "maximum": 180 }, "accuracyMeters": { "type": "number", "description": "Geschätzter horizontaler Unsicherheitsradius in Metern.", "minimum": 0 } }, "required": [ "latitude", "longitude" ], "additionalProperties": false }, "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" ], "additionalProperties": false }, "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" ], "additionalProperties": false } }, "examples": [ { "id": "urn:example:shipment:42", "deliveryAddress": { "country": { "code": "GB" }, "addressLines": [ "Example House", "London SW1A 1AA" ] }, "status": "planned" } ] } ===== Quellen und Abgrenzung ===== * [[https://www.w3.org/International/questions/qa-address-formats|W3C: Address formats around the world]] * [[https://www.rfc-editor.org/rfc/rfc3339.html|IETF RFC 3339: Datum und Zeitstempel]] 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]]