** [[Веб-служба бронирования#Общий формат запроса / ответа|Общий формат запроса / ответа]]
** [[Веб-служба бронирования#Пример использования|Пример использования]]
** [[Веб-служба бронирования#Отмена Общий формат запроса / ответа отмены бронирования|Отмена Общий формат запроса / ответа отмены бронирования]]
== Агентский АПИ выписки ==
*[[Веб-служба выписки]]** [[Веб-служба выписки#Агентский АПИ выписки позволяет определить валидирующего перевозчика и значение комиссии от авиакомпании для брони, а также запустить процедуру |Агентский АПИ выписки билета.]] <span style="background** [[Веб-color:служба выписки#fff0f5;"><span style="font-size:large;"><span style="color:#ff0000;">!<Общий формат запроса /span><ответа выписки|Общий формат запроса /span> Как правило для ответа выписки билета достаточно сформировать запрос на проставление статуса "ОПЛАЧЕНО". При включенной опции «Производить оформление билета: автоматически» билет будет выпущен в фоновом режиме. В Nemo 2.0 в агентский сервис (интерфейс к серверу бронирования) добавлены дополнительные настройки для выписки авиабилетов. В новой версии АПИ позволяет: *принимать запросы на возможность тикетинга;*сообщать ВП (валидирующего перевозчика) по данной комбинации;*сообщать комиссию по данной комбинации;*сообщать эндорсменты по данной комбинации;*принимать запрос на тикетинг;*проверять наличие брони в ГДС;*синхронизировать бронь;]]*выписывать билет;*присылать маршрут[[Веб-квитанцию;*войдировать билет.служба выписки#Общий формат запроса / ответа войдирования|Общий формат запроса / ответа войдирования]]
== Проверка на доступность ==
</ResponseBin>
</ns1:GetAirRulesResponse>
</SOAP-ENV:Body>
</SOAP-ENV:Envelope>
</syntaxhighlight>
</div>
</div>
== Запрос на выписку ==
Данный запрос запускается после оплаты заказа, может быть запущен как в ручную - пользователем, у которого есть на это права, так и автоматически при использовании соответствующей опции. Выписать неоплаченный заказ через Nemo возможности нет. При запуске запроса на выписку также запускается процесс обновления заказа, в ходе которого сверяется цена и остальные параметры заказа, а также проверяется его актуальность. Заказы, с истекшим таймлимитом выписаны через Nemo быть не могут.
WSDL: http://CLIENT_DOMAIN/nemoflights/wsdl.php?for=Ticketing
'''Примеры запроса и ответа:'''
<div class="toccolours mw-collapsible mw-collapsed" style="width:1000px">
==== Запрос ====
<div class="mw-collapsible-content">
<syntaxhighlight lang="xml" line enclose="div" style="font-size:9pt;background: #F9F9F9; border: 1px dashed #2F6FAB; padding: 10px 5px; margin: 10px 0;">
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ver="http://CLIENT_DOMAIN/nemoflights/?version%3D1.0%26for%3DTicketing">
<soapenv:Header/>
<soapenv:Body>
<ver:Ticketing>
<RequestBin>
<Request>
<Ticketing>
<!--Запрос, обязательный-->
<!--BookID - Id заказа в системе Немо, обязательный-->
<BookID>260650</BookID>
<!--Валидирующий перевозчик (тот кто выписывает билет), необязательный-->
<ValCompany></ValCompany>
<!--Комиссии, указываются или в валюте, или в процентах, для валюты обязательным является код валюты.
Если указана и в валюте и в процентах, то у поставщика комиссия устанавливается в валюте.-->
<!--Amount - комиссия в валюте-->
<!--Percent - комиссия в процентах-->
<!--CurrencyCode - код валюты комиссии-->
<Comission Amount="" Percent="" CurrencyCode=""/>
</Ticketing>
</Request>
<Source>
<!--Авторизация, обязательный-->
<!--ClientId, идентификатор клиента, обязательный-->
<!--APIKey, API ключ клиента, обязательный-->
<!--Language, код языка, обязательный-->
<!--Currency код валюты, обязательный-->
<ClientId>---</ClientId>
<APIKey>---</APIKey>
<Language>RU</Language>
<Currency>RUB</Currency>
</Source>
</RequestBin>
</ver:Ticketing>
</soapenv:Body>
</soapenv:Envelope>
</syntaxhighlight>
</div>
</div>
<div class="toccolours mw-collapsible mw-collapsed" style="width:1000px">
==== Ответ ====
<div class="mw-collapsible-content">
<syntaxhighlight lang="xml" line enclose="div" style="font-size:9pt;background: #F9F9F9; border: 1px dashed #2F6FAB; padding: 10px 5px; margin: 10px 0;">
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns1="http://CLIENT_DOMAIN/nemoflights/?version%3D1.0%26for%3DTicketing" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<SOAP-ENV:Body>
<ns1:TicketingResponse>
<ResponseBin>
<Response>
<!--ID - Ид брони в системе немо, целое число-->
<!--Status - Индикатор состояния брони, возможные значения:
booked - забронировано,
canceled - бронь отменена,
ticket - выписана,
UNDEFINED - статус не определён-->
<!--Code - Код брони в системе бронирования/поиска, строка-->
<Ticketing ID="260650" Status="ticket" Code="0PC1V1">
<QueryPlace xsi:nil="true"/>
<!--FlightId - Id перелёта в системе Немо-->
<Flight FlightId="142350072">
<!--Веб-сервис из которого получен перелёт-->
<WebService>SIRENA2000</WebService>
<!--Код авиакомпании - валидирующего перевозчика, IATA-->
<ValCompany>UT</ValCompany>
<URL>http---CLIENT_DOMAIN---</URL>
<!--Сегменты в перелёте, обязательный-->
<Segments>
<!--SegNum - Номер сегмента в перелёте-->
<Segment SegNum="1" SegGroupNum="0">
<!--Аэропорт отправления-->
<DepAirp CodeType="IATA">VKO</DepAirp>
<!--Терминал пункта отправления, если пустое значение, то терминала нет,
т.е. в аэропорту всего 1 терминал-->
<DepTerminal/>
<!--Аэропорт прибытия-->
<ArrAirp CodeType="IATA">LED</ArrAirp>
<!--Терминал пункта прибытия, если пустое значение, то терминала нет,
т.е. в аэропорту всего 1 терминал-->
<ArrTerminal/>
<!--Авиакомпания перевозчик-->
<OpAirline>UT</OpAirline>
<!--Авиакомпания, продающая перелёт-->
<MarkAirline>UT</MarkAirline>
<!--Номер рейса-->
<FlightNumber>369</FlightNumber>
<!--Тип воздушного судна, код-->
<AircraftType>TU5</AircraftType>
<!--Дата и время отправления, формат ГГГГ-MM-DDTЧЧ:ММ:СС-->
<DepDateTime>2014-02-16T11:05:00</DepDateTime>
<!--Дата и время прибытия, формат ГГГГ-MM-DDTЧЧ:ММ:СС-->
<ArrDateTime>2014-02-16T12:25:00</ArrDateTime>
<!--Количество остановок-->
<StopNum/>
<BookingCodes>
<!--Класс перелета-->
<BookingCode ClassType="economy">
<!--Код класса перелета-->
<BookingCode>H</BookingCode>
</BookingCode>
</BookingCodes>
<!--Время перелёта, в минутах-->
<FlightTime>80</FlightTime>
<!--Временные зоны точки отправления и прибытия. Возможные параметры:
departure - временная зона аэропорта отправления,
arrival - временная зона аэропорта прибытия-->
<TimeZone/>
<!--Признак электронного билета-->
<ETicket/>
</Segment>
</Segments>
<!--Информация о стоимости, может встречаться более 1 раза-->
<!--Refundable - возвратный/невозвратный, true/false. Если пустое, то не известно-->
<PricingInfo Refundable="false">
<!--Типы пассажиров с ценами, таксами и т.п., может встречаться более 1 раза-->
<!--Type - тип пассажира, возможные значения:
ADT - взрослые,
CNN - дети со взрослыми,
UNN - дети без сопровождения взрослых,
INF - младенцы,
INS - младенцы с местом, обязательный-->
<!--Quantity - Количество пассажиров данного типа-->
<PassengerFare Type="ADT" Quantity="1">
<!--Базовая стоимость, в базовой валюте-->
<!--Currency - код валюты, Amount - значение цены-->
<BaseFare Currency="RUB" Amount="990"/>
<!--Базовая стоимость, в эквивалентной валюте(валюте продажи)-->
<!--Currency - код валюты, Amount - значение цены-->
<EquiveFare Currency="RUB" Amount="990"/>
<!--Окончательная стоимость в эквивалентной валюте-->
<!--Currency - код валюты, Amount - значение цены-->
<TotalFare Currency="RUB" Amount="1475"/>
<!--Массив такс-->
<Taxes>
<!--CurCode - код валюты, обязательный-->
<!--TaxCode - код таксы, обязательный-->
<!--Amount - сумма таксы, обязательный-->
<Tax CurCode="RUB" TaxCode="YQ" Amount="360"/>
<Tax CurCode="RUB" TaxCode="ZZ" Amount="125"/>
</Taxes>
<!--Массив тарифов-->
<!--Тариф-->
<!--Code - код тарифа-->
<!--SegNum - номер сегмента, к которому применён тариф-->
<Tariffs/>
<!--Строка расчёта цены-->
<FareCalc/>
<!--Дата и время таймлимита по выписке в формате ГГГГ-MM-DDTЧЧ:ММ:СС-->
<LastTicketDateTime>2014-02-09T03:13:00</LastTicketDateTime>
</PassengerFare>
</PricingInfo>
<!--Комиссии-->
<!--Currency - код валюты-->
<Commission Currency="RUB">0</Commission>
<!--Сборы-->
<!--Currency - код валюты-->
<Charges Currency="RUB">0</Charges>
<TotalPrice Currency="RUB">1475</TotalPrice>
</Flight>
<!--Информация об агенстве-->
<Agency/>
<!--Маршрут квитанция-->
<!--Возможные параметры:
Encoding - кодировка,
Format - формат-->
<ItinReceipts xsi:nil="true"/>
<FareStored xsi:nil="true"/>
<!--Список пассажиров-->
<Travellers>
<!--Type тип пассажира, обязательный, возможные значения:
ADT - взрослые,
CNN - дети со взрослыми,
UNN - дети без сопровождения взрослых,
INF - младенцы,
INS - младенцы с местом-->
<!--IsContact - если true - то данный пассажир является контактным лицом, если false - то не является,
контактное лицо может быть только 1, если среди пассажиров есть взрослые, то только кто-то из них
может быть контактным лицом, по умолчанию false-->
<!--Num - порядковый номер пассажира , начинается с 1-->
<!--LinkedTo - номер взрослого, к которому привязан младенец/ребёнок-->
<Traveller Type="ADT" IsContact="false" Num="1">
<!--Код типа питания, необязательный, возможные значения:
NONE - отсутствует
AVML - Азиатская вегетарианская кухня
BLML - Блюда щадящей диеты
CHML - Детское питание
CHPC - Детский холодный завтрак
СНСС - Детский горячий завтрак
CHHC - Детский ланч, ветчина и сыр
PBJS - Детский ланч, ореховое масло
CHMC - Детский обед макароны с сыром
DBML - Диабетическое питание
FPML - Фрукты
GFML - Питание без клейковины
HFML - Питание богатое клетчаткой
HNML - Индусская кухня
BBML - Питание для младенцев
KSML - Кошерная кухня
SMKB - Кошерный завтрак
SMKL - Кошерный ланч
SMKD - Кошерный обед
LPML - Малобелковое питание
LCML - Низкокалорийное питание
LFML - Низкохолестериновое питание
PRML - Низкопуриновое питание
LSML - Малосоленое питание
MOML - Мюсли
NLML - Безмолочные продукты
ORML - Восточная кухня
RVML - Сырые овощи
SFML - Морепродукты
SPML - Особое питание
VLML - Вегетарианское, молоко и яйца
VGML - Строго вегетарианское питание
VJML - Джайнизское вегетарианское
VOML - Восточное вегетарианское питание-->
<Meal/>
<!--Билет-->
<!--TickectNum - номер билета-->
<Ticket TickectNum="2986150730166"/>
<!--Место пассажира в самолёте, возможные параметры:
Number - номер места,
Characteristic - характеристика места,
SmokingPreference - статус курения на этом месте,
SegmentNumber - номер сегмента в перелёте-->
<Seats/>
<!--Персональные данные-->
<!--DateOfBirth - дата рождения в формате dd.mm.yyyy (например 31.12.2000)-->
<!--Nationality - национальность-->
<!--Gender - пол пассажира, возможные значения:
M - мужской(Male)
F - женский(Female)-->
<PersonalInfo DateOfBirth="20.05.1980" Nationality="RU" Gender="M">
<!--Имя пассажира-->
<FirstName>PETR</FirstName>
<!--Фамилия пассажира-->
<LastName>IVANOV</LastName>
<!--Отчество пассажира-->
<MiddleName xsi:nil="true"/>
</PersonalInfo>
<!--Карточка часто летающего пассажира, возможные параметры:
OpCode - код авиакомпании,
Number - номер карточки-->
<LoyaltyCard/>
<!--Контактная информация-->
<ContactInfo>
<!--Контактный email-->
<EmailID xsi:nil="true"/>
<Telephone>
<!--Номер телефона-->
<PhoneNumber>79053811900</PhoneNumber>
<!--Код страны-->
<CountryAccessCode xsi:nil="true"/>
<!--Код региона/города-->
<AreaCityCode xsi:nil="true"/>
</Telephone>
</ContactInfo>
<!--Данные о документе-->
<!--DocType - тип документа, возможные значения:
Р - Паспорт
A – Паспорт иностранца
С - Внутренний гражданский паспорт
F – Документ заменяющий паспорт
М - Воинское удостоверение
N – Сертификат натурализации(специфичный документ США)
T – Док.повторного въезда, паспорт беженца
V – Документ для пересечения границы-->
<!--DocNum - номер документа-->
<!--DocElapsedTime - Срок истечения срока действия паспорта в dd.mm.yyyy (например 31.12.2000)-->
<!--CountryCode - Код страны-->
<DocumentInfo DocType="C" DocNum="109482" CountryCode="RU"/>
<!--Информация о визе(Заполняется через SSR DOCO), возможные параметры:
Num - номер визы
IssueDate - дата(dd.mm.yyyy) выдачи визы
IssueCountry - страна выдачи визы
IssuePlace - место выдачи визы
BirthCountry - страна рождения(IATA код страны)
BirthCity - город рождения(название)-->
<VisaInfo/>
<!--Адрес прибытия(Заполняется через SSR DOCA)
Но для въезжающих в США(не граждан США) информация является обязательной. Если она не заполняется
при оформлении брони, то её всё равно придётся заполнить при посадке на самолёт.
CountryCode - Код страны
State - Штат или область въезда
PostalCode - Почтовый код
City - Город
StreetAddress - Адрес: улица, номер дома, квартиры и т.п.-->
<ArrAddress/>
<!--Информация о предпочитаемом месте. Если указаны номер ряда и номер места,
то параметры Smoking и Location игнорируются и могут быть не указаны-->
<!--SmokingAllowed - булевское значение, true - место для курящих, false - место для некурящих-->
<!--Location - положение места в ряде, возможные значения:
W - у окна (Window)
M - где-то в середине ряда (Middle)
NPW - возле прохода (NearPassengerWay)
NS - нет предпочтения (NotSpecified)-->
<!--RowNumber - Номер ряда, строка-->
<!--PlaceNumber - Номер места, строка-->
<!--SegNumber - Номер сегмента, строкай-->
<PreferedPlace/>
<!--Формат паспортной строки, возможные значения:
DOCS - строка формата DOCS,
FOID - строка формата FOID-->
<DocStringFormats/>
</Traveller>
</Travellers>
</Ticketing>
<Requisites/>
<RequestType xsi:nil="true"/>
<UserID xsi:nil="true"/>
<Errors xsi:nil="true"/>
</Response>
</ResponseBin>
</ns1:TicketingResponse>
</SOAP-ENV:Body>
</SOAP-ENV:Envelope>
</syntaxhighlight>
</div>
</div>
== Войдирование билета ==
Данный запрос запускается после выписки билета, если необходимо его отменить.
WSDL: http://CLIENT_DOMAIN/nemoflights/wsdl.php?for=VoidTicket
'''Пример запроса и ответа:'''
<div class="toccolours mw-collapsible mw-collapsed" style="width:1000px">
==== Запрос ====
<div class="mw-collapsible-content">
<syntaxhighlight lang="xml" line enclose="div" style="font-size:9pt;background: #F9F9F9; border: 1px dashed #2F6FAB; padding: 10px 5px; margin: 10px 0;">
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ver="http://CLIENT_DOMAIN/nemoflights/?version%3D1.0%26for%3DVoidTicket">
<soapenv:Header/>
<soapenv:Body>
<ver:VoidTicket>
<RequestBin>
<Request>
<VoidTicket>
<!--Запрос, обязательный-->
<!--BookID - Ид брони в системе немо, целое число-->
<BookID>260650</BookID>
</VoidTicket>
</Request>
<Source>
<!--Авторизация, обязательный-->
<!--ClientId, идентификатор клиента, обязательный-->
<!--APIKey, API ключ клиента, обязательный-->
<!--Language, код языка, обязательный-->
<!--Currency код валюты, обязательный-->
<ClientId>---</ClientId>
<APIKey>---</APIKey>
<Language>RU</Language>
<Currency>RUB</Currency>
</Source>
</RequestBin>
</ver:VoidTicket>
</soapenv:Body>
</soapenv:Envelope>
</syntaxhighlight>
</div>
</div>
<div class="toccolours mw-collapsible mw-collapsed" style="width:1000px">
==== Ответ ====
<div class="mw-collapsible-content">
<syntaxhighlight lang="xml" line enclose="div" style="font-size:9pt;background: #F9F9F9; border: 1px dashed #2F6FAB; padding: 10px 5px; margin: 10px 0;">
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns1="http://CLIENT_DOMAIN/nemoflights/?version%3D1.0%26for%3DVoidTicket" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<SOAP-ENV:Body>
<ns1:VoidTicketResponse>
<ResponseBin>
<Response>
<!--BookID - Ид брони в системе немо-->
<VoidTicket BookID="260650">
<!--Result, Отмена выписки-->
<!--Sucscess - Результат отмены выписки, true или false-->
<Result Success="true"/>
</VoidTicket>
<Requisites/>
<RequestType xsi:nil="true"/>
<UserID xsi:nil="true"/>
<Errors xsi:nil="true"/>
</Response>
</ResponseBin>
</ns1:VoidTicketResponse>
</SOAP-ENV:Body>
</SOAP-ENV:Envelope>