<?xml version="1.0" encoding="UTF-8"?>

<xs:schema attributeFormDefault="unqualified"
           elementFormDefault="qualified"
           xmlns:xs="http://www.w3.org/2001/XMLSchema"
           xmlns:tns="http://begrep.difi.no"
           targetNamespace="http://begrep.difi.no">

    <xs:annotation>
        <xs:appinfo>Metadata for Oppslagstjenesten</xs:appinfo>
        <xs:documentation xml:lang="nb">
            Definisjon av XML-typer benyttet i webtjeneste-grensesnitt.
        </xs:documentation>
    </xs:annotation>

    <xs:element name="Person" type="tns:Person"/>

    <xs:complexType name="Person">
        <xs:sequence>
            <xs:element type="tns:personidentifikator" name="personidentifikator"/>
            <xs:element type="tns:reservasjon" name="reservasjon" minOccurs="0"/>
            <xs:element type="tns:status" name="status" minOccurs="0"/>
            <xs:element type="tns:beskrivelse" name="beskrivelse" minOccurs="0" />
            <xs:element type="tns:Kontaktinformasjon" name="Kontaktinformasjon" minOccurs="0" />
            <xs:element type="tns:SikkerDigitalPostAdresse" name="SikkerDigitalPostAdresse" minOccurs="0" />
            <xs:element name="X509Sertifikat" type="tns:X509Sertifikat" minOccurs="0" maxOccurs="1" />
        </xs:sequence>
    </xs:complexType>

    <xs:simpleType name="X509Sertifikat">
        <xs:restriction base="xs:base64Binary" />
    </xs:simpleType>

    <xs:simpleType name="personidentifikator">
        <xs:restriction base="xs:string">
            <xs:length value="11"/>
        </xs:restriction>
    </xs:simpleType>

    <xs:simpleType name="status">
        <xs:restriction base="xs:string">
            <xs:enumeration value="AKTIV"/>
            <xs:enumeration value="SLETTET"/>
            <xs:enumeration value="IKKE_REGISTRERT"/>
        </xs:restriction>
    </xs:simpleType>
    
	<xs:simpleType name="postkasseleverandoerOrgNummer">
        <xs:restriction base="xs:string" />
    </xs:simpleType>

    <xs:simpleType name="beskrivelse">
        <xs:restriction base="xs:string" />
    </xs:simpleType>

    <xs:simpleType name="reservasjon">
        <xs:restriction base="xs:string">
            <xs:enumeration value="JA" />
            <xs:enumeration value="NEI" />
        </xs:restriction>
    </xs:simpleType>

    <xs:complexType name="Kontaktinformasjon">
        <xs:sequence>
            <xs:element type="tns:Mobiltelefonnummer" name="Mobiltelefonnummer" minOccurs="0" />
            <xs:element type="tns:Epostadresse" name="Epostadresse" minOccurs="0" />
        </xs:sequence>
    </xs:complexType>

    <xs:complexType name="SikkerDigitalPostAdresse">
        <xs:sequence>
            <xs:element type="tns:postkasseadresse" name="postkasseadresse"  />
            <xs:element type="tns:postkasseleverandoerAdresse" name="postkasseleverandoerAdresse" />
        </xs:sequence>
    </xs:complexType>

    <xs:simpleType name="postkasseadresse">
        <xs:restriction base="xs:string">
       		<xs:minLength value="8"/>
            <xs:maxLength value="100"/>
        </xs:restriction>
    </xs:simpleType>

    <xs:simpleType name="postkasseleverandoerAdresse">
        <xs:restriction base="xs:string">
        	<xs:minLength value="8"/>
            <xs:maxLength value="20"/>
        </xs:restriction>
    </xs:simpleType>

    <xs:complexType name="Epostadresse">
        <xs:simpleContent>
            <xs:extension base="tns:epostadresse">
                <xs:attribute type="xs:dateTime" name="sistOppdatert" use="optional" />
                <xs:attribute type="xs:dateTime" name="sistVerifisert" use="optional" />
            </xs:extension>
        </xs:simpleContent>
    </xs:complexType>

    <xs:simpleType name="mobiltelefonnummer">
        <xs:restriction base="xs:string">
            <xs:minLength value="8"/>
            <xs:maxLength value="20"/>
        </xs:restriction>
    </xs:simpleType>

    <xs:simpleType name="epostadresse">
        <xs:restriction base="xs:string">
            <xs:minLength value="3"/>
            <xs:maxLength value="50"/>
        </xs:restriction>
    </xs:simpleType>

    <xs:complexType name="Mobiltelefonnummer">
        <xs:simpleContent>
            <xs:extension base="tns:mobiltelefonnummer">
                <xs:attribute type="xs:dateTime" name="sistOppdatert" use="optional" />
                <xs:attribute type="xs:dateTime" name="sistVerifisert" use="optional" />
            </xs:extension>
        </xs:simpleContent>
    </xs:complexType>

</xs:schema>