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" payloadv2— 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