Интеграция со сторонними системами АПИ

Материал из Центр поддержки системы бронировании
Версия от 18:31, 24 апреля 2015; Кирилл Фимченко (обсуждение | вклад) (API Поиска авиабилетов)
Перейти к навигации Перейти к поиску

!!!СТАТЬЯ В РАЗРАБОТКЕ!!!

Содержание

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

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

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

После добавления пользователя, ему будут присвоены Номер (ClientId) и API ключ клиента, которые нужно использовать для подключения.

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

API Поиска отелей

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

API бронирования, аннуляции, войдирования авиабилетов

Подключение

Получить доступ к результатам бронирования в данном сервисе можно через SOAP клиента. Для получения результата необходим параметр — «FlightId» — Id перелёта, для которого будет производится бронирование. WSDL находится по адресу: http://CLIENT_DOMAIN/nemoflights/wsdl.php?for=BookFlight.

Общий формат запроса / ответа бронирования

Запрос
  1 <soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ver="http://CLIENT_DOMAIN/nemoflights/?version%3D1.0%26for%3DBookFlight">
  2    <soapenv:Header/>
  3    <soapenv:Body>
  4       <ver:BookFlight>
  5          <RequestBin>
  6             <Request>
  7                <BookFlight>
  8                   <FlightId>?</FlightId>
  9                   <!--FlightId — Id перелёта в системе Nemo-->
 10                   <!--Optional:-->
 11                   <ValidatingCompany>?</ValidatingCompany> <!--необязательный-->
 12                   <!--ValidatingCompany — валидирующий перевозчик (тот кто выписывает билет)-->
 13                   <!--Optional:-->
 14                   <BookingCodes>
 15                      <!--Zero or more repetitions:-->
 16                      <BookingCode Code="?" SegNumber="?"/>
 17                      <!--Code — код класса перелёта-->
 18 	             <!--SegNumber — номер сегмента в перелёте (начинаются с 1)-->
 19                   </BookingCodes>
 20                   <!--Optional:-->
 21                   <CurrencyCode>?</CurrencyCode> <!--необязательный-->
 22                   <!--CurrencyCode — код валюты-->
 23                   <!--Optional:-->
 24                   <TicketTimeLimit>?</TicketTimeLimit> <!--необязательный-->
 25                   <!--TicketTimeLimit — таймлимит на оплату, формат: ГГГГ-ММ-ДДTЧЧ:ММ:СС-->
 26                   <!--Optional:-->
 27                   <Agency Name="?"> <!--необязательный-->
 28                   <!--Name — название агентства-->
 29                      <Telephone Type="?">
 30                      <!--Type — тип номера, обязательный, возможные значения: 
 31                       M — мобильный, H — домашний, B — рабочий, A — агенство-->
 32                         <!--Optional:-->
 33                         <PhoneNumber>?</PhoneNumber>
 34                         <!--PhoneNumber — номер телефона-->
 35                         <!--Optional:-->
 36                         <CountryAccessCode>?</CountryAccessCode> <!--необязательный-->
 37                         <!--CountryAccessCode — код страны-->
 38                         <!--Optional:-->
 39                         <AreaCityCode>?</AreaCityCode> <!--необязательный-->
 40                         <!--AreaCityCode — код региона/города-->
 41                      </Telephone>
 42                      <Address City="?" State="?" StreetAddress="?" PostalCode="?" CountryCode="?"/> <!--необязательный-->
 43                      <!--City — город-->
 44 		     <!--State — штат-->
 45 		     <!--StreetAddress — адрес в городе (улица, дом, корпус, офис и т.д.)-->
 46 		     <!--PostalCode — почтовый индекс-->
 47 		     <!--CountryCode — код страны (RU, UA и т.п.)-->
 48 		  </Agency>
 49                   <Travellers>
 50                      <!--Zero or more repetitions:-->
 51                      <Traveller Type="?" IsContact="?" LinkedTo="?" Num="?" TravellerId="?">
 52                      <!--Type — тип пассажира, обязательный, возможные значения: ADT — взрослые,
 53                       CNN — дети со взрослыми,UNN — дети без сопровождения взрослых, INF — младенцы, INS — младенцы с местом-->
 54 		     <!--IsContact — если true — то данный пассажир является контактным лицом, если false — то не является,
 55 		      контактное лицо может быть только 1, если среди пассажиров есть взрослые, то только кто-то из них 
 56                       может быть контактным лицом, по умолчанию false-->
 57 		     <!--Num — порядковый номер пассажира, начинается с 1-->
 58                      <!--LinkedTo — номер взрослого, к которому привязан младенец/ребёнок--> <!--необязательный-->
 59                      <!--TravellerId — устаревший параметр, не используется-->
 60                         <Meal>?</Meal> <!--необязательный-->
 61                         <!--Meal — код типа питания, возможные значения:
 62 						NONE — отсутствует
 63 						AVML — Азиатская вегетарианская кухня
 64 						BLML — Блюда щадящей диеты
 65 						CHML — Детское питание
 66 						CHPC — Детский холодный завтрак
 67 						СНСС — Детский горячий завтрак
 68 						CHHC — Детский ланч, ветчина и сыр
 69 						PBJS — Детский ланч, ореховое масло
 70 						CHMC — Детский обед макароны с сыром
 71 						DBML — Диабетическое питание
 72 						FPML — Фрукты
 73 						GFML — Питание без клейковины
 74 						HFML — Питание богатое клетчаткой
 75 						HNML — Индусская кухня
 76 						BBML — Питание для младенцев
 77 						KSML — Кошерная кухня
 78 						SMKB — Кошерный завтрак
 79 						SMKL — Кошерный ланч
 80 						SMKD — Кошерный обед
 81 						LPML — Малобелковое питание
 82 						LCML — Низкокалорийное питание
 83 						LFML — Низкохолестериновое питание
 84 						PRML — Низкопуриновое питание
 85 						LSML — Малосоленое питание
 86 						MOML — Мюсли
 87 						NLML — Безмолочные продукты
 88 						ORML — Восточная кухня
 89 						RVML — Сырые овощи
 90 						SFML — Морепродукты
 91 						SPML — Особое питание
 92 						VLML — Вегетарианское, молоко и яйца
 93 						VGML — Строго вегетарианское питание
 94 						VJML — Джайнизское вегетарианское
 95 						VOML — Восточное вегетарианское питание-->
 96                         <PersonalInfo DateOfBirth="?" Nationality="?" Gender="?">
 97                         <!--DateOfBirth — дата рождения в формате ДД.ММ.ГГГГ (например 31.12.2000)-->
 98 			<!--Nationality — гражданство, двух буквенный код страны (RU, UA, US и т.д.)-->
 99 			<!--Gender — пол пассажира, возможные значения: M — мужской(Male), F — женский(Female)-->
100                            <FirstName>?</FirstName>
101                            <!--FirstName — имя пассажира-->
102                            <LastName>?</LastName>
103                            <!--LastName — фамилия пассажира-->
104                            <!--Optional:-->
105                            <MiddleName>?</MiddleName> <!--необязательный-->
106                            <!--MiddleName — отчество пассажира-->
107                         </PersonalInfo>
108                         <LoyaltyCard OpCode="?" Number="?"/> <!--необязательный-->
109                         <!--OpCode — код авиакомпании-->
110 			<!--Number — номер карточки-->
111                         <ContactInfo> <!--необязательный-->
112                            <!--Optional:-->
113                            <EmailID>?</EmailID>
114                            <!--EmailID — контактный email-->
115                            <!--Optional:-->
116                            <Telephone Type="?">
117                            <!--Type — тип номера, возможные значения: M — мобильный, H — домашний, B — рабочий-->
118                               <!--Optional:-->
119                               <PhoneNumber>?</PhoneNumber>
120                               <!--PhoneNumber — номер телефона-->
121                               <!--Optional:-->
122                               <CountryAccessCode>?</CountryAccessCode>
123                               <!--CountryAccessCode — код страны-->
124                               <!--Optional:-->
125                               <AreaCityCode>?</AreaCityCode>
126                               <!--AreaCityCode — код региона/города-->
127                            </Telephone>
128                         </ContactInfo>
129                         <DocumentInfo DocType="?" DocNum="?" CountryCode="?" DocElapsedTime="?"/>
130                         <!--DocType — тип документа, возможные значения:
131 								Р — Паспорт
132 								A – Паспорт иностранца
133 								С — Внутренний гражданский паспорт
134 								F – Документ заменяющий паспорт
135 								М — Воинское удостоверение
136 								N – Сертификат натурализации(специфичный документ США)
137 								T – Док.повторного въезда, паспорт беженца
138 								V – Документ для пересечения границы-->
139 			<!--DocNum — номер документа-->
140 			<!--CountryCode — двух буквенный код страны выдачи паспорта (RU, UA, US и т.д.)-->
141 			<!--DocElapsedTime — срок истечения срока действия паспорта в ДД.ММ.ГГГ (например 31.12.2000)-->
142                         <VisaInfo Num="?" IssueCountry="?" IssuePlace="?" BirthCountry="?" BirthCity="?" IssueDate="?"/> 
143                         <!--необязательный-->
144                         <!--Num — номер визы-->
145                         <!--IssueDate — дата(ДД.ММ.ГГГГ) выдачи визы-->
146                         <!--IssueCountry — страна выдачи визы-->
147                         <!--IssuePlace — место выдачи визы-->
148                         <!--BirthCountry — страна рождения(IATA код страны)-->
149                         <!--BirthCity — город рождения(название)-->
150                         <ArrAddress City="?" State="?" StreetAddress="?" PostalCode="?" CountryCode="?"/> <!--необязательный-->
151                         <!--City — город-->
152 			<!--State — штат или область въезда-->
153 			<!--StreetAddress — адрес: улица, номер дома, квартиры и т.д.-->
154 			<!--PostalCode — почтовый код-->
155 			<!--CountryCode — код страны-->
156                         <PreferedPlace SmokingAllowed="?" Location="?" RowNumber="?" PlaceNumber="?" SegNumber="?"/> 
157                         <!--необязательный-->
158                         <!--Если указаны номер ряда и номер места, то параметры SmokingAllowed и Location игнорируются-->
159 			<!--SmokingAllowed — булевское значение, true — место для курящих, false — место для некурящих-->
160 			<!--Location — положение места в ряде, возможные значения:
161 							W — у окна (Window)
162 							M — где-то в середине ряда (Middle)
163 							NPW — возле прохода (NearPassengerWay)
164 							NS — нет предпочтения (NotSpecified)-->
165 			<!--RowNumber — номер ряда-->
166 			<!--PlaceNumber — номер места-->
167 			<!--SegNumber — номер сегмента-->
168                         <DocStringFormats>
169                            <!--Zero or more repetitions:-->
170                            <DocStringFormat>?</DocStringFormat>
171                            <!--DocStringFormat — формат паспортной строки, возможные значения: 
172                             DOCS — строка формата DOCS, FOID — строка формата FOID-->
173                         </DocStringFormats>
174                      </Traveller>
175                   </Travellers>
176                   <!--Optional:-->
177                   <QueueNum>?</QueueNum> <!--необязательный-->
178                   <!--QueueNum — номер очереди, в которую необходимо поместить бронирование-->
179                </BookFlight>
180             </Request>
181             <Source>
182                <ClientId>?</ClientId>
183                <!--ClientId — ID клиента в системе Nemo. Можно посмотреть/добавить в разделе 
184                 "Администрирование" ? "Веб-служба. Авторизация".-->
185                <APIKey>?</APIKey>
186                <!--APIKey — секретный ключ доступа к API Nemo. Можно посмотреть/добавить в разделе 
187                 "Администрирование" ? "Веб-служба. Авторизация".-->
188                <Language>?</Language>
189                <!--Language — язык-->
190                <Currency>?</Currency>
191                <!-- CUrrency — валюта-->
192             </Source>
193          </RequestBin>
194       </ver:BookFlight>
195    </soapenv:Body>
196 </soapenv:Envelope>
Ответ
  1 <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">
  2    <SOAP-ENV:Body>
  3       <ns1:BookFlightResponse>
  4          <ResponseBin>
  5             <Response>
  6                <BookFlight ID="?" Status="?" Code="?">
  7                <!--ID — Id брони в системе Nemo, целое число, обязательный-->
  8 	       <!--Status — индикатор состояния брони, возможные значения:
  9 						booked — забронировано,
 10 						canceled — бронь отменена,
 11  						ticket — выписана
 12 						UNDEFINED — статус не определён-->
 13 	       <!--Code — код брони в системе поставщика-->
 14                   <QueryPlace xsi:nil="true"/>
 15                   <!--QueryPlace — положение брони в очереди, Number — номер брони в очереди-->
 16                   <Flight FlightId="?">
 17                   <!--FlightId — Id перелёта в системе Nemo-->
 18                      <WebService>?</WebService>
 19                      <!--WebService — поставщик перелёта-->
 20                      <ValCompany>?</ValCompany>
 21                      <!--ValCompany — код авиакомпании, являющейся валидирующим перевозчиком, IATA-->
 22                      <URL>?</URL>
 23                      <!--URL — ссылка на бронирование конкретного перелета-->
 24                      <Segments>
 25                         <Segment SegNum="?" SegGroupNum="?">
 26                         <!--SegNum — номер сегмента в перелёте-->
 27 		        <!--SegGroupNum – номер плеча перелёта-->
 28                            <DepAirp CodeType="IATA">?</DepAirp>
 29                            <!--DepAirp — аэропорт отправления, например: MOW — любой аэропорт в г.Москва 
 30                             или SVO — Шереметьево-->
 31                            <DepTerminal>?</DepTerminal>
 32                            <!--DepTerminal — терминал пункта отправления, если пустое значение, 
 33                             то в аэропорту всего 1 терминал-->
 34                            <ArrAirp CodeType="IATA">?</ArrAirp>
 35                            <!--ArrAirp — аэропорт прибытия-->
 36                            <ArrTerminal>?</ArrTerminal>
 37                            <!--ArrTerminal — терминал пункта прибытия, если пустое значение, 
 38                             то в аэропорту всего 1 терминал-->
 39                            <OpAirline>?</OpAirline>
 40                            <!--OpAirline — авиакомпания перевозчик, например: SU — Аэрофлот-->
 41                            <MarkAirline>?</MarkAirline>
 42                            <!--MarkAirline — авиакомпания, продающая перелёт-->
 43                            <FlightNumber>?</FlightNumber>
 44                            <!--FlightNumber — номер рейса-->
 45                            <AircraftType>?</AircraftType>
 46                            <!--AircraftType — тип воздушного судна, код-->
 47                            <DepDateTime>?</DepDateTime>
 48                            <!--DepDateTime — дата и время отправления, формат ГГГГ-MM-ДДTЧЧ:ММ:СС-->
 49                            <ArrDateTime>?</ArrDateTime>
 50                            <!--ArrDateTime — дата и время прибытия, формат ГГГГ-MM-ДДTЧЧ:ММ:СС-->
 51                            <StopNum>?</StopNum>
 52                            <!--StopNum — количество остановок-->
 53                            <BookingCodes>
 54                               <BookingCode ClassType="?">
 55                               <!--ClassType — класс перелета, например: economy-->
 56                                  <BookingCode>?</BookingCode>
 57                                  <!--BookingCode — код класса бронирования, у разных авиакомпаний один и тот же класс 
 58                                   может записываться разными литерами, например: L-->
 59                               </BookingCode>
 60                            </BookingCodes>
 61                            <FlightTime>?</FlightTime>
 62                            <!--FlightTime — время перелёта в минутах-->
 63                            <TimeZone Departure="?" Arrival="?"/>
 64                            <!--Departure временная зона аэропорта отправления-->
 65 			   <!--Arrival — временная зона аэропорта прибытия-->
 66                            <ETicket>?</ETicket>
 67                            <!--ETicket — признак электронного билета, значения: true / false-->
 68                         </Segment>
 69                      </Segments>
 70                      <PricingInfo Refundable="?">
 71                      <!--Refundable — возвратный/невозвратный, true/false. Если пустое, то не известно-->
 72                         <PassengerFare Type="?" Quantity="?">
 73                         <!--Type — тип пассажира, возможные значения: ADT — взрослые, CNN — дети, 
 74                          INF — младенцы, INS — младенцы с местом-->
 75 		        <!--Quantity — количество пассажиров данного типа-->
 76                            <BaseFare Currency="?" Amount="?"/>
 77                            <!--BaseFare — базовая стоимость, в базовой валюте. Currency — код валюты, Amount — значение цены-->
 78                            <EquiveFare Currency="?" Amount="?"/>
 79                            <!--EquiveFare — базовая стоимость, в эквивалентной валюте(валюте продажи). 
 80                             Currency — код валюты, Amount — значение цены-->
 81                            <TotalFare Currency="?" Amount="?"/>
 82                            <!--TotalFare — суммарная стоимость, в эквивалентной валюте. 
 83                             Currency — код валюты, Amount — значение цены-->
 84                            <Taxes>
 85                               <Tax CurCode="?" TaxCode="?" Amount="?"/>
 86                               <!--CurCode — код валюты, TaxCode — код таксы, Amount — сумма таксы-->
 87                            </Taxes>
 88                            <Tariffs>
 89                               <Tariff Code="?" SegNum="?"/>
 90                               <!--Code — код тарифа, SegNum — номер сегмента, к которому применён тариф-->
 91                            </Tariffs>
 92                            <FareCalc>?</FareCalc>
 93                            <!--FareCalc — строка расчёта цены-->
 94                            <LastTicketDateTime>?</LastTicketDateTime>
 95                            <!--LastTicketDateTime — дата и время таймлимита по выписке в формате ГГГГ-MM-ДДTЧЧ:ММ:СС-->
 96                         </PassengerFare>
 97                      </PricingInfo>
 98                      <Commission/>
 99                      <Charges Currency="?">?</Charges>
100                      <!--Charges — сборы, Currency — код валюты-->
101                      <TotalPrice Currency="?">?</TotalPrice>
102                      <!--TotalPrice — итоговая цена, Currency — код валюты-->
103                   </Flight>
104                   <Agency Name="?"> 
105                   <!--Name — название агентства-->
106                      <Telephone Type="?">
107                      <!--Type — тип номера, обязательный, возможные значения: 
108                       M — мобильный, H — домашний, B — рабочий, A — агенство-->
109                         <!--Optional:-->
110                         <PhoneNumber>?</PhoneNumber>
111                         <!--PhoneNumber — номер телефона-->
112                         <!--Optional:-->
113                         <CountryAccessCode>?</CountryAccessCode> 
114                         <!--CountryAccessCode — код страны-->
115                         <!--Optional:-->
116                         <AreaCityCode>?</AreaCityCode> 
117                         <!--AreaCityCode — код региона/города-->
118                      </Telephone>
119                      <Address City="?" State="?" StreetAddress="?" PostalCode="?" CountryCode="?"/> 
120                      <!--City — город-->
121 		     <!--State — штат-->
122 		     <!--StreetAddress — адрес в городе (улица, дом, корпус, офис и т.д.)-->
123 		     <!--PostalCode — почтовый индекс-->
124 		     <!--CountryCode — код страны (RU, UA и т.п.)-->
125 		  </Agency>
126                   <ItinReceipts Encoding="?" Format="?">
127                   <!--ItinReceipts — маршрут квитанция, Encoding — кодировка, Format — формат-->
128                   <FareStored xsi:nil="true"/>
129                   <Travellers>
130                      <!--Zero or more repetitions:-->
131                      <Traveller Type="?" IsContact="?" LinkedTo="?" Num="?" TravellerId="?">
132                      <!--Type — тип пассажира, обязательный, возможные значения: ADT — взрослые,
133                       CNN — дети со взрослыми,UNN — дети без сопровождения взрослых, INF — младенцы, INS — младенцы с местом-->
134 		     <!--IsContact — если true — то данный пассажир является контактным лицом, если false — то не является,
135 		      контактное лицо может быть только 1, если среди пассажиров есть взрослые, то только кто-то из них 
136                       может быть контактным лицом, по умолчанию false-->
137 		     <!--Num — порядковый номер пассажира, начинается с 1-->
138                      <!--LinkedTo — номер взрослого, к которому привязан младенец/ребёнок--> 
139                      <!--TravellerId — устаревший параметр, не используется--> 
140                         <Meal>?</Meal> 
141                         <!--Meal — код типа питания, возможные значения:
142 						NONE — отсутствует
143 						AVML — Азиатская вегетарианская кухня
144 						BLML — Блюда щадящей диеты
145 						CHML — Детское питание
146 						CHPC — Детский холодный завтрак
147 						СНСС — Детский горячий завтрак
148  						CHHC — Детский ланч, ветчина и сыр
149 						PBJS — Детский ланч, ореховое масло
150 						CHMC — Детский обед макароны с сыром
151 						DBML — Диабетическое питание
152 						FPML — Фрукты
153 						GFML — Питание без клейковины
154 						HFML — Питание богатое клетчаткой
155 						HNML — Индусская кухня
156  						BBML — Питание для младенцев
157 						KSML — Кошерная кухня
158 						SMKB — Кошерный завтрак
159 						SMKL — Кошерный ланч
160 						SMKD — Кошерный обед
161  						LPML — Малобелковое питание
162 						LCML — Низкокалорийное питание
163 						LFML — Низкохолестериновое питание
164 						PRML — Низкопуриновое питание
165 						LSML — Малосоленое питание
166 						MOML — Мюсли
167 						NLML — Безмолочные продукты
168  						ORML — Восточная кухня
169 						RVML — Сырые овощи
170 						SFML — Морепродукты
171 						SPML — Особое питание
172 						VLML — Вегетарианское, молоко и яйца
173 						VGML — Строго вегетарианское питание
174 						VJML — Джайнизское вегетарианское
175  						VOML — Восточное вегетарианское питание-->
176                         <PersonalInfo DateOfBirth="?" Nationality="?" Gender="?">
177                         <!--DateOfBirth — дата рождения в формате ДД.ММ.ГГГГ (например 31.12.2000)-->
178 			<!--Nationality — гражданство, двух буквенный код страны (RU, UA, US и т.д.)-->
179 			<!--Gender — пол пассажира, возможные значения: M — мужской(Male), F — женский(Female)-->
180                            <FirstName>?</FirstName>
181                            <!--FirstName — имя пассажира-->
182                            <LastName>?</LastName>
183                            <!--LastName — фамилия пассажира-->
184                            <!--Optional:-->
185                            <MiddleName>?</MiddleName> 
186                            <!--MiddleName — отчество пассажира-->
187                         </PersonalInfo>
188                         <LoyaltyCard OpCode="?" Number="?"/> 
189                         <!--OpCode — код авиакомпании-->
190 			<!--Number — номер карточки-->
191                         <ContactInfo> 
192                            <!--Optional:-->
193                            <EmailID>?</EmailID>
194                            <!--EmailID — контактный email-->
195                            <!--Optional:-->
196                            <Telephone Type="?">
197                            <!--Type — тип номера, возможные значения: M — мобильный, H — домашний, B — рабочий-->
198                               <!--Optional:-->
199                               <PhoneNumber>?</PhoneNumber>
200                               <!--PhoneNumber — номер телефона-->
201                               <!--Optional:-->
202                               <CountryAccessCode>?</CountryAccessCode>
203                               <!--CountryAccessCode — код страны-->
204                               <!--Optional:-->
205                               <AreaCityCode>?</AreaCityCode>
206                               <!--AreaCityCode — код региона/города-->
207                            </Telephone>
208                         </ContactInfo>
209                         <DocumentInfo DocType="?" DocNum="?" CountryCode="?" DocElapsedTime="?"/>
210                         <!--DocType — тип документа, возможные значения:
211 								Р — Паспорт
212 								A – Паспорт иностранца
213 								С — Внутренний гражданский паспорт
214 								F – Документ заменяющий паспорт
215 								М — Воинское удостоверение
216 								N – Сертификат натурализации(специфичный документ США)
217 								T – Док.повторного въезда, паспорт беженца
218   								V – Документ для пересечения границы-->
219 			<!--DocNum — номер документа-->
220 			<!--CountryCode — двух буквенный код страны выдачи паспорта (RU, UA, US и т.д.)-->
221 			<!--DocElapsedTime — срок истечения срока действия паспорта в ДД.ММ.ГГГ (например 31.12.2000)-->
222                         <VisaInfo Num="?" IssueCountry="?" IssuePlace="?" BirthCountry="?" BirthCity="?" IssueDate="?"/> 
223                         <!--Num — номер визы-->
224                         <!--IssueDate — дата(ДД.ММ.ГГГГ) выдачи визы-->
225                         <!--IssueCountry — страна выдачи визы-->
226                         <!--IssuePlace — место выдачи визы-->
227                         <!--BirthCountry — страна рождения(IATA код страны)-->
228                         <!--BirthCity — город рождения(название)-->
229                         <ArrAddress City="?" State="?" StreetAddress="?" PostalCode="?" CountryCode="?"/> 
230                         <!--City — город-->
231 			<!--State — штат или область въезда-->
232 			<!--StreetAddress — адрес: улица, номер дома, квартиры и т.д.-->
233 			<!--PostalCode — почтовый код-->
234 			<!--CountryCode — код страны-->
235                         <PreferedPlace SmokingAllowed="?" Location="?" RowNumber="?" PlaceNumber="?" SegNumber="?"/> 
236                         <!--Если указаны номер ряда и номер места, то параметры SmokingAllowed и Location игнорируются-->
237 			<!--SmokingAllowed — булевское значение, true — место для курящих, false — место для некурящих-->
238 			<!--Location — положение места в ряде, возможные значения:
239 							W — у окна (Window)
240 							M — где-то в середине ряда (Middle)
241 							NPW — возле прохода (NearPassengerWay)
242 							NS — нет предпочтения (NotSpecified)-->
243 			<!--RowNumber — номер ряда-->
244 			<!--PlaceNumber — номер места-->
245 			<!--SegNumber — номер сегмента-->
246                         <DocStringFormats>
247                            <!--Zero or more repetitions:-->
248                            <DocStringFormat>?</DocStringFormat>
249                            <!--DocStringFormat — формат паспортной строки, возможные значения: 
250                             DOCS — строка формата DOCS, FOID — строка формата FOID-->
251                         </DocStringFormats>
252                      </Traveller>
253                   </Travellers>
254                </BookFlight>
255                <Requisites/>
256                <RequestType xsi:nil="true"/>
257                <UserID xsi:nil="true"/>
258                <Errors>
259                   <Error Code="?">
260                   <!--Code — код ошибки в системе Nemo-->
261                      <ServiceErrorMessage>?</ServiceErrorMessage>
262                      <!--ServiceErrorMessage — сообщение об ошибке полученное от веб-сервиса поставщика-->
263                      <Message>?</Message>
264                      <!--Message — сообщение об ошибке от системы Nemo-->
265                   </Error>
266                </Errors>
267             </Response>
268          </ResponseBin>
269       </ns1:BookFlightResponse>
270    </SOAP-ENV:Body>
271 </SOAP-ENV:Envelope>

Пример использования

Пример одностороннего перелета Москва — Мадрид.

Запрос
 1 <soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ver="http://CLIENT_DOMAIN/nemoflights/?version%3D1.0%26for%3DBookFlight">
 2    <soapenv:Header/>
 3    <soapenv:Body>
 4       <ver:BookFlight>
 5          <RequestBin>
 6             <Request>
 7                <BookFlight>
 8                   <FlightId>171430002</FlightId>
 9                   <BookingCodes>
10                      <!--Zero or more repetitions:-->
11                      <BookingCode Code="E" SegNumber="2"/>
12                   </BookingCodes>
13                   <Travellers>
14                      <!--Zero or more repetitions:-->
15                      <Traveller Type="ADT" IsContact="true" Num="1">
16                         <PersonalInfo DateOfBirth="20.05.1980" Nationality="RU" Gender="M">
17                            <FirstName>Petr</FirstName>
18                            <LastName>Ivanov</LastName>
19                         </PersonalInfo>
20                         <ContactInfo>
21                            <!--Optional:-->
22                            <EmailID>testmail@mail.ru</EmailID>
23                            <!--Optional:-->
24                            <Telephone Type="M">
25                               <!--Optional:-->
26                               <PhoneNumber>79051234567</PhoneNumber>
27                            </Telephone>
28                         </ContactInfo>
29                         <DocumentInfo DocType="A" DocNum="123456" CountryCode="RU" DocElapsedTime="01.01.2020"/>
30                      </Traveller>
31                   </Travellers>
32                </BookFlight>
33             </Request>
34             <Source>
35                <ClientId>---</ClientId>
36                <APIKey>---</APIKey>
37                <Language>RU</Language>
38                <Currency>RUB</Currency>
39             </Source>
40          </RequestBin>
41       </ver:BookFlight>
42    </soapenv:Body>
43 </soapenv:Envelope>
Ответ
  1 <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">
  2    <SOAP-ENV:Body>
  3       <ns1:BookFlightResponse>
  4          <ResponseBin>
  5             <Response>
  6                <BookFlight ID="262872" Status="booked" Code="LQHZWU">
  7                   <QueryPlace xsi:nil="true"/>
  8                   <Flight FlightId="171430002">
  9                      <WebService>SABRE</WebService>
 10                      <ValCompany>SU</ValCompany>
 11                      <URL>http%3A%2F%2FCLIENT_DOMAIN%2F%3Fgo%3Dbooking%2Finfo%26uid%3D14290%26flight%3D171430002</URL>
 12                      <Segments>
 13                         <Segment SegNum="1" SegGroupNum="0">
 14                            <DepAirp CodeType="IATA">SVO</DepAirp>
 15                            <DepTerminal>D</DepTerminal>
 16                            <ArrAirp CodeType="IATA">BCN</ArrAirp>
 17                            <ArrTerminal>1</ArrTerminal>
 18                            <OpAirline>SU</OpAirline>
 19                            <MarkAirline>SU</MarkAirline>
 20                            <FlightNumber>2512</FlightNumber>
 21                            <AircraftType>321</AircraftType>
 22                            <DepDateTime>2014-03-20T20:40:00</DepDateTime>
 23                            <ArrDateTime>2014-03-20T22:20:00</ArrDateTime>
 24                            <StopNum>0</StopNum>
 25                            <BookingCodes>
 26                               <BookingCode ClassType="economy">
 27                                  <BookingCode>E</BookingCode>
 28                               </BookingCode>
 29                            </BookingCodes>
 30                            <FlightTime>280</FlightTime>
 31                            <TimeZone Departure="4" Arrival="1"/>
 32                            <ETicket>true</ETicket>
 33                         </Segment>
 34                         <Segment SegNum="2" SegGroupNum="0">
 35                            <DepAirp CodeType="IATA">BCN</DepAirp>
 36                            <DepTerminal>1</DepTerminal>
 37                            <ArrAirp CodeType="IATA">MAD</ArrAirp>
 38                            <ArrTerminal>2</ArrTerminal>
 39                            <OpAirline>UX</OpAirline>
 40                            <MarkAirline>SU</MarkAirline>
 41                            <FlightNumber>3403</FlightNumber>
 42                            <AircraftType>738</AircraftType>
 43                            <DepDateTime>2014-03-21T12:05:00</DepDateTime>
 44                            <ArrDateTime>2014-03-21T13:25:00</ArrDateTime>
 45                            <StopNum>0</StopNum>
 46                            <BookingCodes>
 47                               <BookingCode ClassType="economy">
 48                                  <BookingCode>E</BookingCode>
 49                               </BookingCode>
 50                            </BookingCodes>
 51                            <FlightTime>80</FlightTime>
 52                            <TimeZone Departure="1" Arrival="1"/>
 53                            <ETicket>true</ETicket>
 54                         </Segment>
 55                      </Segments>
 56                      <PricingInfo Refundable="false">
 57                         <PassengerFare Type="ADT" Quantity="1">
 58                            <BaseFare Currency="EUR" Amount="165"/>
 59                            <EquiveFare Currency="RUB" Amount="8335"/>
 60                            <TotalFare Currency="RUB" Amount="14025"/>
 61                            <Taxes>
 62                               <Tax CurCode="RUB" TaxCode="YQF" Amount="4242"/>
 63                               <Tax CurCode="RUB" TaxCode="YRI" Amount="374"/>
 64                               <Tax CurCode="RUB" TaxCode="JD" Amount="844"/>
 65                               <Tax CurCode="RUB" TaxCode="QV" Amount="230"/>
 66                            </Taxes>
 67                            <Tariffs/>
 68                            <FareCalc>MOW SU X/BCN SU MAD225.45NUC225.45END ROE0.731857</FareCalc>
 69                            <LastTicketDateTime>2014-03-14T12:45:00</LastTicketDateTime>
 70                         </PassengerFare>
 71                      </PricingInfo>
 72                      <Commission Currency="RUB">0</Commission>
 73                      <Charges Currency="RUB">140.25</Charges>
 74                      <TotalPrice Currency="RUB">14165.25</TotalPrice>
 75                   </Flight>
 76                   <Agency/>
 77                   <ItinReceipts xsi:nil="true"/>
 78                   <FareStored xsi:nil="true"/>
 79                   <Travellers>
 80                      <Traveller Type="ADT" IsContact="true" Num="1">
 81                         <Meal/>
 82                         <Ticket/>
 83                         <Seats/>
 84                         <PersonalInfo DateOfBirth="20.05.1980" Nationality="RU" Gender="M">
 85                            <FirstName>PETR</FirstName>
 86                            <LastName>IVANOV</LastName>
 87                            <MiddleName/>
 88                         </PersonalInfo>
 89                         <LoyaltyCard/>
 90                         <ContactInfo>
 91                            <EmailID>TESTMAIL@MAIL.ru</EmailID>
 92                            <Telephone Type="M">
 93                               <PhoneNumber>79051234567</PhoneNumber>
 94                               <CountryAccessCode/>
 95                               <AreaCityCode/>
 96                            </Telephone>
 97                         </ContactInfo>
 98                         <DocumentInfo DocType="A" DocNum="123456" CountryCode="RU" DocElapsedTime="01.01.2020"/>
 99                         <VisaInfo/>
100                         <ArrAddress/>
101                         <PreferedPlace/>
102                         <DocStringFormats/>
103                      </Traveller>
104                   </Travellers>
105                </BookFlight>
106                <Requisites/>
107                <RequestType xsi:nil="true"/>
108                <UserID xsi:nil="true"/>
109                <Errors xsi:nil="true"/>
110             </Response>
111          </ResponseBin>
112       </ns1:BookFlightResponse>
113    </SOAP-ENV:Body>
114 </SOAP-ENV:Envelope>

Общий формат запроса / ответа отмены бронирования

После бронирования, если не истек таймлимит можно аннулировать сделанный заказ. Аннуляция заказа в Nemo может быть ручной (сделанной пользователем) и автоматической — по истечению таймлимита, установленного для заказа система сама аннулирует заказ.

WSDL: http://CLIENT_DOMAIN/nemoflights/wsdl.php?for=CancelBook

Запрос
 1 <soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ver="http://CLIENT_DOMAIN/nemoflights/?version%3D1.0%26for%3DCancelBook">
 2    <soapenv:Header/>
 3    <soapenv:Body>
 4       <ver:CancelBook>
 5          <RequestBin>
 6             <Request>
 7                <CancelBook BookID="?"/>
 8                <!--BookID — Id брони в системе Nemo, целое число-->
 9             </Request>
10             <Source>
11                <ClientId>?</ClientId>
12                <!--ClientId — ID клиента в системе Nemo. Можно посмотреть/добавить в разделе 
13                 "Администрирование" ? "Веб-служба. Авторизация".-->
14                <APIKey>?</APIKey>
15                <!--APIKey — секретный ключ доступа к API Nemo. Можно посмотреть/добавить в разделе 
16                 "Администрирование" ? "Веб-служба. Авторизация".-->
17                <Language>?</Language>
18                <!--Language — язык-->
19                <Currency>?</Currency>
20                <!-- CUrrency — валюта-->
21             </Source>
22          </RequestBin>
23       </ver:CancelBook>
24    </soapenv:Body>
25 </soapenv:Envelope>
Ответ
 1 <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">
 2    <SOAP-ENV:Body>
 3       <ns1:CancelBookResponse>
 4          <ResponseBin>
 5             <Response>
 6                <CancelBook BookID="?">
 7                <!--BookID — Id брони в системе Nemo, целое число-->
 8                   <Result Success="?"/>
 9                   <!--Success — результат отмены брони, true или false-->
10                </CancelBook>
11                <Requisites/>
12                <RequestType xsi:nil="true"/>
13                <UserID xsi:nil="true"/>
14                <Errors xsi:nil="true"/>
15             </Response>
16          </ResponseBin>
17       </ns1:CancelBookResponse>
18    </SOAP-ENV:Body>
19 </SOAP-ENV:Envelope>

API бронирования, отмены отелей

Штрафы за аннуляцию

Всегда в явном виде нужно указывать пользователю информацию о штрафах за аннуляцию до бронирования.

Штрафы получаются по каждой услуге отдельным запросом. Нужно указать тип услуги, идентификатор результата поиска и выбранную категорию.

Внимание. Для отелей из Hotelbeds (Supplier=HOTELBEDS) штрафы до бронирования получить невозможно.

WSDL (тестовый сервер): http://tst.nemo-ibe.com/wsdev/wsdl.php?for=Penalty

Запрос
 1 <soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" 
 2 xmlns:ver="http://tst.nemo-ibe.com/wsdev/?version%3D1.0%26for%3DPenalty">
 3   <soapenv:Header/>
 4   <soapenv:Body>
 5     <ver:penalty>
 6       <RequestBin>
 7         <Request>
 8           <Penalty>
 9             <Item>
10               <Type>HOTELS</Type>
11               <CacheId>1867246</CacheId>
12               <CategoryId>1</CategoryId>
13             </Item>
14           </Penalty>
15         </Request>
16         <Source>
17           <ClientId></ClientId>
18           <APIKey></APIKey>
19           <Language>ru</Language>
20           <Currency>RUB</Currency>
21         </Source>
22       </RequestBin>
23     </ver:penalty>
24   </soapenv:Body>
25 </soapenv:Envelope>

Элемент Item

Элемент Описание Допустимые значения
Type Обязательный. Тип объекта. HOTELS
CacheId Обязательный. Идентификатор результата поиска в системе Nemo. Целое число
CategoryId Обязательный. Идентификатор категории. Целое число

Элемент Source

Элемент Описание Допустимые значения
ClientID Обязательный. ID клиента в системе Nemo.

Можно посмотреть/добавить в "Администрирование" ⇨ "Веб-служба. Авторизация".

Целое число.
APIKey Обязательный. APIKey - секретный ключ доступа к API Nemo.

Можно посмотреть/добавить в "Администрирование" ⇨ "Веб-служба. Авторизация".

Латинские буквы и цифры. Всего 32 символа.
Ответ
 1 <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">
 2   <SOAP-ENV:Body>
 3     <ns1:penaltyResponse>
 4       <ResponseBin>
 5         <Response>
 6           <Penalty>
 7             <ItemDateBegin>2013-10-15 00:00:00</ItemDateBegin>
 8             <CancelCharges>
 9               <Charge>
10                 <DateFrom>2013-10-12 00:00:00</DateFrom>
11                 <DateTo>2013-10-15 23:59:59</DateTo>
12                 <Money Currency="RUB">74733.84</Money>
13               </Charge>
14               <Charge>
15                 <DateFrom>2013-09-23 00:00:00</DateFrom>
16                 <DateTo>2013-10-11 00:00:00</DateTo>
17                 <Money Currency="RUB">67260.46</Money>
18               </Charge>
19               <Charge>
20                 <DateFrom>2013-08-01 17:59:00</DateFrom>
21                 <DateTo>2013-09-22 00:00:00</DateTo>
22                 <Money Currency="RUB">12455.64</Money>
23               </Charge>
24             </CancelCharges>
25             <ModifyCharges/>
26           </Penalty>
27         </Response>
28       </ResponseBin>
29     </ns1:penaltyResponse>
30   </SOAP-ENV:Body>
31 </SOAP-ENV:Envelope>

Элемент Penalty

Элемент Описание Допустимые значения
ItemDateBegin Обязательный. Дата начала услуги (дата заселения в отель). Формат гггг-мм-дд чч:мм:сс
CancelCharges Необязательный. Содержит информацию о штрафах за аннуляцию. Элемент Charge
ModifyCharges Необязательный. Содержит информацию о штрафах за модификацию. Элемент Charge

Штрафы разбиваются по временным интервалам. На каждом интервале указывается значение штрафа.

Элемент Charge

Элемент Описание Допустимые значения
DateFrom Обязательный. Дата/время начала интервала. Формат гггг-мм-дд чч:мм:сс
DateTo Необязательный. Дата/время окончания интервала. Формат гггг-мм-дд чч:мм:сс
Money Обязательный. Сумма штрафа. Вещественное число.

Атрибут: Currency - код валюты.


Бронирование

Запрос

Схема запроса позволяет указывать несколько услуг для бронирования сразу. Это было сделано с заделом на возможность расширения функциональности в будущем при сохранении совместимости.

Сейчас же необходимо указывать только 1 услугу-отель (элемент Item) в запросе на бронирование.

Для успешного запроса нужно указать:

  1. Услугу. В запросе не требуется перечислять все параметры из результатов поиска, достаточно указать уникальный ID результата.
  2. Информация о клиентах. Все клиенты перечисляются в отдельной ветке и нумеруются по порядку. Указатели (элементы с номером клиента), также добавляются в описание услуги.
  3. Заказчик. Указатель на одну персону.

WSDL (тестовый сервер): http://tst.nemo-ibe.com/wsdev/wsdl.php?for=Booking

  1 <soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" 
  2 xmlns:ver="http://tst.nemo-ibe.com/wsdev/?version%3D1.0%26for%3DBooking">
  3   <soapenv:Header/>
  4   <soapenv:Body>
  5     <ver:booking>
  6       <RequestBin>
  7         <Request>
  8           <Booking>
  9             <Items>
 10               <!--Zero or more repetitions:-->
 11               <Item>
 12                 <!--You have a CHOICE of the next 3 items at this level-->
 13                 <HotelBookData>
 14                   <CacheId>1872666</CacheId>
 15                   <CategoryId>1</CategoryId>
 16                   <Rooms>
 17                     <!--Zero or more repetitions:-->
 18                     <Room Id="2">
 19                       <Persons>
 20                         <!--Zero or more repetitions:-->
 21                         <Person Number="1"/>
 22                         <Person Number="2"/>
 23                       </Persons>
 24                     </Room>
 25                     <Room Id="1">
 26                       <Persons>
 27                         <!--Zero or more repetitions:-->
 28                         <Person Number="3"/>
 29                       </Persons>
 30                     </Room>
 31                   </Rooms>
 32                 </HotelBookData>
 33                 <Customer>
 34                   <Person Number="1"/>
 35                 </Customer>
 36               </Item>
 37             </Items>
 38             <Persons>
 39               <!--Zero or more repetitions:-->
 40               <Person Number="1" Type="ADT">
 41                 <!--Optional:-->
 42                 <Lastname>IVANOV</Lastname>
 43                 <!--Optional:-->
 44                 <Name>IVAN</Name>
 45                 <!--Optional:-->
 46                 <Middlename>IVANOVICH</Middlename>
 47                 <!--Optional:-->
 48                 <DateOfBirth>1987-12-12</DateOfBirth>
 49                 <!--Optional:-->
 50                 <Phone>+79871231212</Phone>
 51                 <!--Optional:-->
 52                 <Email>m.rudenko@mute-lab.com</Email>
 53                 <!--Optional:-->
 54                 <Gender>MR</Gender>
 55                 <!--Optional:-->
 56                 <Document Type="P">
 57                   <Series>1811</Series>
 58                   <Number>912219</Number>
 59                   <!--Optional:-->
 60                   <IssueDate>2012-12-12</IssueDate>
 61                   <!--Optional:-->
 62                   <ExpiryDate>2014-12-12</ExpiryDate>
 63                 </Document>
 64               </Person>
 65               <Person Number="2" Type="CHD">
 66                 <!--Optional:-->
 67                 <Lastname>PETROV</Lastname>
 68                 <!--Optional:-->
 69                 <Name>IVAN</Name>
 70                 <!--Optional:-->
 71                 <Middlename>MIKHAILOVICH</Middlename>
 72                 <!--Optional:-->
 73                 <DateOfBirth>2008-12-12</DateOfBirth>
 74                 <!--Optional:-->
 75                 <Phone>+79871231212</Phone>
 76                 <!--Optional:-->
 77                 <Email>m.rudenko@mute-lab.com</Email>
 78                 <!--Optional:-->
 79                 <Gender>MR</Gender>
 80                 <!--Optional:-->
 81                 <Document Type="P">
 82                   <Series>1866</Series>
 83                   <Number>913319</Number>
 84                   <!--Optional:-->
 85                   <IssueDate>2012-12-12</IssueDate>
 86                   <!--Optional:-->
 87                   <ExpiryDate>2014-12-12</ExpiryDate>
 88                 </Document>
 89               </Person>
 90               <Person Number="3" Type="ADT">
 91                 <!--Optional:-->
 92                 <Lastname>SIDOROV</Lastname>
 93                 <!--Optional:-->
 94                 <Name>IVAN</Name>
 95                 <!--Optional:-->
 96                 <Middlename>SERGEEVICH</Middlename>
 97                 <!--Optional:-->
 98                 <DateOfBirth>1987-12-12</DateOfBirth>
 99                 <!--Optional:-->
100                 <Phone>+79871231212</Phone>
101                 <!--Optional:-->
102                 <Email>m.rudenko@mute-lab.com</Email>
103                 <!--Optional:-->
104                 <Gender>MR</Gender>
105                 <!--Optional:-->
106                 <Document Type="P">
107                   <Series>1866</Series>
108                   <Number>913319</Number>
109                   <!--Optional:-->
110                   <IssueDate>2012-12-12</IssueDate>
111                   <!--Optional:-->
112                   <ExpiryDate>2014-12-12</ExpiryDate>
113                 </Document>
114               </Person>
115             </Persons>
116           </Booking>
117         </Request>
118         <Source>
119           <ClientId></ClientId>
120           <APIKey></APIKey>
121           <Language>ru</Language>
122           <Currency>RUB</Currency>
123         </Source>
124       </RequestBin>
125     </ver:booking>
126   </soapenv:Body>
127 </soapenv:Envelope>

Элемент Booking

Элемент Описание Допустимые значения
Items Обязательный. Массив элементов Item. Элемент Item
Customer Обязательный. Элемент установки заказчика.  
Persons Обязательный. Массив клиентов.  

Данные об услугах записываются в элементы <Item>.

Элемент Item

Элемент Описание Допустимые значения
HotelBookData Обязательный. В зависимости от типа объекта бронирования. В данный момент возможно указать только данные для отеля.  
Persons Необязательный. Привязка клиентов к услуге. Если не указаны, будут привязаны все из указанных в главном элементе Booking. [<Person Number="1" />]

Бронирование отеля. Для бронирования отеля необходимы следующие параметры:

  1. ID результата поиска - один отель
  2. ID выбранной категории этого отеля
  3. Распределение клиентов по комнатам.

Элемент HotelBookData

Элемент Описание Допустимые значения
CacheId Обязательный. Идентификатор результата поиска для данного отеля в системе Nemo. Целое число
CategoryId Обязательный. Идентификатор категории. Целое число
Rooms Обязательный. Распределение клиентов по комнатам. Список элементов Room
Room Атрибут Id

Ид комнаты из результата поиска

Элемент Persons

Целое число
Persons Обязательный.

Список людей

Список элементов Person
Person Обязательный.

Атрибут Number Номер пассажира из Booking ->Persons->Person->Number

Целое число

Информация о клиентах. Для успешного завершения бронирования нужно указать как минимум одного клиента. Максимальное число клиентов в текущей версии не ограничено.

Набор обязательных данных может меняться в зависимости от типов услуг в бронировании. Рекомендуемый набор обязательных параметров: Lastname, Name, DateOfBirth. Остальные обязательные параметры будут устанавливаться индивидуально при подключении к сервису.

Элемент Person

Элемент Описание Допустимые значения
Атрибут Number Обязательный. Номер клиента, необходим для правильной привязки к услугам. Целое число
Type Обязательный.

Тип пассажира.

Строка.

Возможные значения: ADT CLD INF

Lastname Фамилия. Строка в произвольном формате.
Name Имя. Строка в произвольном формате.
Middlename Отчество. Строка в произвольном формате.
DateOfBirth Дата рождения. Формат гггг-мм-дд.
Phone Телефон.

Рекомендуемый формат: +79871234567

Строка
Email Электронный адрес. Строка
Gender Пол. MR - мужчина,

MS - женщина.

Document Документ Элемент Document

Для некоторых услуг может потребоваться информация о документах.

Элемент Document

Элемент Описание Допустимые значения
Атрибут Type Обязательный. Тип документа. P - загранпаспорт

C - внутренний гражданский паспорт B - свидетельство о рождении

Series Необязательный. Серия документа. Можно указать слитно с номером в Number. Строка в произвольном формате
Number Обязательный. Номер документа. Строка в произвольном формате
IssueDate Необязательный. Дата выдачи документа. Формат гггг-мм-дд
ExpiryDate Необязательный. Дата истечения срока действия документа. Формат гггг-мм-дд

Элемент Source

Элемент Описание Допустимые значения
ClientID Обязательный. ID клиента в системе Nemo.

Можно посмотреть/добавить в "Администрирование" ⇨ "Веб-служба. Авторизация".

Целое число.
APIKey Обязательный. APIKey - секретный ключ доступа к API Nemo.

Можно посмотреть/добавить в "Администрирование" ⇨ "Веб-служба. Авторизация".

Латинские буквы и цифры. Всего 32 символа.
Ответ

После выполнения запроса сразу поступит информация о бронировании. В первую очередь нужно внимательно проверить статусы <Status> всех услуг в бронировании. Если бронировалась услуга со статусом в результатах поиска RQ (по запросу), то статус скорее всего будет не равен «booked». Через некоторое время проверять реальный статус бука отправляя запрос на чтение данных о бронировании.

  1 <SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" 
  2 xmlns:ns1="http://tst.nemo-ibe.com/wsdev/?version%3D1.0%26for%3DBooking" 
  3 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
  4   <SOAP-ENV:Body>
  5     <ns1:bookingResponse>
  6       <ResponseBin>
  7         <Response>
  8           <Booking>
  9             <Items>
 10               <Item Id="386610">
 11                 <Hotel Id="1872666">
 12                   <Supplier>GTA</Supplier>
 13                   <CityId>22046</CityId>
 14                   <DateBegin>2013-10-15</DateBegin>
 15                   <DateEnd>2013-10-18</DateEnd>
 16                   <CacheId>1872666</CacheId>
 17                   <Name>ADLON KEMPINSKI</Name>
 18                   <Categories>
 19                     <Category Id="1">
 20                       <Rooms>
 21                         <Room Count="1" Id="1" ServiceId="1"/>
 22                         <Room Count="1" Id="2" ServiceId="2"/>
 23                       </Rooms>
 24                       <TotalPrice Currency="RUB">74733.84</TotalPrice>
 25                     </Category>
 26                   </Categories>
 27                   <Services>
 28                     <Service Id="1" Status="OK">
 29                       <Desc>Standard Twin</Desc>
 30                       <Meal>Full Breakfast</Meal>
 31                       <Price Currency="RUB">37366.92</Price>
 32                     </Service>
 33                     <Service Id="2" Status="OK">
 34                       <Desc>Standard Twin</Desc>
 35                       <Meal>Full Breakfast</Meal>
 36                       <Price Currency="RUB">37366.92</Price>
 37                     </Service>
 38                   </Services>
 39                   <Rooms>
 40                     <Room Id="1" Type="TWIN"/>
 41                     <Room Id="2" Type="SNGL"/>
 42                   </Rooms>
 43                 </Hotel>
 44                 <Type>HOTELS</Type>
 45                 <Status>waiting</Status>
 46                 <Prices>
 47                   <Price Currency="RUB">74733.84</Price>
 48                   <Charges Currency="RUB">0</Charges>
 49                   <Commission Currency="RUB">0</Commission>
 50                   <Penalty Currency="RUB">0</Penalty>
 51                   <TotalPrice Currency="RUB">74733.84</TotalPrice>
 52                 </Prices>
 53                 <Dates>
 54                   <BookingDate>2013-08-01 19:49:56</BookingDate>
 55                   <UpdateDate>2013-08-01 19:49:57</UpdateDate>
 56                   <CancelDate xsi:nil="true"/>
 57                   <PenaltyDate>2013-07-31 19:10:37</PenaltyDate>
 58                   <AutoCancelDate>2013-08-01 19:51:56</AutoCancelDate>
 59                   <ConfirmationLimit/>
 60                 </Dates>
 61                 <Statuses>
 62                   <PaymentStatus>1</PaymentStatus>
 63                   <DocumentStatus>1</DocumentStatus>
 64                   <DeliveryStatus>1</DeliveryStatus>
 65                   <InvoiceStatus>1</InvoiceStatus>
 66                   <ProblemStatus>1</ProblemStatus>
 67                 </Statuses>
 68                 <Customer>
 69                   <Person Number="1"/>
 70                 </Customer>
 71                 <Persons>
 72                   <Person Number="1"/>
 73                   <Person Number="2"/>
 74                   <Person Number="3"/>
 75                 </Persons>
 76               </Item>
 77             </Items>
 78             <Persons>
 79               <Person Number="1">
 80                 <Lastname>IVANOV</Lastname>
 81                 <Name>IVAN</Name>
 82                 <Middlename>IVANOVICH</Middlename>
 83                 <DateOfBirth xsi:nil="true"/>
 84                 <Phone>+79871231212</Phone>
 85                 <Email>m.rudenko@mute-lab.com</Email>
 86                 <Gender xsi:nil="true"/>
 87                 <Document Type="P">
 88                   <Series>1811</Series>
 89                   <Number>912219</Number>
 90                   <IssueDate>2012-12-12 00:00:00</IssueDate>
 91                   <ExpiryDate>2014-12-12 00:00:00</ExpiryDate>
 92                 </Document>
 93               </Person>
 94               <Person Number="2">
 95                 <Lastname>PETROV</Lastname>
 96                 <Name>IVAN</Name>
 97                 <Middlename>MIKHAILOVICH</Middlename>
 98                 <DateOfBirth xsi:nil="true"/>
 99                 <Phone>+79871231212</Phone>
100                 <Email>m.rudenko@mute-lab.com</Email>
101                 <Gender xsi:nil="true"/>
102                 <Document Type="P">
103                   <Series>1866</Series>
104                   <Number>913319</Number>
105                   <IssueDate>2012-12-12 00:00:00</IssueDate>
106                   <ExpiryDate>2014-12-12 00:00:00</ExpiryDate>
107                 </Document>
108               </Person>
109               <Person Number="3">
110                 <Lastname>SIDOROV</Lastname>
111                 <Name>IVAN</Name>
112                 <Middlename>SERGEEVICH</Middlename>
113                 <DateOfBirth xsi:nil="true"/>
114                 <Phone>+79871231212</Phone>
115                 <Email>m.rudenko@mute-lab.com</Email>
116                 <Gender xsi:nil="true"/>
117                 <Document Type="P">
118                   <Series>1866</Series>
119                   <Number>913319</Number>
120                   <IssueDate>2012-12-12 00:00:00</IssueDate>
121                   <ExpiryDate>2014-12-12 00:00:00</ExpiryDate>
122                 </Document>
123               </Person>
124             </Persons>
125           </Booking>
126         </Response>
127       </ResponseBin>
128     </ns1:bookingResponse>
129   </SOAP-ENV:Body>
130 </SOAP-ENV:Envelope>

Структура ответа очень похожа на запрос. Выделяются те же основные элементы.

Элемент Booking

Элемент Описание Допустимые значения
Items Обязательный. Содержит элемент(ы) Item. Элемент Item
Persons Обязательный. Здесь перечислены все клиенты заказа. Элемент Person

В элементах Item раскрывается подробнейшая информация об одной услуге в бронировании.

Элемент Item

Элемент Описание Допустимые значения
Атрибут Id Обязательный.

Номер заказа в системе Nemo.

Целое число
Type Обязательный.

Тип объекта бронирования.

HOTELS
Status Обязательный. Статус объекта бронирования . booked - забронирован

cancelled - аннулирован pending confirmation - в процессе подтверждения pending – произошла попытка бронирования, которое не было завершено waiting – ожидается результат запроса на бронирование

Prices Обязательный. Данные о ценах. см. Элемент Prices
Dates Обязательный. Данные о датах. см. Элемент Dates
Statuses Обязательный. Различные дополнительные статусы заказанной услуги. см. Элемент Statuses
Persons Обязательный. Содержит клиентов привязанных к услуге. элементы Person
Hotel Необязательный. Элемент с данными об отеле. см. элемент Hotel (результат поиска отеля)

Информация о цене услуги вынесена в отдельную ветку:

Элемент Prices

Элемент Описание Допустимые значения
Price Обязательный. Базовая цена услуги. Вещественное число.

Атрибут Currency - код валюты.

Charges Необязательный. Сумма дополнительных сборов. Вещественное число.

Атрибут Currency - код валюты.

Commission Необязательный. Сумма комиссий (вычитается из общей стоимости). Вещественное число.

Атрибут Currency - код валюты.

Penalty Необязательный. Сумма штрафов. Вещественное число.

Атрибут Currency - код валюты.

TotalPrice Обязательный. Итоговая стоимость.

= Price + Charges + Commission

Вещественное число.

Атрибут Currency - код валюты.

Информация о датах услуги также вынесена в отдельную ветку:

Элемент Dates

Элемент Описание Допустимые значения
BookingDate Обязательный. Дата бронирования. Формат гггг-мм-дд чч:мм:сс
UpdateDate Необязательный. Дата обновления. Формат гггг-мм-дд чч:мм:сс
CancelDate Необязательный. Дата аннуляции. Формат гггг-мм-дд чч:мм:сс
PenaltyDate Необязательный. Дата наступления штрафов. Формат гггг-мм-дд чч:мм:сс
AutoCancelDate Необязательный. Дата автоаннулирования. Формат гггг-мм-дд чч:мм:сс

Дополнительные статусы:

Элемент Statuses

Элемент Описание Допустимые значения
PaymentStatus Необязательный.

Статус оплаты.

Целое число

1 - неоплачено 2 - частично оплачено 3 - оплачено

DocumentStatus Необязательный.

Статус ваучера.

Целое число

1 - документ не сформирован 2 - документ сформирован

DeliveryStatus Необязательный.

Статус доставки.

Целое число

1 - не доставлен 2 - доставлен

InvoiceStatus Необязательный.

Статус счета.

Целое число

1 - счет выставлен. 2 - счет не выставлен.

Информация о клиентах заказа полностью повторяет структуру запроса.


Подтверждение бронирования

Запрос

Подтверждение бронирования заказа.

WSDL (тестовый сервер): http://tst.nemo-ibe.com/wsdev/wsdl.php?for=ConfirmBooking

 1 <soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ver="http://tst.nemo-ibe.com/wsdev/?version%3D1.0%26for%3DConfirmBooking">
 2    <soapenv:Header/>
 3    <soapenv:Body>
 4       <ver:confirm>
 5          <RequestBin>
 6             <Request>
 7                <BookingId>179547</BookingId>
 8             </Request>
 9             <Source>
10                <ClientId></ClientId>
11                <APIKey></APIKey>
12                <Language>ru</Language>
13                <Currency>RUB</Currency>
14             </Source>
15          </RequestBin>
16       </ver:confirm>
17    </soapenv:Body>
18 </soapenv:Envelope>

Элемент Request

Элемент Описание Допустимые значения
BookingID Обязательный. Идентификатор заказа в системе Nemo. Целое число

Элемент Source

Элемент Описание Допустимые значения
ClientID Обязательный. ID клиента в системе Nemo.

Можно посмотреть/добавить в "Администрирование" ⇨ "Веб-служба. Авторизация".

Целое число.
APIKey Обязательный. APIKey - секретный ключ доступа к API Nemo.

Можно посмотреть/добавить в "Администрирование" ⇨ "Веб-служба. Авторизация".

Латинские буквы и цифры. Всего 32 символа.
Ответ
 1 <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">
 2    <SOAP-ENV:Body>
 3       <ns1:confirmResponse>
 4          <ResponseBin>
 5             <Response>
 6                <Books>
 7                   <Book>
 8                      <Id>179547</Id>
 9                      <Status>booked</Status>
10                   </Book>
11                </Books>
12             </Response>
13          </ResponseBin>
14       </ns1:confirmResponse>
15    </SOAP-ENV:Body>
16 </SOAP-ENV:Envelope>


Выгрузка актуальных данных по заказу(ам)

Используется для экспорта бронирований и для обновления данных в локальной клиентской базе.

WSDL (тестовый сервер): http://tst.nemo-ibe.com/wsdev/wsdl.php?for=Export

Запрос
 1 <soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" 
 2 xmlns:ver="http://tst.nemo-ibe.com/wsdev/?version%3D1.0%26for%3DExport">
 3   <soapenv:Header/>
 4   <soapenv:Body>
 5     <ver:export>
 6       <RequestBin>
 7         <Request>
 8           <Export>
 9             <Items>
10               <!--Zero or more repetitions:-->
11               <Item Id="386621"/>
12             </Items>
13           </Export>
14         </Request>
15         <Source>
16           <ClientId></ClientId>
17           <APIKey></APIKey>
18           <Language>ru</Language>
19           <Currency>RUB</Currency>
20         </Source>
21       </RequestBin>
22     </ver:export>
23   </soapenv:Body>
24 </soapenv:Envelope>

Элемент Item

Элемент Описание Допустимые значения
Атрибут Id Обязательный. Идентификатор заказа в системе Nemo. Целое число

Элемент Source

Элемент Описание Допустимые значения
ClientID Обязательный. ID клиента в системе Nemo.

Можно посмотреть/добавить в "Администрирование" ⇨ "Веб-служба. Авторизация".

Целое число.
APIKey Обязательный. APIKey - секретный ключ доступа к API Nemo.

Можно посмотреть/добавить в "Администрирование" ⇨ "Веб-служба. Авторизация".

Латинские буквы и цифры. Всего 32 символа.
Ответ

Ответ содержит элементы результатов бронирований. См. описание выше.

  1 <SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" 
  2 xmlns:ns1="http://tst.nemo-ibe.com/wsdev/?version%3D1.0%26for%3DExport" 
  3 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
  4   <SOAP-ENV:Body>
  5     <ns1:exportResponse>
  6       <ResponseBin>
  7         <Response>
  8           <Export>
  9             <Items>
 10               <Item Id="386621">
 11                 <Hotel Id="1872666">
 12                   <Supplier>GTA</Supplier>
 13                   <CityId>22046</CityId>
 14                   <DateBegin>2013-10-15</DateBegin>
 15                   <DateEnd>2013-10-18</DateEnd>
 16                   <CacheId>1872666</CacheId>
 17                   <Name>ADLON KEMPINSKI</Name>
 18                   <Categories>
 19                     <Category Id="1">
 20                       <Rooms>
 21                         <Room Count="1" Id="1" ServiceId="1"/>
 22                         <Room Count="1" Id="2" ServiceId="2"/>
 23                       </Rooms>
 24                       <TotalPrice Currency="RUB">74733.84</TotalPrice>
 25                     </Category>
 26                   </Categories>
 27                   <Services>
 28                     <Service Id="1" Status="OK">
 29                       <Desc>Standard Twin</Desc>
 30                       <Meal>Full Breakfast</Meal>
 31                       <Price Currency="RUB">37366.92</Price>
 32                     </Service>
 33                     <Service Id="2" Status="OK">
 34                       <Desc>Standard Twin</Desc>
 35                       <Meal>Full Breakfast</Meal>
 36                       <Price Currency="RUB">37366.92</Price>
 37                     </Service>
 38                   </Services>
 39                   <Rooms>
 40                     <Room Id="1" Type="TWIN"/>
 41                     <Room Id="2" Type="SNGL"/>
 42                   </Rooms>
 43                 </Hotel>
 44                 <Type>HOTELS</Type>
 45                 <Status>waiting</Status>
 46                 <Prices>
 47                   <Price Currency="RUB">74733.84</Price>
 48                   <Charges Currency="RUB">0</Charges>
 49                   <Commission Currency="RUB">0</Commission>
 50                   <Penalty Currency="RUB">0</Penalty>
 51                   <TotalPrice Currency="RUB">74733.84</TotalPrice>
 52                 </Prices>
 53                 <Dates>
 54                   <BookingDate>2013-08-01 20:21:47</BookingDate>
 55                   <UpdateDate>2013-08-01 20:35:01</UpdateDate>
 56                   <CancelDate xsi:nil="true"/>
 57                   <PenaltyDate>2013-07-31 19:10:37</PenaltyDate>
 58                   <AutoCancelDate>2013-08-01 20:23:47</AutoCancelDate>
 59                   <ConfirmationLimit/>
 60                 </Dates>
 61                 <Statuses>
 62                   <PaymentStatus>1</PaymentStatus>
 63                   <DocumentStatus>1</DocumentStatus>
 64                   <DeliveryStatus>1</DeliveryStatus>
 65                   <InvoiceStatus>1</InvoiceStatus>
 66                   <ProblemStatus>1</ProblemStatus>
 67                 </Statuses>
 68                 <Customer>
 69                   <Person Number="1"/>
 70                 </Customer>
 71                 <Persons>
 72                   <Person Number="1"/>
 73                   <Person Number="2"/>
 74                   <Person Number="3"/>
 75                 </Persons>
 76               </Item>
 77             </Items>
 78             <Persons>
 79               <Person Number="1">
 80                 <Lastname>IVANOV</Lastname>
 81                 <Name>IVAN</Name>
 82                 <Middlename>IVANOVICH</Middlename>
 83                 <DateOfBirth xsi:nil="true"/>
 84                 <Phone>+79871231212</Phone>
 85                 <Email>m.rudenko@mute-lab.com</Email>
 86                 <Gender xsi:nil="true"/>
 87                 <Document Type="P">
 88                   <Series>1811</Series>
 89                   <Number>912219</Number>
 90                   <IssueDate>2012-12-12 00:00:00</IssueDate>
 91                   <ExpiryDate>2014-12-12 00:00:00</ExpiryDate>
 92                 </Document>
 93               </Person>
 94               <Person Number="2">
 95                 <Lastname>PETROV</Lastname>
 96                 <Name>IVAN</Name>
 97                 <Middlename>MIKHAILOVICH</Middlename>
 98                 <DateOfBirth xsi:nil="true"/>
 99                 <Phone>+79871231212</Phone>
100                 <Email>m.rudenko@mute-lab.com</Email>
101                 <Gender xsi:nil="true"/>
102                 <Document Type="P">
103                   <Series>1866</Series>
104                   <Number>913319</Number>
105                   <IssueDate>2012-12-12 00:00:00</IssueDate>
106                   <ExpiryDate>2014-12-12 00:00:00</ExpiryDate>
107                 </Document>
108               </Person>
109               <Person Number="3">
110                 <Lastname>SIDOROV</Lastname>
111                 <Name>IVAN</Name>
112                 <Middlename>SERGEEVICH</Middlename>
113                 <DateOfBirth xsi:nil="true"/>
114                 <Phone>+79871231212</Phone>
115                 <Email>m.rudenko@mute-lab.com</Email>
116                 <Gender xsi:nil="true"/>
117                 <Document Type="P">
118                   <Series>1866</Series>
119                   <Number>913319</Number>
120                   <IssueDate>2012-12-12 00:00:00</IssueDate>
121                   <ExpiryDate>2014-12-12 00:00:00</ExpiryDate>
122                 </Document>
123               </Person>
124             </Persons>
125           </Export>
126         </Response>
127       </ResponseBin>
128     </ns1:exportResponse>
129   </SOAP-ENV:Body>
130 </SOAP-ENV:Envelope>

Формат ответа аналогичен результату бронирования.


Аннуляция заказа

WSDL (тестовый сервер): http://tst.nemo-ibe.com/wsdev/wsdl.php?for=CancelBooking

Запрос
 1 <soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" 
 2 xmlns:ver="http://tst.nemo-ibe.com/wsdev/?version%3D1.0%26for%3DCancelBooking">
 3   <soapenv:Header/>
 4   <soapenv:Body>
 5     <ver:cancel>
 6       <RequestBin>
 7         <Request>
 8           <CancelBooking>            
 9             <Item Id="386621"/>
10           </CancelBooking>
11         </Request>
12         <Source>
13           <ClientId></ClientId>
14           <APIKey></APIKey>
15           <Language>ru</Language>
16           <Currency>RUB</Currency>
17         </Source>
18       </RequestBin>
19     </ver:cancel>
20   </soapenv:Body>
21 </soapenv:Envelope>

Элемент Item

Элемент Описание Допустимые значения
Атрибут Id Обязательный. Идентификатор заказа в системе Nemo. Целое число

Элемент Source

Элемент Описание Допустимые значения
ClientID Обязательный. ID клиента в системе Nemo.

Можно посмотреть/добавить в "Администрирование" ⇨ "Веб-служба. Авторизация".

Целое число.
APIKey Обязательный. APIKey - секретный ключ доступа к API Nemo.

Можно посмотреть/добавить в "Администрирование" ⇨ "Веб-служба. Авторизация".

Латинские буквы и цифры. Всего 32 символа.
Ответ

см. результаты бронирования.

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

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

Необходимо убедиться, что API запросы на поиск отправляются на доменное имя, указанное для агентства (субагента) в разделе Администрирование -> Настройки агентства


Запрос

Пример запроса

http://host/index.php?go=settings/download_metasearch_stat&date1=2012-05-01&date2=2012-06-01&partner=aviasales&password=secret

Параметры запроса

Параметр запроса Описание
date1 YYYY-MM-DD дата.
date2 YYYY-MM-DD дата.
partner Идентификатор партнёра - алиас источника переходов модуля метрики.
password Пароль партнёра - пароль источника переходов модуля метрики.
Ответ
 1 <bookings>
 2   <booking>
 3     <nemo_id>123123</nemo_id>
 4     <id>JHKHVR</id>
 5     <created_at>2012-05-02 00:02:01</created_at>
 6     <marker>1232:1222.t</marker>
 7     <price>1199</price>
 8     <profit>200</profit>
 9     <currency>RUB</currency>
10     <state>PAID</state>
11     <validatingCarrier>UN</validatingCarrier>
12     <segment>
13       <flight>
14         <operatingCarrier>UN</operatingCarrier>
15         <number>3</number>
16         <departure>DME</departure>
17         <departureDate>2012-09-25</departureDate>
18         <departureTime>09:55</departureTime>
19         <arrival>LED</arrival>
20         <arrivalDate>2012-09-25</arrivalDate>
21         <arrivalTime>11:10</arrivalTime>
22         <equipment>735</equipment>
23         <cabin>Y</cabin>
24       </flight>
25     </segment>
26     <adults>1</adults>
27     <children>0</children>
28     <infants>0</infants>
29   </booking>
30   ...more bookings...
31 </bookings>

Описание параметров

    /bookings - корневой элемент содержащий информацию о бронированиях.
    //booking - информации об одном бронировании.
    nemo_id - ид заказа в системе Немо.
    id - уникальный идентификатор бронирования в системе поставщика (локатор).
    created_at - YYYY-MM-DD HH:MM время и дата бронирования в таймзоне UTC; если даты бронирования нет, то дата начала создания заказа.
    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 лет.

Время и дата бронирования created_at передается в таймзоне UTC+4.

Состояние брони state может принимать значения:

  • PROCESSING - забронирован;
  • PAID - выписан;
  • CANCELLED - аннулирован (по любым причинам).

Прибыль партнёра profit от данного бронирования в формате 00.99 (через точку). Размер прибыли партнера устанавливается для конкретного источника трафика в Модуле метрики и считается как процент от стоимости оплаченного заказа, включая комиссию платежного шлюза и апсейловые продажи. В последующем расчет прибыли может измениться. При возврате авиабилетов сумма ранее засчитанная как прибыль партнера (метапоисковой системы) должна подставляться с минусом в данном периоде.

Количество детей до 2 лет infants относится только к младенцам без места. Количество младенцев с местом объединяются с количеством детей до 12 лет children.

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

Выгрузка заказов — это экспорт данных заказа или заказов для различных компонентов системы Nemo.

Процесс выгрузки

Схематично процесс выгрузки заказов представлен на блок-схеме.

Export.png

Статусы выгрузки заказа

Коды статусов выгрузки заказа соответствуют кодам состояния HTTP. Фактически указывается последний полученный код состояния HTTP, полученный при выгрузке данных по адресу, указанному в настройках выгрузки. Коды относятся к серверу, на который происходит выгрузка заказов.

Код Описание
0 Неизвестный ответ. Адрес для выгрузки не доступен.
200 OK — успешный запрос.
301 Запрошенный документ был окончательно перенесен на новый URI, указанный в поле Location заголовка.
403 Сервер понял запрос, но он отказывается его выполнять из-за ограничений в доступе для клиента к указанному ресурсу.
404 Сервер понял запрос, но не нашёл соответствующего ресурса по указанному URI.
422 Unprocessable Entity — сервер успешно принял запрос, может работать с указанным видом данных, в теле запроса XML-документ имеет верный синтаксис, но имеется какая-то логическая ошибка, из-за которой невозможно произвести операцию над ресурсом.
500 Любая внутренняя ошибка сервера.

Выгрузка заказа для компонента «Авиабилеты»

Для компонента «Авиабилеты» доступна выгрузка заказов в форматах Nemo и/или Софи (при включенном модуле «Выгрузка заказов Софи»).

Формат Nemo

  1 <?xml version="1.0" encoding="UTF-8"?>
  2 <PNR>
  3   <Common>
  4     <id>277749</id>
  5     <Type>FLIGHTS</Type>
  6     <Service>SABRE</Service>
  7     <Locator>SQLJNK</Locator>
  8     <ExternalId>1234567</ExternalId> <!-- Внешний идентификатор -->
  9     <Stamp>123456789</Stamp>
 10     <UtmSource>100</UtmSource> <!-- Источник перехода -->
 11     <BeginDateTime>2014.12.18-10:45</BeginDateTime>
 12     <EndDateTime>2014.12.25-16:40</EndDateTime>
 13     <TicketingDateTime>2014.12.09-15:02</TicketingDateTime>
 14     <VoidDateTime/>
 15     <TotalPrice>
 16       <Amount>10773.8</Amount>
 17       <CurrencyCode>RUB</CurrencyCode>
 18     </TotalPrice>
 19     <UserId>2964</UserId>
 20     <EEUserId/>
 21     <UserLogin>userLogin</UserLogin>
 22     <GroupId>2963</GroupId>
 23     <CompanyId>2963</CompanyId>
 24     <UserStatus>Менеджер</UserStatus>
 25     <DateCreate>2014.12.09-14:59</DateCreate>
 26     <ExtServices> <!-- Дополнительные услуги -->
 27       <ExtService>
 28         <Type>AeroExpress</Type>
 29         <Price>
 30           <Amount>1440</Amount>
 31           <CurrencyCode>RUB</CurrencyCode>
 32         </Price>
 33       </ExtService>
 34       <ExtService>
 35         <Type>AlphaInsurance</Type>
 36         <Price>
 37           <Amount>480</Amount>
 38           <CurrencyCode>RUB</CurrencyCode>
 39         </Price>
 40         <Insurances>
 41           <Insurance>
 42             <Number>Z694.198TEST.2765282</Number>
 43             <Fio>IVANOV IVAN</Fio>
 44           </Insurance>
 45           <Insurance>
 46             <Number>Z694.198TEST.2765283</Number>
 47             <Fio>PETROV PETR</Fio>
 48           </Insurance>
 49         </Insurances>
 50       </ExtService>
 51     </ExtServices>
 52   </Common>
 53   <Payment>
 54     <Title>Testpay</Title>
 55     <Method>Testpay</Method>
 56     <BillingId>117607091</BillingId>
 57     <Date>2014-12-09 15:00:39</Date>
 58     <CreateDate>2014-12-09 15:00:34</CreateDate>
 59     <Status>ticket</Status>
 60     <PenaltyDate/>
 61     <Timelimit>2014-12-10 14:59:55</Timelimit>
 62     <PaymentCharge> <!-- Сбор платежного шлюза -->
 63       <Amount>313.8</Amount>
 64       <CurrencyCode>RUB</CurrencyCode>
 65     </PaymentCharge>
 66     <Charge> <!-- Общий сбор минус сбор платежного шлюза -->
 67       <Amount>1920</Amount>
 68       <CurrencyCode>RUB</CurrencyCode>
 69     </Charge>
 70     <BaseFare> <!-- Тариф -->
 71       <Amount>1600</Amount>
 72       <CurrencyCode>RUB</CurrencyCode>
 73     </BaseFare>
 74     <Book> <!-- Тариф плюс таксы -->
 75       <Amount>8540</Amount>
 76       <CurrencyCode>RUB</CurrencyCode>
 77     </Book>
 78     <Penalty>
 79       <Amount>0</Amount>
 80       <CurrencyCode>RUB</CurrencyCode>
 81     </Penalty>
 82     <Total>
 83       <Amount>10773.8</Amount>
 84       <CurrencyCode>RUB</CurrencyCode>
 85     </Total>
 86     <Commission>
 87       <Amount>0</Amount>
 88       <CurrencyCode>RUB</CurrencyCode>
 89     </Commission>
 90     <PaidValue>
 91       <Amount>10773.8</Amount>
 92       <CurrencyCode>RUB</CurrencyCode>
 93     </PaidValue>
 94   </Payment>
 95   <Client>
 96     <LastName/>
 97     <Name>SIDOROV PETR</Name>
 98     <MiddleName/>
 99     <Number/>
100     <Birth/>
101     <Email>mail@host.com</Email>
102     <Phone>+74950000000</Phone>
103   </Client>
104   <PassengersCount>2</PassengersCount>
105   <Passengers>
106     <Passenger>
107       <passenger_type>ADT</passenger_type>
108       <lastname>IVANOV</lastname>
109       <name>IVAN</name>
110       <gender>F</gender>
111       <date_of_birth>12.12.1987</date_of_birth>
112       <doc_type>C</doc_type>
113       <passport_number>1234567890</passport_number>
114       <currency_of_passport>24.03.2023</currency_of_passport>
115       <middlename/>
116       <passenger_id>37667</passenger_id>
117       <nationality>RU</nationality>
118       <email>mail@host.com</email>
119       <Tickets>
120         <Active>0</Active>
121         <Seg/>
122         <Num>5553984070962</Num>
123         <Date>2014-12-09 16:01:00</Date>
124       </Tickets>
125       <Tickets>
126         <Active>1</Active>
127         <Seg/>
128         <Num>5553984070964</Num>
129         <Date>2014-12-09 16:03:00</Date>
130       </Tickets>
131       <PriceInfo>
132         <BaseFare>
133           <Amount>800</Amount>
134           <CurrencyCode>RUB</CurrencyCode>
135         </BaseFare>
136         <TotalFare>
137           <Amount>4270</Amount>
138           <CurrencyCode>RUB</CurrencyCode>
139         </TotalFare>
140         <Commission>
141           <Amount>0</Amount>
142           <CurrencyCode>RUB</CurrencyCode>
143         </Commission>
144         <AirlineCommission>
145           <Amount>0</Amount>
146           <CurrencyCode>RUB</CurrencyCode>
147         </AirlineCommission>
148       </PriceInfo>
149     </Passenger>
150     <Passenger>
151       <passenger_type>ADT</passenger_type>
152       <doc_type>C</doc_type>
153       <middlename/>
154       <passenger_id>37668</passenger_id>
155       <lastname>PETROV</lastname>
156       <name>PETR</name>
157       <gender>M</gender>
158       <date_of_birth>20.12.1984</date_of_birth>
159       <passport_number>1234567899</passport_number>
160       <currency_of_passport>20.12.2029</currency_of_passport>
161       <nationality>RU</nationality>
162       <email>mail@host.com</email>
163       <Tickets>
164         <Active>0</Active>
165         <Seg/>
166         <Num>5553984070963</Num>
167         <Date>2014-12-09 16:01:00</Date>
168       </Tickets>
169       <Tickets>
170         <Active>1</Active>
171         <Seg/>
172         <Num>5553984070965</Num>
173         <Date>2014-12-09 16:03:00</Date>
174       </Tickets>
175       <PriceInfo>
176         <BaseFare>
177           <Amount>800</Amount>
178           <CurrencyCode>RUB</CurrencyCode>
179         </BaseFare>
180         <TotalFare>
181           <Amount>4270</Amount>
182           <CurrencyCode>RUB</CurrencyCode>
183         </TotalFare>
184         <Commission>
185           <Amount>0</Amount>
186           <CurrencyCode>RUB</CurrencyCode>
187         </Commission>
188         <AirlineCommission>
189           <Amount>0</Amount>
190           <CurrencyCode>RUB</CurrencyCode>
191         </AirlineCommission>
192       </PriceInfo>
193     </Passenger>
194   </Passengers>
195   <FlightType>Внутренний</FlightType>
196   <OrderInfo>
197     <Info>
198       <Company>Аэрофлот - Российские авиалинии</Company>
199       <CompanyCode>SU</CompanyCode>
200       <OperatingCompanyCode>FV</OperatingCompanyCode>
201       <StartDate>2014.12.18</StartDate>
202       <StartTime>10:45</StartTime>
203       <StartDayOfWeek>Thursday</StartDayOfWeek>
204       <FlightNumber>6128 (FV6128)</FlightNumber>
205       <StartAirportCode>VKO</StartAirportCode>
206       <StartAirportName>Внуково, Москва</StartAirportName>
207       <StartCountry>Россия</StartCountry>
208       <StartCountryCode>RU</StartCountryCode>
209       <EndAirportCode>LED</EndAirportCode>
210       <EndAirportName>Санкт-Петербург, Пулково</EndAirportName>
211       <EndCountry>Россия</EndCountry>
212       <EndCountryCode>RU</EndCountryCode>
213       <Time>1:30</Time>
214       <Equip>
215         <Name>Airbus 319</Name>
216         <Type>319</Type>
217       </Equip>
218       <ClassType>economy</ClassType>
219       <ClassTypeCode>R</ClassTypeCode>
220       <Meal/>
221     </Info>
222     <Info>
223       <Company>Аэрофлот - Российские авиалинии</Company>
224       <CompanyCode>SU</CompanyCode>
225       <OperatingCompanyCode>FV</OperatingCompanyCode>
226       <StartDate>2014.12.25</StartDate>
227       <StartTime>15:10</StartTime>
228       <StartDayOfWeek>Thursday</StartDayOfWeek>
229       <FlightNumber>6153 (FV6153)</FlightNumber>
230       <StartAirportCode>LED</StartAirportCode>
231       <StartAirportName>Санкт-Петербург, Пулково</StartAirportName>
232       <StartCountry>Россия</StartCountry>
233       <StartCountryCode>RU</StartCountryCode>
234       <EndAirportCode>VKO</EndAirportCode>
235       <EndAirportName>Внуково, Москва</EndAirportName>
236       <EndCountry>Россия</EndCountry>
237       <EndCountryCode>RU</EndCountryCode>
238       <Time>1:30</Time>
239       <Equip>
240         <Name>Airbus 319</Name>
241         <Type>319</Type>
242       </Equip>
243       <ClassType>economy</ClassType>
244       <ClassTypeCode>R</ClassTypeCode>
245       <Meal/>
246     </Info>
247   </OrderInfo>
248   <Remarks>Debit</Remarks>
249 </PNR>

Ремарка <Remarks>Debit</Remarks> является не обязательной, означает что заказ был оплачен с помощью способа оплаты «Депозит»; если же заказ был оплачен с использованием депозитного кредита, и депозит ушел в минус даже на 1 руб., то будет <Remarks>Credit</Remarks>.

Элемент <TotalFare> возвращает стоимость уже оплаченного заказа. Если же заказ забронирован, но не оплачен, то значение будет 0 RUB.

Элемент <CreateDate> в зависимости от состояния брони возвращает время окончания бронирования, если бронирование было завершено, иначе возвращает время создания брони.

Формат поддерживает возможность передачи нескольких номеров электронных билетов на одного пассажира (в том числе войдированных и аннулированных).

Формат Софи

 1 <?xml version="1.0" encoding="UTF-8"?>
 2 <order_snapshot xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
 3   <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"/>
 4   <customer email="cepogilixe@lackmail.net" phone="XXXX9048" name="" corp_code="2806"/>
 5   <products>
 6     <product>
 7      <!--@stamp - валидатор. Парсится из заказа(Сирена и Галилео). Если получить из ГДС не удалось, то передаётся валидатор, настроенный в реквизитах подключения к ГДС.-->
 8       <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">
 9         <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"/>
10       </air_ticket_prod>
11     </product>
12     <product>
13       <ral_ticket_prod rsrv_id="2496500" prod_id="200" origin="Киевский вокзал" destination="Внуково, Москва" departure_datetime="2015-01-16 06:45:00" cartype="standart" fare="360"/>
14     </product>
15     <product>
16       <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"/>
17     </product>
18     <product>
19       <payment_prod price="123"/>
20     </product>
21   </products>
22   <reservations>
23     <reservation rsrv_id="279307" crs="SABRE" rloc="MKQFBZ"/>
24     <reservation rsrv_id="2496500" crs="AeroExpress" rloc="218812"/>
25   </reservations>
26   <passengers>
27     <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"/>
28   </passengers>
29   <travel_docs>
30     <travel_doc>
31       <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"/>
32     </travel_doc>
33     <travel_doc>
34       <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"/>
35     </travel_doc>
36     <travel_doc>
37       <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"/>
38     </travel_doc>
39   </travel_docs>
40   <payments>
41     <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"/>
42   </payments>
43 </order_snapshot>
  • 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 - номер заказа у поставщика.

Выгрузка заказа для компонента «Отели»

Для компонента «Отели» доступна выгрузка заказов в формате Nemo.

Формат Nemo

  1 <?xml version="1.0" encoding="UTF-8"?>
  2 <PNR>
  3    <Common>
  4       <id>263462</id>
  5       <Type>HOTELS</Type>
  6       <Service>ACADEM</Service>
  7       <Locator>3028655</Locator>
  8       <BeginDateTime>2014.04.15-00:00</BeginDateTime>
  9       <EndDateTime>2014.04.16-00:00</EndDateTime>
 10       <TotalPrice>
 11          <Amount>1950</Amount>
 12          <CurrencyCode>RUB</CurrencyCode>
 13       </TotalPrice>
 14       <UserId>123</UserId>
 15       <EEUserId />
 16       <UserLogin>userLogin</UserLogin>
 17       <GroupId>332</GroupId>
 18       <UserStatus>Менеджер</UserStatus>
 19       <DateCreate>2014.03.21-16:11</DateCreate>
 20    </Common>
 21    <Payment>
 22       <Status>booked</Status>
 23       <PenaltyDate>2014.04.13-00:00</PenaltyDate>
 24       <Timelimit>2014-04-13 00:00:00</Timelimit>
 25       <Charge>
 26          <Amount>0</Amount>
 27          <CurrencyCode>RUB</CurrencyCode>
 28       </Charge>
 29       <Book>
 30          <Amount>1950</Amount>
 31          <CurrencyCode>RUB</CurrencyCode>
 32       </Book>
 33       <Penalty>
 34          <Amount>0</Amount>
 35          <CurrencyCode>RUB</CurrencyCode>
 36       </Penalty>
 37       <Total>
 38          <Amount>1950</Amount>
 39          <CurrencyCode>RUB</CurrencyCode>
 40       </Total>
 41       <Commission>
 42          <Amount>112</Amount>
 43          <CurrencyCode>RUB</CurrencyCode>
 44       </Commission>
 45       <PaidValue>
 46          <Amount>0</Amount>
 47          <CurrencyCode>RUB</CurrencyCode>
 48       </PaidValue>
 49    </Payment>
 50    <Client>
 51       <LastName>Сидоров</LastName>
 52       <Name>Владимир</Name>
 53       <MiddleName>Константинович</MiddleName>
 54       <Number>1806326598</Number>
 55       <Birth>1987-05-20</Birth>
 56       <Email>mail@host.com</Email>
 57       <Phone>+79871234567</Phone>
 58    </Client>
 59    <Passengers>
 60       <Passenger>
 61          <nationality>RU</nationality>
 62          <lastname>IVANOV</lastname>
 63          <name>IVAN</name>
 64       </Passenger>
 65    </Passengers>
 66    <Info>
 67       <Name>Интурист</Name>
 68       <City>
 69          <Code>34</Code>
 70          <Name>Великий Новгород</Name>
 71       </City>
 72       <Location />
 73       <StarRating>3</StarRating>
 74       <Days>2</Days>
 75       <Nights>1</Nights>
 76       <CheckInDate>2014.04.15</CheckInDate>
 77       <CheckOutDate>2014.04.16</CheckOutDate>
 78       <CheckInTime>14:00</CheckInTime>
 79       <CheckOutTime>12:00</CheckOutTime>
 80       <OnRequest>false</OnRequest>
 81    </Info>
 82    <Rooms>
 83       <Room>
 84          <Name>Двухместный стандарт (две кровати)</Name>
 85          <Type>SNGL</Type>
 86          <FareId>1</FareId>
 87       </Room>
 88    </Rooms>
 89    <Fares>
 90       <Fare>
 91          <Id>1</Id>
 92          <Price>
 93             <Amount>1950</Amount>
 94             <CurrencyCode>RUB</CurrencyCode>
 95          </Price>
 96          <Meals>Завтрак "Шведский стол",Отсутствует</Meals>
 97          <Description>Одноместный</Description>
 98       </Fare>
 99    </Fares>
100    <CancelCharges>
101       <Charge>
102          <DateFrom>2014.04.13-00:00</DateFrom>
103          <DateTo>2014.04.15-00:00</DateTo>
104          <Amount>1488</Amount>
105          <CurrencyCode>RUB</CurrencyCode>
106       </Charge>
107    </CancelCharges>
108    <ModifyCharges />
109    <ModificationMethods>
110       <Method>MOD_PASS_NAMES</Method>
111       <Method>MOD_DATES</Method>
112    </ModificationMethods>
113 </PNR>

Выгрузка заказа для компонента «ЖД»

Для компонента «ЖД» доступна выгрузка заказов в формате Nemo.

Формат Nemo

  1 <?xml version="1.0" encoding="UTF-8"?>
  2 <PNR>
  3    <Common>
  4       <id>123456</id>
  5       <Type>TRAINS</Type>
  6       <Service>UFS</Service>
  7       <Locator>64345987</Locator>
  8       <BeginDateTime>2014.04.26-00:15</BeginDateTime>
  9       <EndDateTime>2014.04.26-13:33</EndDateTime>
 10       <TicketingDateTime>2014.06.06-15:10</TicketingDateTime>
 11       <VoidDateTime>2014.06.07-14:19</VoidDateTime>
 12       <TotalPrice>
 13          <Amount>57505.8</Amount>
 14          <CurrencyCode>RUB</CurrencyCode>
 15       </TotalPrice>
 16       <UserId>123</UserId>
 17       <EEUserId />
 18       <UserLogin>mikhalevtur</UserLogin>
 19       <GroupId>122</GroupId>
 20       <UserStatus>Менеджер</UserStatus>
 21       <DateCreate>2014.04.24-15:03</DateCreate>
 22    </Common>
 23    <Payment>
 24       <Title>Testpay</Title>
 25       <Method>Testpay</Method>
 26       <BillingId>117603370</BillingId>
 27       <Date>2014-04-24 15:10:12</Date>
 28       <CreateDate>2014-06-06 15:10:00</CreateDate>
 29       <Status>cancelled</Status>
 30       <PenaltyDate />
 31       <Timelimit>2014-04-24 15:18:01</Timelimit>
 32       <Charge>
 33          <Amount>52278</Amount>
 34          <CurrencyCode>RUB</CurrencyCode>
 35       </Charge>
 36       <Book>
 37          <Amount>5227.8</Amount>
 38          <CurrencyCode>RUB</CurrencyCode>
 39       </Book>
 40       <Penalty>
 41          <Amount>0</Amount>
 42          <CurrencyCode>RUB</CurrencyCode>
 43       </Penalty>
 44       <TotalAgencyChargeForRefund>
 45          <Amount>100</Amount>
 46          <CurrencyCode>RUB</CurrencyCode>
 47       </TotalAgencyChargeForRefund>
 48       <Total>
 49          <Amount>57505.8</Amount>
 50          <CurrencyCode>RUB</CurrencyCode>
 51       </Total>
 52       <PaidValue>
 53          <Amount>0</Amount>
 54          <CurrencyCode>RUB</CurrencyCode>
 55       </PaidValue>
 56    </Payment>
 57    <Client>
 58       <LastName>Сидоров</LastName>
 59       <Name>Владимир</Name>
 60       <MiddleName>Константинович</MiddleName>
 61       <Number>1806326598</Number>
 62       <Birth>1987-05-20</Birth>
 63       <Email>mail@host.com</Email>
 64       <Phone>+79871234567</Phone>
 65    </Client>
 66    <Passengers>
 67       <Passenger>
 68          <name>Владимир</name>
 69          <middlename>Константинович</middlename>
 70          <phone>
 71             <country />
 72             <city />
 73             <number>+79271031610</number>
 74             <expansion />
 75          </phone>
 76          <email>mlsdsar@gmail.com</email>
 77          <nationality>RU</nationality>
 78          <passenger_type>ADT</passenger_type>
 79          <lastname>Сидоров</lastname>
 80          <doc_type>C</doc_type>
 81          <passport_number>1806326598</passport_number>
 82          <passenger_id>1</passenger_id>
 83          <gender>M</gender>
 84          <date_of_birth>20.04.1984</date_of_birth>
 85          <TotalPrice>28752.9</TotalPrice>
 86          <FarePrice>2613.9</FarePrice>
 87          <Charge>26139</Charge>
 88          <RefundMoney>8649.3</RefundMoney>
 89          <ChargeForRefund>100</ChargeForRefund>
 90          <TicketNumber>74944708487545</TicketNumber>
 91          <SeatNumber>033</SeatNumber>
 92          <HasSeat>true</HasSeat>
 93       </Passenger>
 94       <Passenger>
 95          <nationality>RU</nationality>
 96          <middlename>Константинович</middlename>
 97          <passenger_type>ADT</passenger_type>
 98          <lastname>Сидоров</lastname>
 99          <name>Иван</name>
100          <doc_type>C</doc_type>
101          <passport_number>1806326554</passport_number>
102          <passenger_id>2</passenger_id>
103          <gender>M</gender>
104          <date_of_birth>05.04.1984</date_of_birth>
105          <TotalPrice>28752.9</TotalPrice>
106          <FarePrice>2613.9</FarePrice>
107          <Charge>26139</Charge>
108          <TicketNumber />
109          <SeatNumber>034</SeatNumber>
110          <HasSeat>true</HasSeat>
111       </Passenger>
112    </Passengers>
113    <Info>
114       <trainNumber>098ХА</trainNumber>
115       <trainName />
116       <departureStation>МОСКВА КАЗ</departureStation>
117       <arrivalStation>КАЗАНЬ ПАС</arrivalStation>
118       <trainCategory>1</trainCategory>
119       <beginStation>Москва</beginStation>
120       <endStation>Казань</endStation>
121       <startDate>2014-04-26 00:15:00</startDate>
122       <endDate>2014-04-26 13:33:00</endDate>
123       <timeInRoad>47880</timeInRoad>
124       <carNumber>8</carNumber>
125       <carType>4</carType>
126       <choosenSeats>
127          <type>
128             <lower>1</lower>
129          </type>
130          <type>
131             <upper>1</upper>
132          </type>
133          <type>
134             <lower_side>0</lower_side>
135          </type>
136          <type>
137             <upper_side>0</upper_side>
138          </type>
139          <type>
140             <undefined>0</undefined>
141          </type>
142       </choosenSeats>
143       <choosenRange>
144          <start>0</start>
145          <end>0</end>
146       </choosenRange>
147       <serviceClass>В стоимость входит - постельное белье. Наличие установки кондиционирования воздуха не гарантировано.</serviceClass>
148    </Info>
149 </PNR>

Элемент PNR Элемент PNR — Passenger Name Record — запись, состоящая из группы отдельных элементов (полей), содержащих информацию об одном или более пассажирах, путешествующих вместе, и деталях путешествия.

Элемент Описание Допустимые значения
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

Элемент Описание Допустимые значения
id Номер заказа в Немо. Число. Пример: 268281.
Type Тип услуги. Строка: Пример: FLIGHTS.
Допустимые значения:
  • FLIGHTS — авиа,
  • HOTELS — отели,
  • TRAINS — ЖД.
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

Элемент Описание Допустимые значения
Amount Номинал. Число. Пример: 1884.
CurrencyCode Валюта. Строка (Код ISO 4217 alfa-3). Пример: RUB.

Элемент Payment

Элемент Описание Допустимые значения
Title Название платежного шлюза*. Строка. Пример: Testpay.
Method Тип формы оплаты*. Строка. Пример: Testpay.
BillingId Идентификатор транзакции Немо. Строка. Пример: 117603370.
Date Дата и время оплаты платежной транзакции Немо. Строка. Пример: 2014-04-24 15:10:12.
CreateDate Дата и время создания платежной транзакции Немо. Строка. Пример: 2014-06-06 15:10:00.
Status Статус заказа в системе Немо. Строка. Пример: booked.
Допустимые значения:
  • pending — в ожидании,
  • booked — зарезервирован,
  • ticket — выписан,
  • cancelled — отменен.
PenaltyDate Дата и время наступления штрафных санкций. Дата и время. Пример: 2014-03-05 15:23:40.
Timelimit Таймлимит на оплату и подтверждение заказа. Дата и время. Пример: 2014-03-05 15:23:40.
Charge Сбор агентства. См. элемент Common.TotalPrice.
Book Тариф. См. элемент Common.TotalPrice.
Penalty Штраф.


Внимание! На данный момент параметр неактуален и при выгрузке всегда принимает нулевое значение.

См. элемент Common.TotalPrice.
TotalAgencyChargeForRefund Общий сбор агентства за возврат. См. элемент Common.TotalPrice.
Total Общая стоимость. См. элемент Common.TotalPrice.
PaidValue Оплачено. См. элемент Common.TotalPrice.

* — список возможный платежных шлюзов:
Acquiro, Chronopay, Copayco, CourierNew, Deposit, EasyPay, GatelineNew, ITransfer, Invoice, Offices, PayU, Payture, Platron, PrivatBank, Qiwi, Rapida, Receipt, Sberbank, Sirena, Sirena2, UnitellerNew, WebMoney.

Элемент Client

Элемент Описание Допустимые значения
Name Фамилия и имя заказчика. Строка. Пример: Иванов Иван.
MiddleName Отчество заказчика. Строка. Пример: Иванович.
Number Серия и номер документа. Строка. Пример: 1806123456.
Birth Дата рождения заказчика. Дата. Пример: 1984-06-30.
Email Адрес электронной почты заказчика. Строка. Пример: client@host.com.
Phone Номер телефона заказчика. Строка. Пример: +74951234567

Элемент Passenger

Элемент Описание Допустимые значения
lastname Фамилия пассажира. Строка. Пример: Сидоров.
name Имя пассажира. Строка. Пример: Владимир.
middlename Отчество пассажира. Строка. Пример: Константинович.
doc_type Тип документа. Строка. Пример: C.
Допустимые значения:
  • C — Российский паспорт
  • P — Заграничный паспорт
  • A — Иностранный документ
  • S — Паспорт моряка
  • M — Военный билет
  • B — Свидетельство о рождении
passport_number Серия и номер документа. Строка. Пример: 1806123456.
gender Пол пассажира. Строка. Пример: M.
Допустимые значения:
  • M — мужской
  • F — женский
date_of_birth Дата рождения пассажира. Дата. Пример: 20.05.1987.
nationality Гражданство пассажира. Строка (ISO 3166-1 Alpha-2). Пример: RU.
passenger_type Тип пассажира. Строка. Пример: ADT.
Допустимые значения:
  • ADT — взрослый
  • CLD — ребенок до 10 лет*, **
  • INF — ребенок до 5 лет*, ***
passenger_id Порядковый номер пассажира в заказе. Число. Пример: 2.
TotalPrice Общая стоимость билета со сборами для данного пассажира. Число. Пример: 1934.
FarePrice Стоимость по тарифу тарифу. Число. Пример: 1884.
Charge Сбор агентства. Число. Пример: 50.
RefundMoney Сумма к возврату. Значение, полученное от поставщика, уменьшенное на сумму сбора агентства за возврат. Число. Пример: 1643.
ChargeForRefund Cбор агентства за возврат. Число. Пример: 100.
TicketNumber Номер билета. Число. Пример: 73944708472624.
SeatNumber Номер места. число. Пример: 21.
TariffType Наименование тарифа. Строка. Пример: ПОЛНЫЙ.
HasSeat Занимает ли пассажир отдельное место. Допустимые значения:
  • true — с местом,
  • false — без места.

* — Не включая верхний предел. Возраст ребенка определяется на день совершения поездки.

** — Нижний и верхний пределы определяются видом сообщения:

  • от 5 до 10 лет — Внутригосударственное сообщение, а также международное сообщение со странами-участниками СНГ, Литовской, Латвийской, Эстонской Республиками, Республикой Абхазия.
  • от 6 до 17 лет — Международное сообщение в дальнем зарубежье по глобальным ценам. Направление Россия-Финляндия.
  • от 4 до 12 лет — Международное сообщение в дальнем зарубежье по глобальным ценам. Направление Восток-Запад.

*** — Верхний предел определяется видом сообщения:

  • до 5 лет — Внутригосударственное сообщение, а также международное сообщение со странами-участниками СНГ, Литовской, Латвийской, Эстонской Республиками, Республикой Абхазия.
  • до 6 лет — Международное сообщение в дальнем зарубежье по глобальным ценам. Направление Россия-Финляндия.
  • до 4 лет — Международное сообщение в дальнем зарубежье по глобальным ценам. Направление Восток-Запад.

Элемент Passenger

Элемент Описание Допустимые значения
trainNumber Номер поезда. Строка. Пример: 098ХА.
trainName Имя фирменного поезда. Приходит от поставщика. Строка. Пример: Россия.
departureStation Станция отправления пассажира. Строка. Пример: МОСКВА КАЗ.
arrivalStation Станция прибытия пассажира. Строка. Пример: КАЗАНЬ ПАС.
trainCategory Тип поезда. Число. Пример: 1.
Допустимые значения:
  • 0 — неизвестный тип поезда
  • 1 — скорый поезд
  • 2 — фирменный поезд
  • 3 — скоростной поезд
  • 4 — фирменный скоростной поезд
beginStation Начальная станция в маршруте поезда. Строка. Пример: Казань
endStation Конечная станция в маршруте поезда. Строка. Пример: Москва
startDate Дата и время отправления со станции отправления пассажира. Дата и время. Пример: 2014-03-06 00:15:00.
endDate Дата и время прибытия со станции отправления пассажира. Дата и время. Пример: 2014-03-06 13:33:00.
timeInRoad Время в пути от станции отправления до станции прибытия пассажира. Число (секунд). Пример: 47880.
carNumber Номер вагона. Число. Пример: 7.
carType Тип вагона. Число. Пример: 1.
Допустимые значения:
  • 1 - общий вагон
  • 2 - сидячий вагон
  • 3 - плацкарта
  • 4 - купе
  • 5 - люкс
  • 6 - мягкий
  • 7 - неизвестный тип
choosenSeats Элемент описывает количество нижних, нижних боковых, верхних, верхних боковых мест. Элементы type.
choosenRange Выбранный диапазон мест в вагоне. Элементы start, end.
serviceClass Описание услуг. Приходит от поставщика. Текст. Пример: В стоимость входит - постельное белье. Наличие установки кондиционирования воздуха не гарантировано.

Элемент type

Элемент Описание Допустимые значения
lower Количество нижних мест. Число. Пример: 1.
upper Количество верхних мест. Число. Пример: 0.
lower_side Количество нижних боковых мест. Число. Пример: 1.
upper_side Количество верхних боковых мест. Число. Пример: 1.
undefined Количество мест неопределенного типа. Число. Пример: 0.

Элемент choosenRange

Элемент Описание Допустимые значения
start Начало выбранного диапазон мест в вагоне*. Число. Пример: 4.
end Конец выбранного диапазон мест в вагоне*. Число. Пример: 17.

* — Если диапазон не был зада пользователем на этапе выбора мест, то поля start и end будут содержать нули.

Пакетный экспорт заказов по категориям в формате Nemo

Сервис выгрузки заказов позволяет экспортировать интересующие выборки по заказам в формате XML. Например, можно выбрать все заказы по дате бронирования и получить информацию по ним в XML-виде.

Экспорт заказов под авторизованным пользователем (в личном кабинете)

Фильтры пакетного экспорта заказов в личном кабинете

Порядок пользования сервисом:

  1. Перейти в личный кабинет
  2. В адресной строке браузера к текущему адресу дописать параметр &exportxml. Должен получиться адрес вида:
    http://DOMAIN/index.php?go=poffice/table&exportxml
    
  3. После обновления страницы под блоком фильтров должна появиться кнопка «Экспортировать в 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

<?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>

Response

<?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>

Сервис реализует функцию «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-документов:

<?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>

При импорте информации об агентствах будут возвращаться следующие значения:

Поле во внешней системе Путь к элементу xml Тип данных Сопоставляемое поле в Nemo Примечание
Идентификатор партнера/changes/partners/item[@id]Целое число Идентификатор во внешней системе для менеджера / администратора
Название юридического лица/changes/partners/item/ofnameСтрокаПолное официальное название юридического лица Необходимо для выписки счетов юридическими лицами
Сокращенное название/changes/partners/item/nameСтрокаИмя агентства
Код агентства/changes/partners/item/codeСтрокаИспользуется при создании логина администратора
Номер группы в самотуре/changes/partners/item/groupЦелое число, либо пустоНа основании таблицы сопоставлений (см. ниже) определяется, к какой группе агентство принадлежит в Nemo
Форма налогообложения/changes/partners/item/taxЦелое число, равное идентификатору во внешней системе

Для каждого возвращенного агентства Nemo проверяет наличие его в своей базе. Если агентство не найдено, то создается новое, для него создается менеджер (админ) с логином ABCD-1234, где ABCD – буквенный идентификатор партнера во внешней системе, 1234 — id партнера во внешней системе. Пароль генерируется случайный и криптостойкий.

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

Поле во внешней системеПуть к элементу xmlТип данныхСопоставляемое поле в NemoПримечание
Идентификатор пользователя/changes/accounts/item[@id]Целое числоИдентификатор внешней системыХраним как дополнительное поле
Идентификатор партнера/changes/accounts/item[@partnerId]Целое числоИдентификатор внешней системы менеджера агентства
Логин/changes/accounts/item/loginСтрокаЛогин пользователя
Администратор/changes/accounts/item[@admin]0 - нет, 1 - даЭксперт по бронированию

Для каждого возвращенного пользователя Nemo проверяет наличие его в своей базе. Если пользователь не найден, то создается новый. Пароль генерируется случайный и криптостойкий.

Если пользователь найден, то в случае необходимости производится обновление всех полей на основании данных из внешней системы. При запросе на удаление пользователя, в Nemo указанный логин удаляться не будет в целях сохранения целостности старых данных, а просто помечается как удаленный, и логин переименовывается и становится вида [логин_пользователя]_X_[числовой идентификатор_пользователя в Само].

<item id=[идентификатор] action="delete" />

Таблица сопоставлений групп

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

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

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

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

http://hostname/authorization_reol.wsdl

Запрос
?xml version ='1.0' encoding ='UTF-8' ?>
<definitions name='Authorization'
 targetNamespace='http://example.org/Authorization'
 xmlns:tns=' http://example.org/Authorization '
 xmlns:soap='http://schemas.xmlsoap.org/wsdl/soap/'
 xmlns:xsd='http://www.w3.org/2001/XMLSchema'
 xmlns:soapenc='http://schemas.xmlsoap.org/soap/encoding/'
 xmlns:wsdl='http://schemas.xmlsoap.org/wsdl/'
 xmlns='http://schemas.xmlsoap.org/wsdl/'>
 
<message name='getAuthorizationRequest'>
 <part name='login' type='xsd:string'/>
 <part name='pass' type='xsd:string'/>
</message>
<message name='getAuthorizationResponse'>
 <part name='session_id' type='xsd:string'/>
 <part name='user_id' type='xsd:string'/>
 <part name='login' type='xsd:string'/>
 <part name='status' type='xsd:string'/>
</message>
 
<portType name='AuthorizationPortType'>
 <operation name='getAuthorization'>
  <input message='tns:getAuthorizationRequest'/>
  <output message='tns:getAuthorizationResponse'/>
 </operation>
</portType>
 
<binding name='AuthorizationBinding' type='tns:AuthorizationPortType'>
 <soap:binding style='rpc'
  transport='http://schemas.xmlsoap.org/soap/http'/>
 <operation name='getAuthorization'>
  <soap:operation soapAction='urn:xmethods-delayed-quotes#getAuthorization'/>
  <input>
   <soap:body use='encoded' namespace='urn:xmethods-delayed-quotes'
    encodingStyle='http://schemas.xmlsoap.org/soap/encoding/'/>
  </input>
  <output>
   <soap:body use='encoded' namespace='urn:xmethods-delayed-quotes'
    encodingStyle='http://schemas.xmlsoap.org/soap/encoding/'/>
  </output>
 </operation>
</binding>
 
<service name='AuthorizationService'>
 <port name='AuthorizationPort' binding='AuthorizationBinding'>
  <soap:address location='http://nemo.local/controllers/authorization/auth_server.php'/>
 </port>
</service>
</definitions>


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

Описанная функциональность не входит в стандартную поставку системы.

Для получения возможности использовать ее, пожалуйста, обратитесь в коммерческий отдел.

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

Применение

Эта технология может использоватся к примеру для формирования ссылок с баннеров, при клике на которые пользователь попадает на форму, на которой уже могут быть заполнены пункты назначения, даты, количество пассажиров и прочие параметры.

Также, при указании всех необходимых параметров, пользователя можно перебрасывать сразу на процесс поиска авиабилетов с указанными критериями.

Для использования заполнения формы из URL следует включить опцию: АдминистрированиеНастройки системыВключить FastSearch (передачу параметров поиска)

После этого можно использовать ссылки на форму поиска вида

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

Переменные FastSearch

Имена полей - такие же как имена инпутов на поисковой форме.

Следите за тем, чтобы значения соответствовали установленным в настройках ограничениям.

Переменные, которые предполагают в качестве значения "true" можно просто не включать в запрос, чтобы их логика не отработала.

Форма поиска

Чтобы перенаправить пользователя на страницу с заполненными параметрами поиска, необходимо указать get-параметр &param_by_get=on, иначе сработают стандартные предустановки полей формы поиска.

Процесс поиска

Если вы указываете все необходимые для поиска параметры, то для того чтобы отправить пользователя сразу на результаты поиска, нужно указать get-параметр &fast_search=on.

Маршрут «В одну сторону» и «Туда и обратно»

Элемент Переменная Допустимые значения
Тип маршрута trip_type
OW В одну сторону
RT Туда и обратно
CR Сложный маршрут
Пункт вылета out_iata
MOW Код аэропорта ИАТА
Пункт прилета in_iata
LED Код аэропорта ИАТА
Дата вылета departure_date
25.10.2013 Дата в формате ДД.ММ.ГГГГ
Дата обратного вылета back_departure_date
27.10.2013 Дата в формате ДД.ММ.ГГГГ
Время вылета prefered_departure_type
not_important Любое время
morning Утром
afternoon Днем
evening Вечером
night Ночью
Время обратного вылета prefered_back_departure_type
not_important Любое время
morning Утром
afternoon Днем
evening Вечером
night Ночью
Поиск только среди прямых рейсов ("Без пересадок") direct true
Дополнительные параметры
Элемент Переменная Допустимые значения
Нижнее ограничение по цене по умолчанию money_from
0 Целое число большее либо равное 0
Верхнее ограничение по цене по умолчанию money_to
10000 Целое число большее 0
Поиск в окружных датах district_date true
Диапазон соседних дат +(-) [дней] date_range
1 Целое число большее [1..3]
Поиск по соседним аэропортам district_airport true
Класс обслуживания class
econom Перелет эконом-классом
business Перелет бизнес-классом
first Перелет первым-классом
Фильтр по авиакомпании input_vendors
SU,PS Коды авиакомпании ИАТА через запятую без пробелов
Сортировка sort
price По стоимости
out_date По расписанию
company По авиакомпании
fltduration По длительности перелёта

Сложный маршрут

 Данные переменные применимы только для сложного маршрута (trip_type=CR).

[X] - номера отдельных перелетов. Нумерация начинается с 0, что означает первый перелет.

Максимальное количество сегментов для сложного маршрута определяется одноименной настройкой в разделе Авиабилеты ⇨ Поиск ⇨ Ограничения поиска.

Элемент Переменная Допустимые значения
Пункты вылета cr_iata[0]

cr_iata[1]
...
cr_iata[8]

MOW Код аэропорта ИАТА
Пункты прилета cr_back_iata[0]

cr_back_iata[1]
...
cr_back_iata[8]

LED Код аэропорта ИАТА
Дата вылета cr_date[0]

cr_date[1]
...
cr_date[8]

25.10.2013 Дата в формате ДД.ММ.ГГГГ
Время вылета cr_pref_departure[0]

cr_pref_departure[1]
...
cr_pref_departure[8]

not_important Любое время
morning Утром
afternoon Днем
evening Вечером
night Ночью
Класс обслуживания cr_class[0]

cr_class[1]
...
cr_class[8]

econom Перелет эконом-классом
business Перелет бизнес-классом
first Перелет первым классом
Окружные аэропорты (±XX км) cr_district_airport[0]

cr_district_airport[1]
...
cr_district_airport[8]

true

Пассажиры

Элемент Переменная Допустимые значения
Взрослых от 12 лет adults
1 Целое число большее либо равное 0
Детей от 2 до 12 лет children
1 Целое число большее либо равное 0
Младенцев до 2 лет infants
1 Целое число большее либо равное 0
Младенцев с местом до 2 лет infants_seat
1 Целое число большее либо равное 0
Молодых от 12 до 24 лет
youths
1 Целое число большее либо равное 0

 Данный параметр доступен только в новой базовой теме.

Пожилых от 65 лет seniors
1 Целое число большее либо равное 0

 Данный параметр доступен только в новой базовой теме.

Примеры FastSearch запросов

В одну сторону (простой)

Рейс в одну сторону из Москвы в Париж, дата вылета: 25.10.2013, без пересадок, 1 взрослый

  • форма поиска
http://SITEMANE/?trip_type=OW&out_iata=MOW&in_iata=PAR&departure_date=25.10.2013
&direct=true&adults=2&param_by_get=on
  • процесс поиска
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

В одну сторону (с фильтрами по авиакомпаниям)

Рейс в одну сторону из Москвы в Париж, дата вылета 25.10.2013, Пассажиры: пожилых - 2, Авиакомпании: Аэрофлот - Российские авиалинии, Международные Авиалинии Украины

  • форма поиска
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
  • процесс поиска
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

Туда-обратно

Рейсы туда-обратно Москва ↔ Париж, дата вылета: 25.10.2013, обратно: 27.10.2013, класс перелета: Эконом, Пассажиры: взрослых - 2 младенцев - 1

  • форма поиска
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
  • процесс поиска
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

Сложный маршрут

из Москвы в Париж, дата вылета 25.10.2013,
из Парижа в Санкт-Петербург, дата вылета 26.10.2013,
из Санкт-Петербурга в Москву, дата вылета 29.10.2013,
1 взрослый

  • форма поиска
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
  • процесс поиска
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

Взаимодействие FastSearch и Метрики

Для того, чтобы переход был зарегистрирован системой как переход с определенного источника, необходимо передать в запросе дополнительный параметр utm_source (Metrics Session ID). Например:

http://SITEMANE/?(some_parameters=vals&)utm_source=source_alias

где source_alias - алиас источника переходов. Дополнительная информация по использованию модуля Метрики.

Пример FastSearch запроса с параметром для модуля Метрики

FastSearch (с учетом источника перехода для модуля Метрики)

Рейс в одну сторону из Москвы в Париж, дата вылета: 25.10.2013, без пересадок, 1 взрослый (с учетом источника перехода для модуля Метрики).

  • форма поиска
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
  • процесс поиска
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

Проверка в сторонней системе возможности тикетинга

При выписки билета через стороннюю систему 1С, отправляется запрос "GetDebtCounterparty", который спрашивает, можно ли с счета в 1С списать средства для оплаты. В ответе содержится заключение от 1С, в случае если ошибок нет, в ответе будет

<m:Opportunity>Да</m:Opportunity>

Пример запроса "GetDebtCounterparty"

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

  <SOAP-ENV:Body>
    <ns1:GetDebtCounterparty>
      <ns1:ExternalUserId>00000001</ns1:ExternalUserId>
      <ns1:ExternalPaymentId>00000001</ns1:ExternalPaymentId>
      <ns1:BaseFare>2490</ns1:BaseFare>
      <ns1:Tax>643</ns1:Tax>
      <ns1:ValVendorCommission>49.8</ns1:ValVendorCommission>
      <ns1:Locator>0X97T6</ns1:Locator>
      <ns1:Discount>0</ns1:Discount>
      <ns1:Charge>0</ns1:Charge>
      <ns1:Sum>3133</ns1:Sum>
      <ns1:TotalPrice>3658.1</ns1:TotalPrice>
      <ns1:GDSCurrency>RUB</ns1:GDSCurrency>
      <ns1:OrderCurrency>RUB</ns1:OrderCurrency>
      <ns1:OrderCurrencyRate>1</ns1:OrderCurrencyRate>
      <ns1:beginDate>2014-08-30T11:05:00</ns1:beginDate>
    </ns1:GetDebtCounterparty>
  </SOAP-ENV:Body>
</SOAP-ENV:Envelope>

Пример ответа "GetDebtCounterparty"

<?xml version="1.0"?>
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
  <soap:Header/>
  <soap:Body>
    <m:GetDebtCounterpartyResponse xmlns:m="http://DOMEN_NAME/avia">
      <m:return xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="m:AnswerDebt">
        <m:Opportunity>Да</m:Opportunity>
        <m:Message1/>
      </m:return>
    </m:GetDebtCounterpartyResponse>
  </soap:Body>
</soap:Envelope>

Загрузка счетов из сторонней системы

При взаимодействии с веб-сервисом 1С, на этапе бронирования отправляется запрос, на создание аккаунта 1С, содержащий в себе данные счета. В системе логирования этот запрос можно найти под именем «[GDS] Запрос "NewAccount"» и ответ «[GDS] Ответ "NewAccount"»

Пример запроса


<?xml version="1.0" encoding="UTF-8"?>
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns1="http://DOMEN_NAME" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
  <SOAP-ENV:Body>
    <ns1:NewAccount>
      <ns1:Input>
        <ns1:CompanyID>0001</ns1:CompanyID>
        <ns1:ID>123321</ns1:ID>
        <ns1:ExternalUserId>00123321</ns1:ExternalUserId>
        <ns1:Locator>11KW22</ns1:Locator>
        <ns1:ExternalPaymentId>0</ns1:ExternalPaymentId>
        <ns1:Tickets>
          <ns1:IATAValidator>92222616</ns1:IATAValidator>
          <ns1:ValVendor>UT</ns1:ValVendor>
          <ns1:GDSCurrency>RUB</ns1:GDSCurrency>
          <ns1:OrderCurrency>RUB</ns1:OrderCurrency>
          <ns1:OrderCurrencyRate>1</ns1:OrderCurrencyRate>
          <ns1:BaseFare>8990</ns1:BaseFare>
          <ns1:Tax>
            <ns1:Code>YQ</ns1:Code>
            <ns1:Amount>975</ns1:Amount>
          </ns1:Tax>
          <ns1:Tax>
            <ns1:Code>YR</ns1:Code>
            <ns1:Amount>75</ns1:Amount>
          </ns1:Tax>
          <ns1:Segment>
            <ns1:StartDate>2015-02-17T20:20:00</ns1:StartDate>
            <ns1:StartAirportCode>VKO</ns1:StartAirportCode>
            <ns1:EndAirportCode>SGC</ns1:EndAirportCode>
            <ns1:CompanyCode>UT</ns1:CompanyCode>
            <ns1:Tariffs>OSSOW</ns1:Tariffs>
            <ns1:FlightNumber>295</ns1:FlightNumber>
            <ns1:StopOver>O</ns1:StopOver>
            <ns1:ClassTypeCode>O</ns1:ClassTypeCode>
          </ns1:Segment>
          <ns1:FullName>PASSANGER NAME</ns1:FullName>
        </ns1:Tickets>
        <ns1:Options>
          <ns1:Name>Service</ns1:Name>
          <ns1:StringValue>GALILEO</ns1:StringValue>
          <ns1:NumericValue xsi:nil="true"/>
          <ns1:DateValue xsi:nil="true"/>
        </ns1:Options>
        <ns1:Options>
          <ns1:Name>AAA</ns1:Name>
          <ns1:StringValue>000A</ns1:StringValue>
          <ns1:NumericValue xsi:nil="true"/>
          <ns1:DateValue xsi:nil="true"/>
        </ns1:Options>
        <ns1:Options>
          <ns1:Name>Checkbox</ns1:Name>
          <ns1:StringValue>YES</ns1:StringValue>
          <ns1:NumericValue xsi:nil="true"/>
          <ns1:DateValue xsi:nil="true"/>
        </ns1:Options>
      </ns1:Input>
    </ns1:NewAccount>
  </SOAP-ENV:Body>
</SOAP-ENV:Envelope>


Пример ответа


<?xml version="1.0"?>
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
  <soap:Header/>
  <soap:Body>
    <m:NewAccountResponse xmlns:m="http://DOMEN_NAME">
      <m:return xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="m:outInvoice">
        <m:NoDoc>00015365</m:NoDoc>
        <m:DateInvoice>2015-02-04T00:00:00</m:DateInvoice>
        <m:ExternalUserId>00017483</m:ExternalUserId>
        <m:TicketsSum>
          <m:Price>10040</m:Price>
          <m:Discount>0</m:Discount>
          <m:Charge>0</m:Charge>
          <m:Sum>10040</m:Sum>
        </m:TicketsSum>
      </m:return>
    </m:NewAccountResponse>
  </soap:Body>
</soap:Envelope>