The following web services are implemented for SSO Portal:

Mission data trasfer web service

Service WSDL: https://test.sso.corteos.ru//XmlGate/DataService.asmx?WSDL

Complete operations list: https://test.sso.corteos.ru//XmlGate/DataService.asmx

Web service operations specification:

  • Set - creates a mission container that will be transfered to Corteos
  • Get - extracts data from mission container by its unique id

Set

Service location: https://test.sso.corteos.ru//XmlGate/DataService.asmx?op=Set

This operation is used when you need to pass any mission specific data to Corteos along with SSO request, check the list of transferable business objects below:

  • SignOutUrl - the url where user will be redirected in case of sign out;
  • OuterId - unique mission id in terms of end customer system;
  • CurrentRoute - journey route information(start and end point, departure and return dates);
  • Persons - list of persons for the mission(note, that all the persons will be created in system as new ones);
  • Budget codes - list of budget codes that would be applied to the orders created;
  • Account details - account data for single sign on(in case when no standard protocol, neither SAP Logon Ticket, nor SAML is used);

Request example

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:sso="https://test.sso.corteos.ru/">
   <soapenv:Header/>
   <soapenv:Body>
      <sso:Set>
         <!--Optional:-->
         <sso:request>
            <!--Optional:-->
            <sso:SignOutUrl>https://yandex.ru</sso:SignOutUrl>
            <!--Optional:-->
            <sso:OuterId>77777777</sso:OuterId>
            <!--Optional:-->
            <sso:CurrentRoute>
               <!--Optional:-->
               <sso:Origin>Москва</sso:Origin>
               <!--Optional:-->
               <sso:Destination>Париж</sso:Destination>
               <sso:DepartureDate>2018-10-01</sso:DepartureDate>
               <sso:ReturnDate>2018-10-10</sso:ReturnDate>
            </sso:CurrentRoute>
            <!--Optional:-->
            <sso:Persons>
               <!--Zero or more repetitions:-->
               <sso:Person LastName="Сидорова" 
               	FirstName="Вероника" MiddleName="Генадьевна" LastNameLatin="Sidorova" 
               	FirstNameLatin="Veronica" MiddleNameLatin="Genadievna" Gender="true" DateBirth="1990-01-01">
                  <!--Optional:-->
                  <sso:Documents>
                     <!--Zero or more repetitions:-->
                     <sso:Document CountryCode="RU" DocumentNumber="4505111222" DocumentType="NationalPassport" DateValid="2020-01-01"/>
                  </sso:Documents>
                  <!--Optional:-->
                  <sso:Contacts>
                     <!--Zero or more repetitions:-->
                     <sso:Contact ContactType="Email" Value="ivanov@yandex.ru"/>
                     <sso:Contact ContactType="MobilePhone" Value="+79039300022"/>
                  </sso:Contacts>
                  <!--Optional:-->
                  <sso:PersonalCodes>
                     <!--Zero or more repetitions:-->
                     <sso:Code DictionaryName="Табельный номер" CodeValue="0000001"/>
                  </sso:PersonalCodes>
               </sso:Person>
            </sso:Persons>
            <!--Optional:-->
            <sso:BudgetCodes>
               <!--Zero or more repetitions:-->
               <sso:BudgetCode DictionaryName="Кост-центр" CodeValue="MOW" SelectorState="Enabled"/>
               <sso:BudgetCode DictionaryName="МВЗ" CodeValue="11111111" SelectorState="Enabled"/>
            </sso:BudgetCodes>
            <!--Optional:-->
            <sso:AccountDetails id_Group="xx" GroupSecurityKey="xxxxxx" Email="xxxxxxxxxxx" />
         </sso:request>
      </sso:Set>
   </soapenv:Body>
</soapenv:Envelope>

Request format explained

  • SignOutUrl - string - the url where user will be redirected in case of sign out;
  • OuterId - string - unique mission id in terms of end customer system;
  • CurrentRoute - journey route information(start and end point, departure and return dates);
    • Origin - string - start point name;
    • Destination - string - end point name;
    • DepartureDate - date - departure date;
    • ReturnDate - date - return date, if no return is required, then pass the departure date as well;
  • Persons - list of persons for the mission(note, that all the persons will be created in system as new ones);
    • LastName - string - person last name for domestic travel
    • FirstName - string - person first name for domestic travel
    • MiddleName - string - person middle name for domestic travel
    • LastNameLatin - string - person last name for international travel
    • FirstNameLatin - string - person first name for international travel
    • MiddleNameLatin - string - person middle name for international travel
    • INN - string - INN of employee organization
    • KPP - string - KPP of employee organization
    • CountryAlpha2 - string - alpha2 of employees birthplace, for example RU
    • Documents - person identities
      • CountryCode - string - issuing country alpha2 code(like RU, 2 digits)
      • DocumentNumber - string - document number(and probably series) without spaces
      • DocumentType - string - type of the document, one of: NationalPassport, ForeignPassport or Undefined
      • DateValid - datetime - document validity end date
    • Contacts - person email, mobile or workphone - note the mobile phone is a must for many airlines
      • ContactType - string - either, Email, MobilePhone, OtherPhone or Undefined;
      • Value - string - contact value, something like user@domain.com;
    • PersonalCodes - person-attached codes that cannot be changed, note that all the dictionaries must be already present in Corteos
      • DictionaryName - string - name of the structural codes dictionary as it's defined in Corteos;
      • CodeValue - string - value of the structural code;
      • IsPrimaryKey - bool - says, if this code can be used to check person's existance in database;
  • BudgetCodes - budget codes, that will be attached to orders created after the single sign on process
    • DictionaryName - string - name of the budget codes dictionary as it's defined in Corteos;
    • CodeValue - string - value of the budget code;
    • SelectorState - string - either Enabled(if user can change code) or Disabled(if he can not);
  • AccountDetails - account data for single sign on(in case when no standard protocol, neither SAP Logon Ticket, nor SAML is used);
    • id_Group - int - unique customer group idenifier provided by agency
    • GroupSecurityKey - string - group security token
    • Email - string - user email

Response example

<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
   <soap:Body>
      <SetResponse xmlns="https://test.sso.corteos.ru/">
         <SetResult>
            <OuterId>77777777</OuterId>
            <CurrentRoute>
               <Origin>Москва</Origin>
               <Destination>Париж</Destination>
               <DepartureDate>2018-10-01T00:00:00</DepartureDate>
               <ReturnDate>2018-10-10T00:00:00</ReturnDate>
            </CurrentRoute>
            <Persons>
               <Person LastName="Сидорова" FirstName="Вероника" MiddleName="Генадьевна" LastNameLatin="Sidorova" FirstNameLatin="Veronica" MiddleNameLatin="Genadievna" Gender="true" DateBirth="1990-01-01T00:00:00">
                  <Documents>
                     <Document CountryCode="RU" DocumentNumber="4505111222" DocumentType="NationalPassport" DateValid="2020-01-01T00:00:00"/>
                  </Documents>
                  <Contacts>
                     <Contact ContactType="Email" Value="ivanov@yandex.ru"/>
                     <Contact ContactType="MobilePhone" Value="+79039300022"/>
                  </Contacts>
                  <PersonalCodes>
                     <Code DictionaryName="Табельный номер" CodeValue="0000001"/>
                  </PersonalCodes>
               </Person>
            </Persons>
            <BudgetCodes>
               <BudgetCode DictionaryName="Кост-центр" CodeValue="MOW" SelectorState="Enabled"/>
               <BudgetCode DictionaryName="МВЗ" CodeValue="11111111" SelectorState="Enabled"/>
            </BudgetCodes>
            <AccountDetails id_Group="63" GroupSecurityKey="xxxxxx" Email="marina@elmotest.ru"/>
            <id_User>xxx</id_User>
            <CorteosId>f481169c-9b6f-477f-bfae-ea172478b8d0</CorteosId>
            <CreationDate>2017-12-01T21:24:42.3739443+03:00</CreationDate>
         </SetResult>
      </SetResponse>
   </soap:Body>
</soap:Envelope>

Response format explained

Response is just a roundtrip data provided in request with the following fields notable:

  • id_User - string - if you pass Account details data in request, this field will contain Corteos unique user id;
  • CorteosId - string(guid) - token for request access, must be sent to Corteos along with SSO ticket;
  • CreationDate - datetime - SSO request creation date and time - please note, that SSO token is only valid for 10 minutes.