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

    <xs:element name="AgentAccountSyncRequest" type="AgentAccountSyncDto"/>
    <xs:element name="AgentAccountSyncResponse" type="AgentAccountSyncDto"/>

    <xs:complexType name="AgentAccountSyncDto">
        <xs:all>
            <xs:element name="BankCodes" minOccurs="0" type="BankBicCodesDto" />
            <xs:element name="Accounts" type="SyncAccountsDto"/>
        </xs:all>
    </xs:complexType>

    <xs:complexType name="SyncAccountsDto">
        <xs:sequence maxOccurs="1000">
            <xs:element name="Account" type="SyncAccountDto"/>
        </xs:sequence>
    </xs:complexType>

    <xs:complexType name="SyncAccountDto">
        <xs:all>
            <xs:element name="Region" type="Region"/>
            <xs:element name="AccountNo" type="AccountNo" minOccurs="0"/>
            <xs:element name="Iban" type="IBAN" minOccurs="0"/>
            <xs:element name="Status" type="AccountStatus" minOccurs="0"/>
            <xs:element name="Name" type="Max140Text" minOccurs="0"/>
        </xs:all>
    </xs:complexType>

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

    <xs:simpleType name="AccountNo">
        <xs:restriction base="xs:string">
            <xs:pattern value="\d{14}|\d{12}"/>
        </xs:restriction>
    </xs:simpleType>

    <xs:simpleType name="IBAN">
        <xs:restriction base="xs:string">
            <xs:pattern value="[A-Z]{2,2}[0-9]{2,2}[a-zA-Z0-9]{1,30}"/>
        </xs:restriction>
    </xs:simpleType>

    <xs:simpleType name="AccountStatus">
        <xs:restriction base="xs:string">
            <xs:enumeration value="ACTIVE"/>
            <xs:enumeration value="CLOSED"/>
        </xs:restriction>
    </xs:simpleType>

    <xs:simpleType name="Max140Text">
        <xs:restriction base="xs:string">
            <xs:minLength value="1"/>
            <xs:maxLength value="140"/>
            <xs:whiteSpace value="collapse"/>
            <xs:pattern value="\S+.*"/>
        </xs:restriction>
    </xs:simpleType>


    <xs:complexType name="BankBicCodesDto">
        <xs:sequence minOccurs="0" maxOccurs="2">
            <xs:element name="BankCode" type="BIC"/>
        </xs:sequence>
    </xs:complexType>

    <xs:simpleType name="BIC">
        <xs:restriction base="xs:string">
            <xs:pattern value="[A-Z]{6,6}[A-Z2-9][A-NP-Z0-9]([A-Z0-9]{3,3}){0,1}"/>
        </xs:restriction>
    </xs:simpleType>
</xs:schema>
