ПОДПИСЫВАЙТЕСЬ НА НАШ ТЕЛЕГРАМ-КАНАЛ @nemo_travel_official

Интеграция со сторонними системами АПИ: различия между версиями

Материал из Центр поддержки системы бронировании
Перейти к навигации Перейти к поиску
(API Поиска авиабилетов)
м (API Авиабилетов)
 
(не показано 40 промежуточных версий 4 участников)
Строка 1: Строка 1:
 +
==API Авиабилетов==
  
'''!!!СТАТЬЯ В РАЗРАБОТКЕ!!!'''
+
Чтобы авторизоваться в системе, в запросе необходимо указать APIKey и ClientID. Эти данные можно узнать в разделе Администрирование - Веб-сервис. Авторизация. Там же можно включить/выключить нотификацию для действий, совершенных через АПИ.
  
==API Поиска авиабилетов==
+
=== API Поиска авиабилетов ===
 
Это сервис внутри Nemo, который позволяет получить результаты поиска.
 
Это сервис внутри Nemo, который позволяет получить результаты поиска.
  
 
Для подключения к веб-службе поиска авиабилетов необходимо открыть доступ нужному пользователю. Это можно сделать в разделе '''«Администрирование»''' ⇨ '''«Веб-служба. Авторизация»'''.
 
Для подключения к веб-службе поиска авиабилетов необходимо открыть доступ нужному пользователю. Это можно сделать в разделе '''«Администрирование»''' ⇨ '''«Веб-служба. Авторизация»'''.
  
После добавления пользователя, ему будут присвоены Номер (ClientId) и API ключ клиента, которые нужно использовать для подключения.
+
Подробнее можно узнать в специальной статье [[Веб-служба поиска авиабилетов]]
  
Подробнее можно узнать в специальной статье [[[[Веб-служба поиска авиабилетов]]]]
+
=== API Бронирования авиабилетов ===
 +
Сервис позволяет забронировать/войдировать авиабилет с использованием API, описание подключения, запроса, ответов находится в этой статье [[Веб-служба бронирования]]
  
==API Поиска отелей==
+
=== API Выписки авиабилетов ===
'''Агентский API Отелей''' - система, которая предоставляет возможность поиска и бронирования отелей а так же получение информации о времени и размерах штрафов, уникальной информации об отеле, получение статической информации.
 
  
==API бронирования, аннуляции, войдирования авиабилетов==
+
Агентский АПИ выписки позволяет определить валидирующего перевозчика и значение комиссии от авиакомпании для брони, а также запустить процедуру выписки билета. [[Веб-служба выписки]]
=== Подключение ===
 
  
Получить доступ к результатам бронирования в данном сервисе можно через SOAP клиента. Для получения результата необходим параметр — «FlightId» — Id перелёта, для которого будет производится бронирование. WSDL находится по адресу: http://CLIENT_DOMAIN/nemoflights/wsdl.php?for=BookFlight.
+
=== API Оплаты ===
  
=== Общий формат запроса / ответа бронирования ===
+
Сервис внутри Nemo, который предназначен для выполнения различных операций, относящихся к оплате заказов. [[Агентские АПИ оплаты]]
  
<div class="toccolours mw-collapsible mw-collapsed" style="width:1000px">
+
=== API Дополнительных запросов авиабилетов ===
===== Запрос =====
 
<div class="mw-collapsible-content">
 
<syntaxhighlight lang="xml" line enclose="div" style="font-size:9pt;background: #F9F9F9; border: 1px dashed #2F6FAB; padding: 10px 5px; margin: 10px 0;">
 
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ver="http://CLIENT_DOMAIN/nemoflights/?version%3D1.0%26for%3DBookFlight">
 
  <soapenv:Header/>
 
  <soapenv:Body>
 
      <ver:BookFlight>
 
        <RequestBin>
 
            <Request>
 
              <BookFlight>
 
                  <FlightId>?</FlightId>
 
                  <!--FlightId — Id перелёта в системе Nemo-->
 
                  <!--Optional:-->
 
                  <ValidatingCompany>?</ValidatingCompany> <!--необязательный-->
 
                  <!--ValidatingCompany — валидирующий перевозчик (тот кто выписывает билет)-->
 
                  <!--Optional:-->
 
                  <BookingCodes>
 
                    <!--Zero or more repetitions:-->
 
                    <BookingCode Code="?" SegNumber="?"/>
 
                    <!--Code — код класса перелёта-->
 
            <!--SegNumber — номер сегмента в перелёте (начинаются с 1)-->
 
                  </BookingCodes>
 
                  <!--Optional:-->
 
                  <CurrencyCode>?</CurrencyCode> <!--необязательный-->
 
                  <!--CurrencyCode — код валюты-->
 
                  <!--Optional:-->
 
                  <TicketTimeLimit>?</TicketTimeLimit> <!--необязательный-->
 
                  <!--TicketTimeLimit — таймлимит на оплату, формат: ГГГГ-ММ-ДДTЧЧ:ММ:СС-->
 
                  <!--Optional:-->
 
                  <Agency Name="?"> <!--необязательный-->
 
                  <!--Name — название агентства-->
 
                    <Telephone Type="?">
 
                    <!--Type — тип номера, обязательный, возможные значения:
 
                      M — мобильный, H — домашний, B — рабочий, A — агенство-->
 
                        <!--Optional:-->
 
                        <PhoneNumber>?</PhoneNumber>
 
                        <!--PhoneNumber — номер телефона-->
 
                        <!--Optional:-->
 
                        <CountryAccessCode>?</CountryAccessCode> <!--необязательный-->
 
                        <!--CountryAccessCode — код страны-->
 
                        <!--Optional:-->
 
                        <AreaCityCode>?</AreaCityCode> <!--необязательный-->
 
                        <!--AreaCityCode — код региона/города-->
 
                    </Telephone>
 
                    <Address City="?" State="?" StreetAddress="?" PostalCode="?" CountryCode="?"/> <!--необязательный-->
 
                    <!--City — город-->
 
    <!--State — штат-->
 
    <!--StreetAddress — адрес в городе (улица, дом, корпус, офис и т.д.)-->
 
    <!--PostalCode — почтовый индекс-->
 
    <!--CountryCode — код страны (RU, UA и т.п.)-->
 
  </Agency>
 
                  <Travellers>
 
                    <!--Zero or more repetitions:-->
 
                    <Traveller Type="?" IsContact="?" LinkedTo="?" Num="?" TravellerId="?">
 
                    <!--Type — тип пассажира, обязательный, возможные значения: ADT — взрослые,
 
                      CNN — дети со взрослыми,UNN — дети без сопровождения взрослых, INF — младенцы, INS — младенцы с местом-->
 
    <!--IsContact — если true — то данный пассажир является контактным лицом, если false — то не является,
 
      контактное лицо может быть только 1, если среди пассажиров есть взрослые, то только кто-то из них
 
                      может быть контактным лицом, по умолчанию false-->
 
    <!--Num — порядковый номер пассажира, начинается с 1-->
 
                    <!--LinkedTo — номер взрослого, к которому привязан младенец/ребёнок--> <!--необязательный-->
 
                    <!--TravellerId — устаревший параметр, не используется-->
 
                        <Meal>?</Meal> <!--необязательный-->
 
                        <!--Meal — код типа питания, возможные значения:
 
NONE — отсутствует
 
AVML — Азиатская вегетарианская кухня
 
BLML — Блюда щадящей диеты
 
CHML — Детское питание
 
CHPC — Детский холодный завтрак
 
СНСС — Детский горячий завтрак
 
CHHC — Детский ланч, ветчина и сыр
 
PBJS — Детский ланч, ореховое масло
 
CHMC — Детский обед макароны с сыром
 
DBML — Диабетическое питание
 
FPML — Фрукты
 
GFML — Питание без клейковины
 
HFML — Питание богатое клетчаткой
 
HNML — Индусская кухня
 
BBML — Питание для младенцев
 
KSML — Кошерная кухня
 
SMKB — Кошерный завтрак
 
SMKL — Кошерный ланч
 
SMKD — Кошерный обед
 
LPML — Малобелковое питание
 
LCML — Низкокалорийное питание
 
LFML — Низкохолестериновое питание
 
PRML — Низкопуриновое питание
 
LSML — Малосоленое питание
 
MOML — Мюсли
 
NLML — Безмолочные продукты
 
ORML — Восточная кухня
 
RVML — Сырые овощи
 
SFML — Морепродукты
 
SPML — Особое питание
 
VLML — Вегетарианское, молоко и яйца
 
VGML — Строго вегетарианское питание
 
VJML — Джайнизское вегетарианское
 
VOML — Восточное вегетарианское питание-->
 
                        <PersonalInfo DateOfBirth="?" Nationality="?" Gender="?">
 
                        <!--DateOfBirth — дата рождения в формате ДД.ММ.ГГГГ (например 31.12.2000)-->
 
<!--Nationality — гражданство, двух буквенный код страны (RU, UA, US и т.д.)-->
 
<!--Gender — пол пассажира, возможные значения: M — мужской(Male), F — женский(Female)-->
 
                          <FirstName>?</FirstName>
 
                          <!--FirstName — имя пассажира-->
 
                          <LastName>?</LastName>
 
                          <!--LastName — фамилия пассажира-->
 
                          <!--Optional:-->
 
                          <MiddleName>?</MiddleName> <!--необязательный-->
 
                          <!--MiddleName — отчество пассажира-->
 
                        </PersonalInfo>
 
                        <LoyaltyCard OpCode="?" Number="?"/> <!--необязательный-->
 
                        <!--OpCode — код авиакомпании-->
 
<!--Number — номер карточки-->
 
                        <ContactInfo> <!--необязательный-->
 
                          <!--Optional:-->
 
                          <EmailID>?</EmailID>
 
                          <!--EmailID — контактный email-->
 
                          <!--Optional:-->
 
                          <Telephone Type="?">
 
                          <!--Type — тип номера, возможные значения: M — мобильный, H — домашний, B — рабочий-->
 
                              <!--Optional:-->
 
                              <PhoneNumber>?</PhoneNumber>
 
                              <!--PhoneNumber — номер телефона-->
 
                              <!--Optional:-->
 
                              <CountryAccessCode>?</CountryAccessCode>
 
                              <!--CountryAccessCode — код страны-->
 
                              <!--Optional:-->
 
                              <AreaCityCode>?</AreaCityCode>
 
                              <!--AreaCityCode — код региона/города-->
 
                          </Telephone>
 
                        </ContactInfo>
 
                        <DocumentInfo DocType="?" DocNum="?" CountryCode="?" DocElapsedTime="?"/>
 
                        <!--DocType — тип документа, возможные значения:
 
Р — Паспорт
 
A – Паспорт иностранца
 
С — Внутренний гражданский паспорт
 
F – Документ заменяющий паспорт
 
М — Воинское удостоверение
 
N – Сертификат натурализации(специфичный документ США)
 
T – Док.повторного въезда, паспорт беженца
 
V – Документ для пересечения границы-->
 
<!--DocNum — номер документа-->
 
<!--CountryCode — двух буквенный код страны выдачи паспорта (RU, UA, US и т.д.)-->
 
<!--DocElapsedTime — срок истечения срока действия паспорта в ДД.ММ.ГГГ (например 31.12.2000)-->
 
                        <VisaInfo Num="?" IssueCountry="?" IssuePlace="?" BirthCountry="?" BirthCity="?" IssueDate="?"/>
 
                        <!--необязательный-->
 
                        <!--Num — номер визы-->
 
                        <!--IssueDate — дата(ДД.ММ.ГГГГ) выдачи визы-->
 
                        <!--IssueCountry — страна выдачи визы-->
 
                        <!--IssuePlace — место выдачи визы-->
 
                        <!--BirthCountry — страна рождения(IATA код страны)-->
 
                        <!--BirthCity — город рождения(название)-->
 
                        <ArrAddress City="?" State="?" StreetAddress="?" PostalCode="?" CountryCode="?"/> <!--необязательный-->
 
                        <!--City — город-->
 
<!--State — штат или область въезда-->
 
<!--StreetAddress — адрес: улица, номер дома, квартиры и т.д.-->
 
<!--PostalCode — почтовый код-->
 
<!--CountryCode — код страны-->
 
                        <PreferedPlace SmokingAllowed="?" Location="?" RowNumber="?" PlaceNumber="?" SegNumber="?"/>
 
                        <!--необязательный-->
 
                        <!--Если указаны номер ряда и номер места, то параметры SmokingAllowed и Location игнорируются-->
 
<!--SmokingAllowed — булевское значение, true — место для курящих, false — место для некурящих-->
 
<!--Location — положение места в ряде, возможные значения:
 
W — у окна (Window)
 
M — где-то в середине ряда (Middle)
 
NPW — возле прохода (NearPassengerWay)
 
NS — нет предпочтения (NotSpecified)-->
 
<!--RowNumber — номер ряда-->
 
<!--PlaceNumber — номер места-->
 
<!--SegNumber — номер сегмента-->
 
                        <DocStringFormats>
 
                          <!--Zero or more repetitions:-->
 
                          <DocStringFormat>?</DocStringFormat>
 
                          <!--DocStringFormat — формат паспортной строки, возможные значения:
 
                            DOCS — строка формата DOCS, FOID — строка формата FOID-->
 
                        </DocStringFormats>
 
                    </Traveller>
 
                  </Travellers>
 
                  <!--Optional:-->
 
                  <QueueNum>?</QueueNum> <!--необязательный-->
 
                  <!--QueueNum — номер очереди, в которую необходимо поместить бронирование-->
 
              </BookFlight>
 
            </Request>
 
            <Source>
 
              <ClientId>?</ClientId>
 
              <!--ClientId — ID клиента в системе Nemo. Можно посмотреть/добавить в разделе
 
                "Администрирование" ? "Веб-служба. Авторизация".-->
 
              <APIKey>?</APIKey>
 
              <!--APIKey — секретный ключ доступа к API Nemo. Можно посмотреть/добавить в разделе
 
                "Администрирование" ? "Веб-служба. Авторизация".-->
 
              <Language>?</Language>
 
              <!--Language — язык-->
 
              <Currency>?</Currency>
 
              <!-- CUrrency — валюта-->
 
            </Source>
 
        </RequestBin>
 
      </ver:BookFlight>
 
  </soapenv:Body>
 
</soapenv:Envelope>
 
</syntaxhighlight>
 
</div>
 
</div>
 
  
<div class="toccolours mw-collapsible mw-collapsed" style="width:1000px">
+
К дополнительных запросам относятся проверка на доступность, запрос на обновление заказа, чтение тарифных правил. [[Дополнительные запросы АПИ авиабилетов]]
  
===== Ответ =====
+
=== Используемые параметры ===
<div class="mw-collapsible-content">
 
<syntaxhighlight lang="xml" line enclose="div" style="font-size:9pt;background: #F9F9F9; border: 1px dashed #2F6FAB; padding: 10px 5px; margin: 10px 0;">
 
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns1="http://CLIENT_DOMAIN/nemoflights/?version%3D1.0%26for%3DBookFlight" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
 
  <SOAP-ENV:Body>
 
      <ns1:BookFlightResponse>
 
        <ResponseBin>
 
            <Response>
 
              <BookFlight ID="?" Status="?" Code="?">
 
              <!--ID — Id брони в системе Nemo, целое число, обязательный-->
 
      <!--Status — индикатор состояния брони, возможные значения:
 
booked — забронировано,
 
canceled — бронь отменена,
 
ticket — выписана
 
UNDEFINED — статус не определён-->
 
      <!--Code — код брони в системе поставщика-->
 
                  <QueryPlace xsi:nil="true"/>
 
                  <!--QueryPlace — положение брони в очереди, Number — номер брони в очереди-->
 
                  <Flight FlightId="?">
 
                  <!--FlightId — Id перелёта в системе Nemo-->
 
                    <WebService>?</WebService>
 
                    <!--WebService — поставщик перелёта-->
 
                    <ValCompany>?</ValCompany>
 
                    <!--ValCompany — код авиакомпании, являющейся валидирующим перевозчиком, IATA-->
 
                    <URL>?</URL>
 
                    <!--URL — ссылка на бронирование конкретного перелета-->
 
                    <Segments>
 
                        <Segment SegNum="?" SegGroupNum="?">
 
                        <!--SegNum — номер сегмента в перелёте-->
 
        <!--SegGroupNum – номер плеча перелёта-->
 
                          <DepAirp CodeType="IATA">?</DepAirp>
 
                          <!--DepAirp — аэропорт отправления, например: MOW — любой аэропорт в г.Москва
 
                            или SVO — Шереметьево-->
 
                          <DepTerminal>?</DepTerminal>
 
                          <!--DepTerminal — терминал пункта отправления, если пустое значение,
 
                            то в аэропорту всего 1 терминал-->
 
                          <ArrAirp CodeType="IATA">?</ArrAirp>
 
                          <!--ArrAirp — аэропорт прибытия-->
 
                          <ArrTerminal>?</ArrTerminal>
 
                          <!--ArrTerminal — терминал пункта прибытия, если пустое значение,
 
                            то в аэропорту всего 1 терминал-->
 
                          <OpAirline>?</OpAirline>
 
                          <!--OpAirline — авиакомпания перевозчик, например: SU — Аэрофлот-->
 
                          <MarkAirline>?</MarkAirline>
 
                          <!--MarkAirline — авиакомпания, продающая перелёт-->
 
                          <FlightNumber>?</FlightNumber>
 
                          <!--FlightNumber — номер рейса-->
 
                          <AircraftType>?</AircraftType>
 
                          <!--AircraftType — тип воздушного судна, код-->
 
                          <DepDateTime>?</DepDateTime>
 
                          <!--DepDateTime — дата и время отправления, формат ГГГГ-MM-ДДTЧЧ:ММ:СС-->
 
                          <ArrDateTime>?</ArrDateTime>
 
                          <!--ArrDateTime — дата и время прибытия, формат ГГГГ-MM-ДДTЧЧ:ММ:СС-->
 
                          <StopNum>?</StopNum>
 
                          <!--StopNum — количество остановок-->
 
                          <BookingCodes>
 
                              <BookingCode ClassType="?">
 
                              <!--ClassType — класс перелета, например: economy-->
 
                                <BookingCode>?</BookingCode>
 
                                <!--BookingCode — код класса бронирования, у разных авиакомпаний один и тот же класс
 
                                  может записываться разными литерами, например: L-->
 
                              </BookingCode>
 
                          </BookingCodes>
 
                          <FlightTime>?</FlightTime>
 
                          <!--FlightTime — время перелёта в минутах-->
 
                          <TimeZone Departure="?" Arrival="?"/>
 
                          <!--Departure временная зона аэропорта отправления-->
 
  <!--Arrival — временная зона аэропорта прибытия-->
 
                          <ETicket>?</ETicket>
 
                          <!--ETicket — признак электронного билета, значения: true / false-->
 
                        </Segment>
 
                    </Segments>
 
                    <PricingInfo Refundable="?">
 
                    <!--Refundable — возвратный/невозвратный, true/false. Если пустое, то не известно-->
 
                        <PassengerFare Type="?" Quantity="?">
 
                        <!--Type — тип пассажира, возможные значения: ADT — взрослые, CNN — дети,
 
                        INF — младенцы, INS — младенцы с местом-->
 
        <!--Quantity — количество пассажиров данного типа-->
 
                          <BaseFare Currency="?" Amount="?"/>
 
                          <!--BaseFare — базовая стоимость, в базовой валюте. Currency — код валюты, Amount — значение цены-->
 
                          <EquiveFare Currency="?" Amount="?"/>
 
                          <!--EquiveFare — базовая стоимость, в эквивалентной валюте(валюте продажи).
 
                            Currency — код валюты, Amount — значение цены-->
 
                          <TotalFare Currency="?" Amount="?"/>
 
                          <!--TotalFare — суммарная стоимость, в эквивалентной валюте.
 
                            Currency — код валюты, Amount — значение цены-->
 
                          <Taxes>
 
                              <Tax CurCode="?" TaxCode="?" Amount="?"/>
 
                              <!--CurCode — код валюты, TaxCode — код таксы, Amount — сумма таксы-->
 
                          </Taxes>
 
                          <Tariffs>
 
                              <Tariff Code="?" SegNum="?"/>
 
                              <!--Code — код тарифа, SegNum — номер сегмента, к которому применён тариф-->
 
                          </Tariffs>
 
                          <FareCalc>?</FareCalc>
 
                          <!--FareCalc — строка расчёта цены-->
 
                          <LastTicketDateTime>?</LastTicketDateTime>
 
                          <!--LastTicketDateTime — дата и время таймлимита по выписке в формате ГГГГ-MM-ДДTЧЧ:ММ:СС-->
 
                        </PassengerFare>
 
                    </PricingInfo>
 
                    <Commission/>
 
                    <Charges Currency="?">?</Charges>
 
                    <!--Charges — сборы, Currency — код валюты-->
 
                    <TotalPrice Currency="?">?</TotalPrice>
 
                    <!--TotalPrice — итоговая цена, Currency — код валюты-->
 
                  </Flight>
 
                  <Agency Name="?">
 
                  <!--Name — название агентства-->
 
                    <Telephone Type="?">
 
                    <!--Type — тип номера, обязательный, возможные значения:
 
                      M — мобильный, H — домашний, B — рабочий, A — агенство-->
 
                        <!--Optional:-->
 
                        <PhoneNumber>?</PhoneNumber>
 
                        <!--PhoneNumber — номер телефона-->
 
                        <!--Optional:-->
 
                        <CountryAccessCode>?</CountryAccessCode>
 
                        <!--CountryAccessCode — код страны-->
 
                        <!--Optional:-->
 
                        <AreaCityCode>?</AreaCityCode>
 
                        <!--AreaCityCode — код региона/города-->
 
                    </Telephone>
 
                    <Address City="?" State="?" StreetAddress="?" PostalCode="?" CountryCode="?"/>
 
                    <!--City — город-->
 
    <!--State — штат-->
 
    <!--StreetAddress — адрес в городе (улица, дом, корпус, офис и т.д.)-->
 
    <!--PostalCode — почтовый индекс-->
 
    <!--CountryCode — код страны (RU, UA и т.п.)-->
 
  </Agency>
 
                  <ItinReceipts Encoding="?" Format="?">
 
                  <!--ItinReceipts — маршрут квитанция, Encoding — кодировка, Format — формат-->
 
                  <FareStored xsi:nil="true"/>
 
                  <Travellers>
 
                    <!--Zero or more repetitions:-->
 
                    <Traveller Type="?" IsContact="?" LinkedTo="?" Num="?" TravellerId="?">
 
                    <!--Type — тип пассажира, обязательный, возможные значения: ADT — взрослые,
 
                      CNN — дети со взрослыми,UNN — дети без сопровождения взрослых, INF — младенцы, INS — младенцы с местом-->
 
    <!--IsContact — если true — то данный пассажир является контактным лицом, если false — то не является,
 
      контактное лицо может быть только 1, если среди пассажиров есть взрослые, то только кто-то из них
 
                      может быть контактным лицом, по умолчанию false-->
 
    <!--Num — порядковый номер пассажира, начинается с 1-->
 
                    <!--LinkedTo — номер взрослого, к которому привязан младенец/ребёнок-->
 
                    <!--TravellerId — устаревший параметр, не используется-->
 
                        <Meal>?</Meal>
 
                        <!--Meal — код типа питания, возможные значения:
 
NONE — отсутствует
 
AVML — Азиатская вегетарианская кухня
 
BLML — Блюда щадящей диеты
 
CHML — Детское питание
 
CHPC — Детский холодный завтрак
 
СНСС — Детский горячий завтрак
 
CHHC — Детский ланч, ветчина и сыр
 
PBJS — Детский ланч, ореховое масло
 
CHMC — Детский обед макароны с сыром
 
DBML — Диабетическое питание
 
FPML — Фрукты
 
GFML — Питание без клейковины
 
HFML — Питание богатое клетчаткой
 
HNML — Индусская кухня
 
BBML — Питание для младенцев
 
KSML — Кошерная кухня
 
SMKB — Кошерный завтрак
 
SMKL — Кошерный ланч
 
SMKD — Кошерный обед
 
LPML — Малобелковое питание
 
LCML — Низкокалорийное питание
 
LFML — Низкохолестериновое питание
 
PRML — Низкопуриновое питание
 
LSML — Малосоленое питание
 
MOML — Мюсли
 
NLML — Безмолочные продукты
 
ORML — Восточная кухня
 
RVML — Сырые овощи
 
SFML — Морепродукты
 
SPML — Особое питание
 
VLML — Вегетарианское, молоко и яйца
 
VGML — Строго вегетарианское питание
 
VJML — Джайнизское вегетарианское
 
VOML — Восточное вегетарианское питание-->
 
                        <PersonalInfo DateOfBirth="?" Nationality="?" Gender="?">
 
                        <!--DateOfBirth — дата рождения в формате ДД.ММ.ГГГГ (например 31.12.2000)-->
 
<!--Nationality — гражданство, двух буквенный код страны (RU, UA, US и т.д.)-->
 
<!--Gender — пол пассажира, возможные значения: M — мужской(Male), F — женский(Female)-->
 
                          <FirstName>?</FirstName>
 
                          <!--FirstName — имя пассажира-->
 
                          <LastName>?</LastName>
 
                          <!--LastName — фамилия пассажира-->
 
                          <!--Optional:-->
 
                          <MiddleName>?</MiddleName>
 
                          <!--MiddleName — отчество пассажира-->
 
                        </PersonalInfo>
 
                        <LoyaltyCard OpCode="?" Number="?"/>
 
                        <!--OpCode — код авиакомпании-->
 
<!--Number — номер карточки-->
 
                        <ContactInfo>
 
                          <!--Optional:-->
 
                          <EmailID>?</EmailID>
 
                          <!--EmailID — контактный email-->
 
                          <!--Optional:-->
 
                          <Telephone Type="?">
 
                          <!--Type — тип номера, возможные значения: M — мобильный, H — домашний, B — рабочий-->
 
                              <!--Optional:-->
 
                              <PhoneNumber>?</PhoneNumber>
 
                              <!--PhoneNumber — номер телефона-->
 
                              <!--Optional:-->
 
                              <CountryAccessCode>?</CountryAccessCode>
 
                              <!--CountryAccessCode — код страны-->
 
                              <!--Optional:-->
 
                              <AreaCityCode>?</AreaCityCode>
 
                              <!--AreaCityCode — код региона/города-->
 
                          </Telephone>
 
                        </ContactInfo>
 
                        <DocumentInfo DocType="?" DocNum="?" CountryCode="?" DocElapsedTime="?"/>
 
                        <!--DocType — тип документа, возможные значения:
 
Р — Паспорт
 
A – Паспорт иностранца
 
С — Внутренний гражданский паспорт
 
F – Документ заменяющий паспорт
 
М — Воинское удостоверение
 
N – Сертификат натурализации(специфичный документ США)
 
T – Док.повторного въезда, паспорт беженца
 
  V – Документ для пересечения границы-->
 
<!--DocNum — номер документа-->
 
<!--CountryCode — двух буквенный код страны выдачи паспорта (RU, UA, US и т.д.)-->
 
<!--DocElapsedTime — срок истечения срока действия паспорта в ДД.ММ.ГГГ (например 31.12.2000)-->
 
                        <VisaInfo Num="?" IssueCountry="?" IssuePlace="?" BirthCountry="?" BirthCity="?" IssueDate="?"/>
 
                        <!--Num — номер визы-->
 
                        <!--IssueDate — дата(ДД.ММ.ГГГГ) выдачи визы-->
 
                        <!--IssueCountry — страна выдачи визы-->
 
                        <!--IssuePlace — место выдачи визы-->
 
                        <!--BirthCountry — страна рождения(IATA код страны)-->
 
                        <!--BirthCity — город рождения(название)-->
 
                        <ArrAddress City="?" State="?" StreetAddress="?" PostalCode="?" CountryCode="?"/>
 
                        <!--City — город-->
 
<!--State — штат или область въезда-->
 
<!--StreetAddress — адрес: улица, номер дома, квартиры и т.д.-->
 
<!--PostalCode — почтовый код-->
 
<!--CountryCode — код страны-->
 
                        <PreferedPlace SmokingAllowed="?" Location="?" RowNumber="?" PlaceNumber="?" SegNumber="?"/>
 
                        <!--Если указаны номер ряда и номер места, то параметры SmokingAllowed и Location игнорируются-->
 
<!--SmokingAllowed — булевское значение, true — место для курящих, false — место для некурящих-->
 
<!--Location — положение места в ряде, возможные значения:
 
W — у окна (Window)
 
M — где-то в середине ряда (Middle)
 
NPW — возле прохода (NearPassengerWay)
 
NS — нет предпочтения (NotSpecified)-->
 
<!--RowNumber — номер ряда-->
 
<!--PlaceNumber — номер места-->
 
<!--SegNumber — номер сегмента-->
 
                        <DocStringFormats>
 
                          <!--Zero or more repetitions:-->
 
                          <DocStringFormat>?</DocStringFormat>
 
                          <!--DocStringFormat — формат паспортной строки, возможные значения:
 
                            DOCS — строка формата DOCS, FOID — строка формата FOID-->
 
                        </DocStringFormats>
 
                    </Traveller>
 
                  </Travellers>
 
              </BookFlight>
 
              <Requisites/>
 
              <RequestType xsi:nil="true"/>
 
              <UserID xsi:nil="true"/>
 
              <Errors>
 
                  <Error Code="?">
 
                  <!--Code — код ошибки в системе Nemo-->
 
                    <ServiceErrorMessage>?</ServiceErrorMessage>
 
                    <!--ServiceErrorMessage — сообщение об ошибке полученное от веб-сервиса поставщика-->
 
                    <Message>?</Message>
 
                    <!--Message — сообщение об ошибке от системы Nemo-->
 
                  </Error>
 
              </Errors>
 
            </Response>
 
        </ResponseBin>
 
      </ns1:BookFlightResponse>
 
  </SOAP-ENV:Body>
 
</SOAP-ENV:Envelope>
 
</syntaxhighlight>
 
</div>
 
</div>
 
 
 
=== Пример использования ===
 
 
 
Пример одностороннего перелета Москва — Мадрид.
 
  
 
<div class="toccolours mw-collapsible mw-collapsed" style="width:1000px">
 
<div class="toccolours mw-collapsible mw-collapsed" style="width:1000px">
===== Запрос =====
+
==== Параметры, используемые в запросах ====
 
<div class="mw-collapsible-content">
 
<div class="mw-collapsible-content">
<syntaxhighlight lang="xml" line enclose="div" style="font-size:9pt;background: #F9F9F9; border: 1px dashed #2F6FAB; padding: 10px 5px; margin: 10px 0;">
+
<table border="1">
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ver="http://CLIENT_DOMAIN/nemoflights/?version%3D1.0%26for%3DBookFlight">
+
<tr bgcolor="#CCCCCC">
  <soapenv:Header/>
+
<th> Имя элемента </th><th> Обязательный      </th><th> Тип  </th><th>    Описание  </th>
  <soapenv:Body>
+
</tr>
      <ver:BookFlight>
+
<tr>
        <RequestBin>
 
            <Request>
 
              <BookFlight>
 
                  <FlightId>171430002</FlightId>
 
                  <BookingCodes>
 
                    <!--Zero or more repetitions:-->
 
                    <BookingCode Code="E" SegNumber="2"/>
 
                  </BookingCodes>
 
                  <Travellers>
 
                    <!--Zero or more repetitions:-->
 
                    <Traveller Type="ADT" IsContact="true" Num="1">
 
                        <PersonalInfo DateOfBirth="20.05.1980" Nationality="RU" Gender="M">
 
                          <FirstName>Petr</FirstName>
 
                          <LastName>Ivanov</LastName>
 
                        </PersonalInfo>
 
                        <ContactInfo>
 
                          <!--Optional:-->
 
                          <EmailID>testmail@mail.ru</EmailID>
 
                          <!--Optional:-->
 
                          <Telephone Type="M">
 
                              <!--Optional:-->
 
                              <PhoneNumber>79051234567</PhoneNumber>
 
                          </Telephone>
 
                        </ContactInfo>
 
                        <DocumentInfo DocType="A" DocNum="123456" CountryCode="RU" DocElapsedTime="01.01.2020"/>
 
                    </Traveller>
 
                  </Travellers>
 
              </BookFlight>
 
            </Request>
 
            <Source>
 
              <ClientId>---</ClientId>
 
              <APIKey>---</APIKey>
 
              <Language>RU</Language>
 
              <Currency>RUB</Currency>
 
            </Source>
 
        </RequestBin>
 
      </ver:BookFlight>
 
   </soapenv:Body>
 
</soapenv:Envelope>
 
</syntaxhighlight>
 
</div>
 
</div>
 
  
<div class="toccolours mw-collapsible mw-collapsed" style="width:1000px">
+
<td>BookFlight </td><td>да </td><td>сложный </td><td>Контейнер для тела запроса бронирования</td>
 +
</tr>
 +
<tr>
 +
<td>FlightId </td><td class="col1">да </td><td>число</td><td >Id перелёта для которого будет производится бронирование(поиск тарифных правил, проверка доступности)</td>
 +
</tr>
 +
<tr>
 +
<td>CurrencyCode </td><td>нет</td><td>строка</td><td>Трёх буквенный код валюты (обязателен для комиссии в валюте)</td>
  
===== Ответ =====
+
</tr>
<div class="mw-collapsible-content">
+
<tr>
<syntaxhighlight lang="xml" line enclose="div" style="font-size:9pt;background: #F9F9F9; border: 1px dashed #2F6FAB; padding: 10px 5px; margin: 10px 0;">
+
<td>Agency </td><td>да </td><td>сложный </td><td>Информация об агентстве</td>
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns1="http://CLIENT_DOMAIN/nemoflights/?version%3D1.0%26for%3DBookFlight" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
 
  <SOAP-ENV:Body>
 
      <ns1:BookFlightResponse>
 
        <ResponseBin>
 
            <Response>
 
              <BookFlight ID="262872" Status="booked" Code="LQHZWU">
 
                  <QueryPlace xsi:nil="true"/>
 
                  <Flight FlightId="171430002">
 
                    <WebService>SABRE</WebService>
 
                    <ValCompany>SU</ValCompany>
 
                    <URL>http%3A%2F%2FCLIENT_DOMAIN%2F%3Fgo%3Dbooking%2Finfo%26uid%3D14290%26flight%3D171430002</URL>
 
                    <Segments>
 
                        <Segment SegNum="1" SegGroupNum="0">
 
                          <DepAirp CodeType="IATA">SVO</DepAirp>
 
                          <DepTerminal>D</DepTerminal>
 
                          <ArrAirp CodeType="IATA">BCN</ArrAirp>
 
                          <ArrTerminal>1</ArrTerminal>
 
                          <OpAirline>SU</OpAirline>
 
                          <MarkAirline>SU</MarkAirline>
 
                          <FlightNumber>2512</FlightNumber>
 
                          <AircraftType>321</AircraftType>
 
                          <DepDateTime>2014-03-20T20:40:00</DepDateTime>
 
                          <ArrDateTime>2014-03-20T22:20:00</ArrDateTime>
 
                          <StopNum>0</StopNum>
 
                          <BookingCodes>
 
                              <BookingCode ClassType="economy">
 
                                <BookingCode>E</BookingCode>
 
                              </BookingCode>
 
                          </BookingCodes>
 
                          <FlightTime>280</FlightTime>
 
                          <TimeZone Departure="4" Arrival="1"/>
 
                          <ETicket>true</ETicket>
 
                        </Segment>
 
                        <Segment SegNum="2" SegGroupNum="0">
 
                          <DepAirp CodeType="IATA">BCN</DepAirp>
 
                          <DepTerminal>1</DepTerminal>
 
                          <ArrAirp CodeType="IATA">MAD</ArrAirp>
 
                          <ArrTerminal>2</ArrTerminal>
 
                          <OpAirline>UX</OpAirline>
 
                          <MarkAirline>SU</MarkAirline>
 
                          <FlightNumber>3403</FlightNumber>
 
                          <AircraftType>738</AircraftType>
 
                          <DepDateTime>2014-03-21T12:05:00</DepDateTime>
 
                          <ArrDateTime>2014-03-21T13:25:00</ArrDateTime>
 
                          <StopNum>0</StopNum>
 
                          <BookingCodes>
 
                              <BookingCode ClassType="economy">
 
                                <BookingCode>E</BookingCode>
 
                              </BookingCode>
 
                          </BookingCodes>
 
                          <FlightTime>80</FlightTime>
 
                          <TimeZone Departure="1" Arrival="1"/>
 
                          <ETicket>true</ETicket>
 
                        </Segment>
 
                    </Segments>
 
                    <PricingInfo Refundable="false">
 
                        <PassengerFare Type="ADT" Quantity="1">
 
                          <BaseFare Currency="EUR" Amount="165"/>
 
                          <EquiveFare Currency="RUB" Amount="8335"/>
 
                          <TotalFare Currency="RUB" Amount="14025"/>
 
                          <Taxes>
 
                              <Tax CurCode="RUB" TaxCode="YQF" Amount="4242"/>
 
                              <Tax CurCode="RUB" TaxCode="YRI" Amount="374"/>
 
                              <Tax CurCode="RUB" TaxCode="JD" Amount="844"/>
 
                              <Tax CurCode="RUB" TaxCode="QV" Amount="230"/>
 
                          </Taxes>
 
                          <Tariffs/>
 
                          <FareCalc>MOW SU X/BCN SU MAD225.45NUC225.45END ROE0.731857</FareCalc>
 
                          <LastTicketDateTime>2014-03-14T12:45:00</LastTicketDateTime>
 
                        </PassengerFare>
 
                    </PricingInfo>
 
                    <Commission Currency="RUB">0</Commission>
 
                    <Charges Currency="RUB">140.25</Charges>
 
                    <TotalPrice Currency="RUB">14165.25</TotalPrice>
 
                  </Flight>
 
                  <Agency/>
 
                  <ItinReceipts xsi:nil="true"/>
 
                  <FareStored xsi:nil="true"/>
 
                  <Travellers>
 
                    <Traveller Type="ADT" IsContact="true" Num="1">
 
                        <Meal/>
 
                        <Ticket/>
 
                        <Seats/>
 
                        <PersonalInfo DateOfBirth="20.05.1980" Nationality="RU" Gender="M">
 
                          <FirstName>PETR</FirstName>
 
                          <LastName>IVANOV</LastName>
 
                          <MiddleName/>
 
                        </PersonalInfo>
 
                        <LoyaltyCard/>
 
                        <ContactInfo>
 
                          <EmailID>TESTMAIL@MAIL.ru</EmailID>
 
                          <Telephone Type="M">
 
                              <PhoneNumber>79051234567</PhoneNumber>
 
                              <CountryAccessCode/>
 
                              <AreaCityCode/>
 
                          </Telephone>
 
                        </ContactInfo>
 
                        <DocumentInfo DocType="A" DocNum="123456" CountryCode="RU" DocElapsedTime="01.01.2020"/>
 
                        <VisaInfo/>
 
                        <ArrAddress/>
 
                        <PreferedPlace/>
 
                        <DocStringFormats/>
 
                    </Traveller>
 
                  </Travellers>
 
              </BookFlight>
 
              <Requisites/>
 
              <RequestType xsi:nil="true"/>
 
              <UserID xsi:nil="true"/>
 
              <Errors xsi:nil="true"/>
 
            </Response>
 
        </ResponseBin>
 
      </ns1:BookFlightResponse>
 
  </SOAP-ENV:Body>
 
</SOAP-ENV:Envelope>
 
</syntaxhighlight>
 
</div>
 
</div>
 
  
=== Общий формат запроса / ответа отмены бронирования ===
+
</tr>
 +
<tr>
 +
<td>Name </td><td>да </td><td>строка </td><td>Название агентства</td>
 +
</tr>
 +
<tr>
 +
<td>Telephone </td><td>нет </td><td>сложный </td><td>Контактный телефон агентства</td>
  
После бронирования, если не истек таймлимит можно аннулировать сделанный заказ. Аннуляция заказа в Nemo может быть ручной (сделанной пользователем) и автоматической — по истечению таймлимита, установленного для заказа система сама аннулирует заказ.
+
</tr>
 +
<tr>
 +
<td>Type</td><td>да </td><td>строка </td><td>Тип номера, возможные значения: M - мобильный, H - домашний, B - рабочий, A - агентство</td>
 +
</tr>
 +
<tr>
 +
<td>PhoneNumber </td><td>да </td><td>строка </td><td>Номер телефона</td>
  
WSDL: http://CLIENT_DOMAIN/nemoflights/wsdl.php?for=CancelBook
+
</tr>
 +
<tr>
 +
<td>CountryAccessCode </td><td>нет </td><td>строка </td><td>Код страны</td>
 +
</tr>
 +
<tr>
 +
<td>AreaCityCode </td><td>нет </td><td>строка</td><td>Код региона/города</td>
  
<div class="toccolours mw-collapsible mw-collapsed" style="width:1000px">
+
</tr>
===== Запрос =====
+
<tr>
<div class="mw-collapsible-content">
+
<td>Address</td><td>да </td><td>сложный </td><td class="col3">Адрес агентства</td>
<syntaxhighlight lang="xml" line enclose="div" style="font-size:9pt;background: #F9F9F9; border: 1px dashed #2F6FAB; padding: 10px 5px; margin: 10px 0;">
+
</tr>
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ver="http://CLIENT_DOMAIN/nemoflights/?version%3D1.0%26for%3DCancelBook">
+
<tr>
  <soapenv:Header/>
+
<td>City</td><td>да </td><td class="col2">строка </td><td>Город, в котором расположено агентство</td>
  <soapenv:Body>
 
      <ver:CancelBook>
 
        <RequestBin>
 
            <Request>
 
              <CancelBook BookID="?"/>
 
              <!--BookID — Id брони в системе Nemo, целое число-->
 
            </Request>
 
            <Source>
 
              <ClientId>?</ClientId>
 
              <!--ClientId — ID клиента в системе Nemo. Можно посмотреть/добавить в разделе
 
                "Администрирование" ? "Веб-служба. Авторизация".-->
 
              <APIKey>?</APIKey>
 
              <!--APIKey — секретный ключ доступа к API Nemo. Можно посмотреть/добавить в разделе
 
                "Администрирование" ? "Веб-служба. Авторизация".-->
 
              <Language>?</Language>
 
              <!--Language — язык-->
 
              <Currency>?</Currency>
 
              <!-- CUrrency — валюта-->
 
            </Source>
 
        </RequestBin>
 
      </ver:CancelBook>
 
  </soapenv:Body>
 
</soapenv:Envelope>
 
</syntaxhighlight>
 
</div>
 
</div>
 
  
<div class="toccolours mw-collapsible mw-collapsed" style="width:1000px">
+
</tr>
===== Ответ =====
+
<tr>
<div class="mw-collapsible-content">
+
<td>StreetAddress </td><td>нет </td><td>сложный </td><td>Адрес агентства в городе (улица, дом, корпус, офис и т.д.)</td>
<syntaxhighlight lang="xml" line enclose="div" style="font-size:9pt;background: #F9F9F9; border: 1px dashed #2F6FAB; padding: 10px 5px; margin: 10px 0;">
+
</tr>
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns1="http://CLIENT_DOMAIN/nemoflights/?version%3D1.0%26for%3DCancelBook" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+
<tr>
  <SOAP-ENV:Body>
+
<td>PostalCode </td><td>нет </td><td>строка </td><td>Почтовый код, индекс.</td>
      <ns1:CancelBookResponse>
 
        <ResponseBin>
 
            <Response>
 
              <CancelBook BookID="?">
 
              <!--BookID — Id брони в системе Nemo, целое число-->
 
                  <Result Success="?"/>
 
                  <!--Success — результат отмены брони, true или false-->
 
              </CancelBook>
 
              <Requisites/>
 
              <RequestType xsi:nil="true"/>
 
              <UserID xsi:nil="true"/>
 
              <Errors xsi:nil="true"/>
 
            </Response>
 
        </ResponseBin>
 
      </ns1:CancelBookResponse>
 
  </SOAP-ENV:Body>
 
</SOAP-ENV:Envelope>
 
</syntaxhighlight>
 
</div>
 
</div>
 
  
==API бронирования, отмены отелей==
+
</tr>
 +
<tr>
 +
<td>CountryCode </td><td>нет </td><td>строка </td><td>Код страны (RU, UA, US и т.д.)</td>
 +
</tr>
 +
<tr>
 +
<td>Travellers </td><td>да </td><td>сложный </td><td>Контейнер для информации о пассажирах (для которых будет производится поиск перелёта, бронирование)</td>
  
==== Штрафы за аннуляцию ====
+
</tr>
 +
<tr>
 +
<td class="col0">Traveller </td><td class="col1">да </td><td class="col2">сложный </td><td class="col3">Информация о пассажире</td>
 +
</tr>
 +
<tr class="row24">
 +
<td>Type</td><td>да</td><td>строка</td><td>Тип пассажира возможные значения: ADT - взрослые, CNN - дети, UNN - дети без сопровождения взрослых, INF - младенцы, INS - младенцы с местом</td>
  
Всегда в явном виде нужно указывать пользователю информацию о штрафах за аннуляцию до бронирования.
+
</tr>
 +
<tr class="row25">
 +
<td class="col0">IsContact </td><td class="col1">нет</td><td class="col2">булевский </td><td class="col3">Индикатор показывающий является ли данное лицо контактным, возможные значение: true - пассажир является контактным лицом, false - не является. Контактное лицо может быть только одно, если среди пассажиров есть взрослые, то только кто-то из них может быть контактным лицом. Если не указано, то по умолчанию false.</td>
 +
</tr>
 +
<tr class="row26">
 +
<td class="col0">LinkedTo </td><td class="col1">нет </td><td class="col2">целое число </td><td class="col3">Номер взрослого, к которому привязан младенец/ребёнок (привязка ребёнка ко взрослому является опциональной)</td>
  
Штрафы получаются по каждой услуге отдельным запросом. Нужно указать тип услуги, идентификатор результата поиска и выбранную категорию.
+
</tr>
 +
<tr class="row27">
 +
<td class="col0">Num </td><td class="col1">да </td><td class="col2">число </td><td class="col3">Номер пассажира.</td>
 +
</tr>
 +
<tr class="row28">
 +
<td class="col0">PreferedPlace </td><td class="col1">нет </td><td class="col2">сложный </td><td class="col3">Информация о предпочитаемом месте. Если указаны номер ряда и номер места, то параметры Smoking и Location игнорируются и могут быть не указаны.</td>
  
Внимание. Для отелей из Hotelbeds (Supplier=HOTELBEDS) штрафы до бронирования получить невозможно.
+
</tr>
 +
<tr class="row29">
 +
<td class="col0">SmokingAllowed </td><td class="col1">нет </td><td class="col2">булевский </td><td class="col3">true - место для курящих, false - место для некурящих. По умолчанию false.</td>
 +
</tr>
 +
<tr class="row30">
 +
<td class="col0">Location </td><td class="col1">нет </td><td class="col2">строка </td><td class="col3">Расположение места, возможные значения: W - у окна (Window); M - где-то в середине ряда (Middle); NPW - возле прохода (NearPassengerWay); NS - нет предпочтения (NotSpecified).</td>
 +
</tr>
 +
<tr class="row31">
 +
<td class="col0">RowNumber</td><td class="col1">нет</td><td class="col2">строка </td><td class="col3">Номер ряда</td>
 +
</tr>
 +
<tr class="row32">
 +
<td class="col0">PlaceNumber </td><td class="col1">нет </td><td class="col2">строка </td><td class="col3">Номер места</td>
  
'''WSDL''' (тестовый сервер): http://tst.nemo-ibe.com/wsdev/wsdl.php?for=Penalty
+
</tr>
 +
<tr class="row33">
 +
<td class="col0">SegNumber </td><td class="col1">да </td><td class="col2">строка </td><td class="col3">Номер сегмента</td>
 +
</tr>
 +
<tr class="row34">
 +
<td class="col0">DocumentInfo </td><td class="col1">да </td><td class="col2">сложный </td><td class="col3">Паспортные данные</td>
  
<div class="toccolours mw-collapsible mw-collapsed" style="width:1000px">
+
</tr>
===== Запрос =====
+
<tr class="row35">
<div class="mw-collapsible-content">
+
<td class="col0">DocType </td><td class="col1">да </td><td class="col2">строка </td><td class="col3">Тип документа, обязательный.</td>
<syntaxhighlight lang="xml" line enclose="div" style="font-size:9pt;background: #F9F9F9; border: 1px dashed #2F6FAB; padding: 10px 5px; margin: 10px 0;">
+
</tr>
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"
+
<tr class="row36">
xmlns:ver="http://tst.nemo-ibe.com/wsdev/?version%3D1.0%26for%3DPenalty">
+
<td class="col0">DocNum </td><td class="col1">да </td><td class="col2">строка </td><td class="col3">Номер документа</td>
  <soapenv:Header/>
+
</tr>
  <soapenv:Body>
+
<tr class="row37">
    <ver:penalty>
+
<td class="col0">CountryCode </td><td class="col1">да </td><td class="col2">строка </td><td class="col3">Страна выдачи, двух буквенный код(RU, US и т.д.)</td>
      <RequestBin>
+
</tr>
        <Request>
+
<tr class="row38">
          <Penalty>
+
<td class="col0">DocElapsedTime</td><td class="col1">да </td><td class="col2">строка </td><td class="col3">Срок истечения срока действия паспорта в фирмате dd.mm.yyyy (например 31.12.2012)</td>
            <Item>
 
              <Type>HOTELS</Type>
 
              <CacheId>1867246</CacheId>
 
              <CategoryId>1</CategoryId>
 
            </Item>
 
          </Penalty>
 
        </Request>
 
        <Source>
 
          <ClientId></ClientId>
 
          <APIKey></APIKey>
 
          <Language>ru</Language>
 
          <Currency>RUB</Currency>
 
        </Source>
 
      </RequestBin>
 
    </ver:penalty>
 
  </soapenv:Body>
 
</soapenv:Envelope>
 
</syntaxhighlight>
 
  
Элемент '''Item'''
+
</tr>
{| style="width: 800px" class="wikitable"
+
<tr class="row39">
|-
+
<td class="col0">VisaInfo </td><td class="col1">нет </td><td class="col2">сложный </td><td class="col3">Информация о визе</td>
! scope="col" width="200" | Элемент
+
</tr>
! scope="col" width="300" | Описание
+
<tr class="row40">
! scope="col" width="300" | Допустимые значения
+
<td class="col0">Num </td><td class="col1">да </td><td class="col2">строка </td><td class="col3">Номер визы</td>
|-
 
| Type
 
| Обязательный. Тип объекта.
 
| HOTELS
 
|-
 
| CacheId
 
| Обязательный. Идентификатор результата поиска в системе Nemo.
 
| Целое число
 
|-
 
| CategoryId
 
| Обязательный. Идентификатор категории.
 
| Целое число
 
|}
 
  
Элемент '''Source'''
+
</tr>
{| style="width: 800px" class="wikitable"
+
<tr class="row41">
|-
+
<td class="col0">IssueDate </td><td class="col1">да </td><td class="col2">строка </td><td class="col3">Дата выдачи визы в формате dd.mm.yyyy</td>
! scope="col" width="200" | Элемент
+
</tr>
! scope="col" width="300" | Описание
+
<tr class="row42">
! scope="col" width="300" | Допустимые значения
+
<td class="col0">IssueCountry </td><td class="col1">да </td><td class="col2">строка </td><td class="col3">Страна выдачи визы</td>
|-
 
| ClientID
 
| Обязательный. ID клиента в системе Nemo.
 
Можно посмотреть/добавить в "Администрирование" ⇨ "Веб-служба. Авторизация".
 
| Целое число.
 
|-
 
| APIKey
 
| Обязательный. APIKey - секретный ключ доступа к API Nemo.
 
Можно посмотреть/добавить в "Администрирование" ⇨ "Веб-служба. Авторизация".
 
| Латинские буквы и цифры. Всего 32 символа.
 
|}
 
</div>
 
</div>
 
  
<div class="toccolours mw-collapsible mw-collapsed" style="width:1000px">
+
</tr>
===== Ответ =====
+
<tr class="row43">
<div class="mw-collapsible-content">
+
<td class="col0">IssuePlace </td><td class="col1">да </td><td class="col2">строка </td><td class="col3">Место выдачи визы</td>
<syntaxhighlight lang="xml" line enclose="div" style="font-size:9pt;background: #F9F9F9; border: 1px dashed #2F6FAB; padding: 10px 5px; margin: 10px 0;">
+
</tr>
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns1="http://tst.nemo-ibe.com/wsdev/?version%3D1.0%26for%3DPenalty">
+
<tr class="row44">
  <SOAP-ENV:Body>
+
<td class="col0">BirthCountry </td><td class="col1">нет </td><td class="col2">строка </td><td class="col3">Страна рождения (IATA код страны)</td>
    <ns1:penaltyResponse>
 
      <ResponseBin>
 
        <Response>
 
          <Penalty>
 
            <ItemDateBegin>2013-10-15 00:00:00</ItemDateBegin>
 
            <CancelCharges>
 
              <Charge>
 
                <DateFrom>2013-10-12 00:00:00</DateFrom>
 
                <DateTo>2013-10-15 23:59:59</DateTo>
 
                <Money Currency="RUB">74733.84</Money>
 
              </Charge>
 
              <Charge>
 
                <DateFrom>2013-09-23 00:00:00</DateFrom>
 
                <DateTo>2013-10-11 00:00:00</DateTo>
 
                <Money Currency="RUB">67260.46</Money>
 
              </Charge>
 
              <Charge>
 
                <DateFrom>2013-08-01 17:59:00</DateFrom>
 
                <DateTo>2013-09-22 00:00:00</DateTo>
 
                <Money Currency="RUB">12455.64</Money>
 
              </Charge>
 
            </CancelCharges>
 
            <ModifyCharges/>
 
          </Penalty>
 
        </Response>
 
      </ResponseBin>
 
    </ns1:penaltyResponse>
 
  </SOAP-ENV:Body>
 
</SOAP-ENV:Envelope>
 
</syntaxhighlight>
 
  
Элемент '''Penalty'''
+
</tr>
{| style="width: 800px" class="wikitable"
+
<tr class="row45">
|-
+
<td class="col0">BirthCity </td><td class="col1">нет</td><td class="col2">строка</td><td class="col3">Город рождения (название)</td>
! scope="col" width="200" | Элемент
+
</tr>
! scope="col" width="300" | Описание
+
<tr class="row46">
! scope="col" width="300" | Допустимые значения
+
<td class="col0">ArrAddress </td><td class="col1">нет </td><td class="col2">сложный </td><td class="col3">Адрес прибытия, для въезжающих в США (не граждан США) информация является обязательной. Если она не заполняется при оформлении брони, то её всё равно придётся заполнять при посадке на самолёт.</td>
|-
 
| ItemDateBegin
 
| Обязательный. Дата начала услуги (дата заселения в отель).
 
| Формат гггг-мм-дд чч:мм:сс
 
|-
 
| CancelCharges
 
| Необязательный. Содержит информацию о штрафах за аннуляцию.
 
| Элемент Charge
 
|-
 
| ModifyCharges
 
| Необязательный. Содержит информацию о штрафах за модификацию.
 
| Элемент Charge
 
|}
 
  
Штрафы разбиваются по временным интервалам. На каждом интервале указывается значение штрафа.
+
</tr>
 +
<tr class="row47">
 +
<td class="col0">CountryCode </td><td class="col1">да </td><td class="col2">строка </td><td class="col3">IATA код страны</td>
 +
</tr>
 +
<tr class="row48">
 +
<td class="col0">State </td><td class="col1">да </td><td class="col2">строка </td><td class="col3">Штат или область въезда</td>
  
Элемент '''Charge'''
+
</tr>
{| style="width: 800px" class="wikitable"
+
<tr class="row49">
|-
+
<td class="col0">PostalCode </td><td class="col1">да </td><td class="col2">строка </td><td class="col3">Почтовый код</td>
! scope="col" width="200" | Элемент
+
</tr>
! scope="col" width="300" | Описание
+
<tr class="row50">
! scope="col" width="300" | Допустимые значения
+
<td class="col0">City </td><td class="col1">да </td><td class="col2">строка </td><td class="col3">Город</td>
|-
 
| DateFrom
 
| Обязательный. Дата/время начала интервала.
 
| Формат гггг-мм-дд чч:мм:сс
 
|-
 
| DateTo
 
| Необязательный. Дата/время окончания интервала.
 
| Формат гггг-мм-дд чч:мм:сс
 
|-
 
| Money
 
| Обязательный. Сумма штрафа.
 
| Вещественное число.
 
Атрибут: Currency - код валюты.
 
|}
 
</div>
 
</div>
 
  
 +
</tr>
 +
<tr class="row51">
 +
<td class="col0">StreetAddress </td><td class="col1">да </td><td class="col2">строка </td><td class="col3">Адрес: улица, номер дома, квартиры и тп</td>
 +
</tr>
 +
<tr class="row52">
 +
<td class="col0">DocStringFormats </td><td class="col1">нет </td><td class="col2">сложный </td><td class="col3">Список форматов строк паспортных данных, которые будут отправлены в дополнение к стандартным.</td>
  
 +
</tr>
 +
<tr class="row53">
 +
<td class="col0">DocStringFormat </td><td class="col1">да </td><td class="col2">строка </td><td class="col3">Формат данных, возможные значения: DOCS - строка формата DOCS, FOID - строка формата FOID. Установка данных в формате DOCS как правило необходима для последующей выписки в BSP среде. Установка FOID - всреде ТКП.</td>
 +
</tr>
 +
<tr class="row54">
 +
<td class="col0">PersonalInfo </td><td class="col1">да </td><td class="col2">сложный </td><td class="col3">Персональные данные пассажира</td>
 +
</tr>
 +
<tr class="row55">
 +
<td class="col0">DateOfBirth</td><td class="col1">да </td><td class="col2">строка </td><td class="col3">Дата рождения в формате dd.mm.yyyy (например 31.12.2000)</td>
 +
</tr>
 +
<tr class="row56">
 +
<td class="col0">Nationality </td><td class="col1">да </td><td class="col2">строка </td><td class="col3">Национальность/гражданство, двух буквенный код страны (RU, UA, US и т.д.)</td>
  
==== Бронирование ====
+
</tr>
<div class="toccolours mw-collapsible mw-collapsed" style="width:1000px">
+
<tr class="row57">
===== Запрос =====
+
<td class="col0">Gender </td><td class="col1">да </td><td class="col2">строка </td><td class="col3">Пол пассажира, обязательный, возможные значения: M - мужской(Male); F - женский(Female).</td>
<div class="mw-collapsible-content">
+
</tr>
Схема запроса позволяет указывать несколько услуг для бронирования сразу. Это было сделано с заделом на возможность расширения функциональности в будущем при сохранении совместимости.
+
<tr class="row58">
 +
<td class="col0">FirstName </td><td class="col1">да </td><td class="col2">строка </td><td class="col3">Имя пассажира</td>
  
Сейчас же необходимо указывать только 1 услугу-отель (элемент Item) в запросе на бронирование.
+
</tr>
 +
<tr class="row59">
 +
<td class="col0">LastName </td><td class="col1">да </td><td class="col2">строка </td><td class="col3">Фамилия пассажира</td>
 +
</tr>
 +
<tr class="row60">
 +
<td class="col0">BMiddleName </td><td class="col1">да </td><td class="col2">строка </td><td class="col3">Отчество пассажира</td>
 +
</tr>
 +
<tr class="row61">
 +
<td class="col0">Meal </td><td class="col1">нет</td><td class="col2">строка </td><td class="col3">Код типа питания, возможные значения: NONE - отсутствует (по умолчанию); AVML - Азиатская вегетарианская кухня; BLML - Блюда щадящей диеты; CHML - Детское питание; CHPC - Детский холодный завтрак; СНСС - Детский горячий завтрак; CHHC - Детский ланч, ветчина и сыр; PBJS - Детский ланч, ореховое масло; CHMC - Детский обед макароны с сыром; DBML - Диабетическое питание; FPML - Фрукты; GFML - Питание без клейковины; HFML - Питание богатое клетчаткой; HNML - Индусская кухня; BBML - Питание для младенцев; KSML - Кошерная кухня; SMKB - Кошерный завтрак; SMKL - Кошерный ланч; SMKD - Кошерный обед; LPML - Малобелковое питание; LCML - Низкокалорийное питание; LFML - Низкохолестериновое питание; PRML - Низкопуриновое питание; LSML - Малосоленое питание; MOML - Мюсли; NLML - Безмолочные продукты; ORML - Восточная кухня; RVML - Сырые овощи; SFML - Морепродукты; SPML - Особое питание; VLML - Вегетарианское, молоко и яйца; VGML - Строго вегетарианское питание; VJML - Джайнизское вегетарианское; VOML - Восточное вегетарианское питание.</td>
 +
</tr>
 +
<tr class="row62">
 +
<td class="col0">LoyaltyCard </td><td class="col1">нет </td><td class="col2">сложный </td><td class="col3">Карточка часто летающего пассажира</td>
  
Для успешного запроса нужно указать:
+
</tr>
#Услугу. В запросе не требуется перечислять все параметры из результатов поиска, достаточно указать уникальный ID результата.
+
<tr class="row63">
#Информация о клиентах. Все клиенты перечисляются в отдельной ветке и нумеруются по порядку. Указатели (элементы с номером клиента), также добавляются в описание услуги.
+
<td class="col0">OpCode </td><td class="col1">да </td><td class="col2">строка </td><td class="col3">IATA код компании авиаперевозчика</td>
#Заказчик. Указатель на одну персону.
+
</tr>
 +
<tr class="row64">
 +
<td class="col0">Number </td><td class="col1">да </td><td class="col2">строка </td><td class="col3">Номер карточки</td>
 +
</tr>
 +
<tr class="row65">
 +
<td class="col0">ContactInfo</td><td class="col1">нет </td><td class="col2">сложный </td><td class="col3">Контактная информация для пассажира</td>
 +
</tr>
 +
<tr class="row66">
 +
<td class="col0">EmailID </td><td class="col1">нет </td><td class="col2">строка </td><td class="col3">Контактный email</td>
  
'''WSDL''' (тестовый сервер): http://tst.nemo-ibe.com/wsdev/wsdl.php?for=Booking
+
</tr>
 +
<tr class="row67">
 +
<td class="col0">Telephone </td><td class="col1">нет </td><td class="col2">сложный </td><td class="col3">Контактный телефон пассажира, описание аналогично описанию телефона агентства</td>
 +
</tr>
 +
<tr class="row68">
 +
<td class="col0">CancelBook</td><td class="col1">да</td><td class="col2">сложный</td><td class="col3">Контейнер для тела запроса отмены брони</td>
 +
</tr>
 +
<tr class="row69">
 +
<td class="col0">BookID</td><td class="col1">да</td><td class="col2">число</td><td class="col3">Номер брони, которая будет отменяться (для которой будет производится выписка, отмена выписки)</td>
  
<syntaxhighlight lang="xml" line enclose="div" style="font-size:9pt;background: #F9F9F9; border: 1px dashed #2F6FAB; padding: 10px 5px; margin: 10px 0;">
+
</tr>
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"
+
<tr class="row70">
xmlns:ver="http://tst.nemo-ibe.com/wsdev/?version%3D1.0%26for%3DBooking">
+
<td class="col0">GetAirRules</td><td class="col1">да</td><td class="col2">сложный</td><td class="col3">Контейнер для тела запроса поиска тарифных правил</td>
  <soapenv:Header/>
+
</tr>
  <soapenv:Body>
+
<tr class="row71">
    <ver:booking>
+
<td class="col0">AirAvail</td><td class="col1">да</td><td class="col2">сложный</td><td class="col3">Контейнер для тела запроса проверки доступности перелёта</td>
      <RequestBin>
 
        <Request>
 
          <Booking>
 
            <Items>
 
              <!--Zero or more repetitions:-->
 
              <Item>
 
                <!--You have a CHOICE of the next 3 items at this level-->
 
                <HotelBookData>
 
                  <CacheId>1872666</CacheId>
 
                  <CategoryId>1</CategoryId>
 
                  <Rooms>
 
                    <!--Zero or more repetitions:-->
 
                    <Room Id="2">
 
                      <Persons>
 
                        <!--Zero or more repetitions:-->
 
                        <Person Number="1"/>
 
                        <Person Number="2"/>
 
                      </Persons>
 
                    </Room>
 
                    <Room Id="1">
 
                      <Persons>
 
                        <!--Zero or more repetitions:-->
 
                        <Person Number="3"/>
 
                      </Persons>
 
                    </Room>
 
                  </Rooms>
 
                </HotelBookData>
 
                <Customer>
 
                  <Person Number="1"/>
 
                </Customer>
 
              </Item>
 
            </Items>
 
            <Persons>
 
              <!--Zero or more repetitions:-->
 
              <Person Number="1" Type="ADT">
 
                <!--Optional:-->
 
                <Lastname>IVANOV</Lastname>
 
                <!--Optional:-->
 
                <Name>IVAN</Name>
 
                <!--Optional:-->
 
                <Middlename>IVANOVICH</Middlename>
 
                <!--Optional:-->
 
                <DateOfBirth>1987-12-12</DateOfBirth>
 
                <!--Optional:-->
 
                <Phone>+79871231212</Phone>
 
                <!--Optional:-->
 
                <Email>m.rudenko@mute-lab.com</Email>
 
                <!--Optional:-->
 
                <Gender>MR</Gender>
 
                <!--Optional:-->
 
                <Document Type="P">
 
                  <Series>1811</Series>
 
                  <Number>912219</Number>
 
                  <!--Optional:-->
 
                  <IssueDate>2012-12-12</IssueDate>
 
                  <!--Optional:-->
 
                  <ExpiryDate>2014-12-12</ExpiryDate>
 
                </Document>
 
              </Person>
 
              <Person Number="2" Type="CHD">
 
                <!--Optional:-->
 
                <Lastname>PETROV</Lastname>
 
                <!--Optional:-->
 
                <Name>IVAN</Name>
 
                <!--Optional:-->
 
                <Middlename>MIKHAILOVICH</Middlename>
 
                <!--Optional:-->
 
                <DateOfBirth>2008-12-12</DateOfBirth>
 
                <!--Optional:-->
 
                <Phone>+79871231212</Phone>
 
                <!--Optional:-->
 
                <Email>m.rudenko@mute-lab.com</Email>
 
                <!--Optional:-->
 
                <Gender>MR</Gender>
 
                <!--Optional:-->
 
                <Document Type="P">
 
                  <Series>1866</Series>
 
                  <Number>913319</Number>
 
                  <!--Optional:-->
 
                  <IssueDate>2012-12-12</IssueDate>
 
                  <!--Optional:-->
 
                  <ExpiryDate>2014-12-12</ExpiryDate>
 
                </Document>
 
              </Person>
 
              <Person Number="3" Type="ADT">
 
                <!--Optional:-->
 
                <Lastname>SIDOROV</Lastname>
 
                <!--Optional:-->
 
                <Name>IVAN</Name>
 
                <!--Optional:-->
 
                <Middlename>SERGEEVICH</Middlename>
 
                <!--Optional:-->
 
                <DateOfBirth>1987-12-12</DateOfBirth>
 
                <!--Optional:-->
 
                <Phone>+79871231212</Phone>
 
                <!--Optional:-->
 
                <Email>m.rudenko@mute-lab.com</Email>
 
                <!--Optional:-->
 
                <Gender>MR</Gender>
 
                <!--Optional:-->
 
                <Document Type="P">
 
                  <Series>1866</Series>
 
                  <Number>913319</Number>
 
                  <!--Optional:-->
 
                  <IssueDate>2012-12-12</IssueDate>
 
                  <!--Optional:-->
 
                  <ExpiryDate>2014-12-12</ExpiryDate>
 
                </Document>
 
              </Person>
 
            </Persons>
 
          </Booking>
 
        </Request>
 
        <Source>
 
          <ClientId></ClientId>
 
          <APIKey></APIKey>
 
          <Language>ru</Language>
 
          <Currency>RUB</Currency>
 
        </Source>
 
      </RequestBin>
 
    </ver:booking>
 
  </soapenv:Body>
 
</soapenv:Envelope>
 
</syntaxhighlight>
 
  
Элемент '''Booking'''
+
</tr>
{| style="width: 800px" class="wikitable"
+
<tr class="row72">
|-
+
<td class="col0">Ticketing</td><td class="col1">да</td><td class="col2">сложный</td><td class="col3">Контейнер для тела запроса выписки брони</td>
! scope="col" width="200" | Элемент
+
</tr>
! scope="col" width="300" | Описание
+
<tr class="row73">
! scope="col" width="300" | Допустимые значения
+
<td class="col0">ValCompany</td><td class="col1">нет</td><td class="col2">строка</td><td class="col3">Валидирующий перевозчик, на бланке которого выписывается билет</td>
|-
 
| Items
 
| Обязательный. Массив элементов Item.
 
| Элемент Item
 
|-
 
| Customer
 
| Обязательный. Элемент установки заказчика.
 
| &nbsp;
 
|-
 
| Persons
 
| Обязательный. Массив клиентов.
 
| &nbsp;
 
|}
 
  
Данные об услугах записываются в элементы &lt;Item&gt;.
+
</tr>
 +
<tr class="row74">
 +
<td class="col0">Comission</td><td class="col1">нет</td><td class="col2">сложный</td><td class="col3">Комиссия</td>
 +
</tr>
 +
<tr class="row75">
 +
<td class="col0">Amount</td><td class="col1">нет</td><td class="col2">число с плавающей точкой</td><td class="col3">Значение комиссии в валюте, если указано, то комиссия в процентах игнорируется</td>
  
Элемент '''Item'''
+
</tr>
{| style="width: 800px" class="wikitable"
+
<tr class="row76">
|-
+
<td class="col0">Percent</td><td class="col1">нет</td><td class="col2">число</td><td class="col3">Комиссия в процентах</td>
! scope="col" width="200" | Элемент
+
</tr>
! scope="col" width="300" | Описание
+
<tr class="row77">
! scope="col" width="300" | Допустимые значения
+
<td class="col0">VoidTicket</td><td class="col1">да</td><td class="col2">сложный</td><td class="col3">Контейнер для тела запроса отмены выписки брони</td>
|-
 
| HotelBookData
 
| Обязательный. В зависимости от типа объекта бронирования. В данный момент возможно указать только данные для отеля.
 
| &nbsp;
 
|-
 
| Persons
 
| Необязательный. Привязка клиентов к услуге. Если не указаны, будут привязаны все из указанных в главном элементе Booking.
 
| [<Person Number=''"1"'' />]
 
|}
 
  
<u>Бронирование отеля.</u>
+
</tr>
Для бронирования отеля необходимы следующие параметры:
+
<tr class="row78">
# ID результата поиска - один отель
+
<td class="col0">Search</td><td class="col1">да</td><td class="col2">сложный</td><td class="col3">Контейнер для тела запроса поиска</td>
# ID выбранной категории этого отеля
+
</tr>
# Распределение клиентов по комнатам.
+
<tr class="row79">
 +
<td class="col0">ODPairs</td><td class="col1">да</td><td class="col2">сложный</td><td class="col3">Контейнер для информации о перелёте</td>
  
Элемент '''HotelBookData'''
+
</tr>
{| style="width: 800px" class="wikitable"
+
<tr class="row80">
|-
+
<td class="col0">Type</td><td class="col1">да</td><td class="col2">строка</td><td class="col3">Тип перелёта, возможные значения: OW - в одну сторону, RT - туда-обратно, CR - сложный маршрут</td>
! scope="col" width="200" | Элемент
+
</tr>
! scope="col" width="300" | Описание
+
<tr class="row81">
! scope="col" width="300" | Допустимые значения
+
<td class="col0">Direct</td><td class="col1">нет</td><td class="col2">булевский</td><td class="col3">Индикатор, указывающий какие перелёты искать, только прямые или с пересадками, возможные значения: false - с пересадками, true - только прямые. Если не указан, значение по умолчанию false.</td>
|-
+
</tr>
| CacheId
+
<tr class="row82">
| Обязательный. Идентификатор результата поиска для данного отеля в системе Nemo.
+
<td class="col0">AroundDates</td><td class="col1">нет</td><td class="col2">число</td><td class="col3">Включает поиск по окружным датам, количество дней +/- от даты заезда/возвращения. Применим только для типов перелёта в одну сторону(OW) и туда-обратно(RT). Возможные значения: 0, 1, 2, 3</td>
| Целое число
+
</tr>
|-
+
<tr class="row83">
| CategoryId
+
<td class="col0">ODPair</td><td class="col1">да</td><td class="col2">сложный</td><td class="col3">Контейнер для информации о сегменте перелёта. Может повторяться 1-6 раз. Поиск по расписанию использует только первый сегмент, поиск сложных перелётов и перелётов туда и обратно не поддерживается</td>
| Обязательный. Идентификатор категории.
 
| Целое число
 
|-
 
| Rooms
 
| Обязательный. Распределение клиентов по комнатам.
 
| Список элементов Room
 
|-
 
| Room
 
| Атрибут Id
 
Ид комнаты из результата поиска
 
  
Элемент Persons
+
</tr>
| Целое число
+
<tr class="row84">
|-
+
<td class="col0">DepDate</td><td class="col1">да</td><td class="col2">строка</td><td class="col3">Дата вылета, Формат ГГГГ-MM-DDTЧЧ:ММ:СС</td>
| Persons
+
</tr>
| Обязательный.
+
<tr class="row85">
Список людей
+
<td class="col0">DepAirp</td><td class="col1">да</td><td class="col2">строка</td><td class="col3">Трёх буквенный код города отправления или конкретного аэропорта в городе отправления.</td>
| Список элементов Person
 
|-
 
| Person
 
| Обязательный.
 
Атрибут Number
 
Номер пассажира из Booking ->Persons->Person->Number
 
|
 
Целое число
 
|}
 
  
<u>Информация о клиентах.</u>
+
</tr>
Для успешного завершения бронирования нужно указать как минимум одного клиента. Максимальное число клиентов в текущей версии не ограничено.
+
<tr class="row86">
 +
<td class="col0">ArrAirp</td><td class="col1">да</td><td class="col2">строка</td><td class="col3">Трёх буквенный код города прибытия или конкретного аэропорта в городе прибытия.</td>
 +
</tr>
 +
<tr class="row87">
 +
<td class="col0">Count</td><td class="col1">да</td><td class="col2">число</td><td class="col3">Число пассажиров данного типа. Общее количество пассажиров всех типов должно быть не более 9.</td>
  
Набор обязательных данных может меняться в зависимости от типов услуг в бронировании. Рекомендуемый набор обязательных параметров: Lastname, Name, DateOfBirth. Остальные обязательные параметры будут устанавливаться индивидуально при подключении к сервису.
+
</tr>
 +
<tr class="row88">
 +
<td class="col0">Restrictions</td><td class="col1">нет</td><td class="col2">сложный</td><td class="col3">Контейнер дополнительной информации для поиска.</td>
 +
</tr>
 +
<tr class="row89">
 +
<td class="col0">ClassPref</td><td class="col1">нет</td><td class="col2">строка</td><td class="col3">Предпочитаемый класс перелёта, возможные значения: All - все, Economy - эконом, Business - бизнес, First - первый. Если не указан, то по умолчанию All.</td>
  
Элемент '''Person'''
+
</tr>
{| style="width: 800px" class="wikitable"
+
<tr class="row90">
|-
+
<td class="col0">OnlyAvail</td><td class="col1">нет</td><td class="col2">булевский</td><td class="col3">Искать только доступные, возможные значения: true - только доступные, false - все. Если не указан, то по умолчанию false.</td>
! scope="col" width="200" | Элемент
+
</tr>
! scope="col" width="300" | Описание
+
<tr class="row91">
! scope="col" width="300" | Допустимые значения
+
<td class="col0">AirVPrefs</td><td class="col1">нет</td><td class="col2">сложный</td><td class="col3">Обёртка для списка авиакомпаний, по которым будет или не будет проводиться поиск.</td>
|-
 
| Атрибут Number
 
| Обязательный. Номер клиента, необходим для правильной привязки к услугам.
 
| Целое число
 
|-
 
| Type
 
| Обязательный.
 
Тип пассажира.
 
| Строка.
 
Возможные значения:
 
ADT
 
CLD
 
INF
 
|-
 
| Lastname
 
| Фамилия.
 
| Строка в произвольном формате.
 
|-
 
| Name
 
| Имя.
 
| Строка в произвольном формате.
 
|-
 
| Middlename
 
| Отчество.
 
| Строка в произвольном формате.
 
|-
 
| DateOfBirth
 
| Дата рождения.
 
| Формат гггг-мм-дд.
 
|-
 
| Phone
 
| Телефон.
 
Рекомендуемый формат:
 
+79871234567
 
| Строка
 
|-
 
| Email
 
| Электронный адрес.
 
| Строка
 
|-
 
| Gender
 
| Пол.
 
| MR - мужчина,
 
MS - женщина.
 
|-
 
| Document
 
| Документ
 
| Элемент Document
 
|}
 
  
Для некоторых услуг может потребоваться информация о документах.
+
</tr>
 +
<tr class="row92">
 +
<td class="col0">AirVPref</td><td class="col1">да</td><td class="col2">сложный</td><td class="col3">Информация об авиакомпании.</td>
 +
</tr>
 +
<tr class="row93">
 +
<td class="col0">Include</td><td class="col1">нет</td><td class="col2">булевский</td><td class="col3">Индикатор, показывающий включить или исключить в результатах поиска перелёты данной авиакомпании: true - включить, false - исключить. Если не указан, то по умолчанию false.</td>
  
Элемент '''Document'''
+
</tr>
{| style="width: 800px" class="wikitable"
+
<tr class="row94">
|-
+
<td class="col0">IncludePrivateFare</td><td class="col1">нет</td><td class="col2">булевский</td><td class="col3">Включать приватные цены в результат или нет, возможные значения: true - включать, false - не включать. Если не указан, то по умолчанию false.</td>
! scope="col" width="200" | Элемент
+
</tr>
! scope="col" width="300" | Описание
+
<tr class="row95">
! scope="col" width="300" | Допустимые значения
+
<td class="col0">ServiceTypes</td><td class="col1">нет</td><td class="col2">сложный хмл</td><td class="col3">Контейнер массива используемых веб-сервисов при поиске.</td>
|-
 
| Атрибут Type
 
| Обязательный. Тип документа.
 
| P - загранпаспорт
 
C - внутренний гражданский паспорт
 
B - свидетельство о рождении
 
|-
 
| Series
 
| Необязательный. Серия документа. Можно указать слитно с номером в Number.
 
| Строка в произвольном формате
 
|-
 
| Number
 
| Обязательный. Номер документа.
 
| Строка в произвольном формате
 
|-
 
| IssueDate
 
| Необязательный. Дата выдачи документа.
 
| Формат гггг-мм-дд
 
|-
 
| ExpiryDate
 
| Необязательный. Дата истечения срока действия документа.
 
| Формат гггг-мм-дд
 
|}
 
  
Элемент '''Source'''
+
</tr>
{| style="width: 800px" class="wikitable"
+
<tr class="row96">
|-
+
<td class="col0">ServiceType</td><td class="col1">нет</td><td class="col2">строка</td><td class="col3">Тип веб-сервиса(поставщика). При указании нескольких элементов ServiceType поиск будет проведён для каждого сервиса. Возможные значения: Sirena2000 - поиск в Сирене; SirenaSchedule - поиск в Сирене по расписанию; SabreLFS - поиск в Сэйбр LFS; SabreBFM - поиск в Сэйбр BFM; SabreSchedule - поиск Сэйбр по расписанию; Galileo - поиск в Галилео; AmadeusMPTBS - поиск в Амадеус.</td>
! scope="col" width="200" | Элемент
+
</tr>
! scope="col" width="300" | Описание
+
</table>
! scope="col" width="300" | Допустимые значения
 
|-
 
| ClientID
 
| Обязательный. ID клиента в системе Nemo.
 
Можно посмотреть/добавить в "Администрирование" ⇨ "Веб-служба. Авторизация".
 
| Целое число.
 
|-
 
| APIKey
 
| Обязательный. APIKey - секретный ключ доступа к API Nemo.
 
Можно посмотреть/добавить в "Администрирование" ⇨ "Веб-служба. Авторизация".
 
| Латинские буквы и цифры. Всего 32 символа.
 
|}
 
 
</div>
 
</div>
 
</div>
 
</div>
  
 
<div class="toccolours mw-collapsible mw-collapsed" style="width:1000px">
 
<div class="toccolours mw-collapsible mw-collapsed" style="width:1000px">
===== Ответ =====
 
<div class="mw-collapsible-content">
 
После выполнения запроса сразу поступит информация о бронировании. В первую очередь нужно внимательно проверить статусы &lt;Status&gt; всех услуг в бронировании. Если бронировалась услуга со статусом в результатах поиска RQ (по запросу), то статус скорее всего будет не равен «booked». Через некоторое время проверять реальный статус бука отправляя запрос на чтение данных о бронировании.
 
 
<syntaxhighlight lang="xml" line enclose="div" style="font-size:9pt;background: #F9F9F9; border: 1px dashed #2F6FAB; padding: 10px 5px; margin: 10px 0;">
 
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"
 
xmlns:ns1="http://tst.nemo-ibe.com/wsdev/?version%3D1.0%26for%3DBooking"
 
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
 
  <SOAP-ENV:Body>
 
    <ns1:bookingResponse>
 
      <ResponseBin>
 
        <Response>
 
          <Booking>
 
            <Items>
 
              <Item Id="386610">
 
                <Hotel Id="1872666">
 
                  <Supplier>GTA</Supplier>
 
                  <CityId>22046</CityId>
 
                  <DateBegin>2013-10-15</DateBegin>
 
                  <DateEnd>2013-10-18</DateEnd>
 
                  <CacheId>1872666</CacheId>
 
                  <Name>ADLON KEMPINSKI</Name>
 
                  <Categories>
 
                    <Category Id="1">
 
                      <Rooms>
 
                        <Room Count="1" Id="1" ServiceId="1"/>
 
                        <Room Count="1" Id="2" ServiceId="2"/>
 
                      </Rooms>
 
                      <TotalPrice Currency="RUB">74733.84</TotalPrice>
 
                    </Category>
 
                  </Categories>
 
                  <Services>
 
                    <Service Id="1" Status="OK">
 
                      <Desc>Standard Twin</Desc>
 
                      <Meal>Full Breakfast</Meal>
 
                      <Price Currency="RUB">37366.92</Price>
 
                    </Service>
 
                    <Service Id="2" Status="OK">
 
                      <Desc>Standard Twin</Desc>
 
                      <Meal>Full Breakfast</Meal>
 
                      <Price Currency="RUB">37366.92</Price>
 
                    </Service>
 
                  </Services>
 
                  <Rooms>
 
                    <Room Id="1" Type="TWIN"/>
 
                    <Room Id="2" Type="SNGL"/>
 
                  </Rooms>
 
                </Hotel>
 
                <Type>HOTELS</Type>
 
                <Status>waiting</Status>
 
                <Prices>
 
                  <Price Currency="RUB">74733.84</Price>
 
                  <Charges Currency="RUB">0</Charges>
 
                  <Commission Currency="RUB">0</Commission>
 
                  <Penalty Currency="RUB">0</Penalty>
 
                  <TotalPrice Currency="RUB">74733.84</TotalPrice>
 
                </Prices>
 
                <Dates>
 
                  <BookingDate>2013-08-01 19:49:56</BookingDate>
 
                  <UpdateDate>2013-08-01 19:49:57</UpdateDate>
 
                  <CancelDate xsi:nil="true"/>
 
                  <PenaltyDate>2013-07-31 19:10:37</PenaltyDate>
 
                  <AutoCancelDate>2013-08-01 19:51:56</AutoCancelDate>
 
                  <ConfirmationLimit/>
 
                </Dates>
 
                <Statuses>
 
                  <PaymentStatus>1</PaymentStatus>
 
                  <DocumentStatus>1</DocumentStatus>
 
                  <DeliveryStatus>1</DeliveryStatus>
 
                  <InvoiceStatus>1</InvoiceStatus>
 
                  <ProblemStatus>1</ProblemStatus>
 
                </Statuses>
 
                <Customer>
 
                  <Person Number="1"/>
 
                </Customer>
 
                <Persons>
 
                  <Person Number="1"/>
 
                  <Person Number="2"/>
 
                  <Person Number="3"/>
 
                </Persons>
 
              </Item>
 
            </Items>
 
            <Persons>
 
              <Person Number="1">
 
                <Lastname>IVANOV</Lastname>
 
                <Name>IVAN</Name>
 
                <Middlename>IVANOVICH</Middlename>
 
                <DateOfBirth xsi:nil="true"/>
 
                <Phone>+79871231212</Phone>
 
                <Email>m.rudenko@mute-lab.com</Email>
 
                <Gender xsi:nil="true"/>
 
                <Document Type="P">
 
                  <Series>1811</Series>
 
                  <Number>912219</Number>
 
                  <IssueDate>2012-12-12 00:00:00</IssueDate>
 
                  <ExpiryDate>2014-12-12 00:00:00</ExpiryDate>
 
                </Document>
 
              </Person>
 
              <Person Number="2">
 
                <Lastname>PETROV</Lastname>
 
                <Name>IVAN</Name>
 
                <Middlename>MIKHAILOVICH</Middlename>
 
                <DateOfBirth xsi:nil="true"/>
 
                <Phone>+79871231212</Phone>
 
                <Email>m.rudenko@mute-lab.com</Email>
 
                <Gender xsi:nil="true"/>
 
                <Document Type="P">
 
                  <Series>1866</Series>
 
                  <Number>913319</Number>
 
                  <IssueDate>2012-12-12 00:00:00</IssueDate>
 
                  <ExpiryDate>2014-12-12 00:00:00</ExpiryDate>
 
                </Document>
 
              </Person>
 
              <Person Number="3">
 
                <Lastname>SIDOROV</Lastname>
 
                <Name>IVAN</Name>
 
                <Middlename>SERGEEVICH</Middlename>
 
                <DateOfBirth xsi:nil="true"/>
 
                <Phone>+79871231212</Phone>
 
                <Email>m.rudenko@mute-lab.com</Email>
 
                <Gender xsi:nil="true"/>
 
                <Document Type="P">
 
                  <Series>1866</Series>
 
                  <Number>913319</Number>
 
                  <IssueDate>2012-12-12 00:00:00</IssueDate>
 
                  <ExpiryDate>2014-12-12 00:00:00</ExpiryDate>
 
                </Document>
 
              </Person>
 
            </Persons>
 
          </Booking>
 
        </Response>
 
      </ResponseBin>
 
    </ns1:bookingResponse>
 
  </SOAP-ENV:Body>
 
</SOAP-ENV:Envelope>
 
</syntaxhighlight>
 
 
Структура ответа очень похожа на запрос. Выделяются те же основные элементы.
 
 
Элемент '''Booking'''
 
{| style="width: 800px" class="wikitable"
 
|-
 
! scope="col" width="200" | Элемент
 
! scope="col" width="300" | Описание
 
! scope="col" width="300" | Допустимые значения
 
|-
 
| Items
 
| Обязательный. Содержит элемент(ы) Item.
 
| Элемент Item
 
|-
 
| Persons
 
| Обязательный. Здесь перечислены все клиенты заказа.
 
| Элемент Person
 
|}
 
 
В элементах Item раскрывается подробнейшая информация об одной услуге в бронировании.
 
 
Элемент '''Item'''
 
{| style="width: 800px" class="wikitable"
 
|-
 
! scope="col" width="200" | Элемент
 
! scope="col" width="300" | Описание
 
! scope="col" width="300" | Допустимые значения
 
|-
 
| Атрибут Id
 
| Обязательный.
 
Номер заказа в системе Nemo.
 
| Целое число
 
|-
 
| Type
 
| Обязательный.
 
Тип объекта бронирования.
 
| HOTELS
 
|-
 
| Status
 
| Обязательный. Статус объекта бронирования .
 
| booked - забронирован
 
cancelled - аннулирован
 
pending confirmation - в процессе подтверждения
 
pending – произошла попытка бронирования, которое не было завершено
 
waiting – ожидается результат запроса на бронирование
 
|-
 
| Prices
 
| Обязательный. Данные о ценах.
 
| см. Элемент Prices
 
|-
 
| Dates
 
| Обязательный. Данные о датах.
 
| см. Элемент Dates
 
|-
 
| Statuses
 
| Обязательный. Различные дополнительные статусы заказанной услуги.
 
| см. Элемент Statuses
 
|-
 
| Persons
 
| Обязательный. Содержит клиентов привязанных к услуге.
 
| элементы Person
 
|-
 
| Hotel
 
| Необязательный. Элемент с данными об отеле.
 
| см. элемент Hotel (результат поиска отеля)
 
|}
 
 
Информация о цене услуги вынесена в отдельную ветку:
 
 
Элемент '''Prices'''
 
{| style="width: 800px" class="wikitable"
 
|-
 
! scope="col" width="200" | Элемент
 
! scope="col" width="300" | Описание
 
! scope="col" width="300" | Допустимые значения
 
|-
 
| Price
 
| Обязательный. Базовая цена услуги.
 
| Вещественное число.
 
Атрибут Currency - код валюты.
 
|-
 
| Charges
 
| Необязательный. Сумма дополнительных сборов.
 
| Вещественное число.
 
Атрибут Currency - код валюты.
 
|-
 
| Commission
 
| Необязательный. Сумма комиссий (вычитается из общей стоимости).
 
| Вещественное число.
 
Атрибут Currency - код валюты.
 
|-
 
| Penalty
 
| Необязательный. Сумма штрафов.
 
| Вещественное число.
 
Атрибут Currency - код валюты.
 
|-
 
| TotalPrice
 
| Обязательный. Итоговая стоимость.
 
= Price + Charges + Commission
 
| Вещественное число.
 
Атрибут Currency - код валюты.
 
|}
 
 
Информация о датах услуги также вынесена в отдельную ветку:
 
 
Элемент '''Dates'''
 
{| style="width: 800px" class="wikitable"
 
|-
 
! scope="col" width="200" | Элемент
 
! scope="col" width="300" | Описание
 
! scope="col" width="300" | Допустимые значения
 
|-
 
| BookingDate
 
| Обязательный. Дата бронирования.
 
| Формат гггг-мм-дд чч:мм:сс
 
|-
 
| UpdateDate
 
| Необязательный. Дата обновления.
 
| Формат гггг-мм-дд чч:мм:сс
 
|-
 
| CancelDate
 
| Необязательный. Дата аннуляции.
 
| Формат гггг-мм-дд чч:мм:сс
 
|-
 
| PenaltyDate
 
| Необязательный. Дата наступления штрафов.
 
| Формат гггг-мм-дд чч:мм:сс
 
|-
 
| AutoCancelDate
 
| Необязательный. Дата автоаннулирования.
 
| Формат гггг-мм-дд чч:мм:сс
 
|}
 
 
Дополнительные статусы:
 
 
Элемент '''Statuses'''
 
{| style="width: 800px" class="wikitable"
 
|-
 
! scope="col" width="200" | Элемент
 
! scope="col" width="300" | Описание
 
! scope="col" width="300" | Допустимые значения
 
|-
 
| PaymentStatus
 
| Необязательный.
 
Статус оплаты.
 
| Целое число
 
1 - неоплачено
 
2 - частично оплачено
 
3 - оплачено
 
|-
 
| DocumentStatus
 
| Необязательный.
 
Статус ваучера.
 
| Целое число
 
1 - документ не сформирован
 
2 - документ сформирован
 
|-
 
| DeliveryStatus
 
| Необязательный.
 
Статус доставки.
 
| Целое число
 
1 - не доставлен
 
2 - доставлен
 
|-
 
| InvoiceStatus
 
| Необязательный.
 
Статус счета.
 
| Целое число
 
1 - счет выставлен.
 
2 - счет не выставлен.
 
|}
 
 
Информация о клиентах заказа полностью повторяет структуру запроса.
 
</div>
 
</div>
 
  
 
+
==== Параметры, используемые в ответах ====
 
 
==== Подтверждение бронирования ====
 
<div class="toccolours mw-collapsible mw-collapsed" style="width:1000px">
 
===== Запрос =====
 
 
<div class="mw-collapsible-content">
 
<div class="mw-collapsible-content">
Подтверждение бронирования заказа.
+
<table border="1">
  
'''WSDL''' (тестовый сервер): http://tst.nemo-ibe.com/wsdev/wsdl.php?for=ConfirmBooking
+
<tr bgcolor="#CCCCCC">
 +
<th class="col0 leftalign"> Имя элемента      </th><th class="col1 leftalign"> Обязательный      </th><th class="col2 leftalign"> Тип  </th><th class="col3 centeralign">    Описание  </th>
 +
</tr>
 +
<tr class="row1">
 +
<td class="col0">BookFlightResult </td><td class="col1">да </td><td class="col2">сложный </td><td class="col3">Контейнер для тела ответа бронирования</td>
  
<syntaxhighlight lang="xml" line enclose="div" style="font-size:9pt;background: #F9F9F9; border: 1px dashed #2F6FAB; padding: 10px 5px; margin: 10px 0;">
+
</tr>
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ver="http://tst.nemo-ibe.com/wsdev/?version%3D1.0%26for%3DConfirmBooking">
+
<tr class="row2">
  <soapenv:Header/>
+
<td class="col0">ID </td><td class="col1">да </td><td class="col2">число</td><td class="col3">Номер бронирования в системе Nemo.</td>
  <soapenv:Body>
+
</tr>
      <ver:confirm>
+
<tr class="row3">
        <RequestBin>
+
<td class="col0 leftalign">Status  </td><td class="col1">да </td><td class="col2">строка </td><td class="col3">Статус брони, возможные значения: booked - забронировано, canceled - бронь отменена, ticket - выписана; UNDEFINED - статус не определён.</td>
            <Request>
 
              <BookingId>179547</BookingId>
 
            </Request>
 
            <Source>
 
              <ClientId></ClientId>
 
              <APIKey></APIKey>
 
              <Language>ru</Language>
 
              <Currency>RUB</Currency>
 
            </Source>
 
        </RequestBin>
 
      </ver:confirm>
 
  </soapenv:Body>
 
</soapenv:Envelope>
 
</syntaxhighlight>
 
  
Элемент '''Request'''
+
</tr>
{| style="width: 800px" class="wikitable"
+
<tr class="row4">
|-
+
<td class="col0">Code </td><td class="col1">да </td><td class="col2">строка </td><td class="col3">Номер бронирования в системе поставщика (в sabre, sirena и т.д.)/код тарифного правила</td>
! scope="col" width="200" | Элемент
+
</tr>
! scope="col" width="300" | Описание
+
<tr class="row5">
! scope="col" width="300" | Допустимые значения
+
<td class="col0">QueryPlace </td><td class="col1">нет </td><td class="col2">сложный </td><td class="col3">Очередь, в которую помещено бронирование</td>
|-
 
| BookingID
 
| Обязательный. Идентификатор заказа в системе Nemo.
 
| Целое число
 
|}
 
  
Элемент '''Source'''
+
</tr>
{| style="width: 800px" class="wikitable"
+
<tr class="row6">
|-
+
<td class="col0 leftalign">Number  </td><td class="col1">да </td><td class="col2">число </td><td class="col3">Номер очереди</td>
! scope="col" width="200" | Элемент
+
</tr>
! scope="col" width="300" | Описание
+
<tr class="row7">
! scope="col" width="300" | Допустимые значения
+
<td class="col0">Flight </td><td class="col1">да </td><td class="col2">сложный </td><td class="col3">Перелёт, по которому была сделана бронь (Результаты проверки доступности для перелёта)</td>
|-
 
| ClientID
 
| Обязательный. ID клиента в системе Nemo.
 
Можно посмотреть/добавить в "Администрирование" ⇨ "Веб-служба. Авторизация".
 
| Целое число.
 
|-
 
| APIKey
 
| Обязательный. APIKey - секретный ключ доступа к API Nemo.
 
Можно посмотреть/добавить в "Администрирование" ⇨ "Веб-служба. Авторизация".
 
| Латинские буквы и цифры. Всего 32 символа.
 
|}
 
</div>
 
</div>
 
  
<div class="toccolours mw-collapsible mw-collapsed" style="width:1000px">
+
</tr>
===== Ответ =====
+
<tr class="row8">
<div class="mw-collapsible-content">
+
<td class="col0">Agency </td><td class="col1">да </td><td class="col2">сложный </td><td class="col3">Информация об агентстве</td>
 +
</tr>
 +
<tr class="row9">
 +
<td class="col0">ItinReceipts</td><td class="col1">нет </td><td class="col2">сложный </td><td class="col3">Маршрут квитанция. Содержит строку в кодировки Encoding  (как правило в base64), представляющую маршрут квитанцию в формате Format.</td>
  
<syntaxhighlight lang="xml" line enclose="div" style="font-size:9pt;background: #F9F9F9; border: 1px dashed #2F6FAB; padding: 10px 5px; margin: 10px 0;">
+
</tr>
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns1="http://tst.nemo-ibe.com/wsdev/?version%3D1.0%26for%3DConfirmBooking">
+
<tr class="row10">
  <SOAP-ENV:Body>
+
<td class="col0">Encoding </td><td class="col1">да </td><td class="col2">строка </td><td class="col3">Кодировка</td>
      <ns1:confirmResponse>
+
</tr>
        <ResponseBin>
+
<tr class="row11">
            <Response>
+
<td class="col0">Format </td><td class="col1">да </td><td class="col2">строка</td><td class="col3">Формат</td>
              <Books>
 
                  <Book>
 
                    <Id>179547</Id>
 
                    <Status>booked</Status>
 
                  </Book>
 
              </Books>
 
            </Response>
 
        </ResponseBin>
 
      </ns1:confirmResponse>
 
  </SOAP-ENV:Body>
 
</SOAP-ENV:Envelope>
 
</syntaxhighlight>
 
</div>
 
</div>
 
  
 +
</tr>
 +
<tr class="row12">
 +
<td class="col0">Travellers</td><td class="col1">да </td><td class="col2">сложный </td><td class="col3">Контейнер для информации о пассажирах</td>
 +
</tr>
 +
<tr class="row13">
 +
<td class="col0">Traveller </td><td class="col1">да </td><td class="col2">сложный </td><td class="col3">Информация о пассажире</td>
  
==== Выгрузка актуальных данных по заказу(ам) ====
+
</tr>
Используется для экспорта бронирований и для обновления данных в локальной клиентской базе.
+
<tr class="row14">
 +
<td class="col0">Ticket </td><td class="col1">нет </td><td class="col2">сложный </td><td class="col3">Билет пассажира.</td>
 +
</tr>
 +
<tr class="row15">
 +
<td class="col0">TickectNum </td><td class="col1">да </td><td class="col2">строка </td><td class="col3">Номер билета</td>
  
'''WSDL''' (тестовый сервер): http://tst.nemo-ibe.com/wsdev/wsdl.php?for=Export
+
</tr>
 +
<tr class="row16">
 +
<td class="col0">Seats</td><td class="col1">нет </td><td class="col2">сложный </td><td class="col3">Контейнер мест пассажира.</td>
 +
</tr>
 +
<tr class="row17">
 +
<td class="col0">Seat </td><td class="col1">да </td><td class="col2">сложный </td><td class="col3">Место в самолёте</td>
  
<div class="toccolours mw-collapsible mw-collapsed" style="width:1000px">
+
</tr>
===== Запрос =====
+
<tr class="row18">
<div class="mw-collapsible-content">
+
<td class="col0">Number </td><td class="col1">да </td><td class="col2">строка</td><td class="col3">Номер места(ряд+номер в ряду)</td>
<syntaxhighlight lang="xml" line enclose="div" style="font-size:9pt;background: #F9F9F9; border: 1px dashed #2F6FAB; padding: 10px 5px; margin: 10px 0;">
+
</tr>
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"
+
<tr class="row19">
xmlns:ver="http://tst.nemo-ibe.com/wsdev/?version%3D1.0%26for%3DExport">
+
<td class="col0">Characteristic </td><td class="col1">нет</td><td class="col2">строка </td><td class="col3">Характеристика места в соответствии со стандартом EDIFACT. См справочник “Таблица характеристик мест”.</td>
  <soapenv:Header/>
 
  <soapenv:Body>
 
    <ver:export>
 
      <RequestBin>
 
        <Request>
 
          <Export>
 
            <Items>
 
              <!--Zero or more repetitions:-->
 
              <Item Id="386621"/>
 
            </Items>
 
          </Export>
 
        </Request>
 
        <Source>
 
          <ClientId></ClientId>
 
          <APIKey></APIKey>
 
          <Language>ru</Language>
 
          <Currency>RUB</Currency>
 
        </Source>
 
      </RequestBin>
 
    </ver:export>
 
  </soapenv:Body>
 
</soapenv:Envelope>
 
</syntaxhighlight>
 
  
Элемент '''Item'''
+
</tr>
{| style="width: 800px" class="wikitable"
+
<tr class="row20">
|-
+
<td class="col0">SmokingPreference </td><td class="col1">нет </td><td class="col2">строка </td><td class="col3">Статус курения на этом месте, если Y - место для курящих, если N - место для некурящих.</td>
! scope="col" width="200" | Элемент
+
</tr>
! scope="col" width="300" | Описание
+
<tr class="row21">
! scope="col" width="300" | Допустимые значения
+
<td class="col0">SegmentNumber </td><td class="col1">да </td><td class="col2">число </td><td class="col3">Номер сегмента</td>
|-
 
| Атрибут Id
 
| Обязательный. Идентификатор заказа в системе Nemo.
 
| Целое число
 
|}
 
  
Элемент '''Source'''
+
</tr>
{| style="width: 800px" class="wikitable"
+
<tr class="row22">
|-
+
<td class="col0">PersonalInfo </td><td class="col1">да </td><td class="col2">сложный </td><td class="col3">Личные данные</td>
! scope="col" width="200" | Элемент
+
</tr>
! scope="col" width="300" | Описание
+
<tr class="row23">
! scope="col" width="300" | Допустимые значения
+
<td class="col0">LoyaltyCard </td><td class="col1">нет </td><td class="col2">сложный </td><td class="col3">Карточка часто летающего пассажира</td>
|-
 
| ClientID
 
| Обязательный. ID клиента в системе Nemo.
 
Можно посмотреть/добавить в "Администрирование" ⇨ "Веб-служба. Авторизация".
 
| Целое число.
 
|-
 
| APIKey
 
| Обязательный. APIKey - секретный ключ доступа к API Nemo.
 
Можно посмотреть/добавить в "Администрирование" ⇨ "Веб-служба. Авторизация".
 
| Латинские буквы и цифры. Всего 32 символа.
 
|}
 
</div>
 
</div>
 
  
<div class="toccolours mw-collapsible mw-collapsed" style="width:1000px">
+
</tr>
===== Ответ =====
+
<tr class="row24">
<div class="mw-collapsible-content">
+
<td class="col0">ContactInfo </td><td class="col1">нет </td><td class="col2">сложный </td><td class="col3">Контактная информация для пассажира</td>
Ответ содержит элементы результатов бронирований. См. описание выше.
+
</tr>
<syntaxhighlight lang="xml" line enclose="div" style="font-size:9pt;background: #F9F9F9; border: 1px dashed #2F6FAB; padding: 10px 5px; margin: 10px 0;">
+
<tr class="row25">
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"
+
<td class="col0">FareStored </td><td class="col1">нет </td><td class="col2">срока: Yes/No </td><td class="col3">Указывает установлена ли / гарантируется ли цена у поставщика. Если параметр отсутствует в ответе, то по умолчанию значение “Yes”.</td>
xmlns:ns1="http://tst.nemo-ibe.com/wsdev/?version%3D1.0%26for%3DExport"
 
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
 
  <SOAP-ENV:Body>
 
    <ns1:exportResponse>
 
      <ResponseBin>
 
        <Response>
 
          <Export>
 
            <Items>
 
              <Item Id="386621">
 
                <Hotel Id="1872666">
 
                  <Supplier>GTA</Supplier>
 
                  <CityId>22046</CityId>
 
                  <DateBegin>2013-10-15</DateBegin>
 
                  <DateEnd>2013-10-18</DateEnd>
 
                  <CacheId>1872666</CacheId>
 
                  <Name>ADLON KEMPINSKI</Name>
 
                  <Categories>
 
                    <Category Id="1">
 
                      <Rooms>
 
                        <Room Count="1" Id="1" ServiceId="1"/>
 
                        <Room Count="1" Id="2" ServiceId="2"/>
 
                      </Rooms>
 
                      <TotalPrice Currency="RUB">74733.84</TotalPrice>
 
                    </Category>
 
                  </Categories>
 
                  <Services>
 
                    <Service Id="1" Status="OK">
 
                      <Desc>Standard Twin</Desc>
 
                      <Meal>Full Breakfast</Meal>
 
                      <Price Currency="RUB">37366.92</Price>
 
                    </Service>
 
                    <Service Id="2" Status="OK">
 
                      <Desc>Standard Twin</Desc>
 
                      <Meal>Full Breakfast</Meal>
 
                      <Price Currency="RUB">37366.92</Price>
 
                    </Service>
 
                  </Services>
 
                  <Rooms>
 
                    <Room Id="1" Type="TWIN"/>
 
                    <Room Id="2" Type="SNGL"/>
 
                  </Rooms>
 
                </Hotel>
 
                <Type>HOTELS</Type>
 
                <Status>waiting</Status>
 
                <Prices>
 
                  <Price Currency="RUB">74733.84</Price>
 
                  <Charges Currency="RUB">0</Charges>
 
                  <Commission Currency="RUB">0</Commission>
 
                  <Penalty Currency="RUB">0</Penalty>
 
                  <TotalPrice Currency="RUB">74733.84</TotalPrice>
 
                </Prices>
 
                <Dates>
 
                  <BookingDate>2013-08-01 20:21:47</BookingDate>
 
                  <UpdateDate>2013-08-01 20:35:01</UpdateDate>
 
                  <CancelDate xsi:nil="true"/>
 
                  <PenaltyDate>2013-07-31 19:10:37</PenaltyDate>
 
                  <AutoCancelDate>2013-08-01 20:23:47</AutoCancelDate>
 
                  <ConfirmationLimit/>
 
                </Dates>
 
                <Statuses>
 
                  <PaymentStatus>1</PaymentStatus>
 
                  <DocumentStatus>1</DocumentStatus>
 
                  <DeliveryStatus>1</DeliveryStatus>
 
                  <InvoiceStatus>1</InvoiceStatus>
 
                  <ProblemStatus>1</ProblemStatus>
 
                </Statuses>
 
                <Customer>
 
                  <Person Number="1"/>
 
                </Customer>
 
                <Persons>
 
                  <Person Number="1"/>
 
                  <Person Number="2"/>
 
                  <Person Number="3"/>
 
                </Persons>
 
              </Item>
 
            </Items>
 
            <Persons>
 
              <Person Number="1">
 
                <Lastname>IVANOV</Lastname>
 
                <Name>IVAN</Name>
 
                <Middlename>IVANOVICH</Middlename>
 
                <DateOfBirth xsi:nil="true"/>
 
                <Phone>+79871231212</Phone>
 
                <Email>m.rudenko@mute-lab.com</Email>
 
                <Gender xsi:nil="true"/>
 
                <Document Type="P">
 
                  <Series>1811</Series>
 
                  <Number>912219</Number>
 
                  <IssueDate>2012-12-12 00:00:00</IssueDate>
 
                  <ExpiryDate>2014-12-12 00:00:00</ExpiryDate>
 
                </Document>
 
              </Person>
 
              <Person Number="2">
 
                <Lastname>PETROV</Lastname>
 
                <Name>IVAN</Name>
 
                <Middlename>MIKHAILOVICH</Middlename>
 
                <DateOfBirth xsi:nil="true"/>
 
                <Phone>+79871231212</Phone>
 
                <Email>m.rudenko@mute-lab.com</Email>
 
                <Gender xsi:nil="true"/>
 
                <Document Type="P">
 
                  <Series>1866</Series>
 
                  <Number>913319</Number>
 
                  <IssueDate>2012-12-12 00:00:00</IssueDate>
 
                  <ExpiryDate>2014-12-12 00:00:00</ExpiryDate>
 
                </Document>
 
              </Person>
 
              <Person Number="3">
 
                <Lastname>SIDOROV</Lastname>
 
                <Name>IVAN</Name>
 
                <Middlename>SERGEEVICH</Middlename>
 
                <DateOfBirth xsi:nil="true"/>
 
                <Phone>+79871231212</Phone>
 
                <Email>m.rudenko@mute-lab.com</Email>
 
                <Gender xsi:nil="true"/>
 
                <Document Type="P">
 
                  <Series>1866</Series>
 
                  <Number>913319</Number>
 
                  <IssueDate>2012-12-12 00:00:00</IssueDate>
 
                  <ExpiryDate>2014-12-12 00:00:00</ExpiryDate>
 
                </Document>
 
              </Person>
 
            </Persons>
 
          </Export>
 
        </Response>
 
      </ResponseBin>
 
    </ns1:exportResponse>
 
  </SOAP-ENV:Body>
 
</SOAP-ENV:Envelope>
 
</syntaxhighlight>
 
  
Формат ответа аналогичен результату бронирования.
+
</tr>
</div>
+
<tr class="row26">
</div>
+
<td class="col0">CancelBookResult</td><td class="col1">да</td><td class="col2">сложный</td><td class="col3">Контейнер для тела ответа отмены брони</td>
 +
</tr>
 +
<tr class="row27">
 +
<td class="col0">BookID</td><td class="col1">да</td><td class="col2">число</td><td class="col3">Номер брони, которая отменялась (Номер выписанной брони, выписка которой отменялась)</td>
  
 +
</tr>
 +
<tr class="row28">
 +
<td class="col0">Result</td><td class="col1">да</td><td class="col2">сложный</td><td class="col3">Результат отмены (войдирования)</td>
 +
</tr>
 +
<tr class="row29">
 +
<td class="col0">Success</td><td class="col1">да</td><td class="col2">булевский</td><td class="col3">Индикатор, показывающий успешно или нет прошла отмена, возможные значения: true - успешно отменена (войдирование); false - не отменена</td>
  
 +
</tr>
 +
<tr class="row30">
 +
<td class="col0">GetAirRulesResult</td><td class="col1">да</td><td class="col2">сложный</td><td class="col3">Контейнер для тела ответа поиска тарифных правил</td>
 +
</tr>
 +
<tr class="row31">
 +
<td class="col0">FlightId</td><td class="col1">да</td><td class="col2">число</td><td class="col3">Номер перелёта, для которого найдены тарифные правила (будет проводилась проверка доступности)</td>
  
==== Аннуляция заказа ====
+
</tr>
'''WSDL''' (тестовый сервер): http://tst.nemo-ibe.com/wsdev/wsdl.php?for=CancelBooking
+
<tr class="row32">
<div class="toccolours mw-collapsible mw-collapsed" style="width:1000px">
+
<td class="col0">Rules</td><td class="col1">да</td><td class="col2">сложный</td><td class="col3">Контейнер для правил</td>
===== Запрос =====
+
</tr>
<div class="mw-collapsible-content">
+
<tr class="row33">
<syntaxhighlight lang="xml" line enclose="div" style="font-size:9pt;background: #F9F9F9; border: 1px dashed #2F6FAB; padding: 10px 5px; margin: 10px 0;">
+
<td class="col0">Rule</td><td class="col1">да</td><td class="col2">сложный</td><td class="col3">Правило</td>
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"
 
xmlns:ver="http://tst.nemo-ibe.com/wsdev/?version%3D1.0%26for%3DCancelBooking">
 
  <soapenv:Header/>
 
  <soapenv:Body>
 
    <ver:cancel>
 
      <RequestBin>
 
        <Request>
 
          <CancelBooking>           
 
            <Item Id="386621"/>
 
          </CancelBooking>
 
        </Request>
 
        <Source>
 
          <ClientId></ClientId>
 
          <APIKey></APIKey>
 
          <Language>ru</Language>
 
          <Currency>RUB</Currency>
 
        </Source>
 
      </RequestBin>
 
    </ver:cancel>
 
  </soapenv:Body>
 
</soapenv:Envelope>
 
</syntaxhighlight>
 
  
Элемент '''Item'''
+
</tr>
{| style="width: 800px" class="wikitable"
+
<tr class="row34">
|-
+
<td class="col0">Tarrif</td><td class="col1">да</td><td class="col2">строка</td><td class="col3">Код тарифа, для которого правило применяется</td>
! scope="col" width="200" | Элемент
+
</tr>
! scope="col" width="300" | Описание
+
<tr class="row35">
! scope="col" width="300" | Допустимые значения
+
<td class="col0">Name</td><td class="col1">да</td><td class="col2">строка</td><td class="col3">Имя правила</td>
|-
 
| Атрибут Id
 
| Обязательный. Идентификатор заказа в системе Nemo.
 
| Целое число
 
|}
 
  
Элемент '''Source'''
+
</tr>
{| style="width: 800px" class="wikitable"
+
<tr class="row36">
|-
+
<td class="col0">RuleText</td><td class="col1">да</td><td class="col2">строка</td><td class="col3">Текст правила</td>
! scope="col" width="200" | Элемент
+
</tr>
! scope="col" width="300" | Описание
+
<tr class="row37">
! scope="col" width="300" | Допустимые значения
+
<td class="col0">AirAvailResult</td><td class="col1">да</td><td class="col2">сложный</td><td class="col3">Контейнер для тела ответа помещения брони в очередь</td>
|-
 
| ClientID
 
| Обязательный. ID клиента в системе Nemo.
 
Можно посмотреть/добавить в "Администрирование" ⇨ "Веб-служба. Авторизация".
 
| Целое число.
 
|-
 
| APIKey
 
| Обязательный. APIKey - секретный ключ доступа к API Nemo.
 
Можно посмотреть/добавить в "Администрирование" ⇨ "Веб-служба. Авторизация".
 
| Латинские буквы и цифры. Всего 32 символа.
 
|}
 
</div>
 
</div>
 
  
===== Ответ =====
+
</tr>
см. результаты бронирования.
+
<tr class="row38">
 +
<td class="col0">IsAvail</td><td class="col1">да</td><td class="col2">булевский</td><td class="col3">Индикатор, показывающий доступность перелёта, возможные значения: true - доступен; false - недоступен</td>
 +
</tr>
 +
<tr class="row39">
 +
<td class="col0">VoidTicketResult</td><td class="col1">да</td><td class="col2">сложный</td><td class="col3">Контейнер для тела ответа отмены выписки брони</td>
  
==Выгрузки статистики продаж через API==
+
</tr>
 +
<tr class="row40">
 +
<td class="col0">SearchResult</td><td class="col1">нет</td><td class="col2">сложный</td><td class="col3">Контейнер тела ответа для результатов поиска.</td>
 +
</tr>
 +
<tr class="row41">
 +
<td class="col0">Flights</td><td class="col1">да</td><td class="col2">сложный</td><td class="col3">Контейнер для перелётов</td>
  
'''Метапоисковая система''' (метапоисковая машина, метапоисковик) — это поисковая система, которая в отличие от классических поисковых машин не имеет собственной базы данных и собственного поискового индекса, а формирует поисковую выдачу за счет смешивания и переранжирования результатов поиска других поисковых систем.
+
</tr>
 +
<tr class="row42">
 +
<td class="col0">Flight</td><td class="col1">нет</td><td class="col2">сложный</td><td class="col3">Представляет информацию о перелёте. Отсутствует если перелётов не найдено (используется в поисковом ответе)</td>
 +
</tr>
 +
<tr class="row43">
 +
<td class="col0">WebService</td><td class="col1">да</td><td class="col2">строка</td><td class="col3">Веб-сервис (поставщик) от которого был получен перелёт.</td>
  
Необходимо убедиться, что API запросы на поиск отправляются на доменное имя, указанное для агентства (субагента) в разделе '''Администрирование''' -> '''Настройки агентства'''
+
</tr>
 +
<tr class="row44">
 +
<td class="col0">ValCompany</td><td class="col1">нет</td><td class="col2">строка</td><td class="col3">IATA код авиакомпании. Валидирующий перевозчик, на бланках которого должен выписываться билет.</td>
 +
</tr>
 +
<tr class="row45">
 +
<td class="col0">Segments</td><td class="col1">да</td><td class="col2">сложный</td><td class="col3">Контейнер для сегментов перелёта</td>
  
 +
</tr>
 +
<tr class="row46">
 +
<td class="col0">Segment</td><td class="col1">да</td><td class="col2">сложный</td><td class="col3">Представляет информацию о сегменте</td>
 +
</tr>
 +
<tr class="row47">
 +
<td class="col0">SegNum</td><td class="col1">да</td><td class="col2">число</td><td class="col3">Номер сегмента в перелёте</td>
  
===== Запрос =====
+
</tr>
Пример запроса
+
<tr class="row48">
<syntaxhighlight lang="text" enclose="div" style="font-size:9pt;background: #F9F9F9; border: 1px dashed #2F6FAB; padding: 10px 5px; margin: 10px 0;">
+
<td class="col0">DepAirp</td><td class="col1">да</td><td class="col2">строка</td><td class="col3">IATA код аэропорта отправления</td>
http://host/index.php?go=settings/download_metasearch_stat&date1=2012-05-01&date2=2012-06-01&partner=aviasales&password=secret
+
</tr>
</syntaxhighlight>
+
<tr class="row49">
 +
<td class="col0">DepTerminal</td><td class="col1">нет</td><td class="col2">строка</td><td class="col3">Код терминала отправления</td>
  
Параметры запроса
+
</tr>
{| style="width: 800px" class="wikitable"
+
<tr class="row50">
|-
+
<td class="col0">ArrAirp</td><td class="col1">да</td><td class="col2">строка</td><td class="col3">IATA код аэропорта прибытия</td>
! scope="col" | Параметр запроса
+
</tr>
! scope="col" | Описание
+
<tr class="row51">
|-
+
<td class="col0">ArrTerminal</td><td class="col1">нет</td><td class="col2">строка</td><td class="col3">Код терминала прибытия</td>
| date1
 
| YYYY-MM-DD дата.
 
|-
 
| date2
 
| YYYY-MM-DD дата.
 
|-
 
| partner
 
| Идентификатор партнёра - алиас источника переходов модуля метрики.
 
|-
 
| password
 
| Пароль партнёра - пароль источника переходов модуля метрики.
 
|}
 
<div class="toccolours mw-collapsible mw-collapsed" style="width:800px">
 
===== Ответ =====
 
<div class="mw-collapsible-content">
 
<syntaxhighlight lang="xml" line enclose="div" style="font-size:9pt;background: #F9F9F9; border: 1px dashed #2F6FAB; padding: 10px 5px; margin: 10px 0;">
 
<bookings>
 
  <booking>
 
    <nemo_id>123123</nemo_id>
 
    <id>JHKHVR</id>
 
    <created_at>2012-05-02 00:02:01</created_at>
 
    <marker>1232:1222.t</marker>
 
    <price>1199</price>
 
    <profit>200</profit>
 
    <currency>RUB</currency>
 
    <state>PAID</state>
 
    <validatingCarrier>UN</validatingCarrier>
 
    <segment>
 
      <flight>
 
        <operatingCarrier>UN</operatingCarrier>
 
        <number>3</number>
 
        <departure>DME</departure>
 
        <departureDate>2012-09-25</departureDate>
 
        <departureTime>09:55</departureTime>
 
        <arrival>LED</arrival>
 
        <arrivalDate>2012-09-25</arrivalDate>
 
        <arrivalTime>11:10</arrivalTime>
 
        <equipment>735</equipment>
 
        <cabin>Y</cabin>
 
      </flight>
 
    </segment>
 
    <adults>1</adults>
 
    <children>0</children>
 
    <infants>0</infants>
 
  </booking>
 
  ...more bookings...
 
</bookings>
 
</syntaxhighlight>
 
  
'''Описание параметров'''
+
</tr>
 +
<tr class="row52">
 +
<td class="col0">OpAirline</td><td class="col1">да</td><td class="col2">строка</td><td class="col3">Код авиакомпании, выполняющей рейс</td>
 +
</tr>
 +
<tr class="row53">
 +
<td class="col0">MarkAirline</td><td class="col1">да</td><td class="col2">строка</td><td class="col3">Код авиакомпании, продающей билет</td>
  
<syntaxhighlight lang="text" enclose="div" style="font-size:9pt;background: #F9F9F9; border: 1px dashed #2F6FAB; padding: 10px 5px; margin: 10px 0;">
+
</tr>
    /bookings - корневой элемент содержащий информацию о бронированиях.
+
<tr class="row54">
    //booking - информации об одном бронировании.
+
<td class="col0">FlightNumber</td><td class="col1">да</td><td class="col2">число</td><td class="col3">Номер рейса</td>
    nemo_id - ид заказа в системе Немо.
+
</tr>
    id - уникальный идентификатор бронирования в системе поставщика (локатор).
+
<tr class="row55">
    created_at - YYYY-MM-DD HH:MM время и дата бронирования в таймзоне UTC; если даты бронирования нет, то дата начала создания заказа.
+
<td class="col0">AircraftType</td><td class="col1">да</td><td class="col2">строка</td><td class="col3">Код типа самолёта</td>
    marker - маркер переданные в GET параметре marker при переходе на бронирование.   
 
    price - цена билетов.
 
    profit - прибыль партнёра от данного бронирования.
 
    currency - валюта в которой указаны прибыль и цена билета.
 
    state - состояние брони. Допустимые значения PROCESSING/PAID/CANCELLED.
 
    segment - информация о перелётах.
 
    validatingCarrier - информация о бронировании.
 
    //flight - информация об одном перелёте.
 
        operatingCarrier - код авиакомпании осуществляющей рейс.
 
        number - номер рейса.
 
        departure - IATA код аэропорта отправления.
 
        departureDate - дата отправления, 'YYYY-MM-DD', местное время.
 
        departureTime - время отправления, 'HH:MM', местное время.
 
        arrival - IATA код аэропорта назначения.
 
        arrivalDate - дата прибытия, 'YYYY-MM-DD', местное время.
 
        arrivalTime - время прибытия, 'HH:MM', местное время.
 
        equipment - IATA транспортного средства осуществляющего перевозку.
 
        cabin - класс перелёта. "Y" - эконом , "C" - бизнес, "F" - первый.
 
    adults - кол-во взрослых пассажиров.
 
    children - кол-во детей.
 
    infants - кол-во детей до 2 лет.
 
</syntaxhighlight>
 
</div>
 
</div>
 
  
Время и дата бронирования '''''created_at''''' передается в таймзоне UTC+4.
+
</tr>
 +
<tr class="row56">
 +
<td class="col0">DepDateTime</td><td class="col1">да</td><td class="col2">строка</td><td class="col3">Дата и время отправления, формат ГГГГ-MM-ДДTЧЧ:ММ:СС</td>
 +
</tr>
 +
<tr class="row57">
 +
<td class="col0">ArrDateTime</td><td class="col1">да</td><td class="col2">строка</td><td class="col3">Дата и время прибытия, формат ГГГГ-MM-ДДTЧЧ:ММ:СС</td>
  
Состояние брони '''''state''''' может принимать значения:
+
</tr>
* '''''PROCESSING''''' - забронирован;
+
<tr class="row58">
* '''''PAID''''' - выписан;
+
<td class="col0">StopNum</td><td class="col1">да</td><td class="col2">число</td><td class="col3">Число остановок</td>
* '''''CANCELLED''''' - аннулирован (по любым причинам).
+
</tr>
 +
<tr class="row59">
 +
<td class="col0">Meal</td><td class="col1">да</td><td class="col2">строка</td><td class="col3">Тип питания, возможные значения: UNDEFINED - неизвестно; N - Нет питания; P - Алкогольные напитки в продаже; B - Завтрак; O - Холодная еда; C - Бесплатные алкогольные напитки; K - Континтальный завтрак; D - Обед; F - Еда в продаже; G - Еда/напитки в продаже; H - Горячая еда; L - Ланч; M - Еда; R - Освежающие еда/напитки бесплатно; V - Освежающие еда/напитки за отдельную плату; S - Закуска</td>
  
Прибыль партнёра '''''profit''''' от данного бронирования в формате 00.99 (через точку).
+
</tr>
Размер прибыли партнера устанавливается для конкретного источника трафика в Модуле метрики и считается как процент от стоимости оплаченного заказа, включая комиссию платежного шлюза и апсейловые продажи. В последующем расчет прибыли может измениться. При возврате авиабилетов сумма ранее засчитанная как прибыль партнера (метапоисковой системы) должна подставляться с минусом в данном периоде.
+
<tr class="row60">
 +
<td class="col0">BookingCodes</td><td class="col1">да</td><td class="col2">сложный</td><td class="col3">Контейнер для классов перелёта</td>
 +
</tr>
 +
<tr class="row61">
 +
<td class="col0">BookingCode</td><td class="col1">да</td><td class="col2">строка</td><td class="col3">Код класса перелёта. Если производится поиск по расписанию, то может встречаться несколько раз.</td>
  
Количество детей до 2 лет '''''infants''''' относится только к младенцам без места. Количество младенцев с местом объединяются с количеством детей до 12 лет '''''children'''''.
+
</tr>
 +
<tr class="row62">
 +
<td class="col0">FlightTime</td><td class="col1">нет</td><td class="col2">число</td><td class="col3">Время перелёта в минутах</td>
 +
</tr>
 +
<tr class="row63">
 +
<td class="col0">TimeZone</td><td class="col1">нет</td><td class="col2 rightalign"> сложный</td><td class="col3">Информация о временных зона прибытия и отправления</td>
  
==Выгрузка информации о заказах ==
+
</tr>
'''Выгрузка заказов''' — это экспорт данных заказа или заказов для различных компонентов системы Nemo.
+
<tr class="row64">
=== Процесс выгрузки ===
+
<td class="col0">Departure</td><td class="col1">да</td><td class="col2">число</td><td class="col3">Часовой пояс отправления, UTC (смещение относительно Гринвича)</td>
Схематично процесс выгрузки заказов представлен на блок-схеме.
+
</tr>
 +
<tr class="row65">
 +
<td class="col0">Arrival</td><td class="col1">да</td><td class="col2">число</td><td class="col3">Часовой пояс прибытия, UTC (смещение относительно Гринвича)</td>
  
[[Файл:Export.png]]
+
</tr>
=== Статусы выгрузки заказа ===
+
<tr class="row66">
Коды статусов выгрузки заказа соответствуют кодам состояния HTTP. Фактически указывается последний полученный код состояния HTTP, полученный при выгрузке данных по адресу, указанному в настройках выгрузки. Коды относятся к серверу, на который происходит выгрузка заказов.
+
<td class="col0">ETicket</td><td class="col1">да</td><td class="col2">булевский</td><td class="col3 rightalign"> Индикатор электронного билета, возможные значения: true - билет является электронным, false - билет не является электронным.</td>
 +
</tr>
 +
<tr class="row67">
 +
<td class="col0">Baggage</td><td class="col1">нет</td><td class="col2">сложный</td><td class="col3">Информация о багаже</td>
  
{| style="width: 800px" class="wikitable"
+
</tr>
|-
+
<tr class="row68">
! scope="col" width="20" | Код
+
<td class="col0">Measure</td><td class="col1">да</td><td class="col2">строка</td><td class="col3">Мера веса. K - килограммы, PC - сумки/клади</td>
! scope="col" width="300" | Описание
+
</tr>
|-
+
<tr class="row69">
| 0
+
<td class="col0">Value</td><td class="col1">да</td><td class="col2">строка</td><td class="col3">Количество багажа</td>
| Неизвестный ответ. Адрес для выгрузки не доступен.
 
|-
 
| 200
 
| OK — успешный запрос.
 
|-
 
| 301
 
| Запрошенный документ был окончательно перенесен на новый URI, указанный в поле Location заголовка.
 
|-
 
| 403
 
| Сервер понял запрос, но он отказывается его выполнять из-за ограничений в доступе для клиента к указанному ресурсу.
 
|-
 
| 404
 
| Сервер понял запрос, но не нашёл соответствующего ресурса по указанному URI.
 
|-
 
| 422
 
| Unprocessable Entity — сервер успешно принял запрос, может работать с указанным видом данных, в теле запроса XML-документ имеет верный синтаксис, но имеется какая-то логическая ошибка, из-за которой невозможно произвести операцию над ресурсом.
 
|-
 
| 500
 
| Любая внутренняя ошибка сервера.
 
|}
 
  
=== Выгрузка заказа для компонента «Авиабилеты»===
+
</tr>
Для компонента '''«Авиабилеты»''' доступна выгрузка заказов в форматах Nemo и/или Софи (при включенном модуле '''«Выгрузка заказов Софи»).
+
<tr class="row70">
<div class="toccolours mw-collapsible mw-collapsed" style="width:1000px">
+
<td class="col0">PricingInfo</td><td class="col1">нет</td><td class="col2">сложный</td><td class="col3">Контейнер для информации о ценах. Отсутствует в случае, если производится поиск по расписанию.</td>
==== Формат Nemo ====
+
</tr>
<div class="mw-collapsible-content">
+
<tr class="row71">
<syntaxhighlight lang="xml" line enclose="div" style="font-size:9pt;background: #F9F9F9; border: 1px dashed #2F6FAB; padding: 10px 5px; margin: 10px 0;">
+
<td class="col0">Refundable</td><td class="col1">да</td><td class="col2">булевский</td><td class="col3">Индикатор показывающий является ли билет возвратным или нет,  возможные значения: true - возвратный (нет штрафов за возврат), false - невозвратный (могут быть штрафы за возврат)</td>
<?xml version="1.0" encoding="UTF-8"?>
 
<PNR>
 
  <Common>
 
    <id>277749</id>
 
    <Type>FLIGHTS</Type>
 
    <Service>SABRE</Service>
 
    <Locator>SQLJNK</Locator>
 
    <ExternalId>1234567</ExternalId> <!-- Внешний идентификатор -->
 
    <Stamp>123456789</Stamp>
 
    <UtmSource>100</UtmSource> <!-- Источник перехода -->
 
    <BeginDateTime>2014.12.18-10:45</BeginDateTime>
 
    <EndDateTime>2014.12.25-16:40</EndDateTime>
 
    <TicketingDateTime>2014.12.09-15:02</TicketingDateTime>
 
    <VoidDateTime/>
 
    <TotalPrice>
 
      <Amount>10773.8</Amount>
 
      <CurrencyCode>RUB</CurrencyCode>
 
    </TotalPrice>
 
    <UserId>2964</UserId>
 
    <EEUserId/>
 
    <UserLogin>userLogin</UserLogin>
 
    <GroupId>2963</GroupId>
 
    <CompanyId>2963</CompanyId>
 
    <UserStatus>Менеджер</UserStatus>
 
    <DateCreate>2014.12.09-14:59</DateCreate>
 
    <ExtServices> <!-- Дополнительные услуги -->
 
      <ExtService>
 
        <Type>AeroExpress</Type>
 
        <Price>
 
          <Amount>1440</Amount>
 
          <CurrencyCode>RUB</CurrencyCode>
 
        </Price>
 
      </ExtService>
 
      <ExtService>
 
        <Type>AlphaInsurance</Type>
 
        <Price>
 
          <Amount>480</Amount>
 
          <CurrencyCode>RUB</CurrencyCode>
 
        </Price>
 
        <Insurances>
 
          <Insurance>
 
            <Number>Z694.198TEST.2765282</Number>
 
            <Fio>IVANOV IVAN</Fio>
 
          </Insurance>
 
          <Insurance>
 
            <Number>Z694.198TEST.2765283</Number>
 
            <Fio>PETROV PETR</Fio>
 
          </Insurance>
 
        </Insurances>
 
      </ExtService>
 
    </ExtServices>
 
  </Common>
 
  <Payment>
 
    <Title>Testpay</Title>
 
    <Method>Testpay</Method>
 
    <BillingId>117607091</BillingId>
 
    <Date>2014-12-09 15:00:39</Date>
 
    <CreateDate>2014-12-09 15:00:34</CreateDate>
 
    <Status>ticket</Status>
 
    <PenaltyDate/>
 
    <Timelimit>2014-12-10 14:59:55</Timelimit>
 
    <PaymentCharge> <!-- Сбор платежного шлюза -->
 
      <Amount>313.8</Amount>
 
      <CurrencyCode>RUB</CurrencyCode>
 
    </PaymentCharge>
 
    <Charge> <!-- Общий сбор минус сбор платежного шлюза -->
 
      <Amount>1920</Amount>
 
      <CurrencyCode>RUB</CurrencyCode>
 
    </Charge>
 
    <BaseFare> <!-- Тариф -->
 
      <Amount>1600</Amount>
 
      <CurrencyCode>RUB</CurrencyCode>
 
    </BaseFare>
 
    <Book> <!-- Тариф плюс таксы -->
 
      <Amount>8540</Amount>
 
      <CurrencyCode>RUB</CurrencyCode>
 
    </Book>
 
    <Penalty>
 
      <Amount>0</Amount>
 
      <CurrencyCode>RUB</CurrencyCode>
 
    </Penalty>
 
    <Total>
 
      <Amount>10773.8</Amount>
 
      <CurrencyCode>RUB</CurrencyCode>
 
    </Total>
 
    <Commission>
 
      <Amount>0</Amount>
 
      <CurrencyCode>RUB</CurrencyCode>
 
    </Commission>
 
    <PaidValue>
 
      <Amount>10773.8</Amount>
 
      <CurrencyCode>RUB</CurrencyCode>
 
    </PaidValue>
 
  </Payment>
 
  <Client>
 
    <LastName/>
 
    <Name>SIDOROV PETR</Name>
 
    <MiddleName/>
 
    <Number/>
 
    <Birth/>
 
    <Email>mail@host.com</Email>
 
    <Phone>+74950000000</Phone>
 
  </Client>
 
  <PassengersCount>2</PassengersCount>
 
  <Passengers>
 
    <Passenger>
 
      <passenger_type>ADT</passenger_type>
 
      <lastname>IVANOV</lastname>
 
      <name>IVAN</name>
 
      <gender>F</gender>
 
      <date_of_birth>12.12.1987</date_of_birth>
 
      <doc_type>C</doc_type>
 
      <passport_number>1234567890</passport_number>
 
      <currency_of_passport>24.03.2023</currency_of_passport>
 
      <middlename/>
 
      <passenger_id>37667</passenger_id>
 
      <nationality>RU</nationality>
 
      <email>mail@host.com</email>
 
      <Tickets>
 
        <Active>0</Active>
 
        <Seg/>
 
        <Num>5553984070962</Num>
 
        <Date>2014-12-09 16:01:00</Date>
 
      </Tickets>
 
      <Tickets>
 
        <Active>1</Active>
 
        <Seg/>
 
        <Num>5553984070964</Num>
 
        <Date>2014-12-09 16:03:00</Date>
 
      </Tickets>
 
      <PriceInfo>
 
        <BaseFare>
 
          <Amount>800</Amount>
 
          <CurrencyCode>RUB</CurrencyCode>
 
        </BaseFare>
 
        <TotalFare>
 
          <Amount>4270</Amount>
 
          <CurrencyCode>RUB</CurrencyCode>
 
        </TotalFare>
 
        <Commission>
 
          <Amount>0</Amount>
 
          <CurrencyCode>RUB</CurrencyCode>
 
        </Commission>
 
        <AirlineCommission>
 
          <Amount>0</Amount>
 
          <CurrencyCode>RUB</CurrencyCode>
 
        </AirlineCommission>
 
      </PriceInfo>
 
    </Passenger>
 
    <Passenger>
 
      <passenger_type>ADT</passenger_type>
 
      <doc_type>C</doc_type>
 
      <middlename/>
 
      <passenger_id>37668</passenger_id>
 
      <lastname>PETROV</lastname>
 
      <name>PETR</name>
 
      <gender>M</gender>
 
      <date_of_birth>20.12.1984</date_of_birth>
 
      <passport_number>1234567899</passport_number>
 
      <currency_of_passport>20.12.2029</currency_of_passport>
 
      <nationality>RU</nationality>
 
      <email>mail@host.com</email>
 
      <Tickets>
 
        <Active>0</Active>
 
        <Seg/>
 
        <Num>5553984070963</Num>
 
        <Date>2014-12-09 16:01:00</Date>
 
      </Tickets>
 
      <Tickets>
 
        <Active>1</Active>
 
        <Seg/>
 
        <Num>5553984070965</Num>
 
        <Date>2014-12-09 16:03:00</Date>
 
      </Tickets>
 
      <PriceInfo>
 
        <BaseFare>
 
          <Amount>800</Amount>
 
          <CurrencyCode>RUB</CurrencyCode>
 
        </BaseFare>
 
        <TotalFare>
 
          <Amount>4270</Amount>
 
          <CurrencyCode>RUB</CurrencyCode>
 
        </TotalFare>
 
        <Commission>
 
          <Amount>0</Amount>
 
          <CurrencyCode>RUB</CurrencyCode>
 
        </Commission>
 
        <AirlineCommission>
 
          <Amount>0</Amount>
 
          <CurrencyCode>RUB</CurrencyCode>
 
        </AirlineCommission>
 
      </PriceInfo>
 
    </Passenger>
 
  </Passengers>
 
  <FlightType>Внутренний</FlightType>
 
  <OrderInfo>
 
    <Info>
 
      <Company>Аэрофлот - Российские авиалинии</Company>
 
      <CompanyCode>SU</CompanyCode>
 
      <OperatingCompanyCode>FV</OperatingCompanyCode>
 
      <StartDate>2014.12.18</StartDate>
 
      <StartTime>10:45</StartTime>
 
      <StartDayOfWeek>Thursday</StartDayOfWeek>
 
      <FlightNumber>6128 (FV6128)</FlightNumber>
 
      <StartAirportCode>VKO</StartAirportCode>
 
      <StartAirportName>Внуково, Москва</StartAirportName>
 
      <StartCountry>Россия</StartCountry>
 
      <StartCountryCode>RU</StartCountryCode>
 
      <EndAirportCode>LED</EndAirportCode>
 
      <EndAirportName>Санкт-Петербург, Пулково</EndAirportName>
 
      <EndCountry>Россия</EndCountry>
 
      <EndCountryCode>RU</EndCountryCode>
 
      <Time>1:30</Time>
 
      <Equip>
 
        <Name>Airbus 319</Name>
 
        <Type>319</Type>
 
      </Equip>
 
      <ClassType>economy</ClassType>
 
      <ClassTypeCode>R</ClassTypeCode>
 
      <Meal/>
 
    </Info>
 
    <Info>
 
      <Company>Аэрофлот - Российские авиалинии</Company>
 
      <CompanyCode>SU</CompanyCode>
 
      <OperatingCompanyCode>FV</OperatingCompanyCode>
 
      <StartDate>2014.12.25</StartDate>
 
      <StartTime>15:10</StartTime>
 
      <StartDayOfWeek>Thursday</StartDayOfWeek>
 
      <FlightNumber>6153 (FV6153)</FlightNumber>
 
      <StartAirportCode>LED</StartAirportCode>
 
      <StartAirportName>Санкт-Петербург, Пулково</StartAirportName>
 
      <StartCountry>Россия</StartCountry>
 
      <StartCountryCode>RU</StartCountryCode>
 
      <EndAirportCode>VKO</EndAirportCode>
 
      <EndAirportName>Внуково, Москва</EndAirportName>
 
      <EndCountry>Россия</EndCountry>
 
      <EndCountryCode>RU</EndCountryCode>
 
      <Time>1:30</Time>
 
      <Equip>
 
        <Name>Airbus 319</Name>
 
        <Type>319</Type>
 
      </Equip>
 
      <ClassType>economy</ClassType>
 
      <ClassTypeCode>R</ClassTypeCode>
 
      <Meal/>
 
    </Info>
 
  </OrderInfo>
 
  <Remarks>Debit</Remarks>
 
</PNR>
 
</syntaxhighlight>
 
  
Ремарка ''<Remarks>Debit</Remarks>'' является не обязательной, означает что заказ был оплачен с помощью способа оплаты «Депозит»;
+
</tr>
если же заказ был оплачен с использованием депозитного кредита, и депозит ушел в минус даже на 1 руб., то будет ''<Remarks>Credit</Remarks>''.
+
<tr class="row72">
 +
<td class="col0">PassengerFare</td><td class="col1">да</td><td class="col2">сложный</td><td class="col3">Информация о ценах для конкретного типа пассажиров.</td>
 +
</tr>
 +
<tr class="row73">
 +
<td class="col0">Quantity</td><td class="col1">да</td><td class="col2">число</td><td class="col3">Число пассажиров данного типа</td>
  
Элемент ''<TotalFare>'' возвращает стоимость уже оплаченного заказа. Если же заказ забронирован, но не оплачен, то значение будет 0 RUB.
+
</tr>
 +
<tr class="row74">
 +
<td class="col0">BaseFare</td><td class="col1">да</td><td class="col2">сложный</td><td class="col3">Цена в базовой валюте(за одного пассажира)</td>
 +
</tr>
 +
<tr class="row75">
 +
<td class="col0">EquiveFare</td><td class="col1">нет</td><td class="col2">сложный</td><td class="col3">Цена в эквивалентной валюте(за одного пассажира), при поиске цены не возвращается</td>
  
Элемент ''<CreateDate>'' в зависимости от состояния брони возвращает время окончания бронирования, если бронирование было завершено, иначе возвращает время создания брони.
+
</tr>
 +
<tr class="row76">
 +
<td class="col0">TotalFare</td><td class="col1">нет</td><td class="col2">сложный</td><td class="col3">Полная стоимость для пассажиров данного типа включая таксы (за одного пассажира), при поиске цены не возвращается</td>
 +
</tr>
 +
<tr class="row77">
 +
<td class="col0">Currency</td><td class="col1">да</td><td class="col2">строка</td><td class="col3">Трёх буквенный код валюты.</td>
  
Формат поддерживает возможность передачи нескольких номеров электронных билетов на одного пассажира (в том числе войдированных и аннулированных).
+
</tr>
</div>
+
<tr class="row78">
</div>
+
<td class="col0">Amount</td><td class="col1">да</td><td class="col2">число с плавающей точкой</td><td class="col3">Значение стоимости.</td>
 +
</tr>
 +
<tr class="row79">
 +
<td class="col0">Taxes</td><td class="col1">нет</td><td class="col2">сложный</td><td class="col3">Контейнер для такс, при поиске цены не возвращается</td>
  
<div class="toccolours mw-collapsible mw-collapsed" style="width:1000px">
+
</tr>
 +
<tr class="row80">
 +
<td class="col0">Tax</td><td class="col1">да</td><td class="col2">сложный</td><td class="col3">Одна такса</td>
 +
</tr>
 +
<tr class="row81">
 +
<td class="col0">CurCode</td><td class="col1">да</td><td class="col2">строка</td><td class="col3">Трёх буквенный код валюты для таксы</td>
  
==== Формат Софи ====
+
</tr>
<div class="mw-collapsible-content">
+
<tr class="row82">
<syntaxhighlight lang="xml" line enclose="div" style="font-size:9pt;background: #F9F9F9; border: 1px dashed #2F6FAB; padding: 10px 5px; margin: 10px 0;">
+
<td class="col0">TaxCode</td><td class="col1">да</td><td class="col2">строка</td><td class="col3">Код таксы</td>
 +
</tr>
 +
<tr class="row83">
 +
<td class="col0">Amount</td><td class="col1">да</td><td class="col2">число с плавающей точкой</td><td class="col3">Значение таксы</td>
  
<?xml version="1.0" encoding="UTF-8"?>
+
</tr>
<order_snapshot xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+
<tr class="row84">
  <header currency="RUB" time_gmt="2015-01-13 08:10:54" time="2015-01-13 12:10:54" ord_id="279307" corp_ord_id="MKQFBZ" site="2806"/>
+
<td class="col0">Tariffs</td><td class="col1">да</td><td class="col2">сложный</td><td class="col3">Контейнер для тарифов</td>
  <customer email="cepogilixe@lackmail.net" phone="XXXX9048" name="" corp_code="2806"/>
+
</tr>
  <products>
+
<tr class="row85">
    <product>
+
<td class="col0">Tariff</td><td class="col1">да</td><td class="col2">сложный</td><td class="col3">Контейнер для одного тарифа</td>
    <!--@stamp - валидатор. Парсится из заказа(Сирена и Галилео). Если получить из ГДС не удалось, то передаётся валидатор, настроенный в реквизитах подключения к ГДС.-->
 
      <air_ticket_prod prod_id="0" psg_type="A" title="Москва - Ленинград" taxes="1776" fare="400" origin="MOW" service_fee="100" form_owner="SU" validating_carrier="SU" destination="LED" comission="0.4" stamp="92354802">
 
        <air_seg segment_id="0" carrier="SU" flight_number="6128" op_carrier="FV" departure_datetime="2015-01-16 10:45:00" arrival_datetime="2015-01-16 12:15:00" departure_airport="VKO" arrival_airport="LED" fare_basis="RPROWRF"/>
 
      </air_ticket_prod>
 
    </product>
 
    <product>
 
      <ral_ticket_prod rsrv_id="2496500" prod_id="200" origin="Киевский вокзал" destination="Внуково, Москва" departure_datetime="2015-01-16 06:45:00" cartype="standart" fare="360"/>
 
    </product>
 
    <product>
 
      <service_prod prod_id="300" provider_type="INSURANCE" provider_id="AlphaInsurance" offer_type="alpha_insurance" ext_id="Z694.198TEST.2774397" price="100" count="1" psgr_id="0"/>
 
    </product>
 
    <product>
 
      <payment_prod price="123"/>
 
    </product>
 
  </products>
 
  <reservations>
 
    <reservation rsrv_id="279307" crs="SABRE" rloc="MKQFBZ"/>
 
    <reservation rsrv_id="2496500" crs="AeroExpress" rloc="218812"/>
 
  </reservations>
 
  <passengers>
 
    <passenger doc_number="1234567890" psgr_id="0" doc_country="RU" psgr_type="A" doc_type="C" birth_date="1990-01-04" name="IVAN" gender="M" first_name="IVANOV"/>
 
  </passengers>
 
  <travel_docs>
 
    <travel_doc>
 
      <air_ticket_doc tkt_oper="TKT" tkt_number="5555871998698" tkt_date="2015-01-13 12:10:50" prod_id="0" psgr_id="0" issuingAgent="2807"/>
 
    </travel_doc>
 
    <travel_doc>
 
      <aex_doc rsrv_id="2496500" prod_id="200" psgr_id="0" tkt_oper="TKT" tkt_date="2015-01-13 12:10:54" tkt_number="394612"/>
 
    </travel_doc>
 
    <travel_doc>
 
      <insur_doc main_prod_id="0" prod_id="300" psgr_id="0" tkt_oper="TKT" tkt_date="2015-01-13 12:10:54" tkt_number="Z694.198TEST.2774397"/>
 
    </travel_doc>
 
  </travel_docs>
 
  <payments>
 
    <payment pay_id="117607839" pay_oper="PAY" pay_time="2015-01-13 12:09:52" psp_code="024" psp_name="Rapida" psp_pay_id="" pay_system="ES" amount="2859" fop="CA"/>
 
  </payments>
 
</order_snapshot>
 
</syntaxhighlight>
 
 
 
*service_fee — сбор агентский (только сервисный сбор, '''не включает''' в себя сбор за эквайринг).
 
*comission - комиссия АК
 
*stamp - код Валидатора в ПСС, берется из настроек Немо, если в настройках он не указан, то не передается.
 
*ord_id — идентификатор заказа в НЕМО
 
*corp_ord_id — PNR из ГДС
 
*site — идентификатор агентства в Немо
 
*payment pay_id — номер биллинга Немо.
 
*pay_system — код платежной системы
 
**SB — для сбербанка
 
**ES — для Рапиды
 
**UNT — для Юнителлера
 
*cardholder — держатель карты.
 
*expire_date — срок действия карты, у тех ПШ, что не приходит в ответе — пустой.
 
*card_number — номер карты, в формате: 415481XXXXXX1734
 
*approval_code — код подтверждения.
 
*payment_prod price — сбор за эквайринг.
 
*main_prod_id -  ID основного продукта (авиабилета).
 
*tkt_number - номер полиса для пассажира;
 
*tkt_date - дата и время операции;
 
*tkt_oper - тип операции (TKT/REF).
 
*provider_type - тип поставщика (INSURANCE).
 
*provider_id - AlphaInsurance;
 
*offer_type - название полиса;
 
*price - цена полиса для пассажира;
 
*rloc - номер заказа у поставщика.
 
 
 
</div>
 
</div>
 
 
 
=== Выгрузка заказа для компонента «Отели» ===
 
Для компонента '''«Отели»''' доступна выгрузка заказов в формате Nemo.
 
 
 
<div class="toccolours mw-collapsible mw-collapsed" style="width:1000px">
 
==== Формат Nemo ====
 
<div class="mw-collapsible-content">
 
<syntaxhighlight lang="xml" line enclose="div" style="font-size:9pt;background: #F9F9F9; border: 1px dashed #2F6FAB; padding: 10px 5px; margin: 10px 0;">
 
<?xml version="1.0" encoding="UTF-8"?>
 
<PNR>
 
  <Common>
 
      <id>263462</id>
 
      <Type>HOTELS</Type>
 
      <Service>ACADEM</Service>
 
      <Locator>3028655</Locator>
 
      <BeginDateTime>2014.04.15-00:00</BeginDateTime>
 
      <EndDateTime>2014.04.16-00:00</EndDateTime>
 
      <TotalPrice>
 
        <Amount>1950</Amount>
 
        <CurrencyCode>RUB</CurrencyCode>
 
      </TotalPrice>
 
      <UserId>123</UserId>
 
      <EEUserId />
 
      <UserLogin>userLogin</UserLogin>
 
      <GroupId>332</GroupId>
 
      <UserStatus>Менеджер</UserStatus>
 
      <DateCreate>2014.03.21-16:11</DateCreate>
 
  </Common>
 
  <Payment>
 
      <Status>booked</Status>
 
      <PenaltyDate>2014.04.13-00:00</PenaltyDate>
 
      <Timelimit>2014-04-13 00:00:00</Timelimit>
 
      <Charge>
 
        <Amount>0</Amount>
 
        <CurrencyCode>RUB</CurrencyCode>
 
      </Charge>
 
      <Book>
 
        <Amount>1950</Amount>
 
        <CurrencyCode>RUB</CurrencyCode>
 
      </Book>
 
      <Penalty>
 
        <Amount>0</Amount>
 
        <CurrencyCode>RUB</CurrencyCode>
 
      </Penalty>
 
      <Total>
 
        <Amount>1950</Amount>
 
        <CurrencyCode>RUB</CurrencyCode>
 
      </Total>
 
      <Commission>
 
        <Amount>112</Amount>
 
        <CurrencyCode>RUB</CurrencyCode>
 
      </Commission>
 
      <PaidValue>
 
        <Amount>0</Amount>
 
        <CurrencyCode>RUB</CurrencyCode>
 
      </PaidValue>
 
  </Payment>
 
  <Client>
 
      <LastName>Сидоров</LastName>
 
      <Name>Владимир</Name>
 
      <MiddleName>Константинович</MiddleName>
 
      <Number>1806326598</Number>
 
      <Birth>1987-05-20</Birth>
 
      <Email>mail@host.com</Email>
 
      <Phone>+79871234567</Phone>
 
  </Client>
 
  <Passengers>
 
      <Passenger>
 
        <nationality>RU</nationality>
 
        <lastname>IVANOV</lastname>
 
        <name>IVAN</name>
 
      </Passenger>
 
  </Passengers>
 
  <Info>
 
      <Name>Интурист</Name>
 
      <City>
 
        <Code>34</Code>
 
        <Name>Великий Новгород</Name>
 
      </City>
 
      <Location />
 
      <StarRating>3</StarRating>
 
      <Days>2</Days>
 
      <Nights>1</Nights>
 
      <CheckInDate>2014.04.15</CheckInDate>
 
      <CheckOutDate>2014.04.16</CheckOutDate>
 
      <CheckInTime>14:00</CheckInTime>
 
      <CheckOutTime>12:00</CheckOutTime>
 
      <OnRequest>false</OnRequest>
 
  </Info>
 
  <Rooms>
 
      <Room>
 
        <Name>Двухместный стандарт (две кровати)</Name>
 
        <Type>SNGL</Type>
 
        <FareId>1</FareId>
 
      </Room>
 
  </Rooms>
 
  <Fares>
 
      <Fare>
 
        <Id>1</Id>
 
        <Price>
 
            <Amount>1950</Amount>
 
            <CurrencyCode>RUB</CurrencyCode>
 
        </Price>
 
        <Meals>Завтрак "Шведский стол",Отсутствует</Meals>
 
        <Description>Одноместный</Description>
 
      </Fare>
 
  </Fares>
 
  <CancelCharges>
 
      <Charge>
 
        <DateFrom>2014.04.13-00:00</DateFrom>
 
        <DateTo>2014.04.15-00:00</DateTo>
 
        <Amount>1488</Amount>
 
        <CurrencyCode>RUB</CurrencyCode>
 
      </Charge>
 
  </CancelCharges>
 
  <ModifyCharges />
 
  <ModificationMethods>
 
      <Method>MOD_PASS_NAMES</Method>
 
      <Method>MOD_DATES</Method>
 
  </ModificationMethods>
 
</PNR>
 
</syntaxhighlight>
 
</div>
 
</div>
 
 
 
=== Выгрузка заказа для компонента «ЖД» ===
 
Для компонента '''«ЖД»''' доступна выгрузка заказов в формате Nemo.
 
 
 
<div class="toccolours mw-collapsible mw-collapsed" style="width:1000px">
 
==== Формат Nemo ====
 
<div class="mw-collapsible-content">
 
<syntaxhighlight lang="xml" line enclose="div" style="font-size:9pt;background: #F9F9F9; border: 1px dashed #2F6FAB; padding: 10px 5px; margin: 10px 0;">
 
<?xml version="1.0" encoding="UTF-8"?>
 
<PNR>
 
  <Common>
 
      <id>123456</id>
 
      <Type>TRAINS</Type>
 
      <Service>UFS</Service>
 
      <Locator>64345987</Locator>
 
      <BeginDateTime>2014.04.26-00:15</BeginDateTime>
 
      <EndDateTime>2014.04.26-13:33</EndDateTime>
 
      <TicketingDateTime>2014.06.06-15:10</TicketingDateTime>
 
      <VoidDateTime>2014.06.07-14:19</VoidDateTime>
 
      <TotalPrice>
 
        <Amount>57505.8</Amount>
 
        <CurrencyCode>RUB</CurrencyCode>
 
      </TotalPrice>
 
      <UserId>123</UserId>
 
      <EEUserId />
 
      <UserLogin>mikhalevtur</UserLogin>
 
      <GroupId>122</GroupId>
 
      <UserStatus>Менеджер</UserStatus>
 
      <DateCreate>2014.04.24-15:03</DateCreate>
 
  </Common>
 
  <Payment>
 
      <Title>Testpay</Title>
 
      <Method>Testpay</Method>
 
      <BillingId>117603370</BillingId>
 
      <Date>2014-04-24 15:10:12</Date>
 
      <CreateDate>2014-06-06 15:10:00</CreateDate>
 
      <Status>cancelled</Status>
 
      <PenaltyDate />
 
      <Timelimit>2014-04-24 15:18:01</Timelimit>
 
      <Charge>
 
        <Amount>52278</Amount>
 
        <CurrencyCode>RUB</CurrencyCode>
 
      </Charge>
 
      <Book>
 
        <Amount>5227.8</Amount>
 
        <CurrencyCode>RUB</CurrencyCode>
 
      </Book>
 
      <Penalty>
 
        <Amount>0</Amount>
 
        <CurrencyCode>RUB</CurrencyCode>
 
      </Penalty>
 
      <TotalAgencyChargeForRefund>
 
        <Amount>100</Amount>
 
        <CurrencyCode>RUB</CurrencyCode>
 
      </TotalAgencyChargeForRefund>
 
      <Total>
 
        <Amount>57505.8</Amount>
 
        <CurrencyCode>RUB</CurrencyCode>
 
      </Total>
 
      <PaidValue>
 
        <Amount>0</Amount>
 
        <CurrencyCode>RUB</CurrencyCode>
 
      </PaidValue>
 
  </Payment>
 
  <Client>
 
      <LastName>Сидоров</LastName>
 
      <Name>Владимир</Name>
 
      <MiddleName>Константинович</MiddleName>
 
      <Number>1806326598</Number>
 
      <Birth>1987-05-20</Birth>
 
      <Email>mail@host.com</Email>
 
      <Phone>+79871234567</Phone>
 
  </Client>
 
  <Passengers>
 
      <Passenger>
 
        <name>Владимир</name>
 
        <middlename>Константинович</middlename>
 
        <phone>
 
            <country />
 
            <city />
 
            <number>+79271031610</number>
 
            <expansion />
 
        </phone>
 
        <email>mlsdsar@gmail.com</email>
 
        <nationality>RU</nationality>
 
        <passenger_type>ADT</passenger_type>
 
        <lastname>Сидоров</lastname>
 
        <doc_type>C</doc_type>
 
        <passport_number>1806326598</passport_number>
 
        <passenger_id>1</passenger_id>
 
        <gender>M</gender>
 
        <date_of_birth>20.04.1984</date_of_birth>
 
        <TotalPrice>28752.9</TotalPrice>
 
        <FarePrice>2613.9</FarePrice>
 
        <Charge>26139</Charge>
 
        <RefundMoney>8649.3</RefundMoney>
 
        <ChargeForRefund>100</ChargeForRefund>
 
        <TicketNumber>74944708487545</TicketNumber>
 
        <SeatNumber>033</SeatNumber>
 
        <HasSeat>true</HasSeat>
 
      </Passenger>
 
      <Passenger>
 
        <nationality>RU</nationality>
 
        <middlename>Константинович</middlename>
 
        <passenger_type>ADT</passenger_type>
 
        <lastname>Сидоров</lastname>
 
        <name>Иван</name>
 
        <doc_type>C</doc_type>
 
        <passport_number>1806326554</passport_number>
 
        <passenger_id>2</passenger_id>
 
        <gender>M</gender>
 
        <date_of_birth>05.04.1984</date_of_birth>
 
        <TotalPrice>28752.9</TotalPrice>
 
        <FarePrice>2613.9</FarePrice>
 
        <Charge>26139</Charge>
 
        <TicketNumber />
 
        <SeatNumber>034</SeatNumber>
 
        <HasSeat>true</HasSeat>
 
      </Passenger>
 
  </Passengers>
 
  <Info>
 
      <trainNumber>098ХА</trainNumber>
 
      <trainName />
 
      <departureStation>МОСКВА КАЗ</departureStation>
 
      <arrivalStation>КАЗАНЬ ПАС</arrivalStation>
 
      <trainCategory>1</trainCategory>
 
      <beginStation>Москва</beginStation>
 
      <endStation>Казань</endStation>
 
      <startDate>2014-04-26 00:15:00</startDate>
 
      <endDate>2014-04-26 13:33:00</endDate>
 
      <timeInRoad>47880</timeInRoad>
 
      <carNumber>8</carNumber>
 
      <carType>4</carType>
 
      <choosenSeats>
 
        <type>
 
            <lower>1</lower>
 
        </type>
 
        <type>
 
            <upper>1</upper>
 
        </type>
 
        <type>
 
            <lower_side>0</lower_side>
 
        </type>
 
        <type>
 
            <upper_side>0</upper_side>
 
        </type>
 
        <type>
 
            <undefined>0</undefined>
 
        </type>
 
      </choosenSeats>
 
      <choosenRange>
 
        <start>0</start>
 
        <end>0</end>
 
      </choosenRange>
 
      <serviceClass>В стоимость входит - постельное белье. Наличие установки кондиционирования воздуха не гарантировано.</serviceClass>
 
  </Info>
 
</PNR>
 
</syntaxhighlight>
 
 
 
'''Элемент PNR'''
 
Элемент '''PNR''' — Passenger Name Record — запись, состоящая из группы отдельных элементов (полей), содержащих информацию об одном или более пассажирах, путешествующих вместе, и деталях путешествия.
 
{| style="width: 800px" class="wikitable"
 
|-
 
! scope="col" width="200" | Элемент
 
! scope="col" width="300" | Описание
 
! scope="col" width="300" | Допустимые значения
 
|-
 
| Common
 
| Общая информация по заказу.
 
| Элементы id, Type, Service, Locator, BeginDateTime, EndDateTime, TicketingDateTime, TotalPrice, UserId, EEUserId, UserLogin, GroupId, UserStatus, DateCreate.
 
|-
 
| Payment
 
| Информация о стоимости, штрафах, статусе заказа.
 
| Элементы Status, PenaltyDate, Timelimit, Charge, Book, Penalty, Total, PaidValue.
 
|-
 
| Client
 
| Информация о заказчике.
 
| Элементы Name, MiddleName, Number, Birth, Email, Phone.
 
|-
 
| Passengers
 
| Записи о пассажирах.
 
| Элементы Passenger.
 
|-
 
| Info
 
| Типовая информация по заказу в контексте услуги.
 
| Элементы trainNumber, trainName, departureStation, arrivalStation, trainCategory, beginStation, endStation, startDate, endDate, timeInRoad, carNumber, carType, choosenSeats, choosenRange, serviceClass.
 
|}
 
 
 
'''Элемент Common'''
 
{| style="width: 800px" class="wikitable"
 
|-
 
! scope="col" width="200" | Элемент
 
! scope="col" width="300" | Описание
 
! scope="col" width="300" | Допустимые значения
 
|-
 
| id
 
| Номер заказа в Немо.
 
| Число. Пример: 268281.
 
|-
 
| Type
 
| Тип услуги.
 
| Строка: Пример: FLIGHTS.<br/>Допустимые значения: <ul><li>FLIGHTS — авиа,</li><li>HOTELS — отели,</li><li>TRAINS — ЖД.</li></ul>
 
|-
 
| Service
 
| Поставщик услуги.
 
| Строка. Пример: UFS.
 
|-
 
| Locator
 
| Идентификатор в системе поставщика.
 
| Число. Пример: 65525140.
 
|-
 
| BeginDateTime
 
| Дата и время отправления первого сегмента.
 
| Дата и время. Пример: 2014.03.06-00:15.
 
|-
 
| EndDateTime
 
| Дата и время прибытия последнего сегмента.
 
| Дата и время. Пример: 2014.03.06-13:33.
 
|-
 
| TicketingDateTime
 
| Дата и время выписки билета.
 
| Дата и время. Пример: 2014.10.17-17:23
 
|-
 
| VoidDateTime
 
| Дата и время возврата билета.
 
| Дата и время. Пример: 2014.10.17-17:23
 
|-
 
| TotalPrice
 
| Общая стоимость заказа.
 
| Элементы Amount — номинал стоимости, CurrencyCode — валюта стоимости.
 
|-
 
| UserId
 
| Идентификатор пользователя в системе Немо, оформившего заказ.
 
| Число. Пример: 123.
 
|-
 
| UserLogin
 
| Логин пользователя в системе Немо, оформившего заказ.
 
| Строка. Пример: userLogin.
 
|-
 
| GroupId
 
| Идентификатор группы пользователя в системе Немо, оформившего заказ.
 
| Число. Пример: 122.
 
|-
 
| UserStatus
 
| Тип пользователя в системе Немо.
 
| Строка. Пример: Менеджер.
 
|-
 
| DateCreate
 
| Дата и время резервирования в системе поставщика.
 
| Дата и время. Пример: 2014.03.05-15:08
 
|}
 
 
 
'''Элемент TotalPrice'''
 
{| style="width: 800px" class="wikitable"
 
|-
 
! scope="col" width="200" | Элемент
 
! scope="col" width="300" | Описание
 
! scope="col" width="300" | Допустимые значения
 
|-
 
| Amount
 
| Номинал.
 
| Число. Пример: 1884.
 
|-
 
| CurrencyCode
 
| Валюта.
 
| Строка (Код ISO 4217 alfa-3). Пример: RUB.
 
|}
 
 
 
'''Элемент Payment'''
 
{| style="width: 800px" class="wikitable"
 
|-
 
! scope="col" width="200" | Элемент
 
! scope="col" width="300" | Описание
 
! scope="col" width="300" | Допустимые значения
 
|-
 
| Title
 
| Название платежного шлюза<sup>*</sup>.
 
| Строка. Пример: Testpay.
 
|-
 
| Method
 
| Тип формы оплаты<sup>*</sup>.
 
| Строка. Пример: Testpay.
 
|-
 
| BillingId
 
| Идентификатор транзакции Немо.
 
| Строка. Пример: 117603370.
 
|-
 
| Date
 
| Дата и время оплаты платежной транзакции Немо.
 
| Строка. Пример: 2014-04-24 15:10:12.
 
|-
 
| CreateDate
 
| Дата и время создания платежной транзакции Немо.
 
| Строка. Пример: 2014-06-06 15:10:00.
 
|-
 
| Status
 
| Статус заказа в системе Немо.
 
| Строка. Пример: booked.<br/>Допустимые значения:
 
<ul>
 
<li>pending — в ожидании,</li>
 
<li>booked — зарезервирован,</li>
 
<li>ticket — выписан,</li>
 
<li>cancelled — отменен.</li>
 
</ul>
 
|-
 
| PenaltyDate
 
| Дата и время наступления штрафных санкций.
 
| Дата и время. Пример: 2014-03-05 15:23:40.
 
|-
 
| Timelimit
 
| Таймлимит на оплату и подтверждение заказа.
 
| Дата и время. Пример: 2014-03-05 15:23:40.
 
|-
 
| Charge
 
| Сбор агентства.
 
| См. элемент Common.TotalPrice.
 
|-
 
| Book
 
| Тариф.
 
| См. элемент Common.TotalPrice.
 
|-
 
| Penalty
 
| Штраф.
 
<br/><span style="background-color:#fff0f5;">'''<span style="color:#ff0000;">Внимание!</span>''' На данный момент параметр неактуален и при выгрузке всегда принимает нулевое значение.</span>
 
| См. элемент Common.TotalPrice.
 
|-
 
| TotalAgencyChargeForRefund
 
| Общий сбор агентства за возврат.
 
| См. элемент Common.TotalPrice.
 
|-
 
| Total
 
| Общая стоимость.
 
| См. элемент Common.TotalPrice.
 
|-
 
| PaidValue
 
| Оплачено.
 
| См. элемент Common.TotalPrice.
 
|}
 
 
 
<sup>*</sup> — список возможный платежных шлюзов:<br/>
 
Acquiro, Chronopay, Copayco, CourierNew, Deposit, EasyPay, GatelineNew, ITransfer, Invoice, Offices, PayU, Payture, Platron, PrivatBank, Qiwi, Rapida, Receipt, Sberbank, Sirena, Sirena2, UnitellerNew, WebMoney.
 
 
 
'''Элемент Client'''
 
{| style="width: 800px" class="wikitable"
 
|-
 
! scope="col" width="200" | Элемент
 
! scope="col" width="300" | Описание
 
! scope="col" width="300" | Допустимые значения
 
|-
 
| Name
 
| Фамилия и имя заказчика.
 
| Строка. Пример: Иванов Иван.
 
|-
 
| MiddleName
 
| Отчество заказчика.
 
| Строка. Пример: Иванович.
 
|-
 
| Number
 
| Серия и номер документа.
 
| Строка. Пример: 1806123456.
 
|-
 
| Birth
 
| Дата рождения заказчика.
 
| Дата. Пример: 1984-06-30.
 
|-
 
| Email
 
| Адрес электронной почты заказчика.
 
| Строка. Пример: client@host.com.
 
|-
 
| Phone
 
| Номер телефона заказчика.
 
| Строка. Пример: +74951234567
 
|}
 
 
 
'''Элемент Passenger'''
 
{| style="width: 800px" class="wikitable"
 
|-
 
! scope="col" width="200" | Элемент
 
! scope="col" width="300" | Описание
 
! scope="col" width="300" | Допустимые значения
 
|-
 
| lastname
 
| Фамилия пассажира.
 
| Строка. Пример: Сидоров.
 
|-
 
| name
 
| Имя пассажира.
 
| Строка. Пример: Владимир.
 
|-
 
| middlename
 
| Отчество пассажира.
 
| Строка. Пример: Константинович.
 
|-
 
| doc_type
 
| Тип документа.
 
| Строка. Пример: C.<br/>Допустимые значения:
 
<ul>
 
<li>C — Российский паспорт</li>
 
<li>P — Заграничный паспорт</li>
 
<li>A — Иностранный документ</li>
 
<li>S — Паспорт моряка</li>
 
<li>M — Военный билет</li>
 
<li>B — Свидетельство о рождении</li>
 
</ul>
 
|-
 
| passport_number
 
| Серия и номер документа.
 
| Строка. Пример: 1806123456.
 
|-
 
| gender
 
| Пол пассажира.
 
| Строка. Пример: M.<br/>Допустимые значения:
 
<ul>
 
<li>M — мужской</li>
 
<li>F — женский</li>
 
</ul>
 
|-
 
| date_of_birth
 
| Дата рождения пассажира.
 
| Дата. Пример: 20.05.1987.
 
|-
 
| nationality
 
| Гражданство пассажира.
 
| Строка (ISO 3166-1 Alpha-2). Пример: RU.
 
|-
 
| passenger_type
 
| Тип пассажира.
 
| Строка. Пример: ADT.<br/>Допустимые значения:
 
<ul>
 
<li>ADT — взрослый</li>
 
<li>CLD — ребенок до 10 лет<sup>*, **</sup></li>
 
<li>INF — ребенок до 5 лет<sup>*, ***</sup></li>
 
</ul>
 
|-
 
| passenger_id
 
| Порядковый номер пассажира в заказе.
 
| Число. Пример: 2.
 
|-
 
| TotalPrice
 
| Общая стоимость билета со сборами для данного пассажира.
 
| Число. Пример: 1934.
 
|-
 
| FarePrice
 
| Стоимость по тарифу тарифу.
 
| Число. Пример: 1884.
 
|-
 
| Charge
 
| Сбор агентства.
 
| Число. Пример: 50.
 
|-
 
| RefundMoney
 
| Сумма к возврату. Значение, полученное от поставщика, уменьшенное на сумму сбора агентства за возврат.
 
| Число. Пример: 1643.
 
|-
 
| ChargeForRefund
 
| Cбор агентства за возврат.
 
| Число. Пример: 100.
 
|-
 
| TicketNumber
 
| Номер билета.
 
| Число. Пример: 73944708472624.
 
|-
 
| SeatNumber
 
| Номер места.
 
| число. Пример: 21.
 
|-
 
| TariffType
 
| Наименование тарифа.
 
| Строка. Пример: ПОЛНЫЙ.
 
|-
 
| HasSeat
 
| Занимает ли пассажир отдельное место.
 
| Допустимые значения:<ul><li>true — с местом,</li><li>false — без места.</li></ul>
 
|}
 
 
 
<sup>*</sup> — Не включая верхний предел. Возраст ребенка определяется на день совершения поездки.
 
 
 
<sup>**</sup> — Нижний и верхний пределы определяются видом сообщения:
 
* от 5 до 10 лет — Внутригосударственное сообщение, а также международное сообщение со странами-участниками СНГ, Литовской, Латвийской, Эстонской Республиками, Республикой Абхазия.
 
* от 6 до 17 лет — Международное сообщение в дальнем зарубежье по глобальным ценам. Направление Россия-Финляндия.
 
* от 4 до 12 лет — Международное сообщение в дальнем зарубежье по глобальным ценам. Направление Восток-Запад.
 
 
 
<sup>***</sup> — Верхний предел определяется видом сообщения:
 
* до 5 лет — Внутригосударственное сообщение, а также международное сообщение со странами-участниками СНГ, Литовской, Латвийской, Эстонской Республиками, Республикой Абхазия.
 
* до 6 лет — Международное сообщение в дальнем зарубежье по глобальным ценам. Направление Россия-Финляндия.
 
* до 4 лет — Международное сообщение в дальнем зарубежье по глобальным ценам. Направление Восток-Запад.
 
 
 
'''Элемент Passenger'''
 
{| style="width: 800px" class="wikitable"
 
|-
 
! scope="col" width="200" | Элемент
 
! scope="col" width="300" | Описание
 
! scope="col" width="300" | Допустимые значения
 
|-
 
| trainNumber
 
| Номер поезда.
 
| Строка. Пример: 098ХА.
 
|-
 
| trainName
 
| Имя фирменного поезда. Приходит от поставщика.
 
| Строка. Пример: Россия.
 
|-
 
| departureStation
 
| Станция отправления пассажира.
 
| Строка. Пример: МОСКВА КАЗ.
 
|-
 
| arrivalStation
 
| Станция прибытия пассажира.
 
| Строка. Пример: КАЗАНЬ ПАС.
 
|-
 
| trainCategory
 
| Тип поезда.
 
| Число. Пример: 1.<br/>Допустимые значения:
 
<ul>
 
<li>0 — неизвестный тип поезда</li>
 
<li>1 — скорый поезд</li>
 
<li>2 — фирменный поезд</li>
 
<li>3 — скоростной поезд</li>
 
<li>4 — фирменный скоростной поезд</li>
 
</ul>
 
|-
 
| beginStation
 
| Начальная станция в маршруте поезда.
 
| Строка. Пример: Казань
 
|-
 
| endStation
 
| Конечная станция в маршруте поезда.
 
| Строка. Пример: Москва
 
|-
 
| startDate
 
| Дата и время отправления со станции отправления пассажира.
 
| Дата и время. Пример: 2014-03-06 00:15:00.
 
|-
 
| endDate
 
| Дата и время прибытия со станции отправления пассажира.
 
| Дата и время. Пример: 2014-03-06 13:33:00.
 
|-
 
| timeInRoad
 
| Время в пути от станции отправления до станции прибытия пассажира.
 
| Число (секунд). Пример: 47880.
 
|-
 
| carNumber
 
| Номер вагона.
 
| Число. Пример: 7.
 
|-
 
| carType
 
| Тип вагона.
 
| Число. Пример: 1.<br/>Допустимые значения:
 
<ul>
 
<li>1 - общий вагон</li>
 
<li>2 - сидячий вагон</li>
 
<li>3 - плацкарта</li>
 
<li>4 - купе</li>
 
<li>5 - люкс</li>
 
<li>6 - мягкий</li>
 
<li>7 - неизвестный тип</li>
 
</ul>
 
|-
 
| choosenSeats
 
| Элемент описывает количество нижних, нижних боковых, верхних, верхних боковых мест.
 
| Элементы type.
 
|-
 
| choosenRange
 
| Выбранный диапазон мест в вагоне.
 
| Элементы start, end.
 
|-
 
| serviceClass
 
| Описание услуг. Приходит от поставщика.
 
| Текст. Пример: В стоимость входит - постельное белье. Наличие установки кондиционирования воздуха не гарантировано.
 
|}
 
 
 
'''Элемент type'''
 
{| style="width: 800px" class="wikitable"
 
|-
 
! scope="col" width="200" | Элемент
 
! scope="col" width="300" | Описание
 
! scope="col" width="300" | Допустимые значения
 
|-
 
| lower
 
| Количество нижних мест.
 
| Число. Пример: 1.
 
|-
 
| upper
 
| Количество верхних мест.
 
| Число. Пример: 0.
 
|-
 
| lower_side
 
| Количество нижних боковых мест.
 
| Число. Пример: 1.
 
|-
 
| upper_side
 
| Количество верхних боковых мест.
 
| Число. Пример: 1.
 
|-
 
| undefined
 
| Количество мест неопределенного типа.
 
| Число. Пример: 0.
 
|}
 
 
 
'''Элемент choosenRange'''
 
{| style="width: 800px" class="wikitable"
 
|-
 
! scope="col" width="200" | Элемент
 
! scope="col" width="300" | Описание
 
! scope="col" width="300" | Допустимые значения
 
|-
 
| start
 
| Начало выбранного диапазон мест в вагоне<sup>*</sup>.
 
| Число. Пример: 4.
 
|-
 
| end
 
| Конец выбранного диапазон мест в вагоне<sup>*</sup>.
 
| Число. Пример: 17.
 
|}
 
 
 
<sup>*</sup> — Если диапазон не был зада пользователем на этапе выбора мест, то поля start и end будут содержать нули.
 
 
 
</div>
 
</div>
 
 
 
=== Пакетный экспорт заказов по категориям в формате Nemo ===
 
Сервис выгрузки заказов позволяет экспортировать интересующие выборки по заказам в формате XML. Например, можно выбрать все заказы по дате бронирования и получить информацию по ним в XML-виде.
 
 
 
==== Экспорт заказов под авторизованным пользователем (в личном кабинете) ====
 
[[Файл:Экспортировать_в_XML_(ЛК).png|400px|thumb|right|Фильтры пакетного экспорта заказов в личном кабинете]]
 
Порядок пользования сервисом:
 
# Перейти в личный кабинет
 
# В адресной строке браузера к текущему адресу дописать параметр '''''&exportxml'''''. Должен получиться адрес вида: <syntaxhighlight lang="text" enclose="div" style="font-size:9pt;background: #F9F9F9; border: 1px dashed #2F6FAB; padding: 10px 5px; margin: 10px 0; width: 800px;">
 
http://DOMAIN/index.php?go=poffice/table&exportxml
 
</syntaxhighlight>
 
# После обновления страницы под блоком фильтров должна появиться кнопка '''«Экспортировать в XML»'''. При ее нажатии на странице появляется предложение сохранить в XML-файл выборку отфильтрованных заказов.
 
 
 
Выгружаются только заказы выбранного пользователя/компании с учетом примененных параметров фильтра.
 
 
 
Пользователь может произвести выгрузку только своих заказов.
 
 
 
=== Пакетный экспорт заказов по категориям в формате СОФИ ===
 
Для использования выгрузки заказов в формате СОФИ у агентства должен быть включен модуль "Выгрузка заказов Софи" и заданы настройки:
 
* "Тип выгрузки СОФИ" должен иметь значение "Выгрузка заказов СОФИ" или должна быть включена настройка "Выгрузка одновременно и Nemo, и Софи",
 
* Должен быть указан "Url скрипта для выгрузки в формате СОФИ",
 
* Должен быть указан "Код сайта в системе СОФИ".
 
 
 
Выгрузка конкретного заказа:
 
http://DOMAIN/booking__sofi_export_bookings&booking_id=123456
 
где booking_id — номер заказа в системе Немо.
 
 
 
Выгрузка заказов забронированных за определенный период:
 
http://DOMAIN/booking__sofi_export_bookings&date_begin=01.01.2014&date_end=01.01.2015
 
где [date_begin; date_end] — период бронирования заказа (забронированные заказы с датой бронирования совпадающей с началом/окончанием периода, заданного в запросе, попадают в экспорт), формат — дд.мм.гггг.
 
 
 
==Фиксация оплаты внешним запросом==
 
!!! не нашел, есть просто фиксация оплаты, но это вроде немного не то !!!
 
 
 
==API универсального платежного шлюза==
 
!!! сказано спросить у КШ, я спросил, у него нет информации !!!
 
 
 
== API Синхронизации пользователей и субагентов ==
 
Назначение данного модуля — обеспечение взаимодействия между сторонней программой (например, системой автоматизации туроператора "САМО-тур") и Nemo в части синхронизации списка B2B-пользователей.
 
 
 
Модуль является компонентом, включаемым и отключаемым из административной части.
 
=== Авторизация B2B-пользователей ===
 
 
 
Все B2B-пользователи, загруженные через модуль взаимодействия со сторонней программой, будут иметь случайным образом сгенерированный криптостойкий [[пароль]]. Механизм авторизации работает следующим образом:
 
 
 
1.Система пытается авторизовать пользователя через собственную службу авторизации.
 
2.В случае неудачи, но присутствия в системе введенного логина, она должна попытаться авторизовать пользователя во внешней службе авторизации («САМО-тур»), при включенном компоненте взаимодействия с «САМО-тур».
 
3.В случае неудачного опознавания пользователя выводится соответствующее сообщение и процедура может быть повторена путем повторного ввода логина и пароля.
 
 
 
Регистрация неудачных попыток входа производится только в двух случаях:
 
*Компонент взаимодействия выключен.
 
*Компонент взаимодействия включен и провалены обе попытки авторизации (внутренней и внешней).
 
 
 
Для сторонней авторизации пользователей в системе Nemo внешняя программа должна иметь веб-службу, основанную на WSDL определенного формата. Ссылка на веб-службу прописывается в настройках системы Nemo на странице конфигурации интеграции с внешней системой.
 
 
 
Для импортированных пользователей в Nemo имеется поле «Идентификатор внешней системы», который отвечает за сопоставление с ID пользователя в сторонней системе. Для менеджеров агентств оно равно номеру партнера (агента) во внешней системе, для пользователей — номеру пользователя в «САМО-туре».
 
 
 
Для пользователей, имеющих какое-либо значение в поле «идентификатор во внешней системе», запрещен функционал смены пароля или его восстановления по электронной почте.
 
 
 
Пример запросов и ответов на авторизацию:
 
 
 
'''Request'''
 
<pre><?xml version="1.0" encoding="utf-8"?>
 
<soap12:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"
 
xmlns:soap12="http://www.w3.org/2003/05/soap-envelope">
 
  <soap12:Body>
 
    <getAuthorization xmlns="http://tempuri.org/">
 
      <login>string</login>
 
      <pass>string</pass>
 
    </getAuthorization>
 
  </soap12:Body>
 
</soap12:Envelope></pre>
 
 
 
'''Response'''
 
<pre><?xml version="1.0" encoding="utf-8"?>
 
<soap12:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"
 
xmlns:soap12="http://www.w3.org/2003/05/soap-envelope">
 
  <soap12:Body>
 
    <getAuthorizationResponse xmlns="http://tempuri.org/">
 
      <getAuthorizationResult>
 
        <session_id>string</session_id>
 
        <user_id>string</user_id>
 
        <login>string</login>
 
        <status>string</status>
 
      </getAuthorizationResult>
 
    </getAuthorizationResponse>
 
  </soap12:Body>
 
</soap12:Envelope></pre>
 
 
 
Сервис реализует функцию «getAuthorization», на вход которой передается конструкция «getAuthorizationRequest»:
 
 
 
*login (строка) - введенный пользователем логин
 
*pass (строка) - введенный пользователем пароль
 
 
 
Функция должна отдавать системе конструкцию getAuthorizationResponse:
 
 
 
*session_id (строка) - пустое значение
 
*user_id (строка) - идентификатор менеджера в системе «САМО-тур»
 
*login (строка) - логин пользователя (для контроля)
 
*status (строка) - может иметь значения:
 
1. adm - администратор
 
2. mgr - менеджер
 
3. usr - пользователь (возвращается всегда это значение)
 
 
 
=== Импорт и синхронизация учетных записей ===
 
 
 
Со стороны внешней системы должно быть приложение, отправляющее в формате XML данные по учетным записям B2B-клиентов (агентств и пользователей). Со стороны Nemo имеется скрипт, который принимает XML в формате, приведенном в описании документов, передаваемых в Nemo, с ключом авторизации, определенным в Nemo в административной части модуля.
 
 
 
Передаваемые элементы с описанием учетных записей и партнеров имеют аккаунт (Account ID) во внешней системе и атрибут action, который может быть в состоянии update или delete, т.е. обновления/добавления и удаления, соответственно.
 
 
 
В административной части модуля в Nemo задается ключ авторизации для защиты от несанкционированного доступа. Значение не должно быть пустым.
 
 
 
Скрипт получает данные об обновлении и добавлении (проходят как одно и то же действие) или удалении информации по аккаунту. XML-данные могут содержать несколько элементов.
 
 
 
Описание передаваемых в Nemo XML-документов:
 
 
 
<pre><?xml version="1.0" encoding="UTF-8" ?>
 
<changes key="ключ_авторизации">
 
    <accounts> - список изменений по аккаунтам пользователей
 
        <item id=3 partnerId=10 action="update" admin="1">
 
            <login>Логин пользователя</login>
 
        </item>
 
        <item id=6 partnerId=15 action="update">
 
            ...
 
        </item>
 
        <item id=9 partnerId=30 action="delete" />
 
    </accounts>
 
    <partners> - список изменений по партнерам
 
        <item id=140 action="update">
 
            <name>Название агентства</name>
 
            <ofname>Официальное Название агентства</ofname>
 
            <phone>Телефон</phone>
 
            <tax>Форма налогообложения</tax>
 
            <group>123</group>
 
            <code>ABCD</item>
 
  </partners></changes></code></pre>
 
 
 
При импорте информации об агентствах будут возвращаться следующие значения:
 
 
 
<table border="1">
 
<tr class="row0" bgcolor="#CCCCCC">
 
<th class="col0">Поле во внешней системе </th><th class="col1"> Путь к элементу xml </th><th class="col2"> Тип данных </th><th class="col3"> Сопоставляемое поле в Nemo </th><th class="col4"> Примечание </th>
 
  
 
</tr>
 
</tr>
<tr class="row1">
+
<tr class="row86">
<td class="col0">Идентификатор партнера</td><td class="col1">/changes/partners/item[@id]</td><td class="col2 leftalign">Целое число </td><td class="col3 leftalign">Идентификатор во внешней системе для менеджера / администратора </td><td class="col4"></td>
+
<td class="col0">Code</td><td class="col1">да</td><td class="col2">строка</td><td class="col3">Код тарифа</td>
 
</tr>
 
</tr>
<tr class="row2">
+
<tr class="row87">
<td class="col0">Название юридического лица</td><td class="col1">/changes/partners/item/ofname</td><td class="col2">Строка</td><td class="col3">Полное официальное название юридического лица </td><td class="col4">Необходимо для выписки счетов юридическими лицами</td>
+
<td class="col0">SegNum</td><td class="col1">да</td><td class="col2">число</td><td class="col3">Номер сегмента для которого применяется тариф, если тариф применяется для всех сегментов, то возвращается 0.</td>
  
 
</tr>
 
</tr>
<tr class="row3">
+
<tr class="row88">
<td class="col0">Сокращенное название</td><td class="col1">/changes/partners/item/name</td><td class="col2">Строка</td><td class="col3 leftalign">Имя агентства </td><td class="col4"></td>
+
<td class="col0">FareCalc</td><td class="col1">нет</td><td class="col2">строка</td><td class="col3">Строка расчёта цены</td>
 
</tr>
 
</tr>
<tr class="row4">
+
<tr class="row89">
<td class="col0">Код агентства</td><td class="col1">/changes/partners/item/code</td><td class="col2">Строка</td><td class="col3">Используется при создании логина администратора</td><td class="col4"></td>
+
<td class="col0">LastTicketDateTime</td><td class="col1">да</td><td class="col2">строка</td><td class="col3">Дата и время таймлимита по выписке в формате ГГГГ-MM-ДДTЧЧ:ММ:СС. Если бронирование не будет аннулировано или выписано до этого времени, то могут быть применены штрафы.</td>
  
 
</tr>
 
</tr>
<tr class="row5">
 
<td class="col0">Номер группы в самотуре</td><td class="col1">/changes/partners/item/group</td><td class="col2">Целое число, либо пусто</td><td class="col3 leftalign">На основании таблицы сопоставлений (см. ниже) определяется, к какой группе агентство принадлежит в Nemo </td><td class="col4"></td>
 
</tr>
 
<tr class="row6">
 
<td class="col0">Форма налогообложения</td><td class="col1">/changes/partners/item/tax</td><td class="col2">Целое число, равное идентификатору во внешней системе</td><td class="col3"></td><td class="col4"></td>
 
</tr>
 
 
</table>
 
</table>
 +
</div>
 +
</div>
  
Для каждого возвращенного агентства Nemo проверяет наличие его в своей базе. Если [[агентство]] не найдено, то создается новое, для него создается менеджер (админ) с логином ABCD-1234, где ABCD – буквенный идентификатор партнера во внешней системе, 1234 — id партнера во внешней системе. Пароль генерируется случайный и криптостойкий.
+
==API Отелей==
 +
'''Агентский API Отелей''' - система, которая предоставляет возможность поиска и бронирования отелей а так же получение информации о времени и размерах штрафов, уникальной информации об отеле, получение статической информации.
 +
 
 +
Подробнее можно узнать в нашей специальной статье [http://support.nemo.travel/ru/%D0%90%D0%B3%D0%B5%D0%BD%D1%82%D1%81%D0%BA%D0%B8%D0%B9_API_%D0%9E%D1%82%D0%B5%D0%BB%D0%B5%D0%B9 Агентский АПИ отелей]
  
Если агентство найдено, то в случае необходимости производится обновление всех полей на основании данных из внешней системы. Если изменился буквенный код агентства, то Nemo переименовывает менеджера в соответствии с новым кодом. При импорте информации о пользователях агентств в Nemo будут посылаться следующие поля:
 
  
<table border="1">
 
<tr class="row0" bgcolor="#CCCCCC">
 
<th class="col0">Поле во внешней системе</th><th class="col1">Путь к элементу xml</th><th class="col2">Тип данных</th><th class="col3">Сопоставляемое поле в Nemo</th><th class="col4">Примечание</th>
 
  
</tr>
+
==Выгрузки статистики продаж через API (Метапоиск)==
<tr class="row1">
 
<td class="col0">Идентификатор пользователя</td><td class="col1">/changes/accounts/item[@id]</td><td class="col2">Целое число</td><td class="col3">Идентификатор внешней системы</td><td class="col4">Храним как дополнительное поле </td>
 
</tr>
 
<tr class="row2">
 
<td class="col0">Идентификатор партнера</td><td class="col1">/changes/accounts/item[@partnerId]</td><td class="col2">Целое число</td><td class="col3">Идентификатор внешней системы менеджера агентства</td><td class="col4"></td>
 
  
</tr>
+
'''Метапоисковая система''' (метапоисковая машина, метапоисковик) — это поисковая система, которая в отличие от классических поисковых машин не имеет собственной базы данных и собственного поискового индекса, а формирует поисковую выдачу за счет смешивания и переранжирования результатов поиска других поисковых систем.
<tr class="row3">
 
<td class="col0">Логин</td><td class="col1">/changes/accounts/item/login</td><td class="col2">Строка</td><td class="col3">Логин пользователя</td><td class="col4"></td>
 
</tr>
 
<tr class="row4">
 
<td class="col0">Администратор</td><td class="col1">/changes/accounts/item[@admin]</td><td class="col2">0 - нет, 1 - да</td><td class="col3 leftalign">Эксперт по бронированию </td><td class="col4"></td>
 
  
</tr>
+
В разделе статистики заказов из метапоисков можно получить данные по статистике метапоиска (по источнику переходов модуля метрики) <u>за определенный период бронирования заказов</u> в виде файла данных в формате XML.
</table>
 
  
Для каждого возвращенного пользователя Nemo проверяет наличие его в своей базе. Если пользователь не найден, то создается новый. Пароль генерируется случайный и криптостойкий.
+
Можно получить список заказов с их статусом (забронирован, выписан, аннулирован), сделанных через метапоисковую систему.
  
Если [[пользователь]] найден, то в случае необходимости производится обновление всех полей на основании данных из внешней системы. При запросе на удаление пользователя, в Nemo указанный логин удаляться не будет в целях сохранения целостности старых данных, а просто помечается как удаленный, и логин переименовывается и становится вида [логин_пользователя]_X_[числовой идентификатор_пользователя в Само].
+
Подробнее можно узнать в статье посвященной взаимодействию с метопоисковиками [[Взаимодействие с метапоисковиками]]
  
<pre><item id=[идентификатор] action="delete" /></pre>
+
==Выгрузка информации о заказах ==
 +
'''Выгрузка заказов''' — это экспорт данных заказа или заказов для различных компонентов системы Nemo. Модуль позволяет внешней системе получать данные по заказам для дальнейшей обработки.
 +
Подробнее о процессе выгрузки, настройках, форматах выгрузки для различных компонент можно прочитать в статье [[Выгрузка]]
  
=== Таблица сопоставлений групп ===
+
== API Синхронизации пользователей и субагентов ==
 +
Назначение данного модуля — обеспечение взаимодействия между сторонней программой (например, системой автоматизации туроператора "САМО-тур") и Nemo в части синхронизации списка B2B-пользователей.
 +
Модуль является компонентом, включаемым и отключаемым из административной части.
  
В административной части Nemo надо создать отдельную страницу, на которой можно сопоставить имеющиеся  [[Пользователь#Группы в Nemo|группы в Nemo]] номерам групп в САМО-тур (поле group в XML). Выводится список существующих групп для текущего (корневого) агентства.
+
О механизме авторизации B2B-пользователей, синхронизации учетных записей можно прочитать в статье [[Синхронизация пользователей]]
  
 
==API Кросс­авторизации==
 
==API Кросс­авторизации==
Система Nemo позволяет обращаться к ней как базе пользователей для авторизации из других систем (например форума на сайте, собственного ПО компании и т.п)
+
'''Авторизация пользователей из внешних систем''' — Система Nemo позволяет обращаться к ней как базе пользователей для авторизации из других систем (например форума на сайте, собственного ПО компании и т.п)
  
 
Для этого нужно подключиться к веб-службе авторизации, WSDL-описание которой располагается по адресу:
 
Для этого нужно подключиться к веб-службе авторизации, WSDL-описание которой располагается по адресу:
Строка 3436: Строка 762:
 
</div></div>
 
</div></div>
  
 +
==Передача параметров в форму поиска (FastSearch)==
  
==Передача параметров в форму поиска==
 
{{Contract}}
 
 
В системе Nemo имеется возможность перенаправлять пользователей на страницу с уже заполненными параметрами поиска или сразу напрямую на результаты поиска.
 
В системе Nemo имеется возможность перенаправлять пользователей на страницу с уже заполненными параметрами поиска или сразу напрямую на результаты поиска.
  
=== Применение ===
+
Примеры FastSearch запросов и используемые переменные подробно описаны в статье [[FastSearch - передача параметров в форму]]  
Эта технология может использоватся к примеру для формирования ссылок с баннеров, при клике на которые пользователь попадает на форму, на которой уже могут быть заполнены пункты назначения, даты, количество пассажиров и прочие параметры.
 
 
 
Также, при указании всех необходимых параметров, пользователя можно перебрасывать сразу на процесс поиска авиабилетов с указанными критериями.
 
 
 
Для использования заполнения формы из URL следует включить опцию: '''Администрирование''' → '''Настройки системы''' → '''''Включить FastSearch (передачу параметров поиска)'''''
 
 
 
После этого можно использовать ссылки на форму поиска вида
 
 
 
<pre>http://SITEMANE/?trip_type=OW&out_iata=MOW&in_iata=BER&departure_date=21.10.2009&adults=1&children=0&input_vendors=SU,PS&param_by_get=on</pre>
 
 
 
=== Переменные FastSearch ===
 
Имена полей - такие же как имена инпутов на поисковой форме.
 
 
 
Следите за тем, чтобы значения соответствовали установленным в настройках ограничениям.
 
 
 
Переменные, которые предполагают в качестве значения "true" можно просто не включать в запрос, чтобы их логика не отработала.
 
 
 
==== Форма поиска ====
 
Чтобы перенаправить пользователя на страницу с заполненными параметрами поиска, необходимо указать get-параметр '''&param_by_get=on''', иначе сработают стандартные предустановки полей формы поиска.
 
 
 
==== Процесс поиска ====
 
Если вы указываете все необходимые для поиска параметры, то для того чтобы отправить пользователя сразу на результаты поиска, нужно указать get-параметр '''&fast_search=on'''.
 
 
 
==== Маршрут «В одну сторону» и «Туда и обратно» ====
 
{| style="width: 800px;" class="wikitable"
 
|-
 
! scope="col" width="300" | Элемент
 
! scope="col" width="250" | Переменная
 
! scope="col" width="250" | Допустимые значения
 
|-
 
| Тип маршрута
 
| trip_type
 
| style="padding: 0;" |
 
 
 
{| style="width: 257px; height: 100%; margin: -1px;" class="wikitable"
 
|-
 
| width="80" | OW
 
| В одну сторону
 
|-
 
| RT
 
| Туда и обратно
 
|-
 
| CR
 
| Сложный маршрут
 
|}
 
 
 
|-
 
| Пункт вылета
 
| out_iata
 
| style="padding: 0;" |
 
 
 
{| style="width: 257px; height: 100%; margin: -1px;" class="wikitable"
 
|-
 
| width="80" | MOW
 
| Код аэропорта ИАТА
 
|}
 
 
 
|-
 
| Пункт прилета
 
| in_iata
 
| style="padding: 0;" |
 
 
 
{| style="width: 257px; height: 100%; margin: -1px;" class="wikitable"
 
|-
 
| width="80" | LED
 
| Код аэропорта ИАТА
 
|}
 
 
 
|-
 
| Дата вылета
 
| departure_date
 
| style="padding: 0;" |
 
 
 
{| style="width: 257px; height: 100%; margin: -1px;" class="wikitable"
 
|-
 
| width="80" | 25.10.2013
 
| Дата в формате ДД.ММ.ГГГГ
 
|}
 
 
 
|-
 
| Дата обратного вылета
 
| back_departure_date
 
| style="padding: 0;" |
 
 
 
{| style="width: 257px; height: 100%; margin: -1px;" class="wikitable"
 
|-
 
| width="80" | 27.10.2013
 
| Дата в формате ДД.ММ.ГГГГ
 
|}
 
 
 
|-
 
| Время вылета
 
| prefered_departure_type
 
| style="padding: 0;" |
 
 
 
{| style="width: 257px; height: 100%; margin: -1px;" class="wikitable"
 
|-
 
| width="80" | not_important
 
| Любое время
 
|-
 
| morning
 
| Утром
 
|-
 
| afternoon
 
| Днем
 
|-
 
| evening
 
| Вечером
 
|-
 
| night
 
| Ночью
 
|}
 
 
 
|-
 
| Время обратного вылета
 
| prefered_back_departure_type
 
| style="padding: 0;" |
 
 
 
{| style="width: 257px; height: 100%; margin: -1px;" class="wikitable"
 
|-
 
| width="80" | not_important
 
| Любое время
 
|-
 
| morning
 
| Утром
 
|-
 
| afternoon
 
| Днем
 
|-
 
| evening
 
| Вечером
 
|-
 
| night
 
| Ночью
 
|}
 
 
 
|-
 
| Поиск только среди прямых рейсов ("Без пересадок")
 
| direct
 
| true
 
|}
 
 
 
===== Дополнительные параметры =====
 
{| style="width: 800px" class="wikitable"
 
|-
 
! scope="col" width="300" | Элемент
 
! scope="col" width="250" | Переменная
 
! scope="col" width="250" | Допустимые значения
 
|-
 
| Нижнее ограничение по цене по умолчанию
 
| money_from
 
| style="padding: 0;" |
 
 
 
{| style="width: 257px; height: 100%; margin: -1px;" class="wikitable"
 
|-
 
| width="80" | 0
 
| Целое число большее либо равное 0
 
|}
 
 
 
|-
 
| Верхнее ограничение по цене по умолчанию
 
| money_to
 
| style="padding: 0;" |
 
 
 
{| style="width: 257px; height: 100%; margin: -1px;" class="wikitable"
 
|-
 
| width="80" | 10000
 
| Целое число большее 0
 
|}
 
 
 
|-
 
| Поиск в окружных датах
 
| district_date
 
| true
 
|-
 
| Диапазон соседних дат +(-) [дней]
 
| date_range
 
| style="padding: 0;" |
 
 
 
{| style="width: 257px; height: 100%; margin: -1px;" class="wikitable"
 
|-
 
| width="80" | 1
 
| Целое число большее [1..3]
 
|}
 
 
 
|-
 
| Поиск по соседним аэропортам
 
| district_airport
 
| true
 
|-
 
| Класс обслуживания
 
| class
 
| style="padding: 0;" |
 
 
 
{| style="width: 257px; height: 100%; margin: -1px;" class="wikitable"
 
|-
 
| econom
 
| Перелет эконом-классом
 
|-
 
| business
 
| Перелет бизнес-классом
 
|-
 
| first
 
| Перелет первым-классом
 
|}
 
 
 
|-
 
| Фильтр по авиакомпании 
 
| input_vendors
 
| style="padding: 0;" |
 
 
 
{| style="width: 257px; height: 100%; margin: -1px;" class="wikitable"
 
|-
 
| width="80" | SU,PS
 
| Коды авиакомпании ИАТА через запятую без пробелов
 
|}
 
 
 
|-
 
| Сортировка
 
| sort
 
| style="padding: 0;" |
 
 
 
{| style="width: 257px; height: 100%; margin: -1px;" class="wikitable"
 
|-
 
| width="80" | price
 
| По стоимости
 
|-
 
| out_date
 
| По расписанию
 
|-
 
| company
 
| По авиакомпании
 
|-
 
| fltduration
 
| По длительности перелёта
 
|}
 
 
 
|}
 
 
 
==== Сложный маршрут ====
 
<span style="font-size: large; color: rgb(255, 0, 0);">!&nbsp;</span><span style="background-color: rgb(255, 240, 245);">&nbsp;Данные переменные применимы только для сложного маршрута ('''trip_type=CR''').</span>
 
 
 
'''[X]''' - номера отдельных перелетов. Нумерация начинается с 0, что означает первый перелет.
 
 
 
Максимальное количество сегментов для сложного маршрута определяется одноименной настройкой в разделе '''Авиабилеты ⇨ Поиск ⇨ Ограничения поиска'''.
 
 
 
{| style="width: 800px;" class="wikitable"
 
|-
 
! scope="col" width="300" | Элемент
 
! scope="col" width="250" | Переменная
 
! scope="col" width="250" colspan="2" | Допустимые значения
 
|-
 
| Пункты вылета
 
| cr_iata[0]<br/>
 
cr_iata[1]<br/>
 
...<br/>
 
cr_iata[8]
 
| width="80" | MOW
 
| Код аэропорта ИАТА
 
|-
 
| Пункты прилета
 
| cr_back_iata[0]<br/>
 
cr_back_iata[1]<br/>
 
...<br/>
 
cr_back_iata[8]
 
| width="80" | LED
 
| Код аэропорта ИАТА
 
|-
 
| Дата вылета
 
| cr_date[0]<br/>
 
cr_date[1]<br/>
 
...<br/>
 
cr_date[8]
 
| width="80" | 25.10.2013
 
| Дата в формате ДД.ММ.ГГГГ
 
|-
 
| Время вылета
 
| cr_pref_departure[0]<br/>
 
cr_pref_departure[1]<br/>
 
...<br/>
 
cr_pref_departure[8]
 
|  colspan="2" style="padding: 0;" |
 
 
 
{| style="width: 257px; height: 100%; margin: -1px;" class="wikitable"
 
|-
 
| width="80" | not_important
 
| Любое время
 
|-
 
| morning
 
| Утром
 
|-
 
| afternoon
 
| Днем
 
|-
 
| evening
 
| Вечером
 
|-
 
| night
 
| Ночью
 
|}
 
 
 
|-
 
| Класс обслуживания
 
| cr_class[0]<br/>
 
cr_class[1]<br/>
 
...<br/>
 
cr_class[8]
 
| colspan="2" style="padding: 0;" |
 
 
 
{| style="width: 257px; height: 100%; margin: -1px;" class="wikitable"
 
|-
 
| econom
 
| Перелет эконом-классом
 
|-
 
| business
 
| Перелет бизнес-классом
 
|-
 
| first
 
| Перелет первым классом
 
|}
 
 
 
|-
 
| Окружные аэропорты (±XX км)
 
| cr_district_airport[0]<br/>
 
cr_district_airport[1]<br/>
 
...<br/>
 
cr_district_airport[8]
 
| colspan="2" | true
 
|}
 
 
 
==== Пассажиры ====
 
{| style="width: 800px" class="wikitable"
 
|-
 
! scope="col" width="300" | Элемент
 
! scope="col" width="250" | Переменная
 
! scope="col" width="250" | Допустимые значения
 
|-
 
| Взрослых от 12 лет
 
| adults
 
| style="padding: 0;" |
 
 
 
{| style="width: 257px; height: 100%; margin: -1px;" class="wikitable"
 
|-
 
| width="80" | 1
 
| Целое число большее либо равное 0
 
|}
 
 
 
|-
 
| Детей от 2 до 12 лет
 
| children
 
| style="padding: 0;" |
 
 
 
{| style="width: 257px; height: 100%; margin: -1px;" class="wikitable"
 
|-
 
| width="80" | 1
 
| Целое число большее либо равное 0
 
|}
 
 
 
|-
 
| Младенцев до 2 лет
 
| infants
 
| style="padding: 0;" |
 
 
 
{| style="width: 257px; height: 100%; margin: -1px;" class="wikitable"
 
|-
 
| width="80" | 1
 
| Целое число большее либо равное 0
 
|}
 
 
 
|-
 
| Младенцев с местом до 2 лет
 
| infants_seat
 
| style="padding: 0;" |
 
  
{| style="width: 257px; height: 100%; margin: -1px;" class="wikitable"
+
FastSearch так же работает и для отелей, подробности в статье [[Fast Search для отелей]]
|-
 
| width="80" | 1
 
| Целое число большее либо равное 0
 
|}
 
 
 
|-
 
| Молодых от 12 до 24 лет <br/>
 
| youths
 
| style="padding: 0;" |
 
 
 
{| style="width: 257px; height: 100%; margin: -1px;" class="wikitable"
 
|-
 
| width="80" | 1
 
| Целое число большее либо равное 0<br/>
 
<span style="font-size: large; color: rgb(255, 0, 0);">!&nbsp;</span><span style="background-color: rgb(255, 240, 245);">&nbsp;Данный параметр доступен только в новой базовой теме.</span>
 
|}
 
 
 
|-
 
| Пожилых от 65 лет
 
| seniors
 
| style="padding: 0;" |
 
 
 
{| style="width: 257px; height: 100%; margin: -1px;" class="wikitable"
 
|-
 
| width="80" | 1
 
| Целое число большее либо равное 0<br/>
 
<span style="font-size: large; color: rgb(255, 0, 0);">!&nbsp;</span><span style="background-color: rgb(255, 240, 245);">&nbsp;Данный параметр доступен только в новой базовой теме.</span>
 
|}
 
 
 
|}
 
 
 
==== Примеры FastSearch запросов ====
 
 
 
<div class="toccolours mw-collapsible mw-collapsed" style="width:800px">
 
<u>'''В одну сторону (простой)'''</u>
 
<div class="mw-collapsible-content">
 
'''Рейс в одну сторону из Москвы в Париж, дата вылета: 25.10.2013, без пересадок, 1 взрослый'''
 
* '''''форма поиска'''''
 
<pre>http://SITEMANE/?trip_type=OW&out_iata=MOW&in_iata=PAR&departure_date=25.10.2013
 
&direct=true&adults=2&param_by_get=on</pre>
 
* '''''процесс поиска'''''
 
<pre>http://SITEMANE/?trip_type=OW&out_iata=MOW&in_iata=PAR&departure_date=25.10.2013
 
&direct=true&adults=2&param_by_get=on&fast_search=on</pre>
 
</div>
 
</div>
 
 
 
<div class="toccolours mw-collapsible mw-collapsed" style="width:800px">
 
<u>'''В одну сторону (с фильтрами по авиакомпаниям)'''</u>
 
<div class="mw-collapsible-content">
 
'''Рейс в одну сторону из Москвы в Париж, дата вылета 25.10.2013, Пассажиры: пожилых - 2, Авиакомпании: Аэрофлот - Российские авиалинии, Международные Авиалинии Украины'''
 
* '''''форма поиска'''''
 
<pre>http://SITEMANE/?trip_type=OW&out_iata=MOW&in_iata=PAR&departure_date=25.10.2013
 
&seniors=2&input_vendors=SU,PS&param_by_get=on</pre>
 
* '''''процесс поиска'''''
 
<pre>http://SITEMANE/?trip_type=OW&out_iata=MOW&in_iata=PAR&departure_date=25.10.2013
 
&seniors=2&input_vendors=SU,PS&param_by_get=on&fast_search=on</pre>
 
</div>
 
</div>
 
 
 
<div class="toccolours mw-collapsible mw-collapsed" style="width:800px">
 
<u>'''Туда-обратно'''</u>
 
<div class="mw-collapsible-content">
 
'''Рейсы туда-обратно Москва ↔ Париж, дата вылета: 25.10.2013, обратно: 27.10.2013, класс перелета: Эконом, Пассажиры: взрослых - 2 младенцев - 1'''
 
* '''''форма поиска'''''
 
<pre>http://SITEMANE/?trip_type=RT&out_iata=MOW&in_iata=PAR&departure_date=25.10.2013
 
&back_departure_date=27.10.2013&class=econom&adults=2&infants=1&param_by_get=on</pre>
 
* '''''процесс поиска'''''
 
<pre>http://SITEMANE/?trip_type=RT&out_iata=MOW&in_iata=PAR&departure_date=25.10.2013
 
&back_departure_date=27.10.2013&class=econom&adults=2&infants=1&param_by_get=on&fast_search=on</pre>
 
</div>
 
</div>
 
 
 
<div class="toccolours mw-collapsible mw-collapsed" style="width:800px">
 
<u>'''Сложный маршрут'''</u>
 
<div class="mw-collapsible-content">
 
'''из Москвы в Париж, дата вылета 25.10.2013,'''<br/>
 
'''из Парижа в Санкт-Петербург, дата вылета 26.10.2013,'''<br/>
 
'''из Санкт-Петербурга в Москву, дата вылета 29.10.2013,'''<br/>
 
'''1 взрослый'''
 
* '''''форма поиска'''''
 
<pre>http://SITEMANE/?trip_type=CR
 
&cr_iata[0]=MOW&cr_back_iata[0]=PAR&cr_date[0]=25.10.2013
 
&cr_iata[1]=PAR&cr_back_iata[1]=LED&cr_date[1]=26.10.2013
 
&cr_iata[2]=LED&cr_back_iata[2]=MOW&cr_date[2]=29.10.2013
 
&adults=1&param_by_get=on</pre>
 
* '''''процесс поиска'''''
 
<pre>http://SITEMANE/?trip_type=CR
 
&cr_iata[0]=MOW&cr_back_iata[0]=PAR&cr_date[0]=25.10.2013
 
&cr_iata[1]=PAR&cr_back_iata[1]=LED&cr_date[1]=26.10.2013
 
&cr_iata[2]=LED&cr_back_iata[2]=MOW&cr_date[2]=29.10.2013
 
&adults=1&param_by_get=on&fast_search=on</pre>
 
</div>
 
</div>
 
 
 
=== Взаимодействие FastSearch и Метрики ===
 
Для того, чтобы переход был зарегистрирован системой как переход с определенного источника, необходимо передать в запросе дополнительный параметр utm_source (Metrics Session ID). Например:
 
<pre>http://SITEMANE/?(some_parameters=vals&)utm_source=source_alias</pre>
 
где source_alias - алиас источника переходов. [[Модуль метрики | Дополнительная информация по использованию модуля Метрики]].
 
 
 
==== Пример FastSearch запроса с параметром для модуля Метрики ====
 
<div class="toccolours mw-collapsible mw-collapsed" style="width:800px">
 
<u>'''FastSearch (с учетом источника перехода для модуля Метрики)'''</u>
 
<div class="mw-collapsible-content">
 
'''Рейс в одну сторону из Москвы в Париж, дата вылета: 25.10.2013, без пересадок, 1 взрослый (с учетом источника перехода для модуля Метрики).'''
 
* '''''форма поиска'''''
 
<pre>
 
http://SITEMANE/?trip_type=OW&out_iata=MOW&in_iata=PAR&departure_date=25.10.2013
 
&direct=true&adults=2&param_by_get=on&utm_source=source_alias
 
</pre>
 
* '''''процесс поиска'''''
 
<pre>
 
http://SITEMANE/?trip_type=OW&out_iata=MOW&in_iata=PAR&departure_date=25.10.2013
 
&direct=true&adults=2&param_by_get=on&fast_search=on&utm_source=source_alias
 
</pre>
 
</div>
 
</div>
 
  
 +
<!-- Т.к. это внутренний формат обмена данными между Немо и одним клиентом, то данную инфу скроем в комментарии
 
==Проверка в сторонней системе возможности тикетинга==
 
==Проверка в сторонней системе возможности тикетинга==
  
При выписки билета через стороннюю систему 1С, отправляется запрос "GetDebtCounterparty", который спрашивает, можно ли с счета в 1С списать средства для оплаты. В ответе содержится заключение от 1С, в случае если ошибок нет, в ответе будет  
+
При выписки билета через стороннюю систему 1С, отправляется запрос "GetDebtCounterparty", который спрашивает, можно ли с счета в 1С списать средства для оплаты. В ответе содержится заключение от 1С, в случае если ошибок нет, то в ответе будет  
 
<pre><m:Opportunity>Да</m:Opportunity></pre>
 
<pre><m:Opportunity>Да</m:Opportunity></pre>
 
Пример запроса "GetDebtCounterparty"
 
Пример запроса "GetDebtCounterparty"
Строка 4083: Строка 920:
 
</pre>
 
</pre>
 
</div></div>
 
</div></div>
 +
 +
-->

Текущая версия на 14:43, 28 ноября 2018

API Авиабилетов

Чтобы авторизоваться в системе, в запросе необходимо указать APIKey и ClientID. Эти данные можно узнать в разделе Администрирование - Веб-сервис. Авторизация. Там же можно включить/выключить нотификацию для действий, совершенных через АПИ.

API Поиска авиабилетов

Это сервис внутри Nemo, который позволяет получить результаты поиска.

Для подключения к веб-службе поиска авиабилетов необходимо открыть доступ нужному пользователю. Это можно сделать в разделе «Администрирование»«Веб-служба. Авторизация».

Подробнее можно узнать в специальной статье Веб-служба поиска авиабилетов

API Бронирования авиабилетов

Сервис позволяет забронировать/войдировать авиабилет с использованием API, описание подключения, запроса, ответов находится в этой статье Веб-служба бронирования

API Выписки авиабилетов

Агентский АПИ выписки позволяет определить валидирующего перевозчика и значение комиссии от авиакомпании для брони, а также запустить процедуру выписки билета. Веб-служба выписки

API Оплаты

Сервис внутри Nemo, который предназначен для выполнения различных операций, относящихся к оплате заказов. Агентские АПИ оплаты

API Дополнительных запросов авиабилетов

К дополнительных запросам относятся проверка на доступность, запрос на обновление заказа, чтение тарифных правил. Дополнительные запросы АПИ авиабилетов

Используемые параметры

развернуть

Параметры, используемые в запросах

развернуть

Параметры, используемые в ответах

API Отелей

Агентский API Отелей - система, которая предоставляет возможность поиска и бронирования отелей а так же получение информации о времени и размерах штрафов, уникальной информации об отеле, получение статической информации.

Подробнее можно узнать в нашей специальной статье Агентский АПИ отелей


Выгрузки статистики продаж через API (Метапоиск)

Метапоисковая система (метапоисковая машина, метапоисковик) — это поисковая система, которая в отличие от классических поисковых машин не имеет собственной базы данных и собственного поискового индекса, а формирует поисковую выдачу за счет смешивания и переранжирования результатов поиска других поисковых систем.

В разделе статистики заказов из метапоисков можно получить данные по статистике метапоиска (по источнику переходов модуля метрики) за определенный период бронирования заказов в виде файла данных в формате XML.

Можно получить список заказов с их статусом (забронирован, выписан, аннулирован), сделанных через метапоисковую систему.

Подробнее можно узнать в статье посвященной взаимодействию с метопоисковиками Взаимодействие с метапоисковиками

Выгрузка информации о заказах

Выгрузка заказов — это экспорт данных заказа или заказов для различных компонентов системы Nemo. Модуль позволяет внешней системе получать данные по заказам для дальнейшей обработки. Подробнее о процессе выгрузки, настройках, форматах выгрузки для различных компонент можно прочитать в статье Выгрузка

API Синхронизации пользователей и субагентов

Назначение данного модуля — обеспечение взаимодействия между сторонней программой (например, системой автоматизации туроператора "САМО-тур") и Nemo в части синхронизации списка B2B-пользователей. Модуль является компонентом, включаемым и отключаемым из административной части.

О механизме авторизации B2B-пользователей, синхронизации учетных записей можно прочитать в статье Синхронизация пользователей

API Кросс­авторизации

Авторизация пользователей из внешних систем — Система Nemo позволяет обращаться к ней как базе пользователей для авторизации из других систем (например форума на сайте, собственного ПО компании и т.п)

Для этого нужно подключиться к веб-службе авторизации, WSDL-описание которой располагается по адресу:

http://hostname/authorization_reol.wsdl

развернуть
Запрос

Передача параметров в форму поиска (FastSearch)

В системе Nemo имеется возможность перенаправлять пользователей на страницу с уже заполненными параметрами поиска или сразу напрямую на результаты поиска.

Примеры FastSearch запросов и используемые переменные подробно описаны в статье FastSearch - передача параметров в форму

FastSearch так же работает и для отелей, подробности в статье Fast Search для отелей