<?xml version="1.0" encoding="utf-8"?>
<wsdl:definitions xmlns:s="http://www.w3.org/2001/XMLSchema" xmlns:soap12="http://schemas.xmlsoap.org/wsdl/soap12/" xmlns:http="http://schemas.xmlsoap.org/wsdl/http/" xmlns:mime="http://schemas.xmlsoap.org/wsdl/mime/" xmlns:tns="https://sso.corteos.ru/" xmlns:s1="http://microsoft.com/wsdl/types/" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:tm="http://microsoft.com/wsdl/mime/textMatching/" xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/" targetNamespace="https://sso.corteos.ru/" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/">
  <wsdl:types>
    <s:schema elementFormDefault="qualified" targetNamespace="https://sso.corteos.ru/">
      <s:import namespace="http://microsoft.com/wsdl/types/" />
      <s:element name="Get">
        <s:complexType>
          <s:sequence>
            <s:element minOccurs="0" maxOccurs="1" name="corteosId" type="s:string" />
            <s:element minOccurs="0" maxOccurs="1" name="outerId" type="s:string" />
          </s:sequence>
        </s:complexType>
      </s:element>
      <s:element name="GetResponse">
        <s:complexType>
          <s:sequence>
            <s:element minOccurs="0" maxOccurs="1" name="GetResult" type="tns:CompleteIncomingRequestModel" />
          </s:sequence>
        </s:complexType>
      </s:element>
      <s:complexType name="CompleteIncomingRequestModel">
        <s:complexContent mixed="false">
          <s:extension base="tns:BasicIncomingRequestModel">
            <s:sequence>
              <s:element minOccurs="1" maxOccurs="1" name="id_User" nillable="true" type="s:int" />
              <s:element minOccurs="1" maxOccurs="1" name="CorteosId" type="s1:guid" />
              <s:element minOccurs="1" maxOccurs="1" name="CreationDate" type="s:dateTime" />
              <s:element minOccurs="0" maxOccurs="1" name="AugmentationData" type="s:string" />
            </s:sequence>
          </s:extension>
        </s:complexContent>
      </s:complexType>
      <s:complexType name="BasicIncomingRequestModel">
        <s:sequence>
          <s:element minOccurs="0" maxOccurs="1" name="SignOutUrl" type="s:string" />
          <s:element minOccurs="0" maxOccurs="1" name="OuterId" type="s:string" />
          <s:element minOccurs="0" maxOccurs="1" name="CurrentRoute" type="tns:Route" />
          <s:element minOccurs="0" maxOccurs="1" name="CustomRoute" type="tns:ArrayOfRoutePart" />
          <s:element minOccurs="0" maxOccurs="1" name="CustomOptions" type="tns:ArrayOfCustomOption" />
          <s:element minOccurs="0" maxOccurs="1" name="Persons" type="tns:ArrayOfPerson" />
          <s:element minOccurs="0" maxOccurs="1" name="BudgetCodes" type="tns:ArrayOfBudgetCode" />
          <s:element minOccurs="0" maxOccurs="1" name="AccountDetails" type="tns:Account" />
        </s:sequence>
      </s:complexType>
      <s:complexType name="Route">
        <s:sequence>
          <s:element minOccurs="0" maxOccurs="1" name="Origin" type="s:string" />
          <s:element minOccurs="0" maxOccurs="1" name="Destination" type="s:string" />
          <s:element minOccurs="1" maxOccurs="1" name="DepartureDate" type="s:dateTime" />
          <s:element minOccurs="1" maxOccurs="1" name="ReturnDate" nillable="true" type="s:dateTime" />
        </s:sequence>
      </s:complexType>
      <s:complexType name="ArrayOfRoutePart">
        <s:sequence>
          <s:element minOccurs="0" maxOccurs="unbounded" name="RoutePart" nillable="true" type="tns:RoutePart" />
        </s:sequence>
      </s:complexType>
      <s:complexType name="RoutePart">
        <s:sequence>
          <s:element minOccurs="0" maxOccurs="1" name="UniqueId" type="s:string" />
          <s:element minOccurs="1" maxOccurs="1" name="DateDepart" type="s:dateTime" />
          <s:element minOccurs="1" maxOccurs="1" name="DateReturn" nillable="true" type="s:dateTime" />
          <s:element minOccurs="0" maxOccurs="1" name="Origin" type="s:string" />
          <s:element minOccurs="0" maxOccurs="1" name="Destination" type="s:string" />
          <s:element minOccurs="0" maxOccurs="1" name="ServiceType" type="s:string" />
          <s:element minOccurs="1" maxOccurs="1" name="DepartureAdvanceShiftDays" type="s:int" />
          <s:element minOccurs="1" maxOccurs="1" name="DeparturePostShiftDays" type="s:int" />
          <s:element minOccurs="1" maxOccurs="1" name="ReturnAdvanceShiftDays" type="s:int" />
          <s:element minOccurs="1" maxOccurs="1" name="ReturnPostShiftDays" type="s:int" />
          <s:element minOccurs="1" maxOccurs="1" name="BookingSequence" type="s:int" />
          <s:element minOccurs="0" maxOccurs="1" name="OriginDepartureServicesIds" type="s:string" />
          <s:element minOccurs="0" maxOccurs="1" name="DestinationArrivalServicesIds" type="s:string" />
          <s:element minOccurs="0" maxOccurs="1" name="DestinationReturnServicesIds" type="s:string" />
          <s:element minOccurs="0" maxOccurs="1" name="OriginReturnServicesIds" type="s:string" />
        </s:sequence>
      </s:complexType>
      <s:complexType name="ArrayOfCustomOption">
        <s:sequence>
          <s:element minOccurs="0" maxOccurs="unbounded" name="CustomOption" nillable="true" type="tns:CustomOption" />
        </s:sequence>
      </s:complexType>
      <s:complexType name="CustomOption">
        <s:sequence>
          <s:element minOccurs="0" maxOccurs="1" name="Key" type="s:string" />
          <s:element minOccurs="0" maxOccurs="1" name="Value" type="s:string" />
        </s:sequence>
      </s:complexType>
      <s:complexType name="ArrayOfPerson">
        <s:sequence>
          <s:element minOccurs="0" maxOccurs="unbounded" name="Person" nillable="true" type="tns:Person" />
        </s:sequence>
      </s:complexType>
      <s:complexType name="Person">
        <s:complexContent mixed="false">
          <s:extension base="tns:BaseModelWithAllRequiredFields">
            <s:sequence>
              <s:element minOccurs="0" maxOccurs="1" name="INN" type="s:string" />
              <s:element minOccurs="0" maxOccurs="1" name="KPP" type="s:string" />
              <s:element minOccurs="0" maxOccurs="1" name="CountryAlpha2" type="s:string" />
              <s:element minOccurs="0" maxOccurs="1" name="Documents" type="tns:ArrayOfDocument" />
              <s:element minOccurs="0" maxOccurs="1" name="Contacts" type="tns:ArrayOfContact" />
              <s:element minOccurs="0" maxOccurs="1" name="BonusCards" type="tns:ArrayOfBonusCard" />
              <s:element minOccurs="0" maxOccurs="1" name="PersonalVisas" type="tns:ArrayOfVisa" />
              <s:element minOccurs="0" maxOccurs="1" name="PersonalCodes" type="tns:ArrayOfCode" />
            </s:sequence>
            <s:attribute name="LastName" type="s:string" />
            <s:attribute name="FirstName" type="s:string" />
            <s:attribute name="MiddleName" type="s:string" />
            <s:attribute name="LastNameLatin" type="s:string" />
            <s:attribute name="FirstNameLatin" type="s:string" />
            <s:attribute name="MiddleNameLatin" type="s:string" />
            <s:attribute name="Gender" type="s:boolean" use="required" />
            <s:attribute name="DateBirth" type="s:dateTime" use="required" />
          </s:extension>
        </s:complexContent>
      </s:complexType>
      <s:complexType name="BaseModelWithAllRequiredFields" abstract="true" />
      <s:complexType name="Code">
        <s:complexContent mixed="false">
          <s:extension base="tns:BaseModelWithAllRequiredFields">
            <s:attribute name="DictionaryName" type="s:string" />
            <s:attribute name="CodeValue" type="s:string" />
            <s:attribute name="IsPrimaryKey" type="s:boolean" use="required" />
          </s:extension>
        </s:complexContent>
      </s:complexType>
      <s:complexType name="BudgetCode">
        <s:complexContent mixed="false">
          <s:extension base="tns:Code">
            <s:attribute name="SelectorState" type="tns:CorteosCodeSelectorState" use="required" />
          </s:extension>
        </s:complexContent>
      </s:complexType>
      <s:simpleType name="CorteosCodeSelectorState">
        <s:restriction base="s:string">
          <s:enumeration value="Disabled" />
          <s:enumeration value="Enabled" />
        </s:restriction>
      </s:simpleType>
      <s:complexType name="Visa">
        <s:complexContent mixed="false">
          <s:extension base="tns:BaseModelWithAllRequiredFields">
            <s:attribute name="Number" type="s:string" />
            <s:attribute name="VisaType" type="tns:CorteosVisaType" use="required" />
            <s:attribute name="DocumentNumber" type="s:string" />
            <s:attribute name="DateStart" type="s:dateTime" use="required" />
            <s:attribute name="DateEnd" type="s:dateTime" use="required" />
            <s:attribute name="VisaIssueDate" type="s:dateTime" use="required" />
            <s:attribute name="PlaceOfIssue" type="s:string" />
            <s:attribute name="PersonBirthPlace" type="s:string" />
            <s:attribute name="Country" type="s:string" />
          </s:extension>
        </s:complexContent>
      </s:complexType>
      <s:simpleType name="CorteosVisaType">
        <s:restriction base="s:string">
          <s:enumeration value="Multiple" />
          <s:enumeration value="Single" />
        </s:restriction>
      </s:simpleType>
      <s:complexType name="BonusCard">
        <s:complexContent mixed="false">
          <s:extension base="tns:BaseModelWithAllRequiredFields">
            <s:attribute name="Number" type="s:string" />
            <s:attribute name="Code" type="s:string" />
          </s:extension>
        </s:complexContent>
      </s:complexType>
      <s:complexType name="Contact">
        <s:complexContent mixed="false">
          <s:extension base="tns:BaseModelWithAllRequiredFields">
            <s:attribute name="ContactType" type="tns:CorteosContactType" use="required" />
            <s:attribute name="Value" type="s:string" />
          </s:extension>
        </s:complexContent>
      </s:complexType>
      <s:simpleType name="CorteosContactType">
        <s:restriction base="s:string">
          <s:enumeration value="Undefined" />
          <s:enumeration value="MobilePhone" />
          <s:enumeration value="OtherPhone" />
          <s:enumeration value="Email" />
        </s:restriction>
      </s:simpleType>
      <s:complexType name="Document">
        <s:complexContent mixed="false">
          <s:extension base="tns:BaseModelWithAllRequiredFields">
            <s:attribute name="CountryCode" type="s:string" />
            <s:attribute name="DocumentNumber" type="s:string" />
            <s:attribute name="DocumentType" type="tns:CorteosDocumentType" use="required" />
            <s:attribute name="DateValid" type="s:dateTime" use="required" />
          </s:extension>
        </s:complexContent>
      </s:complexType>
      <s:simpleType name="CorteosDocumentType">
        <s:restriction base="s:string">
          <s:enumeration value="Undefined" />
          <s:enumeration value="NationalPassport" />
          <s:enumeration value="ForeignPassport" />
        </s:restriction>
      </s:simpleType>
      <s:complexType name="ArrayOfDocument">
        <s:sequence>
          <s:element minOccurs="0" maxOccurs="unbounded" name="Document" nillable="true" type="tns:Document" />
        </s:sequence>
      </s:complexType>
      <s:complexType name="ArrayOfContact">
        <s:sequence>
          <s:element minOccurs="0" maxOccurs="unbounded" name="Contact" nillable="true" type="tns:Contact" />
        </s:sequence>
      </s:complexType>
      <s:complexType name="ArrayOfBonusCard">
        <s:sequence>
          <s:element minOccurs="0" maxOccurs="unbounded" name="BonusCard" nillable="true" type="tns:BonusCard" />
        </s:sequence>
      </s:complexType>
      <s:complexType name="ArrayOfVisa">
        <s:sequence>
          <s:element minOccurs="0" maxOccurs="unbounded" name="Visa" nillable="true" type="tns:Visa" />
        </s:sequence>
      </s:complexType>
      <s:complexType name="ArrayOfCode">
        <s:sequence>
          <s:element minOccurs="0" maxOccurs="unbounded" name="Code" nillable="true" type="tns:Code" />
        </s:sequence>
      </s:complexType>
      <s:complexType name="ArrayOfBudgetCode">
        <s:sequence>
          <s:element minOccurs="0" maxOccurs="unbounded" name="BudgetCode" nillable="true" type="tns:BudgetCode" />
        </s:sequence>
      </s:complexType>
      <s:complexType name="Account">
        <s:sequence>
          <s:element minOccurs="0" maxOccurs="1" name="PersonToCreate" type="tns:Person" />
          <s:element minOccurs="1" maxOccurs="1" name="id_Role" nillable="true" type="s:int" />
        </s:sequence>
        <s:attribute name="id_Group" type="s:int" use="required" />
        <s:attribute name="GroupSecurityKey" type="s:string" />
        <s:attribute name="Email" type="s:string" />
      </s:complexType>
      <s:element name="Set">
        <s:complexType>
          <s:sequence>
            <s:element minOccurs="0" maxOccurs="1" name="request" type="tns:BasicIncomingRequestModel" />
          </s:sequence>
        </s:complexType>
      </s:element>
      <s:element name="SetResponse">
        <s:complexType>
          <s:sequence>
            <s:element minOccurs="0" maxOccurs="1" name="SetResult" type="tns:CompleteIncomingRequestModel" />
          </s:sequence>
        </s:complexType>
      </s:element>
      <s:element name="AuthHeader" type="tns:AuthHeader" />
      <s:complexType name="AuthHeader">
        <s:sequence>
          <s:element minOccurs="0" maxOccurs="1" name="Login" type="s:string" />
          <s:element minOccurs="0" maxOccurs="1" name="Password" type="s:string" />
        </s:sequence>
        <s:anyAttribute />
      </s:complexType>
    </s:schema>
    <s:schema elementFormDefault="qualified" targetNamespace="http://microsoft.com/wsdl/types/">
      <s:simpleType name="guid">
        <s:restriction base="s:string">
          <s:pattern value="[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}" />
        </s:restriction>
      </s:simpleType>
    </s:schema>
  </wsdl:types>
  <wsdl:message name="GetSoapIn">
    <wsdl:part name="parameters" element="tns:Get" />
  </wsdl:message>
  <wsdl:message name="GetSoapOut">
    <wsdl:part name="parameters" element="tns:GetResponse" />
  </wsdl:message>
  <wsdl:message name="SetSoapIn">
    <wsdl:part name="parameters" element="tns:Set" />
  </wsdl:message>
  <wsdl:message name="SetSoapOut">
    <wsdl:part name="parameters" element="tns:SetResponse" />
  </wsdl:message>
  <wsdl:message name="SetAuthHeader">
    <wsdl:part name="AuthHeader" element="tns:AuthHeader" />
  </wsdl:message>
  <wsdl:portType name="DataServiceSoap">
    <wsdl:operation name="Get">
      <wsdl:documentation xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/">Returns SSO container by corteos or outer id.</wsdl:documentation>
      <wsdl:input message="tns:GetSoapIn" />
      <wsdl:output message="tns:GetSoapOut" />
    </wsdl:operation>
    <wsdl:operation name="Set">
      <wsdl:documentation xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/">Creates SSO container, sets new corteos id and returns the entire object back.</wsdl:documentation>
      <wsdl:input message="tns:SetSoapIn" />
      <wsdl:output message="tns:SetSoapOut" />
    </wsdl:operation>
  </wsdl:portType>
  <wsdl:binding name="DataServiceSoap" type="tns:DataServiceSoap">
    <soap:binding transport="http://schemas.xmlsoap.org/soap/http" />
    <wsdl:operation name="Get">
      <soap:operation soapAction="https://sso.corteos.ru/Get" style="document" />
      <wsdl:input>
        <soap:body use="literal" />
      </wsdl:input>
      <wsdl:output>
        <soap:body use="literal" />
      </wsdl:output>
    </wsdl:operation>
    <wsdl:operation name="Set">
      <soap:operation soapAction="https://sso.corteos.ru/Set" style="document" />
      <wsdl:input>
        <soap:body use="literal" />
        <soap:header message="tns:SetAuthHeader" part="AuthHeader" use="literal" />
      </wsdl:input>
      <wsdl:output>
        <soap:body use="literal" />
      </wsdl:output>
    </wsdl:operation>
  </wsdl:binding>
  <wsdl:binding name="DataServiceSoap12" type="tns:DataServiceSoap">
    <soap12:binding transport="http://schemas.xmlsoap.org/soap/http" />
    <wsdl:operation name="Get">
      <soap12:operation soapAction="https://sso.corteos.ru/Get" style="document" />
      <wsdl:input>
        <soap12:body use="literal" />
      </wsdl:input>
      <wsdl:output>
        <soap12:body use="literal" />
      </wsdl:output>
    </wsdl:operation>
    <wsdl:operation name="Set">
      <soap12:operation soapAction="https://sso.corteos.ru/Set" style="document" />
      <wsdl:input>
        <soap12:body use="literal" />
        <soap12:header message="tns:SetAuthHeader" part="AuthHeader" use="literal" />
      </wsdl:input>
      <wsdl:output>
        <soap12:body use="literal" />
      </wsdl:output>
    </wsdl:operation>
  </wsdl:binding>
  <wsdl:service name="DataService">
    <wsdl:port name="DataServiceSoap" binding="tns:DataServiceSoap">
      <soap:address location="http://test.sso.corteos.ru/XmlGate/DataService.asmx" />
    </wsdl:port>
    <wsdl:port name="DataServiceSoap12" binding="tns:DataServiceSoap12">
      <soap12:address location="http://test.sso.corteos.ru/XmlGate/DataService.asmx" />
    </wsdl:port>
  </wsdl:service>
</wsdl:definitions>