<?xml version="1.0" encoding="utf-8" ?>
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
            targetNamespace="http://www.gemsystem.cz/B2BUpdate/2.0"
            xmlns="http://www.gemsystem.cz/B2BUpdate/2.0"
            elementFormDefault="qualified">
    <xsd:annotation>
        <xsd:documentation>Služba umožňující partnerům nastavit a změnit některé parametry nastavení B2B kanálu
            (certifikáty, URL endpointu partnera, nabízené/objednané služby)
        </xsd:documentation>
    </xsd:annotation>
    <xsd:element name="nastaveniB2BUctu2Pozadavek">
        <xsd:annotation>
            <xsd:documentation>Požadavek služby umožňuje realizovat: úvodní konfiguraci, nastavení seznamu přijímaných
                zpráv a aktualizovat certifikát
            </xsd:documentation>
        </xsd:annotation>
        <xsd:complexType>
            <xsd:sequence>
                <xsd:element name="nastavB2BKomunikaci" minOccurs="0">
                    <xsd:complexType>
                        <xsd:sequence>
                            <xsd:element name="partnerUid" type="partnerUidType" minOccurs="0" >
                                <xsd:annotation>
                                    <xsd:documentation>UID partnera. Nevyplňujte.</xsd:documentation>
                                </xsd:annotation>
                            </xsd:element>
                            <xsd:element name="uvodniKonfigurace" minOccurs="0">
                                <xsd:annotation>
                                    <xsd:documentation>Nastavení protokolu a způsobu komunikace</xsd:documentation>
                                </xsd:annotation>
                                <xsd:complexType>
                                    <xsd:sequence>
                                        <xsd:element name="protokol" type="protokolType">
                                            <xsd:annotation>
                                                <xsd:documentation>Nastavení protokolu komunikace: "AS2" nebo "SOAP"
                                                </xsd:documentation>
                                            </xsd:annotation>
                                        </xsd:element>
                                        <xsd:element name="URI" type="uriType" minOccurs="0">
                                            <xsd:annotation>
                                                <xsd:documentation>URI adresa partnerova endpointu, na kterém bude
                                                    přijímat asynchronní odpovědi, povinně vyplněná v případě
                                                    asynchronní komunikace.
                                                </xsd:documentation>
                                            </xsd:annotation>
                                        </xsd:element>
                                    </xsd:sequence>
                                </xsd:complexType>
                            </xsd:element>
                            <xsd:element name="seznamPrijimanychZprav" minOccurs="0">
                                <xsd:annotation>
                                    <xsd:documentation>konfigurace přijímaných zpráv</xsd:documentation>
                                </xsd:annotation>
                                <xsd:complexType>
                                    <xsd:sequence maxOccurs="unbounded" minOccurs="0">
                                        <xsd:element name="prijimanaZprava">
                                            <xsd:complexType>
                                                <xsd:sequence>
                                                    <xsd:element name="typZpravy" type="xsd:string">
                                                        <xsd:annotation>
                                                            <xsd:documentation>definice služby jejíž výstupy má partner
                                                                zájem přijímat.
                                                            </xsd:documentation>
                                                        </xsd:annotation>
                                                    </xsd:element>
                                                    <xsd:element name="subjekt" type="subjektType" minOccurs="0" />
                                                    <xsd:element name="stav" type="pozadovanyStavType">
                                                        <xsd:annotation>
                                                            <xsd:documentation>Definuje se konstantní hodnota
                                                                "Prihlaseni" nebo "Odhlaseni"
                                                            </xsd:documentation>
                                                        </xsd:annotation>
                                                    </xsd:element>
                                                </xsd:sequence>
                                            </xsd:complexType>
                                        </xsd:element>
                                    </xsd:sequence>
                                </xsd:complexType>
                            </xsd:element>
                            <xsd:element name="aktualizujB2BCertifikat" minOccurs="0">
                                <xsd:annotation>
                                    <xsd:documentation>aktualizace používaných certifikátů</xsd:documentation>
                                </xsd:annotation>
                                <xsd:complexType>
                                    <xsd:sequence>
                                        <xsd:element name="zmenaLDAP" minOccurs="0">
                                            <xsd:complexType>
                                                <xsd:sequence>
                                                    <xsd:element name="uid" type="xsd:string">
                                                        <xsd:annotation>
                                                            <xsd:documentation>Unikátní identifikátor, pod kterým je
                                                                partner zaveden v párovací aplikaci.
                                                            </xsd:documentation>
                                                        </xsd:annotation>
                                                    </xsd:element>
                                                    <xsd:element name="novyPristupovyCertifikat"
                                                                 type="xsd:base64Binary" minOccurs="0">
                                                        <xsd:annotation>
                                                            <xsd:documentation>Certifikát zakódovaný v base64
                                                            </xsd:documentation>
                                                        </xsd:annotation>
                                                    </xsd:element>
                                                    <xsd:element name="novyPodpisovyCertifikat"
                                                                 type="xsd:base64Binary" minOccurs="0">
                                                        <xsd:annotation>
                                                            <xsd:documentation>Certifikát zakódovaný v base64
                                                            </xsd:documentation>
                                                        </xsd:annotation>
                                                    </xsd:element>
                                                </xsd:sequence>
                                            </xsd:complexType>
                                        </xsd:element>
                                    </xsd:sequence>
                                </xsd:complexType>
                            </xsd:element>
                        </xsd:sequence>
                    </xsd:complexType>
                </xsd:element>
            </xsd:sequence>
        </xsd:complexType>
    </xsd:element>

    <xsd:simpleType name="partnerUidType">
        <xsd:restriction base="xsd:string">
            <xsd:minLength value="1" />
            <xsd:maxLength value="50" />
        </xsd:restriction>
    </xsd:simpleType>

    <xsd:simpleType name="protokolType">
        <xsd:restriction base="xsd:string">
            <xsd:enumeration value="AS2" />
            <xsd:enumeration value="SOAP" />
        </xsd:restriction>
    </xsd:simpleType>

    <xsd:simpleType name="uriType">
        <xsd:restriction base="xsd:string">
            <xsd:minLength value="1"/>
            <xsd:maxLength value="255" />
        </xsd:restriction>
    </xsd:simpleType>

    <xsd:complexType name="subjektType">
        <xsd:sequence>
            <xsd:element name="id" type="idSubjektuType" />
            <xsd:element name="typ" type="typSubjektuType" />
        </xsd:sequence>
    </xsd:complexType>

    <xsd:simpleType name="idSubjektuType">
        <xsd:restriction base="xsd:string">
            <xsd:minLength value="1" />
            <xsd:maxLength value="15" />
        </xsd:restriction>
    </xsd:simpleType>

    <xsd:simpleType name="typSubjektuType">
        <xsd:restriction base="xsd:string">
            <xsd:enumeration value="zp" />
            <xsd:enumeration value="zam" />
            <xsd:enumeration value="si" />
            <xsd:enumeration value="zpp" />
            <xsd:enumeration value="osvc" />
            <xsd:enumeration value="poj" />
            <xsd:enumeration value="se" />
            <xsd:enumeration value="fr" />
            <xsd:enumeration value="partner" />
            <xsd:enumeration value="CMU" />
        </xsd:restriction>
    </xsd:simpleType>

    <xsd:simpleType name="pozadovanyStavType">
        <xsd:restriction base="xsd:string">
            <xsd:enumeration value="Prihlaseni" />
            <xsd:enumeration value="Odhlaseni" />
        </xsd:restriction>
    </xsd:simpleType>

    <xsd:element name="nastaveniB2BUctu2Odpoved">
        <xsd:complexType>
            <xsd:sequence>
                <xsd:element name="seznamPrijimanychZprav" minOccurs="0">
                    <xsd:complexType>
                        <xsd:sequence maxOccurs="unbounded">
                            <xsd:element name="prijimanaZprava">
                                <xsd:complexType>
                                    <xsd:sequence>
                                        <xsd:element name="typZpravy" type="xsd:string"/>
                                        <xsd:element name="subjekt" type="subjektType" minOccurs="0" />
                                        <xsd:element name="stav" type="stavType" />
                                    </xsd:sequence>
                                </xsd:complexType>
                            </xsd:element>
                        </xsd:sequence>
                    </xsd:complexType>
                </xsd:element>

                <xsd:element name="stavVyrizeniPozadavku" minOccurs="1">
                    <xsd:complexType>
                        <xsd:sequence>
                            <xsd:element name="kod">
                                <xsd:simpleType>
                                    <xsd:restriction base="xsd:NMTOKEN">
                                        <xsd:enumeration value="0">
                                            <xsd:annotation>
                                                <xsd:documentation>Sluzba prijala prazdny pozadavek</xsd:documentation>
                                            </xsd:annotation>
                                        </xsd:enumeration>
                                        <xsd:enumeration value="-1">
                                            <xsd:annotation>
                                                <xsd:documentation>Chybne vstupni parametry sluzby</xsd:documentation>
                                            </xsd:annotation>
                                        </xsd:enumeration>
                                        <xsd:enumeration value="-2">
                                            <xsd:annotation>
                                                <xsd:documentation>Chyba vstupních dat</xsd:documentation>
                                            </xsd:annotation>
                                        </xsd:enumeration>
                                        <xsd:enumeration value="1">
                                            <xsd:annotation>
                                                <xsd:documentation>Nastaveni sluzby probehlo uspesne</xsd:documentation>
                                            </xsd:annotation>
                                        </xsd:enumeration>
                                    </xsd:restriction>
                                </xsd:simpleType>
                            </xsd:element>
                        </xsd:sequence>
                    </xsd:complexType>
                </xsd:element>
            </xsd:sequence>
        </xsd:complexType>
    </xsd:element>

    <xsd:simpleType name="stavType">
        <xsd:restriction base="xsd:string">
            <xsd:enumeration value="Prihlaseni" />
            <xsd:enumeration value="Odhlaseni" />
            <xsd:enumeration value="NeniOpravneni" />
        </xsd:restriction>
    </xsd:simpleType>
</xsd:schema>
