<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:gp="http://xsd.germanports.com"
    xmlns:xs="http://www.w3.org/2001/XMLSchema"
    targetNamespace="http://xsd.germanports.com">
  <xs:element name="GermanPortsNotification">
    <xs:complexType>
      <xs:sequence>
        <xs:element name="Interchange" type="gp:Interchange"/>
        <xs:element name="GermanPortsNotificationMessage" type="gp:GermanPortsNotificationMessage" maxOccurs="unbounded"/>
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:simpleType name="an..10Type">
    <xs:restriction base="xs:string">
      <xs:maxLength value="10"/>
    </xs:restriction>
  </xs:simpleType>
  <xs:simpleType name="an..14Type">
    <xs:restriction base="xs:string">
      <xs:maxLength value="14"/>
    </xs:restriction>
  </xs:simpleType>
  <xs:simpleType name="an..17Type">
    <xs:restriction base="xs:string">
      <xs:maxLength value="17"/>
    </xs:restriction>
  </xs:simpleType>
  <xs:simpleType name="an..35Type">
    <xs:restriction base="xs:string">
      <xs:maxLength value="35"/>
    </xs:restriction>
  </xs:simpleType>
  <xs:simpleType name="ClaimID">
    <xs:restriction base="gp:an..10Type">
      <xs:minLength value="10"/>
      <xs:pattern value="[0-9]{10}"/>
    </xs:restriction>
  </xs:simpleType>
  <xs:simpleType name="ClaimStatusContentType">
    <xs:restriction base="xs:string">
      <xs:enumeration value="ACTIVE"/>
      <xs:enumeration value="CANCELLED"/>
      <xs:enumeration value="DOWNGRADED_TO_PIN"/>
      <xs:enumeration value="EXPIRED"/>
      <xs:enumeration value="FINISHED"/>
      <xs:enumeration value="PASSED"/>
      <xs:enumeration value="PENDING_INSPECTION"/>
      <xs:enumeration value="RETURNED"/>
      <xs:enumeration value="REVOKED"/>
      <xs:enumeration value="USED"/>
    </xs:restriction>
  </xs:simpleType>
  <xs:complexType name="ClaimStatusType">
    <xs:simpleContent>
      <xs:extension base="gp:ClaimStatusContentType"/>
    </xs:simpleContent>
  </xs:complexType>
  <xs:complexType name="Contact">
    <xs:sequence>
      <xs:element name="Name" type="gp:Name"/>
      <xs:element name="Telephone" type="gp:Phone" minOccurs="0"/>
      <xs:element name="Email" type="gp:Email" minOccurs="0"/>
    </xs:sequence>
  </xs:complexType>
  <xs:complexType name="ContainerDetails">
    <xs:sequence>
      <xs:element name="ContainerID" type="gp:ContainerIDType" minOccurs="0"/>
    </xs:sequence>
  </xs:complexType>
  <xs:simpleType name="ContainerIDType">
    <xs:restriction base="xs:string"/>
  </xs:simpleType>
  <xs:simpleType name="CustomerReference">
    <xs:restriction base="gp:an..35Type">
      <xs:minLength value="1"/>
      <xs:maxLength value="32"/>
      <xs:pattern value="[A-Z0-9]+"/>
    </xs:restriction>
  </xs:simpleType>
  <xs:simpleType name="DocumentCreationTimeStamp">
    <xs:restriction base="xs:dateTime"/>
  </xs:simpleType>
  <xs:simpleType name="DocumentExchangeNumber">
    <xs:restriction base="gp:an..14Type">
      <xs:minLength value="1"/>
    </xs:restriction>
  </xs:simpleType>
  <xs:simpleType name="Email">
    <xs:restriction base="xs:string">
      <xs:minLength value="3"/>
      <xs:maxLength value="70"/>
    </xs:restriction>
  </xs:simpleType>
  <xs:simpleType name="GermanPortsIDType">
    <xs:restriction base="gp:an..17Type">
      <xs:minLength value="3"/>
    </xs:restriction>
  </xs:simpleType>
  <xs:complexType name="GermanPortsNotificationMessage" mixed="false">
    <xs:complexContent>
      <xs:extension base="gp:Message">
        <xs:sequence>
          <xs:element name="GermanPortsNotificationMessageDetails" type="gp:GermanPortsNotificationMessageDetailsType"/>
        </xs:sequence>
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>
  <xs:complexType name="GermanPortsNotificationMessageDetailsType">
    <xs:sequence>
      <xs:element name="OriginalMessageReferenceNumber" type="xs:string" minOccurs="0"/>
      <xs:element name="Container" type="gp:ContainerDetails"/>
      <xs:element name="CustomerReference" type="gp:CustomerReference" minOccurs="0"/>
      <xs:element name="SecureReleaseOrder" type="gp:SecureReleaseOrderType" minOccurs="0"/>
      <xs:element name="Notifications">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="Notification" type="gp:NotificationType" maxOccurs="unbounded"/>
          </xs:sequence>
        </xs:complexType>
      </xs:element>
    </xs:sequence>
  </xs:complexType>
  <xs:complexType name="Interchange">
    <xs:sequence>
      <xs:element name="CreationTimeStamp" type="gp:DocumentCreationTimeStamp"/>
      <xs:element name="ExchangeNumber" type="gp:DocumentExchangeNumber"/>
      <xs:element name="TestIndicator" type="xs:boolean" minOccurs="0"/>
      <xs:element name="Sender" type="gp:SenderType"/>
      <xs:element name="Recipient" type="gp:RecipientType"/>
    </xs:sequence>
  </xs:complexType>
  <xs:complexType name="Message">
    <xs:sequence>
      <xs:element name="MessageHeader" type="gp:MessageHeader"/>
    </xs:sequence>
  </xs:complexType>
  <xs:complexType name="MessageFunctionCode">
    <xs:simpleContent>
      <xs:extension base="gp:MessagefunctionCodeContent"/>
    </xs:simpleContent>
  </xs:complexType>
  <xs:simpleType name="MessagefunctionCodeContent">
    <xs:restriction base="xs:string">
      <xs:enumeration value="NOTIFICATION"/>
      <xs:enumeration value="RECEIPT"/>
    </xs:restriction>
  </xs:simpleType>
  <xs:complexType name="MessageHeader">
    <xs:sequence>
      <xs:element name="Version" type="gp:MessageVersionID" fixed="1.0.6"/>
      <xs:element name="Function" type="gp:MessageFunctionCode"/>
      <xs:element name="ReferenceNumber" type="gp:MessageReferenceNumber"/>
      <xs:element name="Sender" type="gp:SenderType"/>
      <xs:element name="Recipient" type="gp:RecipientType" minOccurs="0" maxOccurs="9"/>
    </xs:sequence>
  </xs:complexType>
  <xs:simpleType name="MessageReferenceNumber">
    <xs:restriction base="gp:an..35Type"/>
  </xs:simpleType>
  <xs:simpleType name="MessageVersionID">
    <xs:restriction base="gp:an..17Type"/>
  </xs:simpleType>
  <xs:simpleType name="Name">
    <xs:restriction base="xs:string">
      <xs:minLength value="1"/>
      <xs:maxLength value="35"/>
    </xs:restriction>
  </xs:simpleType>
  <xs:simpleType name="NotificationCodeDef">
    <xs:restriction base="xs:string">
      <xs:maxLength value="8"/>
    </xs:restriction>
  </xs:simpleType>
  <xs:complexType name="NotificationType">
    <xs:sequence>
      <xs:element name="Type" type="gp:ResponseTypeDef"/>
      <xs:element name="Code" type="gp:NotificationCodeDef"/>
      <xs:element name="Information" type="gp:ResponseInformationType" minOccurs="0"/>
    </xs:sequence>
  </xs:complexType>
  <xs:complexType name="ParticipantCode">
    <xs:simpleContent>
      <xs:extension base="gp:ParticipantCodeType">
        <xs:attribute name="AgencyID" type="xs:string"/>
      </xs:extension>
    </xs:simpleContent>
  </xs:complexType>
  <xs:simpleType name="ParticipantCodeType">
    <xs:restriction base="gp:an..35Type">
      <xs:minLength value="1"/>
    </xs:restriction>
  </xs:simpleType>
  <xs:simpleType name="Phone">
    <xs:restriction base="xs:string">
      <xs:minLength value="1"/>
      <xs:maxLength value="35"/>
    </xs:restriction>
  </xs:simpleType>
  <xs:complexType name="RecipientType">
    <xs:sequence>
      <xs:element name="ParticipantCode" type="gp:ParticipantCode"/>
    </xs:sequence>
  </xs:complexType>
  <xs:simpleType name="ResponseInformationType">
    <xs:restriction base="xs:string"/>
  </xs:simpleType>
  <xs:complexType name="ResponseTypeDef">
    <xs:simpleContent>
      <xs:extension base="gp:ResponseTypeDefContent"/>
    </xs:simpleContent>
  </xs:complexType>
  <xs:simpleType name="ResponseTypeDefContent">
    <xs:restriction base="xs:string">
      <xs:enumeration value="ERROR"/>
      <xs:enumeration value="INFO"/>
      <xs:enumeration value="WARNING"/>
    </xs:restriction>
  </xs:simpleType>
  <xs:complexType name="SecureReleaseOrderType">
    <xs:sequence>
      <xs:element name="ClaimID" type="gp:ClaimID"/>
      <xs:element name="TerminalID" type="gp:TerminalID" minOccurs="0"/>
      <xs:element name="PreviousOwner" type="gp:GermanPortsIDType" minOccurs="0"/>
      <xs:element name="CurrentOwner" type="gp:GermanPortsIDType" minOccurs="0"/>
      <xs:element name="ExpirationTimeStamp" type="xs:dateTime" minOccurs="0"/>
      <xs:element name="ClaimStatus" type="gp:ClaimStatusType"/>
    </xs:sequence>
  </xs:complexType>
  <xs:complexType name="SenderType">
    <xs:sequence>
      <xs:element name="ParticipantCode" type="gp:ParticipantCode"/>
      <xs:element name="Contact" type="gp:Contact" minOccurs="0"/>
    </xs:sequence>
  </xs:complexType>
  <xs:simpleType name="TerminalID">
    <xs:restriction base="xs:string">
      <xs:minLength value="1"/>
      <xs:maxLength value="4"/>
    </xs:restriction>
  </xs:simpleType>
</xs:schema>
