Message
From imde.io
The IMDEMessages structure is mandatory for every message and defines the type of datacontainers and all related parties. Every IMDE message is encapsulated in an IMDEMessages container which can contain 1 or more IMDEMessage objects.
Dictionary
| Data element | Definition |
|---|---|
| DataSender | The legal entity or system sending the data. In this example Wonka is the chocolate manufacturer sending data |
| DataReceiver | The legal entity or target system receiving the data. In this example Acme is the retailer receiving data |
| DataProvider | The solution provider / system that has distributed the data. In this example Virtucon is the Solution Provider sending the data. |
| MessageIdentifier | UUID based, uniquely identifies the data message |
XML:
<?xml version="1.0" encoding="utf-8"?> <xsd:schema id="IMDEMessages" targetNamespace="https://imde.io/schema/imdemessages/3.1" elementFormDefault="qualified" xmlns="https://imde.io/schema/imdemessages/3.1" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:code="https://imde.io/schema/azlon/1.0/codelists" xmlns:code1_1="https://imde.io/schema/azlon/1.1/codelists" xmlns:registry="https://imde.io/schema/datatopics/registry"> <xsd:import schemaLocation="https://imde.io/schema/azlon/1.0/codelists/partyIdentifierType.xsd" namespace="https://imde.io/schema/azlon/1.0/codelists"/> <xsd:import schemaLocation="https://imde.io/schema/azlon/1.1/codelists/dataContainerType.xsd" namespace="https://imde.io/schema/azlon/1.1/codelists"/> <xsd:import schemaLocation="https://imde.io/schema/azlon/1.0/codelists/materialType.xsd" namespace="https://imde.io/schema/azlon/1.0/codelists"/> <xsd:import schemaLocation="https://imde.io/schema/azlon/1.0/codelists/identifierType.xsd" namespace="https://imde.io/schema/azlon/1.0/codelists"/> <xsd:import schemaLocation="https://imde.io/schema/azlon/1.0/codelists/unitType.xsd" namespace="https://imde.io/schema/azlon/1.0/codelists"/> <xsd:import schemaLocation="https://imde.io/schema/datatopics/registry.xsd" namespace="https://imde.io/schema/datatopics/registry"/> <xsd:element name="IMDEMessages"> <xsd:complexType> <xsd:sequence> <xsd:element name="IMDEMessage" minOccurs="1" maxOccurs="unbounded"> <xsd:complexType> <xsd:sequence> <xsd:element minOccurs="1" maxOccurs="1" name="Header"> <xsd:complexType> <xsd:all> <xsd:element minOccurs="1" maxOccurs="1" name="DataSender" type="PartyType"/> <xsd:element minOccurs="1" maxOccurs="1" name="DataReceiver" type="PartyType"/> <xsd:element minOccurs="1" maxOccurs="1" name="DataProvider"> <xsd:complexType> <xsd:all> <xsd:element name="Identifiers" type="PartyIdentifiersType" minOccurs="0" maxOccurs="1"/> <xsd:element name="Name" type="xsd:string" minOccurs="1" maxOccurs="1"/> </xsd:all> </xsd:complexType> </xsd:element> <xsd:element minOccurs="1" maxOccurs="1" name="MessageIdentifier" type="xsd:string"/> <xsd:element minOccurs="1" maxOccurs="1" name="CreationDateTime" type="xsd:dateTime"/> <xsd:element minOccurs="0" maxOccurs="1" name="Parameters"> <xsd:complexType> <xsd:sequence> <xsd:element minOccurs="1" maxOccurs="unbounded" name="Parameter"> <xsd:complexType> <xsd:attribute name="Key" type="xsd:string" use="required"/> <xsd:attribute name="Value" type="xsd:string" use="required"/> </xsd:complexType> </xsd:element> </xsd:sequence> </xsd:complexType> </xsd:element> </xsd:all> <xsd:attribute name="DataContainerType" type="code1_1:dataContainerType" use="required"/> </xsd:complexType> </xsd:element> <xsd:choice> <xsd:element name="Item" minOccurs="1" maxOccurs="1" type="ItemType"/> <xsd:element name="PackagingSystem" minOccurs="1" maxOccurs="1" type="PackagingSystemType"/> <xsd:element name="BOM" minOccurs="1" maxOccurs="1" type="BOMType"/> </xsd:choice> </xsd:sequence> </xsd:complexType> </xsd:element> </xsd:sequence> </xsd:complexType> </xsd:element> <xsd:complexType name="PartyType"> <xsd:all> <xsd:element name="Identifiers" type="PartyIdentifiersType" minOccurs="0" maxOccurs="1"/> </xsd:all> </xsd:complexType> <xsd:complexType name="PartyIdentifiersType"> <xsd:sequence> <xsd:element name="Identifier" minOccurs="1" maxOccurs="unbounded"> <xsd:complexType> <xsd:simpleContent> <xsd:extension base="xsd:string"> <xsd:attribute name="Type" type="code:partyIdentifierType" use="required"/> </xsd:extension> </xsd:simpleContent> </xsd:complexType> </xsd:element> </xsd:sequence> </xsd:complexType> <xsd:complexType name="ItemType"> <xsd:sequence> <xsd:element name="DataTopics" minOccurs="1" maxOccurs="1" type="DataTopicsType"/> </xsd:sequence> <xsd:attribute name="MaterialType" type="code:materialType" use="required"/> </xsd:complexType> <xsd:complexType name="PackagingSystemType"> <xsd:sequence> <xsd:element name="PackagingLevel" minOccurs="1" maxOccurs="1"> <xsd:complexType> <xsd:sequence> <xsd:element name="Identifier" minOccurs="1" maxOccurs="unbounded"> <xsd:complexType> <xsd:simpleContent> <xsd:extension base="xsd:string"> <xsd:attribute name="CodeList" type="xsd:string" use="required"/> </xsd:extension> </xsd:simpleContent> </xsd:complexType> </xsd:element> </xsd:sequence> </xsd:complexType> </xsd:element> <xsd:element name="DataTopics" minOccurs="1" maxOccurs="1" type="DataTopicsType"/> </xsd:sequence> </xsd:complexType> <xsd:complexType name="BOMType"> <xsd:sequence> <xsd:element name="Item" minOccurs="1" maxOccurs="1"> <xsd:complexType> <xsd:sequence> <xsd:element name="ItemIdentifiers" type="IdentifiersType" minOccurs="0" maxOccurs="1"/> <xsd:element name="Items" minOccurs="0" maxOccurs="1"> <xsd:complexType> <xsd:sequence> <xsd:element name="Item" type="BOMItemType" minOccurs="1" maxOccurs="unbounded"/> </xsd:sequence> </xsd:complexType> </xsd:element> </xsd:sequence> <xsd:attribute name="MaterialType" type="code:materialType" use="required"/> </xsd:complexType> </xsd:element> </xsd:sequence> </xsd:complexType> <xsd:complexType name="BOMItemType"> <xsd:sequence> <xsd:element name="QuantityUnits" minOccurs="1" maxOccurs="1"> <xsd:complexType> <xsd:sequence> <xsd:element name="QuantityUnit" minOccurs="1" maxOccurs="unbounded"> <xsd:complexType> <xsd:simpleContent> <xsd:extension base="xsd:string"> <xsd:attribute name="Type" type="code:unitType" use="required"/> </xsd:extension> </xsd:simpleContent> </xsd:complexType> </xsd:element> </xsd:sequence> </xsd:complexType> </xsd:element> <xsd:element name="ItemIdentifiers" type="IdentifiersType" minOccurs="0" maxOccurs="1"/> <xsd:element name="Items" minOccurs="0" maxOccurs="1"> <xsd:complexType> <xsd:sequence> <xsd:element name="Item" type="BOMItemType" minOccurs="1" maxOccurs="unbounded"/> </xsd:sequence> </xsd:complexType> </xsd:element> </xsd:sequence> <xsd:attribute name="MaterialType" type="code:materialType" use="required"/> <xsd:attribute name="Quantity" type="xsd:double" use="required"/> </xsd:complexType> <xsd:complexType name="IdentifiersType"> <xsd:sequence> <xsd:element name="Identifier" type="IdentifierType" minOccurs="1" maxOccurs="unbounded"/> </xsd:sequence> </xsd:complexType> <xsd:complexType name="IdentifierType"> <xsd:simpleContent> <xsd:extension base="xsd:string"> <xsd:attribute name="Type" type="code:identifierType" use="required"/> </xsd:extension> </xsd:simpleContent> </xsd:complexType> <xsd:complexType name="DataTopicsType"> <xsd:sequence> <xsd:element name="DataTopic" minOccurs="1" maxOccurs="unbounded"> <xsd:complexType> <xsd:sequence> <xsd:group ref="registry:DataTopicContent" minOccurs="1" maxOccurs="unbounded"/> </xsd:sequence> <xsd:attribute name="Topic" type="xsd:string" use="required"/> <xsd:attribute name="Format" type="xsd:string" use="required"/> <xsd:attribute name="Version" type="xsd:string" use="required"/> </xsd:complexType> </xsd:element> </xsd:sequence> </xsd:complexType> </xsd:schema>
JSON:
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"$id": "https://imde.io/schema/3.1/IMDEMessages.json",
"title": "IMDEMessages",
"type": "object",
"additionalProperties": false,
"required": [
"IMDEMessages"
],
"properties": {
"$schema": {
"type": "string"
},
"IMDEMessages": {
"type": "array",
"minItems": 1,
"items": {
"$ref": "#/$defs/IMDEMessage"
}
}
},
"$defs": {
"IMDEMessage": {
"type": "object",
"additionalProperties": false,
"required": [
"Header"
],
"properties": {
"Header": {
"$ref": "#/$defs/Header"
},
"Item": {
"$ref": "#/$defs/Item"
},
"PackagingSystem": {
"$ref": "#/$defs/PackagingSystem"
},
"BOM": {
"$ref": "#/$defs/BOM"
}
},
"oneOf": [
{
"required": [ "Item" ],
"not": {
"anyOf": [
{ "required": [ "BOM" ] },
{ "required": [ "PackagingSystem" ] }
]
}
},
{
"required": [ "BOM" ],
"not": {
"anyOf": [
{ "required": [ "Item" ] },
{ "required": [ "PackagingSystem" ] }
]
}
},
{
"required": [ "PackagingSystem" ],
"not": {
"anyOf": [
{ "required": [ "Item" ] },
{ "required": [ "BOM" ] }
]
}
}
]
},
"Header": {
"type": "object",
"additionalProperties": false,
"required": [
"DataSender",
"DataReceiver",
"DataProvider",
"MessageIdentifier",
"CreationDateTime"
],
"properties": {
"DataSender": {
"$ref": "#/$defs/Party"
},
"DataReceiver": {
"$ref": "#/$defs/Party"
},
"DataProvider": {
"$ref": "#/$defs/DataProvider"
},
"MessageIdentifier": {
"type": "string"
},
"CreationDateTime": {
"type": "string",
"format": "date-time"
},
"Parameters": {
"type": "object",
"additionalProperties": false,
"required": [
"Parameter"
],
"properties": {
"Parameter": {
"type": "array",
"minItems": 1,
"items": {
"$ref": "#/$defs/Parameter"
}
}
}
},
"DataContainerType": {
"$ref": "https://imde.io/schema/azlon/1.1/codelists/dataContainerType.json"
}
}
},
"Party": {
"type": "object",
"additionalProperties": false,
"properties": {
"Identifiers": {
"$ref": "#/$defs/PartyIdentifiers"
}
}
},
"DataProvider": {
"type": "object",
"additionalProperties": false,
"required": [
"Name"
],
"properties": {
"Identifiers": {
"$ref": "#/$defs/PartyIdentifiers"
},
"Name": {
"type": "string"
}
}
},
"Parameter": {
"type": "object",
"additionalProperties": false,
"required": [
"Key",
"Value"
],
"properties": {
"Key": {
"type": "string"
},
"Value": {
"type": "string"
}
}
},
"PartyIdentifiers": {
"type": "array",
"minItems": 1,
"items": {
"$ref": "#/$defs/PartyIdentifier"
}
},
"PartyIdentifier": {
"type": "object",
"additionalProperties": false,
"required": [
"Type",
"Value"
],
"properties": {
"Type": {
"$ref": "https://imde.io/schema/azlon/1.0/codelists/partyIdentifierType.json"
},
"Value": {
"type": "string",
"minLength": 1
}
}
},
"Item": {
"type": "object",
"additionalProperties": false,
"required": [
"MaterialType",
"DataTopics"
],
"properties": {
"MaterialType": {
"$ref": "https://imde.io/schema/azlon/1.0/codelists/materialType.json"
},
"DataTopics": {
"$ref": "#/$defs/DataTopics"
}
}
},
"PackagingSystem": {
"type": "object",
"additionalProperties": false,
"required": [
"PackagingLevel",
"DataTopics"
],
"properties": {
"PackagingLevel": {
"type": "array",
"minItems": 1,
"items": {
"$ref": "#/$defs/PackagingLevelIdentifier"
}
},
"DataTopics": {
"$ref": "#/$defs/DataTopics"
}
}
},
"DataTopics": {
"type": "array",
"minItems": 1,
"items": {
"$ref": "https://imde.io/schema/datatopics/registry.json"
}
},
"BOM": {
"type": "object",
"additionalProperties": false,
"required": [
"Item"
],
"properties": {
"Item": {
"$ref": "#/$defs/BOMRootItem"
}
}
},
"BOMRootItem": {
"type": "object",
"additionalProperties": false,
"required": [
"MaterialType"
],
"properties": {
"MaterialType": {
"$ref": "https://imde.io/schema/azlon/1.0/codelists/materialType.json"
},
"ItemIdentifiers": {
"$ref": "#/$defs/Identifiers"
},
"Items": {
"type": "object",
"additionalProperties": false,
"required": [
"Item"
],
"properties": {
"Item": {
"type": "array",
"minItems": 1,
"items": {
"$ref": "#/$defs/BOMItem"
}
}
}
}
}
},
"BOMItem": {
"type": "object",
"additionalProperties": false,
"required": [
"MaterialType",
"Quantity",
"QuantityUnits"
],
"properties": {
"MaterialType": {
"$ref": "https://imde.io/schema/azlon/1.0/codelists/materialType.json"
},
"Quantity": {
"type": "number"
},
"QuantityUnits": {
"$ref": "#/$defs/QuantityUnits"
},
"ItemIdentifiers": {
"$ref": "#/$defs/Identifiers"
},
"Items": {
"type": "object",
"additionalProperties": false,
"required": [
"Item"
],
"properties": {
"Item": {
"type": "array",
"minItems": 1,
"items": {
"$ref": "#/$defs/BOMItem"
}
}
}
}
}
},
"QuantityUnits": {
"type": "object",
"additionalProperties": false,
"required": [
"QuantityUnit"
],
"properties": {
"QuantityUnit": {
"type": "array",
"minItems": 1,
"items": {
"$ref": "#/$defs/QuantityUnit"
}
}
}
},
"QuantityUnit": {
"type": "object",
"additionalProperties": false,
"required": [
"Type",
"Value"
],
"properties": {
"Type": {
"$ref": "https://imde.io/schema/azlon/1.0/codelists/unitType.json"
},
"Value": {
"type": "string",
"minLength": 1
}
}
},
"Identifiers": {
"type": "object",
"additionalProperties": false,
"required": [
"Identifier"
],
"properties": {
"Identifier": {
"type": "array",
"minItems": 1,
"items": {
"$ref": "#/$defs/Identifier"
}
}
}
},
"Identifier": {
"type": "object",
"additionalProperties": false,
"required": [
"Type",
"Value"
],
"properties": {
"Type": {
"$ref": "https://imde.io/schema/azlon/1.0/codelists/identifierType.json"
},
"Value": {
"type": "string",
"minLength": 1
}
}
},
"PackagingLevelIdentifier": {
"type": "object",
"required": [ "CodeList", "Value" ],
"properties": {
"CodeList": {
"type": "string"
},
"Value": {
"type": "string"
}
},
"if": {
"properties": {
"CodeList": {
"const": "IMDE"
}
}
},
"then": {
"properties": {
"Value": {
"$ref": "https://imde.io/schema/azlon/1.0/codelists/packagingLevel.json"
}
}
}
}
}
}
Downloads
- Sample XML
- Sample JSON
- XSD schema 3.1
- JSON schema 3.1
- Codelist partyIdentifierType
- Codelist dataContainerType
- Codelist materialType
- Codelist identifierType
- Codelist unitType
Old versions
- XSD schema 2.0
- XSD schema 1.0