TWIN Supply Chain Docs
Consignment Data Model

Overview

How the consignment data model is structured.

A consignment represents a collection of goods moving through the supply chain. The TWIN model builds on the UNECE D23B vocabulary — standard fields for parties, transport, and items — with three required identity fields and a small set of TWIN-specific extensions on top.

Every payload carries @context: "https://vocabulary.uncefact.org/unece-context-D23B.jsonld" so that downstream consumers can interpret the object correctly.

V1 and V2 payloads

The list response carries a payloadVersion discriminator:

  • v1 — legacy "Consignment" payload
  • v2 — current "GoodsLoad" payload built on the D23B context (described in these docs)

Reference payload

A full V2 activity — the complete consignment shape the DSC inbox consumes:

{
	"type": "Create",
	"object": {
		"@context": "https://vocabulary.uncefact.org/unece-context-D23B.jsonld",
		"type": "Consignment",
		"identifier": "260202-1990",
		"summaryDescription": "Fresh chicken",
		"packageQuantity": {
			"type": "QuantityType",
			"unece:QuantityTypeValue": "25"
		},
		"globalId": "260202-1991",
		"consignmentItemQuantity": {
			"type": "QuantityType",
			"unece:QuantityTypeValue": "1"
		},
		"weightUnitNetWeightMeasure": [
			{
				"type": "WeightUnitMeasureType",
				"unece:WeightUnitMeasureTypeValue": "19578",
				"unece:WeightUnitMeasureTypeCode": "unece:WeightUnitMeasureCode#KGM"
			}
		],
		"utilizedTransportEquipment": [
			{
				"type": "LogisticsTransportEquipment",
				"identifier": "AB24XYZ",
				"affixedSeal": [
					{
						"type": "Seal",
						"identifier": "AB876309"
					}
				],
				"specifiedTransportMeans": [
					{
						"type": "LogisticsTransportMeans",
						"transportMeansTypeCode": "unece:TransportMeansTypeCodeList#3103",
						"driverAccompaniedIndicator": true
					}
				]
			}
		],
		"carrierParty": {
			"type": "TradeParty",
			"name": "DFDS",
			"registeredId": {
				"@type": "https://ref.gs1.org/voc/OrganizationID_Type-EORI",
				"@value": "B284624D"
			}
		},
		"atDepartureTransportMovement": {
			"type": "TransportMovement",
			"departureEvent": [
				{
					"type": "TransportEvent",
					"occurrenceLogisticsLocation": {
						"type": "LogisticsLocation",
						"identifier": {
							"@type": "https://ref.gs1.org/voc/LocationID_Type-UN_LOCODE",
							"@value": "FRCQF"
						}
					},
					"scheduledOccurrenceDateTime": "2026-02-12T19:17:05.620Z"
				}
			],
			"transportModeCode": "unece:TransportModeCodeList#1"
		},
		"atArrivalTransportMovement": {
			"type": "TransportMovement",
			"arrivalEvent": [
				{
					"type": "TransportEvent",
					"occurrenceLogisticsLocation": {
						"type": "LogisticsLocation",
						"identifier": {
							"@type": "https://ref.gs1.org/voc/LocationID_Type-UN_LOCODE",
							"@value": "GBDOV"
						}
					},
					"scheduledOccurrenceDateTime": "2026-02-12T19:17:21.389Z"
				}
			],
			"transportModeCode": "unece:TransportModeCodeList#3"
		},
		"includedConsignment": [
			{
				"type": "Consignment",
				"identifier": "242110-117",
				"exporterParty": {
					"type": "TradeParty",
					"role": "Exporter",
					"registeredId": {
						"@type": "https://ref.gs1.org/voc/OrganizationID_Type-EORI",
						"@value": "PL82561935000"
					},
					"name": "Traders International",
					"postalAddress": {
						"type": "TradeAddress",
						"tradeAddressCountryId": "unece:CountryId#PL"
					}
				},
				"consignorParty": {
					"type": "TradeParty",
					"role": "Consignor",
					"registeredId": {
						"@type": "https://ref.gs1.org/voc/OrganizationID_Type-EORI",
						"@value": "PL39000000004358Z"
					},
					"name": "Acme distribution",
					"postalAddress": {
						"type": "TradeAddress",
						"streetName": "ul. Olszowa 50, Strzegom, Poland",
						"postcodeCode": "58-150",
						"tradeAddressCountryId": "unece:CountryId#PL",
						"geoCoordinateIdentificationGeographicalCoordinate": [
							{
								"type": "GeographicalCoordinate",
								"latitudeMeasure": {
									"type": "MeasureType",
									"MeasureTypeValue": "50.9667"
								},
								"longitudeMeasure": {
									"type": "MeasureType",
									"MeasureTypeValue": "16.3167"
								}
							}
						]
					}
				},
				"consigneeParty": {
					"type": "TradeParty",
					"role": "Consignee",
					"registeredId": {
						"@type": "https://ref.gs1.org/voc/OrganizationID_Type-EORI",
						"@value": "GB195394660000"
					},
					"name": "We Sell Electronics",
					"postalAddress": {
						"type": "TradeAddress",
						"streetName": "Oakland International, Bardon Hill, Coalville",
						"postcodeCode": "LE67 1TB",
						"tradeAddressCountryId": "unece:CountryId#GB",
						"geoCoordinateIdentificationGeographicalCoordinate": [
							{
								"type": "GeographicalCoordinate",
								"latitudeMeasure": {
									"type": "MeasureType",
									"MeasureTypeValue": "51.47002"
								},
								"longitudeMeasure": {
									"type": "MeasureType",
									"MeasureTypeValue": "-0.454295"
								}
							}
						]
					}
				},
				"importerParty": {
					"type": "TradeParty",
					"role": "Importer",
					"registeredId": {
						"@type": "https://ref.gs1.org/voc/OrganizationID_Type-EORI",
						"@value": "GB452718660000"
					},
					"name": "W E Coyote ltd",
					"postalAddress": {
						"type": "TradeAddress",
						"tradeAddressCountryId": "unece:CountryId#GB"
					}
				},
				"atDepartureTransportMovement": {
					"type": "TransportMovement",
					"departureEvent": [
						{
							"type": "TransportEvent",
							"scheduledOccurrenceDateTime": "2026-02-12T19:18:06.625Z"
						}
					],
					"transportModeCode": "unece:TransportModeCodeList#1"
				},
				"atArrivalTransportMovement": {
					"type": "TransportMovement",
					"arrivalEvent": [
						{
							"type": "TransportEvent",
							"scheduledOccurrenceDateTime": "2026-02-12T19:18:29.515Z"
						}
					],
					"transportModeCode": "unece:TransportModeCodeList#3"
				},
				"includedConsignmentItem": [
					{
						"type": "ConsignmentItem",
						"goodsTypeCode": "unece:GoodsTypeCodeList#ZZZ",
						"information": "Fresh chicken fillets",
						"originCountry": {
							"type": "Country",
							"countryId": "unece:CountryId#PL"
						}
					}
				]
			}
		]
	},
	"actor": {
		"type": "TradeParty",
		"registeredId": {
			"@type": "https://ref.gs1.org/voc/OrganizationID_Type-DID",
			"@value": "did:iota:123456"
		},
		"@context": "https://vocabulary.uncefact.org/unece-context-D23B.jsonld"
	},
	"@context": ["https://www.w3.org/ns/activitystreams"],
	"generator": "did:iota:123456",
	"updated": "2026-02-12T19:19:01.338Z",
	"name": "Pre-Notification"
}

Where to go next

  • Schema — required fields, TWIN-specific types, and API response shapes
  • DSC endpoints — how to publish and read consignments

On this page