<?xml version="1.0" encoding="UTF-8"?>
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema">

	<xsd:element name="Cargoplan" type="CargoplanType"/>
	<xsd:complexType name="CargoplanType">
		<xsd:sequence>
			<xsd:element name="DocHead" type="DocHeadType" minOccurs="1">
				<xsd:annotation>
					<xsd:documentation>Header of document</xsd:documentation>
				</xsd:annotation>
			</xsd:element>
			<xsd:element name="PartiesList" type="PartiesListType">
				<xsd:annotation>
					<xsd:documentation>List of parties (sender and stevedore)</xsd:documentation>
				</xsd:annotation>
			</xsd:element>
      <xsd:element name="Line" type="xsd:string" minOccurs="1" maxOccurs="1">
        <xsd:annotation>
          <xsd:documentation>Line name</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
			<xsd:element name="TransportDetails" type="TransportDetailsType" minOccurs="1">
				<xsd:annotation>
					<xsd:documentation>Identification of vessel arrival/depature</xsd:documentation>
				</xsd:annotation>
			</xsd:element>
			<xsd:element name="ContainerList" type="ContainerListType" minOccurs="1">
				<xsd:annotation>
					<xsd:documentation>Enumeration of containers with equipment details</xsd:documentation>
				</xsd:annotation>
			</xsd:element>
		</xsd:sequence>
	</xsd:complexType>
	<xsd:complexType name="DocHeadType">
		<xsd:annotation>
			<xsd:documentation>Identification and description of the document</xsd:documentation>
		</xsd:annotation>
		<xsd:sequence>
			<xsd:element name="DocName" type="xsd:string" minOccurs="0">
				<xsd:annotation>
					<xsd:documentation>Name of document type</xsd:documentation>
				</xsd:annotation>
			</xsd:element>
			<xsd:element name="DocNumber" type="xsd:string" minOccurs="0">
				<xsd:annotation>
					<xsd:documentation>Number of document if exists</xsd:documentation>
				</xsd:annotation>
			</xsd:element>
			<xsd:element name="DocDate" type="xsd:dateTime" minOccurs="0">
				<xsd:annotation>
					<xsd:documentation>Document date</xsd:documentation>
				</xsd:annotation>
			</xsd:element>
			<xsd:element name="DocVersion" type="xsd:string" minOccurs="0">
				<xsd:annotation>
					<xsd:documentation>Incremental version of the document instance</xsd:documentation>
				</xsd:annotation>
			</xsd:element>
			<xsd:element name="DocID" type="xsd:integer" minOccurs="0">
				<xsd:annotation>
					<xsd:documentation>Document identificator returned by FCT system for repetitive sending</xsd:documentation>
				</xsd:annotation>
			</xsd:element>
			<xsd:element name="Modification" type="ModificationType" minOccurs="0">
				<xsd:annotation>
					<xsd:documentation>Тип производимой модификации</xsd:documentation>
				</xsd:annotation>
			</xsd:element>
		</xsd:sequence>
	</xsd:complexType>
	<xsd:complexType name="TransportDetailsType">
		<xsd:annotation>
			<xsd:documentation>Identification of transport</xsd:documentation>
		</xsd:annotation>
		<xsd:sequence>
			<xsd:element name="VesselID" type="xsd:integer" minOccurs="1">
				<xsd:annotation>
					<xsd:documentation>Vessel identificator in FCT system</xsd:documentation>
				</xsd:annotation>
			</xsd:element>
			<xsd:element name="Direction" type="DirectionType" minOccurs="1">
				<xsd:annotation>
					<xsd:documentation>Incoming or outcoming voyage</xsd:documentation>
				</xsd:annotation>
			</xsd:element>
			<xsd:choice minOccurs="1">
				<xsd:element name="ArrivalDate" type="xsd:dateTime" minOccurs="1" maxOccurs="1">
					<xsd:annotation>
						<xsd:documentation>Vessel arrival date</xsd:documentation>
					</xsd:annotation>
				</xsd:element>
				<xsd:element name="DepatureDate" type="xsd:dateTime" minOccurs="1" maxOccurs="1">
					<xsd:annotation>
						<xsd:documentation>Vessel depature date</xsd:documentation>
					</xsd:annotation>
				</xsd:element>
			</xsd:choice>
		</xsd:sequence>
	</xsd:complexType>
	<xsd:simpleType name="DirectionType">
		<xsd:annotation>
			<xsd:documentation>Incoming or outcoming direction of vessel</xsd:documentation>
		</xsd:annotation>
		<xsd:restriction base="xsd:string">
			<xsd:enumeration value="IN">
				<xsd:annotation>
					<xsd:documentation>Incoming</xsd:documentation>
				</xsd:annotation>
			</xsd:enumeration>
			<xsd:enumeration value="OUT">
				<xsd:annotation>
					<xsd:documentation>Outcoming</xsd:documentation>
				</xsd:annotation>
			</xsd:enumeration>
		</xsd:restriction>
	</xsd:simpleType>
	<xsd:complexType name="ContainerListType">
		<xsd:annotation>
			<xsd:documentation>List of containers to disharge</xsd:documentation>
		</xsd:annotation>
		<xsd:sequence>
			<xsd:element name="Container" type="ContainerType" maxOccurs="unbounded"/>
		</xsd:sequence>
	</xsd:complexType>
	<xsd:complexType name="ContainerType">
		<xsd:annotation>
			<xsd:documentation>Container details</xsd:documentation>
		</xsd:annotation>
		<xsd:sequence>
			<xsd:element name="ContainerID" minOccurs="0" type="xsd:integer">
				<xsd:annotation>
					<xsd:documentation>Identificator of container returned by FCT system at creation time needed for position change or deletion. Empty for booking creation.</xsd:documentation>
				</xsd:annotation>
			</xsd:element>
			<xsd:element name="Cell" type="CellType" minOccurs="0" maxOccurs="1">
				<xsd:annotation>
					<xsd:documentation>Stowage location of container on the board of a vessel</xsd:documentation>
				</xsd:annotation>
			</xsd:element>
			<xsd:element name="Prefix" type="xsd:string" minOccurs="0" maxOccurs="1">
				<xsd:annotation>
					<xsd:documentation>Character prefix of container number</xsd:documentation>
				</xsd:annotation>
			</xsd:element>
			<xsd:element name="Number" type="xsd:string" minOccurs="0" maxOccurs="1">
				<xsd:annotation>
					<xsd:documentation>Numeric part of container number. Mandatory for non-transit containers.</xsd:documentation>
				</xsd:annotation>
			</xsd:element>
			<xsd:element name="Type" type="xsd:string" minOccurs="0">
				<xsd:annotation>
					<xsd:documentation>ISO type of container</xsd:documentation>
				</xsd:annotation>
			</xsd:element>
			<xsd:element name="TypeID" type="xsd:integer" minOccurs="1">
				<xsd:annotation>
					<xsd:documentation>Идентификатор контейнера согласно справочникам ПКТ</xsd:documentation>
				</xsd:annotation>
			</xsd:element>
			<xsd:element name="IsEmpty" type="xsd:boolean" default="true" minOccurs="1">
				<xsd:annotation>
					<xsd:documentation>True if container is empty otherwise false</xsd:documentation>
				</xsd:annotation>
			</xsd:element>
			<xsd:element name="Brutto" type="xsd:decimal" minOccurs="1">
				<xsd:annotation>
					<xsd:documentation>Brutto weight of container</xsd:documentation>
				</xsd:annotation>
			</xsd:element>
      <xsd:element name="LoadingPortID" type="xsd:integer" minOccurs="0">
        <xsd:annotation>
          <xsd:documentation>Port of loading identificator in FCT system</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
      <xsd:element name="DischargePortID" type="xsd:integer" minOccurs="0">
        <xsd:annotation>
          <xsd:documentation>Port of discharge identificator in FCT system</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
      <xsd:element name="IsTransit" type="xsd:boolean" minOccurs="0">
        <xsd:annotation>
          <xsd:documentation>Transition flag</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
			<xsd:element name="Temperature" type="xsd:decimal" minOccurs="0">
				<xsd:annotation>
					<xsd:documentation>Temperature condition</xsd:documentation>
				</xsd:annotation>
			</xsd:element>
			<xsd:element name="TemperatureUnit" type="TemperatureUnitType" minOccurs="0">
				<xsd:annotation>
					<xsd:documentation>Unit of temperature measurement</xsd:documentation>
				</xsd:annotation>
			</xsd:element>
			<xsd:element name="Forwarder" type="PartyType" minOccurs="0">
				<xsd:annotation>
					<xsd:documentation>Forwarder organisation</xsd:documentation>
				</xsd:annotation>
			</xsd:element>
			<xsd:element name="OnCarriageDetails" type="OnCarriageType" minOccurs="0">
				<xsd:annotation>
					<xsd:documentation>Description of on-carriage details</xsd:documentation>
				</xsd:annotation>
			</xsd:element>
			<xsd:element name="IMOList" type="IMOListType" minOccurs="0">
				<xsd:annotation>
					<xsd:documentation>List of IMO values for each container</xsd:documentation>
				</xsd:annotation>
			</xsd:element>
		</xsd:sequence>
	</xsd:complexType>

	<xsd:simpleType name="CellType">
		<xsd:annotation>
			<xsd:documentation>Stowage cell identification in the ISO Bay-Row-Pos format. 
		First 3 digit - bay, then 2 digits for row and last 2 digits for position. 
		If necessary leading zeros should be added.
		</xsd:documentation>
		</xsd:annotation>
		<xsd:restriction base="xsd:string">
			<xsd:pattern value="[0-9][0-9][0-9][0-9][0-9][0-9][0-9]"/>
		</xsd:restriction>
	</xsd:simpleType>

	<xsd:simpleType name="TemperatureUnitType">
		<xsd:restriction base="xsd:string">
			<xsd:enumeration value="C">
				<xsd:annotation>
					<xsd:documentation>Celsius temperature</xsd:documentation>
				</xsd:annotation>
			</xsd:enumeration>
			<xsd:enumeration value="F">
				<xsd:annotation>
					<xsd:documentation>Fahrenheit temperature</xsd:documentation>
				</xsd:annotation>
			</xsd:enumeration>
		</xsd:restriction>
	</xsd:simpleType>

	<xsd:complexType name="OnCarriageType">
		<xsd:annotation>
			<xsd:documentation>Container on-carriage details</xsd:documentation>
		</xsd:annotation>
		<xsd:sequence>
			<xsd:element name="TransportKind" type="TransportMeansType" minOccurs="1">
				<xsd:annotation>
					<xsd:documentation>Means of transport kind</xsd:documentation>
				</xsd:annotation>
			</xsd:element>
			<xsd:element name="TransportName" type="xsd:string" minOccurs="0">
				<xsd:annotation>
					<xsd:documentation>Means of transport name</xsd:documentation>
				</xsd:annotation>
			</xsd:element>
			<xsd:element name="DepatureDate" type="xsd:date" minOccurs="0">
				<xsd:annotation>
					<xsd:documentation>Planned date of container on-carriage from the terminal</xsd:documentation>
				</xsd:annotation>
			</xsd:element>
			<xsd:element name="PlaceOfDelivery" type="xsd:string" minOccurs="0">
				<xsd:annotation>
					<xsd:documentation>Place of delivery (final destination)</xsd:documentation>
				</xsd:annotation>
			</xsd:element>
		</xsd:sequence>
	</xsd:complexType>
	<xsd:complexType name="IMOListType">
		<xsd:annotation>
			<xsd:documentation>List of IMO values</xsd:documentation>
		</xsd:annotation>
		<xsd:sequence>
			<xsd:element name="IMO" type="xsd:decimal" maxOccurs="unbounded">
				<xsd:annotation>
					<xsd:documentation>IMO value</xsd:documentation>
				</xsd:annotation>
			</xsd:element>
		</xsd:sequence>
	</xsd:complexType>
	<xsd:simpleType name="TransportMeansType">
		<xsd:annotation>
			<xsd:documentation>Means of transport kind. Values were taken from EDIFACT dictionary</xsd:documentation>
		</xsd:annotation>
		<xsd:restriction base="xsd:string">
			<xsd:enumeration value="Maritime transport"/>
			<xsd:enumeration value="Rail transport"/>
			<xsd:enumeration value="Road transport"/>
			<xsd:enumeration value="Multimodal transport"/>
			<xsd:enumeration value="Inland water transport"/>
		</xsd:restriction>
	</xsd:simpleType>

	<xsd:simpleType name="ModificationType">
		<xsd:annotation>
			<xsd:documentation>Тип производимого изменения.</xsd:documentation>
		</xsd:annotation>
		<xsd:restriction base="xsd:string">
			<xsd:enumeration value="create"/>
			<xsd:enumeration value="replace"/>
			<xsd:enumeration value="delete"/>
		</xsd:restriction>
	</xsd:simpleType>

	<xsd:complexType name="PartiesListType">
		<xsd:annotation>
			<xsd:documentation>Parties List</xsd:documentation>
		</xsd:annotation>
		<xsd:sequence>
			<xsd:element name="Party" type="PartyType" maxOccurs="unbounded">
				<xsd:annotation>
					<xsd:documentation>Party</xsd:documentation>
				</xsd:annotation>
			</xsd:element>
		</xsd:sequence>
	</xsd:complexType>


	<xsd:complexType name="PartyType">
		<xsd:annotation>
			<xsd:documentation>Party description</xsd:documentation>
		</xsd:annotation>
		<xsd:sequence>
			<xsd:element name="PartyFunction" type="PartyFunctionType" minOccurs="1" maxOccurs="1">
				<xsd:annotation>
					<xsd:documentation>Party Function</xsd:documentation>
				</xsd:annotation>
			</xsd:element>
			<xsd:element name="Name">
				<xsd:annotation>
					<xsd:documentation>Organisation name</xsd:documentation>
				</xsd:annotation>
			</xsd:element>
			<xsd:element name="Address" type="xsd:string" minOccurs="0" maxOccurs="1" nillable="true">
				<xsd:annotation>
					<xsd:documentation>Organisation address</xsd:documentation>
				</xsd:annotation>
			</xsd:element>
			<xsd:element name="ContractID" type="xsd:integer" minOccurs="0">
				<xsd:annotation>
					<xsd:documentation>Identification number of contract with FCT</xsd:documentation>
				</xsd:annotation>
			</xsd:element>
		</xsd:sequence>
	</xsd:complexType>
	<xsd:simpleType name="PartyFunctionType">
		<xsd:restriction base="xsd:string">
			<xsd:enumeration value="Stevedore">
				<xsd:annotation>
					<xsd:documentation>Stevedore party</xsd:documentation>
				</xsd:annotation>
			</xsd:enumeration>
			<xsd:enumeration value="Agent">
				<xsd:annotation>
					<xsd:documentation>Agent party</xsd:documentation>
				</xsd:annotation>
			</xsd:enumeration>
			<xsd:enumeration value="Shipper">
				<xsd:annotation>
					<xsd:documentation>Sender party</xsd:documentation>
				</xsd:annotation>
			</xsd:enumeration>
			<xsd:enumeration value="Forwarder">
				<xsd:annotation>
					<xsd:documentation>Forwarder party</xsd:documentation>
				</xsd:annotation>
			</xsd:enumeration>
			<xsd:enumeration value="Consignee">
				<xsd:annotation>
					<xsd:documentation>Consignee party</xsd:documentation>
				</xsd:annotation>
			</xsd:enumeration>
			<xsd:enumeration value="Notify">
				<xsd:annotation>
					<xsd:documentation>Notified party</xsd:documentation>
				</xsd:annotation>
			</xsd:enumeration>
		</xsd:restriction>
	</xsd:simpleType>
</xsd:schema>
