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

List of data elements used in Message Header
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

Old versions