====== 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]]