<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" version="1.5.0">
	<!--=====================================================================-->
	<!--                        Schema Management                            -->
	<!--=====================================================================-->
	<!--                             IMPORTS                                 -->
	<!--                          DOCUMENTATION                              -->
	<xsd:annotation>
		<xsd:documentation xml:lang="en"/>
		<xsd:documentation>
			<name>Identity Interface</name>
			<revision version="1.5.0">
				<date>2023-NOVEMBER-03</date>
			</revision>
		</xsd:documentation>
	</xsd:annotation>

	<!--                             INCLUDE                                 -->
	<!--                            REDEFINE                                 -->
	<!--=====================================================================-->
	<!--                    Model-Building Components                        -->
	<!--=====================================================================-->
	<!--                            NOTATIONS                                -->
	<!--                           SIMPLE TYPES                              -->
	<xsd:simpleType name="ModeSimpleType">
		<xsd:restriction base="xsd:token">
			<xsd:enumeration value="direct"/>
            <xsd:enumeration value="batch"/>
		</xsd:restriction>
	</xsd:simpleType>

	<xsd:simpleType name="BatchIdentifierSimpleType">
        <xsd:restriction base="xsd:token">
            <xsd:minLength value="22"/>
            <xsd:maxLength value="150"/>
            <xsd:pattern value="[A-Z]{1,4}-[A-Z,0-9]{1,32}-[A-Z,0-9]{1,32}-([A-Z]{1,32}-){0,2}[0-9]{17}"/>
        </xsd:restriction>
	</xsd:simpleType>

	<xsd:simpleType name="IdentifierSimpleType">
		<xsd:restriction base="xsd:token">
			<xsd:minLength value="1"/>
			<xsd:maxLength value="32"/>
			<xsd:pattern value="[0-9a-zA-Z]{1,32}"/>
		</xsd:restriction>
	</xsd:simpleType>
	
	    <xsd:simpleType name="LanguageCodeSimpleType">
        <!-- two small letters -->
        <xsd:restriction base="xsd:token">
            <xsd:minLength value="2"/>
            <xsd:maxLength value="2"/>
            <xsd:pattern value="[a-z]{2}"/>
        </xsd:restriction>
    </xsd:simpleType>


	<xsd:simpleType name="VersionSimpleType">
		<xsd:restriction base="xsd:token">
			<xsd:pattern value="[0-9].[0-9]"/>
		</xsd:restriction>
	</xsd:simpleType>

    <xsd:simpleType name="AgeSimpleType">
		<xsd:restriction base="xsd:token">
			<xsd:minLength value="1"/>
			<xsd:maxLength value="2"/>
			<xsd:pattern value="[0-9]{1,2}"/>
		</xsd:restriction>
	</xsd:simpleType>


	<xsd:simpleType name="DateTimeSimpleType">
		<xsd:restriction base="xsd:token">
			<xsd:minLength value="24"/>
			<xsd:maxLength value="24"/>
			<xsd:pattern value="[0-9]{4}-[0-9]{2}-[0-9]{2}T[0-9]{2}:[0-9]{2}:[0-9]{2}.[0-9]{3}Z"/>
		</xsd:restriction>
	</xsd:simpleType>
	
    <xsd:simpleType name="DateSimpleType">
		<xsd:restriction base="xsd:token">
			<xsd:minLength value="10"/>
			<xsd:maxLength value="10"/>
			<xsd:pattern value="[0-9]{4}-[0-9]{2}-[0-9]{2}"/>
		</xsd:restriction>
	</xsd:simpleType>

    <xsd:simpleType name="GenderSimpleType">
       <xsd:union>
            <xsd:simpleType>
                <xsd:restriction base="xsd:token">
                    <xsd:enumeration value="MALE"/>
                    <xsd:enumeration value="FEMALE"/>
                    <xsd:enumeration value="UNKNOWN"/>
                </xsd:restriction>
            </xsd:simpleType>
            <xsd:simpleType>
                <xsd:restriction base="xsd:normalizedString">
                    <xsd:minLength value="0"/>
                    <xsd:maxLength value="0"/>
                </xsd:restriction>
            </xsd:simpleType>
        </xsd:union>
	</xsd:simpleType>

	<xsd:simpleType name="MessageCountSimpleType">
		<xsd:restriction base="xsd:nonNegativeInteger">
			<xsd:minInclusive value="0"/>
			<xsd:maxInclusive value="3000"/>
		</xsd:restriction>
	</xsd:simpleType>

	<xsd:simpleType name="EntranceCodeSimpleType">
		<xsd:restriction base="xsd:token">
			<xsd:minLength value="1"/>
			<xsd:maxLength value="40"/>
			<xsd:pattern value="[0-9a-zA-Z]{1,40}"/>
		</xsd:restriction>
	</xsd:simpleType>

	<xsd:simpleType name="RelaxedIdentifierSimpleType">
        <xsd:restriction base="xsd:token">
            <xsd:minLength value="1"/>
            <xsd:maxLength value="32"/>
            <xsd:pattern value="[0-9a-zA-Z_\-]{1,32}"/>
         </xsd:restriction>
    </xsd:simpleType>

    <xsd:simpleType name="TransactionIDType">
        <xsd:restriction base="xsd:token">
            <xsd:pattern value="[0-9a-zA-Z]{1,64}"/>
        </xsd:restriction>
    </xsd:simpleType>

    
    <xsd:simpleType name="DebtorReferenceSimpleType">
        <xsd:restriction base="xsd:token">
            <!-- allow empty DebtorReference element upon request -->
            <xsd:minLength value="0"/>
            <xsd:maxLength value="35"/>
        </xsd:restriction>
    </xsd:simpleType>

    <xsd:simpleType name="DocReferenceSimpleType">
        <xsd:restriction base="xsd:token">
            <xsd:minLength value="1"/>
            <xsd:maxLength value="35"/>
        </xsd:restriction>
    </xsd:simpleType>

    <xsd:simpleType name="EmailSimpleType">
 		<xsd:restriction base="xsd:normalizedString">
			<xsd:minLength value="0"/>
			<xsd:maxLength value="512"/>
		</xsd:restriction>
    </xsd:simpleType>

    <xsd:simpleType name="PhoneNumberSimpleType">
        <xsd:union>
            <xsd:simpleType>
                <xsd:restriction base="xsd:token">
                    <xsd:pattern value="\+[0-9]{1,62}"/>
                </xsd:restriction>
            </xsd:simpleType>
            <xsd:simpleType>
                <xsd:restriction base="xsd:normalizedString">
                    <xsd:minLength value="0"/>
                    <xsd:maxLength value="0"/>
                </xsd:restriction>
            </xsd:simpleType>
        </xsd:union>
    </xsd:simpleType>
  
    <xsd:simpleType name="TokenLength70SimpleType">
        <xsd:restriction base="xsd:token">
            <xsd:maxLength value="70"/>
        </xsd:restriction>
    </xsd:simpleType>

    <xsd:simpleType name="TokenLength128SimpleType">
        <xsd:restriction base="xsd:token">
            <xsd:maxLength value="128"/>
        </xsd:restriction>
    </xsd:simpleType>
    
    <xsd:simpleType name="TokenLength256SimpleType">
        <xsd:restriction base="xsd:token">
            <xsd:maxLength value="256"/>
        </xsd:restriction>
    </xsd:simpleType>
    
    <xsd:simpleType name="TokenLength35SimpleType">
        <xsd:restriction base="xsd:token">
            <xsd:maxLength value="35"/>
        </xsd:restriction>
    </xsd:simpleType>
    
    <xsd:simpleType name="TokenLength8SimpleType">
        <xsd:restriction base="xsd:token">
            <xsd:maxLength value="8"/>
        </xsd:restriction>
    </xsd:simpleType>

    <xsd:simpleType name="TokenLength5SimpleType">
        <xsd:restriction base="xsd:token">
            <xsd:maxLength value="5"/>
        </xsd:restriction>
    </xsd:simpleType>


    <xsd:simpleType name="ErrorCodeSimpleType">
        <xsd:restriction base="xsd:token">
            <xsd:pattern value="[A-Z]{2}[0-9]{4}"/>
        </xsd:restriction>
    </xsd:simpleType>


    <xsd:simpleType name="DynamicDataTextSimpleType">
        <xsd:restriction base="xsd:normalizedString">
            <xsd:minLength value="0"/>
            <xsd:maxLength value="256"/>
        </xsd:restriction>
    </xsd:simpleType>

    <xsd:simpleType name="URLSimpleType">
        <xsd:restriction base="xsd:anyURI">
            <xsd:minLength value="1"/>
            <xsd:maxLength value="512"/>
        </xsd:restriction>
    </xsd:simpleType>

    <xsd:simpleType name="ContentMimeSimpleType">
        <xsd:restriction base="xsd:token">
            <xsd:enumeration value="application/pdf"/>
        </xsd:restriction>
    </xsd:simpleType>
    
    <xsd:simpleType name="IDinAcceptantIDType">
        <xsd:restriction base="xsd:token">
            <xsd:pattern value="[0-9]{10}"/>
        </xsd:restriction>
    </xsd:simpleType>
    
    <xsd:simpleType name="IDinAcceptantSubIDType">
        <xsd:restriction base="xsd:nonNegativeInteger">
            <xsd:pattern value="[0-9]{1,6}"/>
        </xsd:restriction>
    </xsd:simpleType>
    
    <xsd:simpleType name="BICSimpleType">
        <xsd:union>
            <xsd:simpleType>
                <xsd:restriction base="xsd:token">
                    <xsd:minLength value="8"/>
                    <xsd:maxLength value="11"/>
                    <xsd:pattern value="[A-Z0-9]{8,11}"/>
                </xsd:restriction>
            </xsd:simpleType>
            <xsd:simpleType>
                <xsd:restriction base="xsd:normalizedString">
                    <xsd:minLength value="0"/>
                    <xsd:maxLength value="0"/>
                </xsd:restriction>
            </xsd:simpleType>
        </xsd:union>
    </xsd:simpleType>
    
    <xsd:simpleType name="RequestTypeSimpleType">
        <xsd:restriction base="xsd:token">
            <xsd:enumeration value="IDIN_IDENTITY_CHECK"/>
            <xsd:enumeration value="IDIN_AUTHENTICATION"/>
            <xsd:enumeration value="IDIN_LOGIN"/>
            <xsd:enumeration value="IDIN_AGE_VERIFICATION"/>
            <xsd:enumeration value="IDIN_DOCUMENT_SIGNING"/>
        </xsd:restriction>
    </xsd:simpleType>
    
    <xsd:simpleType name="StatusCodeSimpleType">
        <xsd:restriction base="xsd:nonNegativeInteger">
            <xsd:minInclusive value="0"/>
            <xsd:maxInclusive value="999999"/>
        </xsd:restriction>
    </xsd:simpleType>
    
    <xsd:simpleType name="StatusSimpleType">
        <xsd:restriction base="xsd:token">
            <xsd:enumeration value="New"/>
            <xsd:enumeration value="Open"/>
            <xsd:enumeration value="Cancelled"/>
            <xsd:enumeration value="Success"/>
            <xsd:enumeration value="Failure"/>
            <xsd:enumeration value="Expired"/>
            <xsd:enumeration value="SuccessManual"/>
            <xsd:enumeration value="BankSelected"/>
        </xsd:restriction>
    </xsd:simpleType>

    <xsd:simpleType name="IdentityServiceSimpleType">
        <xsd:restriction base="xsd:token">
            <xsd:enumeration value="IDIN"/>
            <!-- later more will be added -->
        </xsd:restriction>
    </xsd:simpleType>


   <xsd:simpleType name="TelephoneTypeSimpleType">
        <xsd:restriction base="xsd:token">
            <xsd:enumeration value="mobile"/>
            <xsd:enumeration value="fixed"/>
            <xsd:enumeration value="unknown"/>
         </xsd:restriction>
    </xsd:simpleType>
    
    <xsd:simpleType name="CustomerIDTYpeSimpleType">
        <xsd:restriction base="xsd:token">
            <xsd:enumeration value="BIN"/>
            <xsd:enumeration value="TRANSIENT"/>
         </xsd:restriction>
    </xsd:simpleType>

        
    <xsd:simpleType name="CustomerIDSimpleType">
        <xsd:restriction base="xsd:token">
            <xsd:maxLength value="1024"/>
         </xsd:restriction>
    </xsd:simpleType>
    
   <xsd:simpleType name="DocHashValiditySimpleType">
        <xsd:restriction base="xsd:token">
            <xsd:enumeration value="CONFIRMED"/>
            <xsd:enumeration value="GENERATED"/>
            <xsd:enumeration value="CANCELED"/>
            <xsd:enumeration value="FAILED"/>
            <!-- $$$ other options -->
         </xsd:restriction>
    </xsd:simpleType>
        
    
	<!--                          COMPLEX TYPES                              -->	
	<xsd:complexType name="IdentityTransactionRequestType">
		<xsd:sequence>
			<xsd:element name="RequestCategory" type="RequestCategoryComplexType"/>
			<xsd:element name="Description" type="TokenLength128SimpleType"/>
			<xsd:element name="DebtorReference" type="DebtorReferenceSimpleType" minOccurs="0"/>
			<xsd:element name="SkinID" type="RelaxedIdentifierSimpleType" minOccurs="0"/>
			<xsd:element name="DueDateTime" type="DateTimeSimpleType" minOccurs="0"/>
			<xsd:element name="DebtorReturnURL" type="DebtorReturnURLComplexType" minOccurs="0"/>
			<xsd:element name="DebtorAdditionalData" type="DebtorAdditionalDataComplexType" minOccurs="0"/>
			<xsd:element name="DebtorWallet" type="DebtorWalletComplexType" minOccurs="0"/>
        </xsd:sequence>
		<xsd:attributeGroup ref="RequestAttributeGroup"/>
	</xsd:complexType>
	
	
    <xsd:complexType name="IdentityBatchResponseType">
        <xsd:sequence>
            <xsd:element name="TransactionRequestBatchID" type="BatchIdentifierSimpleType"/>
            <xsd:element name="Status" type="StatusCodeSimpleType"/>
            <xsd:element name="StatusMessage" type="TokenLength256SimpleType"/>
            <xsd:element name="ErrorCount" type="MessageCountSimpleType" minOccurs="0"/>
        </xsd:sequence>
    </xsd:complexType>
    
    
    <xsd:complexType name="IdentityErrorResponseType">
        <xsd:sequence>
            <xsd:element name="Error" type="ErrorComplexType" maxOccurs="1"/>
        </xsd:sequence>
    </xsd:complexType>
    

    <xsd:complexType name="IdentityTransactionResponseType">
        <xsd:sequence>
            <xsd:element name="DebtorReference" type="DebtorReferenceSimpleType" minOccurs="0"/>
            <xsd:element name="RequestType" type="RequestTypeSimpleType" minOccurs="0"/>
            <xsd:element name="TransactionID" type="TransactionIDType" minOccurs="0"/>
            <xsd:element name="DebtorAdditionalData" type="DebtorAdditionalDataComplexType" minOccurs="0"/>
            <xsd:choice maxOccurs="1" minOccurs="1">
                <xsd:sequence>
                    <xsd:element name="TransactionURL" type="URLSimpleType"/>
                    <xsd:element name="ShortTransactionURL" type="URLSimpleType" minOccurs="0"/>
                </xsd:sequence>
                <xsd:element name="Error" type="ErrorComplexType" maxOccurs="1"/>
            </xsd:choice>
        </xsd:sequence>
        <xsd:attribute name="entranceCode" type="EntranceCodeSimpleType" use="required"/>
        <xsd:attribute name="brandID" type="RelaxedIdentifierSimpleType"/>
    </xsd:complexType>


    <xsd:complexType name="IdentityStatusRequestType">
        <xsd:sequence>
            <xsd:element name="TransactionID" type="TransactionIDType"/>
        </xsd:sequence>
        <xsd:attribute name="entranceCode" type="EntranceCodeSimpleType" use="required"/>
        <xsd:attribute name="brandID" type="RelaxedIdentifierSimpleType"/>
    </xsd:complexType>
    
    <xsd:complexType name="IdentityStatusUpdateType">
        <xsd:sequence>
            <xsd:element name="CreationDateTime" type="DateTimeSimpleType"/>
            <xsd:element name="DebtorReference" type="DebtorReferenceSimpleType" minOccurs="0"/>
            <xsd:element name="RequestType" type="RequestTypeSimpleType" minOccurs="0"/>
            <xsd:element name="TransactionID" type="TransactionIDType"/>
            <xsd:element name="Status" type="StatusSimpleType"/>
            
            <xsd:element name="AuthenticationAuthorityID" type="BICSimpleType" minOccurs="0"/>
            <xsd:element name="AuthenticationAuthorityName" type="TokenLength70SimpleType" minOccurs="0"/>
            <xsd:element name="IdentityReport" type="IdentityReportComplexType" minOccurs="0"/>

             <xsd:element name="Error" type="ErrorComplexType" minOccurs="0" maxOccurs="1"/>
        </xsd:sequence>
        <xsd:attribute name="entranceCode" type="EntranceCodeSimpleType" use="required"/>
        <xsd:attribute name="brandID" type="RelaxedIdentifierSimpleType"/>
    </xsd:complexType>


	<xsd:complexType name="IdentityReportComplexType">
		<xsd:sequence>
			<xsd:element name="DateTime" type ="DateTimeSimpleType" />
			
			<xsd:element name="CustomerIDResponse" type="CustomerIDResponseComplexType" minOccurs="0"/>
			<xsd:element name="CustomerIDLoginResponse" type="CustomerIDResponseComplexType" minOccurs="0"/>

			<xsd:element name="NameResponse" type="NameResponseComplexType" minOccurs="0"/>
			<xsd:element name="AddressResponse" type="AddressResponseComplexType" minOccurs="0"/>  
			<xsd:element name="BirthDateResponse" type="BirthDateResponseType" minOccurs="0"/>
			<xsd:element name="AgeCheckResponse" type="AgeCheckResponseComplexType" minOccurs="0"/>
            <xsd:element name="GenderResponse" type="GenderResponseComplexType" minOccurs="0"/>  
            <xsd:element name="TelephoneResponse1" type="TelephoneResponseComplexType" minOccurs="0"/>
            <xsd:element name="TelephoneResponse2" type="TelephoneResponseComplexType" minOccurs="0"/>
            <xsd:element name="TelephoneResponse3" type="TelephoneResponseComplexType" minOccurs="0"/>
			<xsd:element name="EmailResponse" type="EmailResponseComplexType" minOccurs="0"/>
			<xsd:element name="DocumentSignatureResponse" type="DocumentSignatureResponseComplexType" minOccurs="0"/>

		</xsd:sequence>
        <xsd:attribute name="identityMethod" type="IdentityServiceSimpleType"/>

	</xsd:complexType>


	<xsd:complexType name="RequestCategoryComplexType">
		<xsd:sequence>
			<xsd:element name="CustomerIDRequest" minOccurs="0">
				<xsd:complexType>
					<xsd:attributeGroup ref="RequestCategoryAttributeGroup"/>
				</xsd:complexType>
			</xsd:element>
            <xsd:element name="CustomerIDLoginRequest" minOccurs="0">
				<xsd:complexType>
					<xsd:attributeGroup ref="RequestCategoryAttributeGroup"/>
				</xsd:complexType>
			</xsd:element>

			<xsd:element name="NameRequest" minOccurs="0">
				<xsd:complexType>
					<xsd:attributeGroup ref="RequestCategoryAttributeGroup"/>
				</xsd:complexType>
			</xsd:element>
			<xsd:element name="AddressRequest" minOccurs="0">
				<xsd:complexType>
					<xsd:attributeGroup ref="RequestCategoryAttributeGroup"/>
				</xsd:complexType>
			</xsd:element>
			<xsd:element name="BirthDateRequest" minOccurs="0">
				<xsd:complexType>
					<xsd:attributeGroup ref="RequestCategoryAttributeGroup"/>
				</xsd:complexType>
			</xsd:element>
			<xsd:element name="AgeCheckRequest" minOccurs="0">
				<xsd:complexType>
					<xsd:attributeGroup ref="RequestCategoryAttributeGroup"/>
					<xsd:attributeGroup ref="AgeCheckAttributeGroup"/>
				</xsd:complexType>
			</xsd:element>
			<xsd:element name="GenderRequest" minOccurs="0">
				<xsd:complexType>
					<xsd:attributeGroup ref="RequestCategoryAttributeGroup"/>
				</xsd:complexType>
			</xsd:element>
			<xsd:element name="TelephoneRequest" minOccurs="0">
				<xsd:complexType>
					<xsd:attributeGroup ref="RequestCategoryAttributeGroup"/>
				</xsd:complexType>
			</xsd:element>
			<xsd:element name="EmailRequest" minOccurs="0">
				<xsd:complexType>
					<xsd:attributeGroup ref="RequestCategoryAttributeGroup"/>
				</xsd:complexType>
			</xsd:element>
			<xsd:element name="DocumentSignatureRequest" type="DocumentSignatureRequestComplexType" minOccurs="0"/>

			<!-- $$$  -->
		</xsd:sequence>
	</xsd:complexType>
	
	<xsd:complexType name="DocumentSignatureRequestComplexType">
        <xsd:sequence>
			<!-- $$$   -->
			<xsd:element name="DocHash" type="DocHashComplexType" minOccurs="0"/>			<!-- $$$   -->
			<xsd:element name="DocDateTime" type="DateTimeSimpleType" minOccurs="0"/>
			<xsd:element name="DocReference" type="DocReferenceSimpleType" minOccurs="0"/>
			<!-- $$$   -->
			<xsd:element name="DocName" type="DocReferenceSimpleType" minOccurs="0"/>
			<!-- $$$   -->
			<!-- $$$   -->
			<xsd:element name="DocExplanation" type="TokenLength35SimpleType" minOccurs="0"/>
			<!-- $$$   -->
            <xsd:element name="DocURL" type="URLSimpleType" minOccurs="0"/>
			<!-- $$$   -->
            <xsd:element name="DocData" type="DocDataComplexType" minOccurs="0"/>
        </xsd:sequence>
        <xsd:attributeGroup ref="RequestCategoryAttributeGroup"/>
    </xsd:complexType>

	<xsd:complexType name="DocHashComplexType">
        <xsd:sequence>
			<xsd:element name="Hash" type="xsd:string" minOccurs="0"/>
        </xsd:sequence>
		<xsd:attributeGroup ref="DocHashAttributeGroup"/>
	</xsd:complexType>

    <xsd:complexType name="TelephoneResponseComplexType" mixed="true">
        <xsd:simpleContent>
            <xsd:extension base="TokenLength70SimpleType">
				<xsd:attributeGroup ref="ResponseCategoryAttributeGroup"/>
                <xsd:attribute name="type" type="TelephoneTypeSimpleType"/>
            </xsd:extension>
        </xsd:simpleContent>
    </xsd:complexType>
    
    
    <xsd:complexType name="EmailResponseComplexType" mixed="true">
        <xsd:simpleContent>
            <xsd:extension base="EmailSimpleType">
				<xsd:attributeGroup ref="ResponseCategoryAttributeGroup"/>
            </xsd:extension>
        </xsd:simpleContent>
    </xsd:complexType>

    
    <xsd:complexType name="DocDataComplexType">
        <xsd:sequence>
            <xsd:element name="Content" type="xsd:string"/>
        </xsd:sequence>
        <xsd:attribute name="mimeType" type="ContentMimeSimpleType" use="required"/>
    </xsd:complexType>

	<xsd:complexType name="DebtorReturnURLComplexType" mixed="true">
		<xsd:simpleContent>
			<xsd:extension base="URLSimpleType">
				<xsd:attribute name="automaticRedirect" type="xsd:boolean"/>
      		</xsd:extension>
      	</xsd:simpleContent>
	</xsd:complexType>    

    <xsd:complexType name="DebtorAdditionalDataComplexType">
        <xsd:sequence>
            <xsd:element name="EmailAddress" type="EmailSimpleType" minOccurs="0"/>
            <xsd:element name="MobilePhoneNumber" type="PhoneNumberSimpleType" minOccurs="0"/>
            <xsd:element name="CustomerName" type="TokenLength70SimpleType" minOccurs="0"/>
            <xsd:element name="AttentionOf" type="TokenLength70SimpleType" minOccurs="0"/>
            <xsd:element name="Salutation" type="TokenLength70SimpleType" minOccurs="0"/>
            <xsd:element name="CustomerAddressLine1" type="TokenLength128SimpleType" minOccurs="0"/>
            <xsd:element name="CustomerAddressLine2" type="TokenLength128SimpleType" minOccurs="0"/>
            <xsd:element name="DynamicData" type="DynamicDataComplexType" minOccurs="0"/>
        </xsd:sequence>
    </xsd:complexType>


    <xsd:complexType name="DynamicDataComplexType" mixed="true">
        <xsd:sequence>
            <xsd:element name="DynamicElement" type="DynamicElementComplexType" minOccurs="0" maxOccurs="unbounded"/>
        </xsd:sequence>
	</xsd:complexType>    

    <xsd:complexType name="DynamicElementComplexType" mixed="true">
        <xsd:simpleContent>
            <xsd:extension base="DynamicDataTextSimpleType">
                <xsd:attribute name="name" type="IdentifierSimpleType" use="required"/>
            </xsd:extension>
        </xsd:simpleContent>
    </xsd:complexType>
    

<!-- BEGIN - DebtorWallet additions -->
    <xsd:simpleType name="NonEmptyBICSimpleType">
	    <xsd:restriction base="xsd:token">
            <xsd:minLength value="8"/>
            <xsd:maxLength value="11"/>
            <xsd:pattern value="[A-Z0-9]{8,11}"/>
         </xsd:restriction>
     </xsd:simpleType>


   <xsd:complexType name="IDINComplexType">
        <xsd:all>
	        <xsd:element name="BIC" type="NonEmptyBICSimpleType" minOccurs="1"/>
        </xsd:all>
    </xsd:complexType>

    
    <xsd:complexType name="DebtorWalletComplexType">
        <xsd:choice>
            <xsd:element name="IDIN" type="IDINComplexType" maxOccurs="1"/>
        </xsd:choice>
    </xsd:complexType>

<!-- END - DebtorWallet additions -->
    
    <xsd:complexType name="ErrorComplexType">
        <xsd:sequence>
            <xsd:element name="ErrorCode" type="ErrorCodeSimpleType"/>
            <xsd:element name="ErrorMessage" type="TokenLength128SimpleType"/>
            <xsd:element name="ErrorDetail" type="TokenLength256SimpleType" minOccurs="0"/>
            <xsd:element name="Object" type="TokenLength256SimpleType" minOccurs="0"/>
        </xsd:sequence>
    </xsd:complexType>
    
    <xsd:complexType name="CustomerIDResponseComplexType" mixed="true">
		<xsd:simpleContent>
			<xsd:extension base="CustomerIDSimpleType">
                <xsd:attributeGroup ref="ResponseCategoryAttributeGroup"/>
                <xsd:attribute name="type" type="CustomerIDTYpeSimpleType"/>

      		</xsd:extension>
      	</xsd:simpleContent>
	</xsd:complexType>

    
    <xsd:complexType name="NameResponseComplexType">
		<xsd:sequence>
			<xsd:element name="Initials" type="TokenLength70SimpleType" minOccurs="0"/>
			<xsd:element name="LegalFirstName" type="TokenLength70SimpleType" minOccurs="0"/>
			<xsd:element name="LegalLastName" type="TokenLength70SimpleType" minOccurs="0"/>
			<xsd:element name="LegalLastNamePrefix" type="TokenLength70SimpleType" minOccurs="0"/>
			<xsd:element name="PreferredFirstName" type="TokenLength70SimpleType" minOccurs="0"/>
			<xsd:element name="PreferredLastName" type="TokenLength70SimpleType" minOccurs="0"/>
			<xsd:element name="PreferredLastNamePrefix" type="TokenLength70SimpleType" minOccurs="0"/>
			<xsd:element name="PartnerFirstName" type="TokenLength70SimpleType" minOccurs="0"/>
			<xsd:element name="PartnerLastName" type="TokenLength70SimpleType" minOccurs="0"/>
			<xsd:element name="PartnerLastNamePrefix" type="TokenLength70SimpleType"  minOccurs="0"/>
		</xsd:sequence>
        <xsd:attributeGroup ref="ResponseCategoryAttributeGroup"/>
	</xsd:complexType>


   <xsd:complexType name="AddressResponseComplexType">
		<xsd:sequence>
			<xsd:element name="Street" type="TokenLength70SimpleType" minOccurs="0"/>
			<xsd:element name="HouseNumber" type="TokenLength8SimpleType" minOccurs="0"/>
			<xsd:element name="HouseNumberSuffix" type="TokenLength8SimpleType" minOccurs="0"/>
			<xsd:element name="AddressExtra" type="TokenLength70SimpleType" minOccurs="0"/>
			<xsd:element name="PostalCode" type="TokenLength8SimpleType" minOccurs="0"/>
			<xsd:element name="City" type="TokenLength70SimpleType" minOccurs="0"/>
			<xsd:element name="CountryCode" type="TokenLength5SimpleType" minOccurs="0"/>
            <xsd:element name="InternationalAddressLine1" type="TokenLength128SimpleType" minOccurs="0"/>
            <xsd:element name="InternationalAddressLine2" type="TokenLength128SimpleType" minOccurs="0"/>
            <xsd:element name="InternationalAddressLine3" type="TokenLength128SimpleType" minOccurs="0"/>
		</xsd:sequence>
        <xsd:attributeGroup ref="ResponseCategoryAttributeGroup"/>
	</xsd:complexType>
	
	
    <xsd:complexType name="DocumentSignatureResponseComplexType">
		<xsd:sequence>
			<xsd:element name="DocHashValidity" type="DocHashValiditySimpleType" minOccurs="0"/>
			<xsd:element name="DocHash" type="DocHashComplexType" minOccurs="0"/>
			<xsd:element name="DocReference" type="TokenLength35SimpleType" minOccurs="0"/>
		</xsd:sequence>
        <xsd:attributeGroup ref="ResponseCategoryAttributeGroup"/>
	</xsd:complexType>
	

    <xsd:complexType name="BirthDateResponseType" mixed="true">
		<xsd:simpleContent>
			<xsd:extension base="DateSimpleType">
                <xsd:attributeGroup ref="ResponseCategoryAttributeGroup"/>
      		</xsd:extension>
      	</xsd:simpleContent>
	</xsd:complexType>


    <xsd:complexType name="AgeCheckResponseComplexType" mixed="true">
        <xsd:simpleContent>
            <xsd:extension base="xsd:boolean">
                <xsd:attributeGroup ref="ResponseCategoryAttributeGroup"/>
				<xsd:attributeGroup ref="AgeCheckAttributeGroup"/>
            </xsd:extension>
        </xsd:simpleContent>
    </xsd:complexType>


    <xsd:complexType name="GenderResponseComplexType" mixed="true">
		<xsd:simpleContent>
			<xsd:extension base="GenderSimpleType">
                <xsd:attributeGroup ref="ResponseCategoryAttributeGroup"/>
      		</xsd:extension>
      	</xsd:simpleContent>
	</xsd:complexType>



<!--                         ATTRIBUTE GROUPS                            -->
		<xsd:attributeGroup name="HeaderAttributes">
		<xsd:attribute name="mode" type="ModeSimpleType" use="required"/>
		<xsd:attribute name="batchID" type="BatchIdentifierSimpleType"/>
		<xsd:attribute name="senderID" type="IdentifierSimpleType" use="required"/>
		<xsd:attribute name="version" type="VersionSimpleType" default="1.0"/>
		<xsd:attribute name="createDateTime" type="DateTimeSimpleType" use="required"/>
		<xsd:attribute name="messageCount" type="MessageCountSimpleType" use="required"/>
        <xsd:attribute name="type" use="required">
			<xsd:simpleType>
				<xsd:restriction base="xsd:token">
					<xsd:enumeration value="TransactionRequest"/>
					<xsd:enumeration value="TransactionResponse"/>
				    <xsd:enumeration value="StatusRequest"/>
					<xsd:enumeration value="StatusUpdate"/>
				    <!-- Will be implemented
				    <xsd:enumeration value="TransactionDeliveryException"/>
				    -->
				    <xsd:enumeration value="ErrorResponse"/>
				</xsd:restriction>
			</xsd:simpleType>
		</xsd:attribute>
	</xsd:attributeGroup>

	<xsd:attributeGroup name="RequestAttributeGroup">
		<xsd:attribute name="entranceCode" type="EntranceCodeSimpleType"/>
        <xsd:attribute name="brandID" type="RelaxedIdentifierSimpleType"/>
        <xsd:attribute name="sendOption">
            <xsd:simpleType>
                <xsd:restriction base="xsd:token">
                    <xsd:enumeration value="none"/>
                    <xsd:enumeration value="email"/>
                    <xsd:enumeration value="sms"/>
                    <xsd:enumeration value="print"/>
                    <xsd:enumeration value="whatsapp"/>
                </xsd:restriction>
            </xsd:simpleType>
		</xsd:attribute>
        <xsd:attribute name="language" type="LanguageCodeSimpleType" default="nl"/>
	</xsd:attributeGroup>

	<xsd:attributeGroup name="RequestCategoryAttributeGroup">
		<xsd:attribute name="action" default="skip">
			<xsd:simpleType>
				<xsd:restriction base="xsd:token">
					<xsd:enumeration value="skip"/>
					<xsd:enumeration value="request"/>
				</xsd:restriction>
			</xsd:simpleType>
		</xsd:attribute>	
	</xsd:attributeGroup>

	<xsd:attributeGroup name="ResponseCategoryAttributeGroup">
		<xsd:attribute name="delivery" default="provided">
			<xsd:simpleType>
				<xsd:restriction base="xsd:token">
					<xsd:enumeration value="rejected"/>
					<xsd:enumeration value="unavailable"/>
					<xsd:enumeration value="provided"/>
				</xsd:restriction>
			</xsd:simpleType>
		</xsd:attribute>	
	</xsd:attributeGroup>

	<xsd:attributeGroup name="AgeCheckAttributeGroup">
		<xsd:attribute name="ageOrOlder" type="AgeSimpleType" default="18"/>
	</xsd:attributeGroup>

	<xsd:attributeGroup name="DocHashAttributeGroup">
		<xsd:attribute name="type" default="SHA256">
			<xsd:simpleType>
				<xsd:restriction base="xsd:token">
					<xsd:enumeration value="SHA256"/>         <!-- More types coming  -->
				</xsd:restriction>
			</xsd:simpleType>
		</xsd:attribute>	
		<xsd:attribute name="data" default="provided">
			<xsd:simpleType>
				<xsd:restriction base="xsd:token">
					<xsd:enumeration value="provided"/>         <!-- Currently only this is implemented -->
					<xsd:enumeration value="requested"/>
				</xsd:restriction>
			</xsd:simpleType>
		</xsd:attribute>	
	</xsd:attributeGroup>
	
    <xsd:complexType name="IdentityInterfaceType">
        <xsd:choice maxOccurs="unbounded" minOccurs="0">
 				<xsd:element name="IdentityTransactionRequest" type="IdentityTransactionRequestType" maxOccurs="unbounded"/>
				<xsd:element name="IdentityBatchResponse" type="IdentityBatchResponseType" minOccurs="0" maxOccurs="1"/>
				<xsd:element name="IdentityTransactionResponse" type="IdentityTransactionResponseType" maxOccurs="unbounded"/>
				<xsd:element name="IdentityStatusRequest" type="IdentityStatusRequestType" maxOccurs="unbounded"/>
				<xsd:element name="IdentityStatusUpdate" type="IdentityStatusUpdateType" maxOccurs="unbounded"/>
				<xsd:element name="IdentityErrorResponse" type="IdentityErrorResponseType" minOccurs="0" maxOccurs="1"/>
        </xsd:choice>
         <xsd:attributeGroup ref="HeaderAttributes"/>
    </xsd:complexType>
	
	
	
    <!--                             ELEMENTS                                -->
    <xsd:element name="IdentityInterface" type="IdentityInterfaceType"/>


</xsd:schema>