<?xml version="1.0" encoding="utf-8"?>
<xs:schema elementFormDefault="qualified" xmlns:xs="http://www.w3.org/2001/XMLSchema">
  <xs:element name="articleDataItems" nillable="true" type="ArticleDataItems" />
  <xs:complexType name="ArticleDataItems">
    <xs:annotation>
      <xs:documentation>This is the model used to add and update master data of article data items in CAS.</xs:documentation>
    </xs:annotation>
    <xs:sequence>
      <xs:element minOccurs="0" maxOccurs="1" name="version" nillable="true" type="xs:string">
        <xs:annotation>
          <xs:documentation>Should always be "1.0".</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element minOccurs="0" maxOccurs="1" name="messageType" nillable="true" type="MessageTypeEnum">
        <xs:annotation>
          <xs:documentation>An obsolete indication of the purpose of the request. One of 'Delta' or 'Initial Upload'</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element minOccurs="0" maxOccurs="1" name="items" type="ArrayOfArticleDataItemsItem">
        <xs:annotation>
          <xs:documentation>The collection of article data items to add or update</xs:documentation>
        </xs:annotation>
      </xs:element>
    </xs:sequence>
  </xs:complexType>
  <xs:simpleType name="MessageTypeEnum">
    <xs:annotation>
      <xs:documentation>Should always be "Delta". Choosing "InitialUpload" has no effect on the processing of the data anymore.</xs:documentation>
    </xs:annotation>
    <xs:restriction base="xs:string">
      <xs:enumeration value="Delta" />
      <xs:enumeration value="InitialUpload" />
    </xs:restriction>
  </xs:simpleType>
  <xs:complexType name="ArrayOfArticleDataItemsItem">
    <xs:sequence>
      <xs:element minOccurs="0" maxOccurs="unbounded" name="item" nillable="true" type="ArticleDataItemsItem" />
    </xs:sequence>
  </xs:complexType>
  <xs:complexType name="ArticleDataItemsItem">
    <xs:annotation>
      <xs:documentation>Represents an individual article</xs:documentation>
    </xs:annotation>
    <xs:sequence>
      <xs:element minOccurs="0" maxOccurs="1" name="itemId" nillable="true" type="xs:string">
        <xs:annotation>
          <xs:documentation>A unique human readable identifier for a given article</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element minOccurs="0" maxOccurs="1" name="baseUom" nillable="true" type="xs:string">
        <xs:annotation>
          <xs:documentation>The base unit of measurement of the article.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element minOccurs="0" maxOccurs="1" name="itemVersions" type="ArrayOfArticleDataItemsItemItemVersion">
        <xs:annotation>
          <xs:documentation>Represents data that may change over time. When creating a new article it may contain multiple versions. When updating an article, the ingest may contain only one version with its ActiveFrom date later than the previous version</xs:documentation>
        </xs:annotation>
      </xs:element>
    </xs:sequence>
  </xs:complexType>
  <xs:complexType name="ArrayOfArticleDataItemsItemItemVersion">
    <xs:sequence>
      <xs:element minOccurs="0" maxOccurs="unbounded" name="itemVersion" nillable="true" type="ArticleDataItemsItemItemVersion" />
    </xs:sequence>
  </xs:complexType>
  <xs:complexType name="ArticleDataItemsItemItemVersion">
    <xs:sequence>
      <xs:element minOccurs="0" maxOccurs="1" name="activeFrom" nillable="true" type="xs:string" />
      <xs:element minOccurs="0" maxOccurs="1" name="activeTo" nillable="true" type="xs:string" />
      <xs:element minOccurs="0" maxOccurs="1" name="description1" nillable="true" type="xs:string">
        <xs:annotation>
          <xs:documentation>Main description of the article used in the customs declaration</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element minOccurs="0" maxOccurs="1" name="description2" nillable="true" type="xs:string">
        <xs:annotation>
          <xs:documentation>Second description of the article shown in CAS</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element minOccurs="0" maxOccurs="1" name="description3" nillable="true" type="xs:string">
        <xs:annotation>
          <xs:documentation>Third description of the article shown in CAS</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element minOccurs="0" maxOccurs="1" name="applicableForImport" nillable="true" type="xs:boolean">
        <xs:annotation>
          <xs:documentation>Indicates the article may be part of import declarations</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element minOccurs="0" maxOccurs="1" name="applicableForExport" nillable="true" type="xs:boolean">
        <xs:annotation>
          <xs:documentation>Indicates the article may be part of export declarations</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element minOccurs="0" maxOccurs="1" name="supQtyFactor" nillable="true" type="xs:decimal">
        <xs:annotation>
          <xs:documentation>In case this is required as determined by legal content this is the factor that will be used to convert from the BaseUoM to the supplementary quantity</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element minOccurs="0" maxOccurs="1" name="alcoholPercentageByVolume" nillable="true" type="xs:decimal">
        <xs:annotation>
          <xs:documentation>Alcoholic strength by volume expressed as a whole-number percentage. For example, 40% should be provided as 40, not 0.4</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element minOccurs="0" maxOccurs="1" name="dimension" nillable="true" type="ArticleDataItemsItemItemVersionDimension">
        <xs:annotation>
          <xs:documentation>Dimensional data, when specified will be used to calculate the SupQtyFactor when needed</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element minOccurs="0" maxOccurs="1" name="plants" type="ArrayOfString">
        <xs:annotation>
          <xs:documentation>The list of plants for which the version applies toIf not supplied the article version applies to all plants in the organisational structure</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element minOccurs="0" maxOccurs="1" name="classifications" type="ArrayOfArticleDataItemsItemItemVersionClassification">
        <xs:annotation>
          <xs:documentation>The list of classifications of the article versionWhen not specified the article may not be used in declarationsAn alert will be raised in such case</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element minOccurs="0" maxOccurs="1" name="measure" nillable="true" type="ArticleDataItemsItemItemVersionMeasure">
        <xs:annotation>
          <xs:documentation>Measure data, contains nmass and gmass in kg</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element minOccurs="0" maxOccurs="1" name="price" nillable="true" type="ArticleDataItemsItemItemVersionPrice">
        <xs:annotation>
          <xs:documentation>Price of the article</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element minOccurs="0" maxOccurs="1" name="packagings" type="ArrayOfArticleDataItemsItemItemVersionPackaging">
        <xs:annotation>
          <xs:documentation>The list of packagings</xs:documentation>
        </xs:annotation>
      </xs:element>
    </xs:sequence>
  </xs:complexType>
  <xs:complexType name="ArticleDataItemsItemItemVersionDimension">
    <xs:sequence>
      <xs:element minOccurs="0" maxOccurs="1" name="width" nillable="true" type="xs:decimal">
        <xs:annotation>
          <xs:documentation>Gets or Sets Width</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element minOccurs="0" maxOccurs="1" name="length" nillable="true" type="xs:decimal">
        <xs:annotation>
          <xs:documentation>Gets or Sets Length</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element minOccurs="0" maxOccurs="1" name="height" nillable="true" type="xs:decimal">
        <xs:annotation>
          <xs:documentation>Gets or Sets Height</xs:documentation>
        </xs:annotation>
      </xs:element>
    </xs:sequence>
  </xs:complexType>
  <xs:complexType name="ArrayOfString">
    <xs:sequence>
      <xs:element minOccurs="0" maxOccurs="unbounded" name="plant" nillable="true" type="xs:string" />
    </xs:sequence>
  </xs:complexType>
  <xs:complexType name="ArrayOfArticleDataItemsItemItemVersionClassification">
    <xs:sequence>
      <xs:element minOccurs="0" maxOccurs="unbounded" name="classification" nillable="true" type="ArticleDataItemsItemItemVersionClassification" />
    </xs:sequence>
  </xs:complexType>
  <xs:complexType name="ArticleDataItemsItemItemVersionClassification">
    <xs:sequence>
      <xs:element minOccurs="0" maxOccurs="1" name="type" nillable="true" type="xs:string">
        <xs:annotation>
          <xs:documentation>The type of classifications. One of 'TARIC', 'CN'</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element minOccurs="0" maxOccurs="1" name="code" nillable="true" type="xs:string">
        <xs:annotation>
          <xs:documentation>The classification code</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element minOccurs="0" maxOccurs="1" name="specialProcedure" nillable="true" type="xs:string">
        <xs:annotation>
          <xs:documentation>Indicates the classification is to be used in the context of a special procedure, currently only 'End Use' is supported</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element minOccurs="0" maxOccurs="1" name="consignedFromCountry" nillable="true" type="xs:string">
        <xs:annotation>
          <xs:documentation>To support an item with different TARIC code depending on where the goods are consigned from</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element minOccurs="0" maxOccurs="1" name="jurisdictions" type="ArrayOfString1">
        <xs:annotation>
          <xs:documentation>List of the country codes of the version may be used in.</xs:documentation>
        </xs:annotation>
      </xs:element>
    </xs:sequence>
  </xs:complexType>
  <xs:complexType name="ArrayOfString1">
    <xs:sequence>
      <xs:element minOccurs="0" maxOccurs="unbounded" name="jurisdiction" nillable="true" type="xs:string" />
    </xs:sequence>
  </xs:complexType>
  <xs:complexType name="ArticleDataItemsItemItemVersionMeasure">
    <xs:sequence>
      <xs:element minOccurs="0" maxOccurs="1" name="gmass" nillable="true" type="xs:decimal">
        <xs:annotation>
          <xs:documentation>Gross mass (kg)</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element minOccurs="0" maxOccurs="1" name="nmass" nillable="true" type="xs:decimal">
        <xs:annotation>
          <xs:documentation>Net mass (kg)</xs:documentation>
        </xs:annotation>
      </xs:element>
    </xs:sequence>
  </xs:complexType>
  <xs:complexType name="ArticleDataItemsItemItemVersionPrice">
    <xs:sequence>
      <xs:element minOccurs="0" maxOccurs="1" name="amount" nillable="true" type="xs:decimal">
        <xs:annotation>
          <xs:documentation>Amount of the price of the article</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element minOccurs="0" maxOccurs="1" name="currency" nillable="true" type="xs:string">
        <xs:annotation>
          <xs:documentation>Currency of the price of the article</xs:documentation>
        </xs:annotation>
      </xs:element>
    </xs:sequence>
  </xs:complexType>
  <xs:complexType name="ArrayOfArticleDataItemsItemItemVersionPackaging">
    <xs:sequence>
      <xs:element minOccurs="0" maxOccurs="unbounded" name="packaging" nillable="true" type="ArticleDataItemsItemItemVersionPackaging" />
    </xs:sequence>
  </xs:complexType>
  <xs:complexType name="ArticleDataItemsItemItemVersionPackaging">
    <xs:sequence>
      <xs:element minOccurs="0" maxOccurs="1" name="quantity" nillable="true" type="xs:int">
        <xs:annotation>
          <xs:documentation>Number of individual items packaged in such a way that they cannot be divided without first undoing the packing</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element minOccurs="0" maxOccurs="1" name="shippingMarks" nillable="true" type="xs:string">
        <xs:annotation>
          <xs:documentation>Shipping marks - Free form description of the marks and numbers on a transport unit or package</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element minOccurs="0" maxOccurs="1" name="type" nillable="true" type="xs:string">
        <xs:annotation>
          <xs:documentation>Code specifying the type of package of an item</xs:documentation>
        </xs:annotation>
      </xs:element>
    </xs:sequence>
  </xs:complexType>
</xs:schema>