<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<xs:schema version="1.0" xmlns:xs="http://www.w3.org/2001/XMLSchema">

    <xs:simpleType name="IBAN">
        <xs:restriction base="xs:string">
            <xs:pattern value="[A-Z]{2}(\d{18}|\d{2}[A-Z]{4}\d{14})"/>
        </xs:restriction>
    </xs:simpleType>

    <xs:simpleType name="vibanStatus">
        <xs:restriction base="xs:string">
            <xs:enumeration value="ACTIVE"/>
            <xs:enumeration value="PENDING"/>
            <xs:enumeration value="ON_HOLD"/>
            <xs:enumeration value="CLOSED"/>
            <xs:enumeration value="REJECTED"/>
            <xs:enumeration value="BLOCKED"/>
        </xs:restriction>
    </xs:simpleType>

    <xs:complexType name="AccountUser">
        <xs:sequence>
            <xs:choice>
                <xs:element name="Person" type="Person"/>
                <xs:element name="Company" type="Company"/>
            </xs:choice>
            <xs:element name="Address" type="Address"/>
        </xs:sequence>
    </xs:complexType>

    <xs:complexType name="Person">
        <xs:all>
            <xs:element name="Name" type="PersonName"/>
            <xs:element name="BirthDate" type="xs:date"/>
            <xs:element name="BirthCountry" type="CountryCode" minOccurs="0"/>
            <xs:element name="Residency" type="CountryCode"/>
            <xs:element name="DocumentNumber" type="IdCode" minOccurs="0"/>
        </xs:all>
    </xs:complexType>

    <xs:complexType name="Representative">
        <xs:all>
            <xs:element name="Name" type="PersonName"/>
            <xs:element name="BirthDate" type="xs:date"/>
            <xs:element name="Residency" type="CountryCode"/>
        </xs:all>
    </xs:complexType>

    <xs:complexType name="Company">
        <xs:all>
            <xs:element name="Name" type="Max255Text"/>
            <xs:element name="CountryOfOrigin" type="CountryCode"/>
            <xs:element name="TaxResidency" type="CountryCode"/>
            <xs:element name="RegistrationNumber" type="IdCode"/>
            <xs:element name="Representative" type="Representative"/>
        </xs:all>
    </xs:complexType>

    <xs:simpleType name="CountryCode">
        <xs:restriction base="xs:string">
            <xs:pattern value="[A-Z]{2}"/>
        </xs:restriction>
    </xs:simpleType>

    <xs:complexType name="Address">
        <xs:all>
            <xs:element name="Country" type="CountryCode"/>
            <xs:element name="StreetNo" type="Max255Text"/>
            <xs:element name="CityCounty" type="Max255Text"/>
        </xs:all>
    </xs:complexType>

    <xs:simpleType name="PersonName">
        <xs:restriction base="xs:string">
            <xs:maxLength value="255"/>
            <xs:minLength value="2"/>
            <xs:whiteSpace value="collapse"/>
            <xs:pattern value="[^0-9]*"/>
        </xs:restriction>
    </xs:simpleType>

    <xs:simpleType name="Max255Text">
        <xs:restriction base="xs:string">
            <xs:maxLength value="255"/>
            <xs:minLength value="1"/>
            <xs:whiteSpace value="collapse"/>
        </xs:restriction>
    </xs:simpleType>

    <xs:simpleType name="IdCode">
        <xs:restriction base="xs:string">
            <xs:maxLength value="25"/>
            <xs:minLength value="4"/>
            <xs:whiteSpace value="collapse"/>
            <xs:pattern
                    value="['0-9a-zA-ZĄĮĀĆÄÅĘĒČÉŹĖĢĶĪĻŠŃŅÓŌÕÖŲŁŚŪÜŻŽąįāćäåęēčéźėģķīļšńņóōõöųłśūüżž /–\-]+"/>
        </xs:restriction>
    </xs:simpleType>

</xs:schema>
