<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">

	<!-- Define simple types -->
	<xs:simpleType name="EANType">
		<xs:restriction base="xs:string">
			<xs:pattern value="[0-9]+"/>
			<xs:minLength value="8"/>
			<xs:maxLength value="14"/>
		</xs:restriction>
	</xs:simpleType>

	<xs:simpleType name="PriceCsType">
		<xs:restriction base="xs:string">
			<xs:pattern value="\d+,\d{1,2}"/>
		</xs:restriction>
	</xs:simpleType>

	<xs:simpleType name="IdOfferType">
		<xs:restriction base="xs:string">
			<xs:maxLength value="100"/>
		</xs:restriction>
	</xs:simpleType>

	<xs:simpleType name="ConditionType">
		<xs:restriction base="xs:integer">
			<!-- NEW -->
			<xs:enumeration value="100"/>
			<!-- USED - AS NEW -->
			<xs:enumeration value="200"/>
			<!-- USED - VERY GOOD -->
			<xs:enumeration value="300"/>
			<!-- USED - GOOD -->
			<xs:enumeration value="400"/>
			<!-- USED - ACCEPTABLE -->
			<xs:enumeration value="500"/>
			<!-- REFURBISHED - AS NEW -->
			<xs:enumeration value="110"/>
			<!-- REFURBISHED - VERY GOOD -->
			<xs:enumeration value="120"/>
			<!-- REFURBISHED - GOOD -->
			<xs:enumeration value="130"/>
			<!-- REFURBISHED - ACCEPTABLE -->
			<xs:enumeration value="140"/>
		</xs:restriction>
	</xs:simpleType>

	<xs:simpleType name="CurrencyType">
		<xs:restriction base="xs:string">
			<xs:pattern value="[A-Z]{3}"/>
		</xs:restriction>
	</xs:simpleType>

	<xs:simpleType name="CommentType">
		<xs:restriction base="xs:string">
			<xs:maxLength value="250"/>
		</xs:restriction>
	</xs:simpleType>

	<xs:simpleType name="HandlingTime">
		<xs:restriction base="xs:nonNegativeInteger">
			<xs:maxInclusive value="100"/>
		</xs:restriction>
	</xs:simpleType>

	<xs:simpleType name="VatIndicatorType">
		<xs:restriction base="xs:string">
			<xs:enumeration value="unspecified"/>
			<xs:enumeration value="standard_rate"/>
			<xs:enumeration value="reduced_rate_1"/>
			<xs:enumeration value="reduced_rate_2"/>
			<xs:enumeration value="super_reduced_rate"/>
			<xs:enumeration value="zero_rate"/>
		</xs:restriction>
	</xs:simpleType>

	<xs:complexType name="UpsertType">
		<xs:all>
			<!-- EAN or ISBN (Required, 8-14 characters) -->
			<xs:element name="ean" type="EANType" minOccurs="1" maxOccurs="1"/>
			<!-- Condition (Required) -->
			<xs:element name="condition" type="ConditionType" minOccurs="1" maxOccurs="1"/>
			<!-- Handling Time (Required, 0-100) -->
			<xs:element name="handling_time" type="HandlingTime" minOccurs="1" maxOccurs="1"/>
			<!-- Count - Stock amount (Optional) -->
			<xs:element name="count" type="xs:nonNegativeInteger" minOccurs="0" maxOccurs="1"/>
			<!-- The price of the unit in the relevant currency (Required if price_cs is not set) -->
			<xs:element name="price" type="xs:positiveInteger" minOccurs="0" maxOccurs="1"/>
			<!-- Price in the Relevant Currency (Required if price is not set) -->
			<xs:element name="price_cs" type="PriceCsType" minOccurs="0" maxOccurs="1"/>
			<!-- Minimum Price in the Relevant Currency (Optional) -->
			<xs:element name="minimum_price" type="xs:positiveInteger" minOccurs="0" maxOccurs="1"/>
			<!-- Minimum Price in the Relevant Currency (Optional) -->
			<xs:element name="minimum_price_cs" type="PriceCsType" minOccurs="0" maxOccurs="1"/>
			<!-- The currency the prices are provided in. This is just a double check. -->
			<xs:element name="currency" type="CurrencyType" minOccurs="1" maxOccurs="1"/>
			<!-- Comment (Optional, up to 250 characters) -->
			<xs:element name="comment" type="CommentType" minOccurs="0" maxOccurs="1"/>
			<!-- ID Offer (Optional, up to 100 characters) -->
			<xs:element name="id_offer" type="IdOfferType" minOccurs="0" maxOccurs="1"/>
			<!-- ID Warehouse (Optional) -->
			<xs:element name="id_warehouse" type="xs:integer" minOccurs="0" maxOccurs="1"/>
			<!-- ID Shipping Group (Optional) -->
			<xs:element name="id_shipping_group" type="xs:integer" minOccurs="0" maxOccurs="1"/>
			<!-- VAT Indicator (Optional) -->
			<xs:element name="vat_indicator" type="VatIndicatorType" minOccurs="0" maxOccurs="1"/>
			<!-- ECO Participation (Optional) -->
			<xs:element name="eco_participation" type="xs:positiveInteger" minOccurs="0" maxOccurs="1"/>
            <!-- Battery Participation (Optional) -->
            <xs:element name="battery_participation" type="xs:positiveInteger" minOccurs="0" maxOccurs="1"/>
		</xs:all>
	</xs:complexType>

	<xs:complexType name="DeleteType">
		<xs:all>
			<xs:element name="ean" type="EANType" maxOccurs="1"/>
			<xs:element name="id_offer" type="xs:string" minOccurs="0" maxOccurs="1"/>
		</xs:all>
	</xs:complexType>

	<xs:complexType name="FlushType">
		<!-- Define FLUSH command with no parameters -->
	</xs:complexType>

	<xs:element name="InventoryFeed">
		<xs:complexType>
			<xs:sequence>
				<xs:element name="Offer" type="UpsertType" minOccurs="0" maxOccurs="unbounded"/>
			</xs:sequence>
		</xs:complexType>
	</xs:element>

	<xs:element name="InventoryCommand">
		<xs:complexType>
			<xs:sequence>
				<xs:choice minOccurs="0" maxOccurs="unbounded">
					<xs:element name="UPSERT" type="UpsertType"/>
					<xs:element name="DELETE" type="DeleteType"/>
					<xs:element name="FLUSH" type="FlushType"/>
				</xs:choice>
			</xs:sequence>
		</xs:complexType>
	</xs:element>

</xs:schema>
