1382
правки
Изменения
м
'''!!!СТАТЬЯ В РАЗРАБОТКЕ!!!'''Чтобы авторизоваться в системе, в запросе необходимо указать APIKey и ClientID. Эти данные можно узнать в разделе Администрирование - Веб-сервис. Авторизация. Там же можно включить/выключить нотификацию для действий, совершенных через АПИ.
Для подключения к веб-службе поиска авиабилетов необходимо открыть доступ нужному пользователю. Это можно сделать в разделе «Администрирование» ⇨ «Веб-служба. Авторизация».
После добавления пользователя, ему будут присвоены Номер (ClientId) и API ключ клиента, которые нужно использовать для подключения.
Подробнее можно узнать в специальной статье [[Веб-служба поиска авиабилетов]]
==API Поиска отелей==Для подключения к веб-службе поиска авиабилетов необходимо открыть доступ нужному пользователю. Это можно сделать в разделе '''Агентский API Отелей«Администрирование»''' ⇨ '''«Веб- система, которая предоставляет возможность поиска и бронирования отелей а так же получение информации о времени и размерах штрафов, уникальной информации об отеле, получение статической информациислужба. Авторизация»'''.
=== Динамические данные ======= Поиск ====Подробнее можно узнать в специальной статье [[Веб-служба поиска авиабилетов]]
Для получения списка доступных городов, воспользуйтесь запросом на выгрузку статики (см. ССЫЛКА). Список допустимых отелей для фильтра также доступен через сервис (см. ССЫЛКА). Рекомендуется выгрузить все данные по отелям, городам и странам в локальную базу, для экономии времени и запросов.=== API Выписки авиабилетов ===
'''WSDL''' (тестовый сервер): Агентский АПИ выписки позволяет определить валидирующего перевозчика и значение комиссии от авиакомпании для брони, а также запустить процедуру выписки билета. [[http://tst.nemoВеб-ibe.com/wsdev/wsdl.php?for=HotelsSearch http://tst.nemo-ibe.com/wsdev/wsdl.php?for=HotelsSearchслужба выписки]] <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://tst.nemo-ibe.com/wsdev/?version%3D1.0%26for%3DHotelsSearch"> <soapenv:Header/> <soapenv:Body> <ver:search> <RequestBin> <Request> <HotelSearch> <CityId>22046</CityId> <DateBegin>2013-10-15</DateBegin> <DateEnd>2013-10-18</DateEnd> <Rooms> <!--Zero or more repetitions:--> <Room> <Persons> <!--Zero or more repetitions:--> <Person Id="1" Type="ADT" Age="30"/> <Person Id="2" Type="CLD" Age="10"/> </Persons> <!--Optional:--> <DoubleBed>false</DoubleBed> </Room> <Room> <Persons> <!--Zero or more repetitions:--> <Person Id="1" Type="ADT" Age="30"/> </Persons> </Room> </Rooms> <!--Optional:--> <Filters> <Hotels> <!--Zero or more repetitions:--> <!--<Id>123</Id>--> </Hotels> </Filters> </HotelSearch> </Request> <Source> <ClientId></ClientId> <APIKey></APIKey> <Language>ru</Language> <Currency>RUB</Currency> </Source> </RequestBin> </ver:search> </soapenv:Body></soapenv:Envelope></syntaxhighlight>
Элемент '''HotelSearch'''{| style="width: 800px" class="wikitable"|-! scope="col" widthAPI Оплаты ="200" | Элемент! scope="col" width="300" | Описание! scope="col" width="300" | Допустимые значения|-| CityId| Обязательный. Идентификатор города в системе Nemo.| Целое число|-| DateBegin| Обязательный. Дата заселения.| Формат гггг-мм-дд.|-| DateEnd| Обязательный. Дата выезда.| Формат гггг-мм-дд.|-| Rooms| Обязательный. Содержит массив запрашиваемых номеров/апартаментов.| Элемент Room. Максимум 4 элемента Room.|-| Filters| Необязательный. Содержит различные фильтры поиска отелей.| Элемент Hotels.|}
Элемент '''Room'''{| style="width: 800px" class="wikitable"|-! scope="col" width="200" | Элемент! scope="col" width="300" | Описание! scope="col" width="300" | Допустимые значения|-| Persons| Обязательный. Содержит данные о клиентах в номерах.| Элемент Person|-| DoubleBed| Необязательный. Может быть использован только если сумма количества детей и взрослых равна 2-мСервис внутри Nemo, а такжеЕсли в запросе сумма детей и взрослых не равна 2который предназначен для выполнения различных операций, то данный элемент будет проигнорированотносящихся к оплате заказов.| true/falsetrue означает, что номер должен иметь двуспальную кровать|}[[Агентские АПИ оплаты]]
Элемент '''Person'''{| style="width: 800px" class="wikitable"|-! scope="col" widthAPI Дополнительных запросов авиабилетов ="200" | Элемент! scope="col" width="300" | Описание! scope="col" width="300" | Допустимые значения|-| Атрибут Id| Уникальный идентификатор. См. результаты бронирования.| Целое число|-| Атрибут Type| Тип клиента.Если не указан, будет определен по возрасту Age.| Константы:ADT - взрослыйCLD - ребенок 2-12 летINF - младенец до 2х лет|-| Атрибут Age| Возраст. Обязателен для детей (CLD).| Целое число. Количество лет.|}
Элемент '''Filters'''{| style="width: 800px" class="wikitable"|-! scope="col" width="200" | Элемент! scope="col" width="300" | Описание! scope="col" width="300" | Допустимые значения|-| Hotels| НеобязательныйК дополнительных запросам относятся проверка на доступность, запрос на обновление заказа, чтение тарифных правил. Набор идентификаторов отелей в системе Nemo.Результаты поиска будут ограничены только этими отелями. Данная опция может существенно ускорить поиск - рекомендуется всегда устанавливать при поиске конкретных отелей.| Элемент Id – целое число|}[[Дополнительные запросы АПИ авиабилетов]]
Элемент '''Source'''{| style="width: 800px" class="wikitable"|-! scope="col" widthИспользуемые параметры ="200" | Элемент! scope="col" width="300" | Описание! scope="col" width="300" | Допустимые значения|-| ClientID| Обязательный. ID клиента в системе Nemo.Можно посмотреть/добавить в "Администрирование" ⇨ "Веб-служба. Авторизация".| Целое число.|-| APIKey| Обязательный. APIKey - секретный ключ доступа к API Nemo.Можно посмотреть/добавить в "Администрирование" ⇨ "Веб-служба. Авторизация".| Латинские буквы и цифры. Всего 32 символа.|}</div></div>
Система по заданным параметрам ищет отели и возвращает результаты поиска. Все результаты поиска хранятся в базе Nemo определенный срок и доступны для бронирования по идентификатору CacheId.<table border="1"> <tr bgcolor="#CCCCCC"> <th> Имя элемента </th><th> Обязательный </th><th> Тип </th><th> Описание </th> </tr> <tr>
Структура ответа - это набор уникальных отелей. У каждого указан <td>BookFlight </td><td>да </td><td>сложный </td><td>Контейнер для тела запроса бронирования</td> </tr> <tr> <td>FlightId </td><td class="col1">да </td><td>число</td><td >Id - это идентификатор из базы Nemo. По нему можно получить дополнительную статичную информацию из путеводителя Nemo.перелёта для которого будет производится бронирование(поиск тарифных правил, проверка доступности)</td> </tr> <tr> <td>CurrencyCode </td><td>нет</td><td>строка</td><td>Трёх буквенный код валюты (обязателен для комиссии в валюте)</td>
Каждый отель содержит: </tr>* Набор номеров <Rooms>. Типы номеров (одноместный, двухместный и т.д.) : устанавливается автоматически по количеству клиентов из запроса. <tr>* Сервисы <Services>. Каждый отель предлагает различные типы обслуживания в номерах. Цена и доступность может различаться.* Категория <Categories>. Это допустимые комбинации номер + обслуживание. Для бронирования отеля пользователь должен выбрать одну из предлагаемых ему категорий. <td>Agency </td><td>да </td><td>сложный </td><td>Информация об агентстве</td>
Элемент '''Hotel''' </tr>{| style="width: 800px" class="wikitable"|-! scope="col" width="200" | Элемент! scope="col" width="300" | Описание! scope="col" width="300" | Допустимые значения|-| Атрибут Id <tr>| Обязательный. Идентификатор отеля как одного из результатов поиска в системе Nemo.| Целое число.|-| Supplier| Обязательный. <td>Type</td><td>да </td><td>строка </td><td>Тип поставщиканомера, в котором найден отель.| Строка.Возможные возможные значения:GTAHOTELBEDSDOTWSERHSMIKITRAVCOACADEMTOURICO|M -| CityId| Обязательный. Идентификатор города в системе Nemo.| Целое число.|мобильный, H -| CacheId| Обязательный. Идентификатор результата поиска для данного отеля в системе Nemo.| Целое число.|домашний, B -| Name| Обязательный. Название отеля.| Строка в произвольном формате.|рабочий, A -агентство</td>| Services| Обязательный. Услуги в отеле.| Элемент Service|-| Rooms| Обязательный. Комнаты в отеле.| Элемент Room|-| Categories| Обязательный. Категории, доступные для бронирования в отеле. </tr>| Элемент Category <tr>|} <td>PhoneNumber </td><td>да </td><td>строка </td><td>Номер телефона</td>
Элемент '''Service''' </tr>{| style="width: 800px" class="wikitable" <tr>|- <td>CountryAccessCode </td><td>нет </td><td>строка </td><td>Код страны</td>! scope="col" width="200" | Элемент </tr>! scope="col" width="300" | Описание <tr>! scope="col" width="300" | Допустимые значения|-| Атрибут Id| Обязательный. Идентификатор услуги.| Целое число|-| Атрибут Status| Обязательный. Доступность отеля. ОК означает доступен (мгновенное подтверждение).RQ - недоступен (по запросу).| ОК <td>AreaCityCode </td><td>нет </td><td>строка</td><td>Код региона/города</RQ|-| Desc| Необязательный. Описание отеля.| Строка в произвольном формате.|-| Meal| Обязательный. Питание для данного сервиса.| Строка в произвольном формате.|-| Price| Необязательный. Указывает на стоимость номера с данной услугой.| Вещественное число.Атрибут Currency - код валюты.|}td>
Элемент '''Room''' </tr>{| style="width: 800px" <tr> <td>Address</td><td>да </td><td>сложный </td><td class="wikitablecol3">Адрес агентства</td>|-! scope="col" width="200" | Элемент </tr>! scope="col" width="300" | Описание <tr>! scope <td>City</td><td>да </td><td class="colcol2" width="300" | Допустимые значения|-| Атрибут Id| Обязательный. Идентификатор комнаты >строка </td><td>Город, в отеле.| Целое число.|-| Type| Обязательный. Тип номера.| Строка. Возможные значения:SNGL – одноместныйDBL – двухместный с двухспальной кроватьюTWIN – двухместный с двумя кроватямиTRIP – трёхместныйQUAD – четырёхместный|}котором расположено агентство</td>
Элемент '''Category''' </tr>{| style="width: 800px" class="wikitable" <tr>|-! scope="col" width="200" | Элемент! scope="col" width="300" | Описание! scope="col" width="300" | Допустимые значения|-| Атрибут Id| Обязательный. Идентификатор категории <td>StreetAddress </td><td>нет </td><td>сложный </td><td>Адрес агентства в городе (улица, дом, корпус, офис и т.| Целое числод.)</td>|-| Rooms </tr>| Обязательный. Массив комнат с соответствием услуг. <tr>| Целое число <td>PostalCode </td><td>нет </td><td>строка </td><td>Почтовый код, индекс.|-| Room| Атрибут: Count</td>
Обязательный </tr> <tr> <td>CountryCode </td><td>нет </td><td>строка </td><td>Код страны (RU, UA, US и т.д.)</td> </tr>Количество комнат данного типа. <tr> <td>Travellers </td><td>да </td><td>сложный </td><td>Контейнер для информации о пассажирах (для которых будет производится поиск перелёта, бронирование)</td>
Атрибут </tr> <tr> <td class="col0">Traveller </td><td class="col1">да </td><td class="col2">сложный </td><td class="col3">Информация о пассажире</td> </tr> <tr class="row24"> <td>Type</td><td>да</td><td>строка</td><td>Тип пассажира возможные значения: IdADT - взрослые, CNN - дети, UNN - дети без сопровождения взрослых, INF - младенцы, INS - младенцы с местом</td>
Обязательный </tr> <tr class="row25"> <td class="col0">IsContact </td><td class="col1">нет</td><td class="col2">булевский </td><td class="col3">Индикатор показывающий является ли данное лицо контактным, возможные значение: true - пассажир является контактным лицом, false - не является. Идентификатор комнаты Контактное лицо может быть только одно, если среди пассажиров есть взрослые, то только кто-то из атрибута Id в элементе Hotel-них может быть контактным лицом. Если не указано, то по умолчанию false.</td> </tr> <tr class="row26"> <td class="col0">LinkedTo </td><td class="col1">нет </td><td class="col2">целое число </td><td class="col3"> Rooms-Номер взрослого, к которому привязан младенец/ребёнок (привязка ребёнка ко взрослому является опциональной)</td> Room.
Атрибут: ServiceId </tr> <tr class="row27"> <td class="col0">Num </td><td class="col1">да </td><td class="col2">число </td><td class="col3">Номер пассажира.</td> </tr> <tr class="row28"> <td class="col0">PreferedPlace </td><td class="col1">нет </td><td class="col2">сложный </td><td class="col3">Информация о предпочитаемом месте. Если указаны номер ряда и номер места, то параметры Smoking и Location игнорируются и могут быть не указаны.</td>
Целое число. </tr> <tr class="row33"> <td class="col0">SegNumber </td><td class="col1">да </td><td class="col2">строка </td><td class="col3">Номер сегмента</td> </tr> <tr class="row34"> <td class="col0">DocumentInfo </td><td class="col1">да </td><td class="col2">сложный </td><td class="col3">Паспортные данные</td>
Целое число </tr> <tr class="row35"> <td class="col0">DocType </td><td class="col1">да </td><td class="col2">строка </td><td class="col3">Тип документа, обязательный.</td>|- </tr>| TotalPrice <tr class="row36">| Обязательный. Суммарная стоимость бронируемого сочетания “Комнаты - услуги”. <td class="col0">DocNum </td><td class="col1">да </td><td class="col2">строка </td><td class="col3">Номер документа</td> </tr>| Вещественное число. <tr class="row37">Атрибут Currency - <td class="col0">CountryCode </td><td class="col1">да </td><td class="col2">строка </td><td class="col3">Страна выдачи, двух буквенный код валюты(RU, US и т.д.)</td>|} </tr> <tr class="row38"> <td class="col0">DocElapsedTime</td><td class="col1">да </divtd><td class="col2">строка </td><td class="col3">Срок истечения срока действия паспорта в фирмате dd.mm.yyyy (например 31.12.2012)</divtd>
'''WSDL''' </tr> <tr class="row45"> <td class="col0">BirthCity </td><td class="col1">нет</td><td class="col2">строка</td><td class="col3">Город рождения (тестовый серверназвание): http:</td> </tr> <tr class="row46"> <td class="col0">ArrAddress </td><td class="col1">нет </td><td class="col2">сложный </tsttd><td class="col3">Адрес прибытия, для въезжающих в США (не граждан США) информация является обязательной.nemo-ibeЕсли она не заполняется при оформлении брони, то её всё равно придётся заполнять при посадке на самолёт.com</wsdev/wsdl.php?for=HotelExtInfotd>
Элемент '''Item''' </tr>{| style <tr class="row49"> <td class="width: 800pxcol0" >PostalCode </td><td class="wikitablecol1"|-! scope>да </td><td class="col2">строка </td><td class="colcol3" width>Почтовый код</td> </tr> <tr class="200row50" | Элемент>! scope <td class="colcol0" width>City </td><td class="300col1" | Описание! scope>да </td><td class="colcol2" width>строка </td><td class="300col3" | Допустимые значения|-| CacheId| Обязательный. Идентификатор результата поиска.| Целое число|-| CategoryId| ID выбранной категории.| Целое число|}>Город</td>
Элемент '''Source''' </tr>{| style <tr class="width: 800pxrow51" > <td class="wikitablecol0"|-! scope>StreetAddress </td><td class="colcol1" width>да </td><td class="200col2" | Элемент! scope>строка </td><td class="colcol3" width>Адрес: улица, номер дома, квартиры и тп</td> </tr> <tr class="300row52" | Описание>! scope <td class="colcol0" width>DocStringFormats </td><td class="300col1" | Допустимые значения|-| ClientID| Обязательный. ID клиента в системе Nemo.Можно посмотреть>нет </добавить в td><td class="Администрированиеcol2" ⇨ >сложный </td><td class="Веб-служба. Авторизацияcol3".| Целое число.|-| APIKey| Обязательный. APIKey - секретный ключ доступа >Список форматов строк паспортных данных, которые будут отправлены в дополнение к API Nemoстандартным.Можно посмотреть/добавить в "Администрирование" ⇨ "Веб-служба. Авторизация".| Латинские буквы и цифры. Всего 32 символа.|}</div></divtd>
Элемент '''HotelExtInfo''' </tr>{| style <tr class="row57"> <td class="width: 800pxcol0">Gender </td><td class="col1" >да </td><td class="wikitablecol2"|-! scope>строка </td><td class="colcol3" width>Пол пассажира, обязательный, возможные значения: M - мужской(Male); F - женский(Female).</td> </tr> <tr class="200row58" | Элемент>! scope <td class="colcol0" width>FirstName </td><td class="300col1" | Описание! scope>да </td><td class="colcol2" width>строка </td><td class="300col3" | Допустимые значения|-| CategoryId| Обязательный. Идентификатор категории.| Целое число|-| PriceInfo| Обязательный. Элемент содержащий информацию о цене| см. Элемент PriceInfo|}>Имя пассажира</td>
Элемент '''PriceInfo''' </tr>{| style <tr class="row59"> <td class="col0">LastName </td><td class="width: 800pxcol1" >да </td><td class="wikitablecol2"|-! scope>строка </td><td class="colcol3" width>Фамилия пассажира</td> </tr> <tr class="200row60" | Элемент>! scope <td class="colcol0" width>BMiddleName </td><td class="300col1" | Описание! scope>да </td><td class="colcol2" width>строка </td><td class="300col3" | Допустимые значения>Отчество пассажира</td>|- </tr>| style <tr class="width:208px; height:35pxrow61" | >PriceBreakDown| style <td class="col0">Meal </td><td class="col1">нет</td><td class="width:208px; height:35pxcol2" | Необязательный. Информация о ценах, расписанная по каждому дню.| style>строка </td><td class="widthcol3">Код типа питания, возможные значения:208pxNONE - отсутствует (по умолчанию); 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 - Особое питание; height:35px" | Список элементов Date|VLML - Вегетарианское, молоко и яйца; VGML -| Netto| Обязательный. Стоимость от поставщика.| Вещественное число.Атрибут Currency Строго вегетарианское питание; VJML - код валюты.|Джайнизское вегетарианское; VOML -| Gross| Обязательный. Общая стоимостьВосточное вегетарианское питание.</td>| Вещественное число. </tr>Атрибут Currency - код валюты. <tr class="row62">|} <td class="col0">LoyaltyCard </td><td class="col1">нет </td><td class="col2">сложный </td><td class="col3">Карточка часто летающего пассажира</td>
Элемент '''Date''' </tr>{| style <tr class="row63"> <td class="col0">OpCode </td><td class="width: 800pxcol1" >да </td><td class="wikitablecol2"|-! scope>строка </td><td class="colcol3" width>IATA код компании авиаперевозчика</td> </tr> <tr class="200row64" | Элемент>! scope <td class="colcol0" width>Number </td><td class="300col1" | Описание! scope>да </td><td class="colcol2" width>строка </td><td class="300col3" | Допустимые значения>Номер карточки</td>|- </tr>| From <tr class="row65">| Обязательный. Дата начала действия тарифа <td class="col0">ContactInfo</td><td class="col1">нет </td><td class="col2">сложный </td><td class="col3">Контактная информация для пассажира</td>| Формат гггг-мм-дд </tr>|-| To| Обязательный. Дата окончания действия тарифа| Формат гггг-мм-дд|-| Price| Цена за одну ночь.| Вещественное число.Атрибут Currency - код валюты.|} <tr class="row66"> <td class="col0">EmailID </td><td class="col1">нет </td><td class="col2">строка </divtd><td class="col3">Контактный email</divtd>
=== Статические данные ===Для работы с веб-сервисом Nemo необходимо выгрузить статичные данные. Это данные о странах, городах и отелях.==== Страна ===='''WSDL''' (тестовый сервер): http: <//tst.nemo-ibe.com/wsdev/wsdl.php?for=CountryStatictr> <div tr class="toccolours mw-collapsible mw-collapsed" style="width:1000pxrow67">===== Запрос ===== <div td class="mw-collapsible-contentcol0">Telephone </td><syntaxhighlight langtd class="xmlcol1" line enclose>нет </td><td class="div" style="font-size:9pt;background: #F9F9F9; border: 1px dashed #2F6FAB; padding: 10px 5px; margin: 10px 0;col2">сложный <soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:vertd><td class="http://tst.nemo-ibe.com/wsdev/?version%3D1.0%26for%3DCountryStaticcol3"> Контактный телефон пассажира, описание аналогично описанию телефона агентства<soapenv:Header/td> <soapenv:Body/tr> <ver:countriestr class="row68"> <RequestBintd class="col0"> CancelBook<Request/td> <CountryStatictd class="col1"> да</CountryStatictd> </Requesttd class="col2"> сложный<Source/td> <ClientIdtd class="col3">Контейнер для тела запроса отмены брони</ClientIdtd> <APIKey> </APIKeytr> <Language>ru</Languagetr class="row69"> <Currencytd class="col0">RUBBookID</Currencytd> </Sourcetd class="col1"> да</RequestBintd> </ver:countriestd class="col2"> число</soapenv:Bodytd></soapenv:Envelopetd class="col3">Номер брони, которая будет отменяться (для которой будет производится выписка, отмена выписки)</syntaxhighlighttd>
Элемент '''Request''' </tr>{| style <tr class="width: 800pxrow70" > <td class="wikitablecol0"|-! scope>GetAirRules</td><td class="col1">да</td><td class="colcol2" width>сложный</td><td class="200col3" | Элемент>Контейнер для тела запроса поиска тарифных правил</td>! scope </tr> <tr class="row71"> <td class="colcol0" width>AirAvail</td><td class="300col1" | Описание! scope>да</td><td class="colcol2" width>сложный</td><td class="300col3" | Допустимые значения|-| CountryStatic| Пустой элемент| >Контейнер для тела запроса проверки доступности перелёта<br/td>|}
Элемент '''Source''' </tr>{| style <tr class="width: 800pxrow72" > <td class="wikitablecol0"|-! scope>Ticketing</td><td class="colcol1" width>да</td><td class="200col2" | Элемент! scope>сложный</td><td class="colcol3" width>Контейнер для тела запроса выписки брони</td> </tr> <tr class="300row73" | Описание>! scope <td class="colcol0" width>ValCompany</td><td class="300col1" | Допустимые значения|-| ClientID| Обязательный. ID клиента в системе Nemo.Можно посмотреть>нет</добавить в td><td class="Администрированиеcol2" ⇨ "Веб-служба. Авторизация".| Целое число.|-| APIKey| Обязательный. APIKey - секретный ключ доступа к API Nemo.Можно посмотреть>строка</добавить в td><td class="Администрированиеcol3" ⇨ "Веб-служба. Авторизация".| Латинские буквы и цифры. Всего 32 символа.|}</div>Валидирующий перевозчик, на бланке которого выписывается билет</divtd>
Элемент '''CountryStatic''' </tr>{| style <tr class="width: 800pxrow76" > <td class="wikitablecol0"|-! scope>Percent</td><td class="col1">нет</td><td class="col2">число</td><td class="colcol3" width>Комиссия в процентах</td> </tr> <tr class="200row77" | Элемент>! scope <td class="colcol0" width>VoidTicket</td><td class="300col1" | Описание! scope>да</td><td class="colcol2" width>сложный</td><td class="300col3" | Допустимые значения|-| Countries| Обязательный| Набор элементов Country|}>Контейнер для тела запроса отмены выписки брони</td>
Элемент '''Country''' </tr>{| style <tr class="row78"> <td class="width: 800pxcol0" >Search</td><td class="wikitablecol1"|-! scope>да</td><td class="col2">сложный</td><td class="colcol3" width>Контейнер для тела запроса поиска</td> </tr> <tr class="200row79" | Элемент>! scope <td class="colcol0" width>ODPairs</td><td class="300col1" | Описание! scope>да</td><td class="colcol2" width>сложный</td><td class="300col3" | Допустимые значения|-| Атрибут Id| Обязательный. Идентификатор страны (ISO).| Целое число|-| Code| Обязательный. Код страны ISO.| Строка из 2-х латинских букв|-| Continent| Обязательный. Название континента.| Строка.|-| Data| Обязательный. Информация требующая перевода.| Набор элементов Info.|}>Контейнер для информации о перелёте</td>
Элемент '''Info''' </tr> <tr class="row80">{| style <td class="width: 800pxcol0" >Type</td><td class="wikitablecol1"|-! scope>да</td><td class="colcol2" width>строка</td><td class="200col3" | Элемент>Тип перелёта, возможные значения: OW - в одну сторону, RT - туда-обратно, CR - сложный маршрут</td> </tr>! scope <tr class="colrow81" width> <td class="300col0" | Описание! scope>Direct</td><td class="colcol1" width>нет</td><td class="300col2" | Допустимые >булевский</td><td class="col3">Индикатор, указывающий какие перелёты искать, только прямые или с пересадками, возможные значения|: false - с пересадками, true -только прямые. Если не указан, значение по умолчанию false.</td>| Атрибут Language </tr>| Обязательный. Язык в котором представлена информация. <tr class="row82">| Строка из 2 <td class="col0">AroundDates</td><td class="col1">нет</td><td class="col2">число</td><td class="col3">Включает поиск по окружным датам, количество дней +/-х латинских буквот даты заезда/возвращения.|Применим только для типов перелёта в одну сторону(OW) и туда-| Name| Обязательный. Наименование страныобратно(RT).Возможные значения: 0, 1, 2, 3</td>| Строка в произвольном формате. </tr>|} <tr class="row83"> <td class="col0">ODPair</divtd><td class="col1">да</td><td class="col2">сложный</td><td class="col3">Контейнер для информации о сегменте перелёта. Может повторяться 1-6 раз. Поиск по расписанию использует только первый сегмент, поиск сложных перелётов и перелётов туда и обратно не поддерживается</divtd>
'''WSDL''' (тестовый сервер): http: </tr> <tr class="row90"> <td class="col0">OnlyAvail</td><td class="col1">нет</td><td class="col2">булевский</tsttd><td class="col3">Искать только доступные, возможные значения: true - только доступные, false - все.nemo-ibeЕсли не указан, то по умолчанию false.com</td> </tr> <tr class="row91"> <td class="col0">AirVPrefs</wsdevtd><td class="col1">нет</wsdltd><td class="col2">сложный</td><td class="col3">Обёртка для списка авиакомпаний, по которым будет или не будет проводиться поиск.php?for=CityStatic</td>
Элемент '''CityStatic''' </tr>{| style <tr class="row94"> <td class="col0">IncludePrivateFare</td><td class="width: 800pxcol1" >нет</td><td class="wikitablecol2"|-! scope>булевский</td><td class="colcol3" width>Включать приватные цены в результат или нет, возможные значения: true - включать, false - не включать. Если не указан, то по умолчанию false.</td> </tr> <tr class="200row95" | Элемент>! scope <td class="colcol0" width>ServiceTypes</td><td class="300col1" | Описание! scope>нет</td><td class="colcol2" width>сложный хмл</td><td class="300col3" | Допустимые значения|>Контейнер массива используемых веб-| CountryId| Обязательный. Идентификатор странысервисов при поиске.| Целое число|}</td>
Элемент '''Source''' </tr>{| style="width: 800px" <tr class="wikitablerow96">|-! scope <td class="colcol0" width>ServiceType</td><td class="200col1" | Элемент! scope>нет</td><td class="colcol2" width>строка</td><td class="300col3" | Описание! scope="col" width="300" | Допустимые >Тип веб-сервиса(поставщика). При указании нескольких элементов ServiceType поиск будет проведён для каждого сервиса. Возможные значения|: Sirena2000 - поиск в Сирене; SirenaSchedule -| ClientID| Обязательный. ID клиента поиск в системе Nemo.Можно посмотреть/добавить Сирене по расписанию; SabreLFS - поиск в "Администрирование" ⇨ "ВебСэйбр LFS; SabreBFM -служба. Авторизация".| Целое число.|поиск в Сэйбр BFM; SabreSchedule -| APIKey| Обязательный. APIKey поиск Сэйбр по расписанию; Galileo - секретный ключ доступа к API Nemo.Можно посмотреть/добавить поиск в "Администрирование" ⇨ "ВебГалилео; AmadeusMPTBS -служба. Авторизация"поиск в Амадеус.</td>| Латинские буквы и цифры. Всего 32 символа. </tr>|}</table>
===== Ответ =====
<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://tst.nemo-ibe.com/wsdev/?version%3D1.0%26for%3DCityStatic">
<SOAP-ENV:Body>
<ns1:citiesResponse>
<ResponseBin>
<Response>
<CityStatic>
<Cities>
<City Id="1">
<Name>Кабул</Name>
<CountryId>4</CountryId>
<Data>
<Info Language="EN">
<Name>Kabul</Name>
</Info>
<Info Language="RU">
<Name>Кабул</Name>
</Info>
</Data>
</City>
<City Id="204793">
<Name>Aibak</Name>
<CountryId>4</CountryId>
<Data>
<Info Language="EN">
<Name>Aibak</Name>
</Info>
<Info Language="RU">
<Name>Aibak</Name>
</Info>
</Data>
</City>
<City Id="204785">
<Name>Anar Darah</Name>
<CountryId>4</CountryId>
<Data>
<Info Language="EN">
<Name>Anar Darah</Name>
</Info>
<Info Language="RU">
<Name>Anar Darah</Name>
</Info>
</Data>
</City>
...
</Cities>
</CityStatic>
</Response>
</ResponseBin>
</ns1:citiesResponse>
</SOAP-ENV:Body>
</SOAP-ENV:Envelope>
</syntaxhighlight>
Элемент '''CityStatic'''
{| style="width: 800px" class="wikitable"
|-
! scope="col" width="200" | Элемент
! scope="col" width="300" | Описание
! scope="col" width="300" | Допустимые значения
|-
| Cities
| Обязательный. Массив городов.
| Набор элементов City
|}
Элемент '''City'''
{| style="width: 800px" class="wikitable"
|-
! scope="col" width="200" | Элемент
! scope="col" width="300" | Описание
! scope="col" width="300" | Допустимые значения
|-
| Атрибут '''Id'''
| Обязательный. Идентификатор города.
| Целое число
|-
| Name
| Название города.
|
|-
| Data
| Названия городов на разных языках. В данный момент поддерживаются названия на русском и английском.
| См. описание элемента Data в ответе получения информации о стране.
|}
</div>
</div>
==== Статика по отелям и апартаментам ====
Этот запрос будет использоваться для выгрузки статичной информации по одному или нескольким отелям.
'''WSDL''' (тестовый сервер): http://tst.nemo-ibe.com/wsdev/wsdl.php?for=HotelStatic
<div class="toccolours mw-collapsible mw-collapsed" style="width:1000px">===== Запрос =Параметры, используемые в ответах ====
Элемент '''Hotels''' <tr bgcolor="#CCCCCC">{| style <th class="col0 leftalign"> Имя элемента </th><th class="width: 800pxcol1 leftalign" > Обязательный </th><th class="wikitablecol2 leftalign"|-! scope> Тип </th><th class="colcol3 centeralign" width> Описание </th> </tr> <tr class="200row1" | Элемент>! scope <td class="colcol0" width>BookFlightResult </td><td class="300col1" | Описание! scope>да </td><td class="colcol2" width>сложный </td><td class="300col3" | Допустимые значения|-| CityId| Обязательный. Идентификатор города из которого необходимо получить отели.| Целое число|}>Контейнер для тела ответа бронирования</td>
Элемент '''Source''' </tr>{| style <tr class="width: 800pxrow2" > <td class="wikitablecol0"|-! scope>ID </td><td class="colcol1" width>да </td><td class="200col2" | Элемент! scope>число</td><td class="colcol3" width>Номер бронирования в системе Nemo.</td> </tr> <tr class="300row3" | Описание>! scope <td class="colcol0 leftalign" width>Status </td><td class="300col1" | Допустимые значения|-| ClientID| Обязательный. ID клиента в системе Nemo.Можно посмотреть>да </добавить в td><td class="col2"Администрирование>строка </td><td class=" ⇨ col3"Веб>Статус брони, возможные значения: booked -служба. Авторизация".| Целое число.|забронировано, canceled -| APIKey| Обязательный. APIKey бронь отменена, ticket - секретный ключ доступа к API Nemo.Можно посмотреть/добавить в "Администрирование" ⇨ "Вебвыписана; UNDEFINED -служба. Авторизация".| Латинские буквы и цифры. Всего 32 символастатус не определён.|}</div></divtd>
Элемент '''Hotel''' </tr>{| style <tr class="row6"> <td class="width: 800pxcol0 leftalign" >Number </td><td class="wikitablecol1"|-! scope>да </td><td class="col2">число </td><td class="colcol3" width>Номер очереди</td> </tr> <tr class="200row7" | Элемент>! scope <td class="colcol0" width>Flight </td><td class="300col1" | Описание! scope>да </td><td class="colcol2" width>сложный </td><td class="300col3" | Допустимые значения|-| Атрибут Id| Обязательный. Идентификатор отеля в системе Nemo.| Целое число.|-| CityId| Обязательный. Идентификатор города.| Целое число.|-| CountryId| Обязательный. Идентификатор страны .| Целое число.|-| Latitude| Необязательный. Широта.| Вещественное число.|-| Longitude| Необязательный. Долгота.| Вещественное число.|-| Rating| Необязательный. Рейтинг.| Вещественное число.|-| Floors| Необязательный. Количество этажей| Целое число.|-| Data| Необязательный.| Набор элементов Info.|-| Phones| Необязательный. Массив телефонов.| Набор элементов Phone.|-| Fax| Необязательный. Факс.| Строка в произвольном формате.|-| Images| Необязательный. Маcсив изображений.| Набор элементов Image.|}>Перелёт, по которому была сделана бронь (Результаты проверки доступности для перелёта)</td>
Элемент '''Info''' </tr>{| style <tr class="row8"> <td class="width: 800pxcol0" >Agency </td><td class="wikitablecol1"|-! scope>да </td><td class="colcol2" width>сложный </td><td class="200col3" | Элемент>Информация об агентстве</td> </tr>! scope <tr class="colrow9" width> <td class="300col0" | Описание! scope>ItinReceipts</td><td class="col1">нет </td><td class="colcol2" width>сложный </td><td class="300col3" | Допустимые значения|-| Name| Обязательный>Маршрут квитанция. Наименование отеля.| Строка Содержит строку в произвольном формате.|-| Area| Необязательный. Описание места расположения отеля.| Строка в произвольном формате.|-| Location| Необязательный. Район города.| Строка в произвольном формате.|-| Desc| Необязательный. Описание отеля.| Строка кодировки Encoding (как правило в произвольном формате.|-| Address| Необязательный. Адрес отеля.| Строка base64), представляющую маршрут квитанцию в произвольном форматеFormat.|}</td>
Элемент '''Phones''' </tr>{| style <tr class="width: 800pxrow10" > <td class="wikitablecol0"|-! scope>Encoding </td><td class="col1">да </td><td class="col2">строка </td><td class="colcol3" width>Кодировка</td> </tr> <tr class="200row11" | Элемент>! scope <td class="colcol0" width>Format </td><td class="300col1" | Описание! scope>да </td><td class="colcol2" width>строка</td><td class="300col3" | Допустимые значения|-| Phone| Обязательный. Телефон.| Строка в произвольном формате.|}>Формат</td>
Элемент '''Image''' </tr>{| style <tr class="width: 800pxrow12" > <td class="wikitablecol0"|-! scope>Travellers</td><td class="col1">да </td><td class="colcol2" width>сложный </td><td class="200col3" | Элемент>Контейнер для информации о пассажирах</td> </tr>! scope <tr class="colrow13" width> <td class="300col0" | Описание! scope>Traveller </td><td class="colcol1" width>да </td><td class="300col2" | Допустимые значения|-| Path| Необязательный. Путь к полному изображению.| Строка в произвольном формате.|-| Icon| Необязательный. Путь к миниатюре, иконке.| Строка в произвольном формате.|}>сложный </divtd><td class="col3">Информация о пассажире</divtd>
Получить доступ к результатам бронирования в данном сервисе можно через SOAP клиента. Для получения результата необходим параметр — «FlightId» — Id перелёта </tr> <tr class="row20"> <td class="col0">SmokingPreference </td><td class="col1">нет </td><td class="col2">строка </td><td class="col3">Статус курения на этом месте, если Y - место для курящих, если N - место для которого будет производится бронированиенекурящих. WSDL находится по адресу: http:</td> </tr> <tr class="row21"> <td class="col0">SegmentNumber </CLIENT_DOMAINtd><td class="col1">да </nemoflightstd><td class="col2">число </wsdl.php?fortd><td class=BookFlight."col3">Номер сегмента</td>
===== Ответ =====<div class="mw-collapsible-content"><syntaxhighlight lang="xml" line enclose="div" style="font-size:9pt;background: #F9F9F9; border: 1px dashed #2F6FAB; padding: 10px 5px; margin: 10px 0;"> <SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns1="http://CLIENT_DOMAIN/nemoflights/?version%3D1.0%26for%3DBookFlight" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"tr> <SOAP-ENV:Body> <ns1:BookFlightResponse> <ResponseBin> <Response> <BookFlight ID="?" Status="?" Codetr class="?row28"> <!--ID — Id брони в системе Nemo, целое число, обязательный--> <!--Status — индикатор состояния брони, возможные значения: booked — забронировано, canceled — бронь отменена, ticket — выписана UNDEFINED — статус не определён--> <!--Code — код брони в системе поставщика--> <QueryPlace xsi:niltd class="truecol0"/> <!--QueryPlace — положение брони в очереди, Number — номер брони в очереди--> <Flight FlightId="?"> <!--FlightId — Id перелёта в системе Nemo--> <WebService>?</WebService> <!--WebService — поставщик перелёта--> <ValCompany>?Result</ValCompanytd> <!--ValCompany — код авиакомпании, являющейся валидирующим перевозчиком, IATA--> <URL>?</URL> <!--URL — ссылка на бронирование конкретного перелета--> <Segments> <Segment SegNum="?" SegGroupNum="?"> <!--SegNum — номер сегмента в перелёте--> <!--SegGroupNum – номер плеча перелёта--> <DepAirp CodeTypetd class="IATAcol1">?да</DepAirptd> <!--DepAirp — аэропорт отправления, например: MOW — любой аэропорт в г.Москва или SVO — Шереметьево--> <DepTerminal>?</DepTerminal> <!--DepTerminal — терминал пункта отправления, если пустое значение, то в аэропорту всего 1 терминал--> <ArrAirp CodeTypetd class="IATAcol2">?сложный</ArrAirptd> <!--ArrAirp — аэропорт прибытия--> <ArrTerminal>?</ArrTerminal> <!--ArrTerminal — терминал пункта прибытия, если пустое значение, то в аэропорту всего 1 терминал--> <OpAirline>?</OpAirline> <!--OpAirline — авиакомпания перевозчик, например: SU — Аэрофлот--> <MarkAirline>?</MarkAirline> <!--MarkAirline — авиакомпания, продающая перелёт--> <FlightNumber>?</FlightNumber> <!--FlightNumber — номер рейса--> <AircraftType>?</AircraftType> <!--AircraftType — тип воздушного судна, код--> <DepDateTime>?</DepDateTime> <!--DepDateTime — дата и время отправления, формат ГГГГ-MM-ДДTЧЧ:ММ:СС--> <ArrDateTime>?</ArrDateTime> <!--ArrDateTime — дата и время прибытия, формат ГГГГ-MM-ДДTЧЧ:ММ:СС--> <StopNum>?</StopNum> <!--StopNum — количество остановок--> <BookingCodes> <BookingCode ClassTypetd class="?col3"> <!--ClassType — класс перелета, например: economy--> <BookingCode>?</BookingCode> <!--BookingCode — код класса бронирования, у разных авиакомпаний один и тот же класс может записываться разными литерами, например: L--> </BookingCode> </BookingCodes> <FlightTime>?</FlightTime> <!--FlightTime — время перелёта в минутах--> <TimeZone Departure="?" Arrival="?"/> <!--Departure временная зона аэропорта отправления--> <!--Arrival — временная зона аэропорта прибытия--> <ETicket>?</ETicket> <!--ETicket — признак электронного билета, значения: true / false--> </Segment> </Segments> <PricingInfo Refundable="?"> <!--Refundable — возвратный/невозвратный, true/false. Если пустое, то не известно--> <PassengerFare Type="?" Quantity="?"> <!--Type — тип пассажира, возможные значения: ADT — взрослые, CNN — дети, INF — младенцы, INS — младенцы с местом--> <!--Quantity — количество пассажиров данного типа--> <BaseFare Currency="?" Amount="?"/> <!--BaseFare — базовая стоимость, в базовой валюте. Currency — код валюты, Amount — значение цены--> <EquiveFare Currency="?" Amount="?"/> <!--EquiveFare — базовая стоимость, в эквивалентной валютеРезультат отмены (валюте продаживойдирования). Currency — код валюты, Amount — значение цены--> <TotalFare Currency="?" Amount="?"/> <!--TotalFare — суммарная стоимость, в эквивалентной валюте. Currency — код валюты, Amount — значение цены--> <Taxes> <Tax CurCode="?" TaxCode="?" Amount="?"/td> <!--CurCode — код валюты, TaxCode — код таксы, Amount — сумма таксы--> </Taxestr> <Tariffs> <Tariff Codetr class="?row29" SegNum="?"/> <!--Code — код тарифа, SegNum — номер сегмента, к которому применён тариф--> </Tariffs> <FareCalc>?</FareCalc> <!--FareCalc — строка расчёта цены--> <LastTicketDateTime>?</LastTicketDateTime> <!--LastTicketDateTime — дата и время таймлимита по выписке в формате ГГГГ-MM-ДДTЧЧ:ММ:СС--> </PassengerFare> </PricingInfo> <Commission/> <Charges Currencytd class="?col0">?Success</Charges> <!--Charges — сборы, Currency — код валюты--td> <TotalPrice Currencytd class="?col1">?да</TotalPricetd> <!--TotalPrice — итоговая цена, Currency — код валюты--> </Flight> <Agency Nametd class="?col2"> <!--Name — название агентства--> <Telephone Type="?"> <!--Type — тип номера, обязательный, возможные значения: M — мобильный, H — домашний, B — рабочий, A — агенство--> <!--Optional:--> <PhoneNumber>?булевский</PhoneNumbertd> <!--PhoneNumber — номер телефона--> <!--Optional:--> <CountryAccessCode>?</CountryAccessCode> <!--CountryAccessCode — код страны--> <!--Optional:--> <AreaCityCode>?</AreaCityCode> <!--AreaCityCode — код региона/города--> </Telephone> <Address City="?" State="?" StreetAddress="?" PostalCodetd class="?" CountryCode=col3"?"/> <!--City — город--> <!--State — штат--> <!--StreetAddress — адрес в городе (улицаИндикатор, дом, корпус, офис и т.д.)--> <!--PostalCode — почтовый индекс--> <!--CountryCode — код страны (RU, UA и т.п.)--> </Agency> <ItinReceipts Encoding="?" Format="?"> <!--ItinReceipts — маршрут квитанция, Encoding — кодировка, Format — формат--> <FareStored xsi:nil="true"/> <Travellers> <!--Zero or more repetitions:--> <Traveller Type="?" IsContact="?" LinkedTo="?" Num="?" TravellerId="?"> <!--Type — тип пассажира, обязательныйпоказывающий успешно или нет прошла отмена, возможные значения: ADT — взрослые, CNN — дети со взрослыми,UNN — дети без сопровождения взрослых, INF — младенцы, INS — младенцы с местом--> <!--IsContact — если true — то данный пассажир является контактным лицом, если false — то не является, контактное лицо может быть только 1, если среди пассажиров есть взрослые, то только кто-то из них может быть контактным лицом, по умолчанию false--> <!--Num — порядковый номер пассажира, начинается с 1--> <!--LinkedTo — номер взрослого, к которому привязан младенец/ребёнок--> <!--TravellerId — устаревший параметр, не используется--> <Meal>?</Meal> <!--Meal — код типа питания, возможные значения: NONE — отсутствует AVML — Азиатская вегетарианская кухня BLML — Блюда щадящей диеты CHML — Детское питание CHPC — Детский холодный завтрак СНСС — Детский горячий завтрак CHHC — Детский ланч, ветчина и сыр PBJS — Детский ланч, ореховое масло CHMC — Детский обед макароны с сыром DBML — Диабетическое питание FPML — Фрукты GFML — Питание без клейковины HFML — Питание богатое клетчаткой HNML — Индусская кухня BBML — Питание для младенцев KSML — Кошерная кухня SMKB — Кошерный завтрак SMKL — Кошерный ланч SMKD — Кошерный обед LPML — Малобелковое питание LCML — Низкокалорийное питание LFML — Низкохолестериновое питание PRML — Низкопуриновое питание LSML — Малосоленое питание MOML — Мюсли NLML — Безмолочные продукты ORML — Восточная кухня RVML — Сырые овощи SFML — Морепродукты SPML — Особое питание VLML — Вегетарианское, молоко и яйца VGML — Строго вегетарианское питание VJML — Джайнизское вегетарианское VOML — Восточное вегетарианское питание--> <PersonalInfo DateOfBirth="?" Nationality="?" Gender="?"> <!--DateOfBirth — дата рождения в формате ДД.ММ.ГГГГ успешно отменена (например 31.12.2000войдирование)--> <!--Nationality — гражданство, двух буквенный код страны (RU, UA, US и т.д.)--> <!--Gender — пол пассажира, возможные значения: M — мужской(Male), F — женский(Female)--> <FirstName>?</FirstName> <!--FirstName — имя пассажира--> <LastName>?</LastName> <!--LastName — фамилия пассажира--> <!--Optional:--> <MiddleName>?</MiddleName> <!--MiddleName — отчество пассажира--> </PersonalInfo> <LoyaltyCard OpCode="?" Number="?"/> <!--OpCode — код авиакомпании--> <!--Number — номер карточки--> <ContactInfo> <!--Optional:--> <EmailID>?</EmailID> <!--EmailID — контактный email--> <!--Optional:--> <Telephone Type="?"> <!--Type — тип номера, возможные значения: M — мобильный, H — домашний, B — рабочий--> <!--Optional:--> <PhoneNumber>?</PhoneNumber> <!--PhoneNumber — номер телефона--> <!--Optional:--> <CountryAccessCode>?</CountryAccessCode> <!--CountryAccessCode — код страны--> <!--Optional:--> <AreaCityCode>?</AreaCityCode> <!--AreaCityCode — код региона/города--> </Telephone> </ContactInfo> <DocumentInfo DocType="?" DocNum="?" CountryCode="?" DocElapsedTime="?"/> <!--DocType — тип документа, возможные значения: Р — Паспорт A – Паспорт иностранца С — Внутренний гражданский паспорт F – Документ заменяющий паспорт М — Воинское удостоверение N – Сертификат натурализации(специфичный документ США) T – Док.повторного въезда, паспорт беженца V – Документ для пересечения границы--> <!--DocNum — номер документа--> <!--CountryCode — двух буквенный код страны выдачи паспорта (RU, UA, US и т.д.)--> <!--DocElapsedTime — срок истечения срока действия паспорта в ДД.ММ.ГГГ (например 31.12.2000)--> <VisaInfo Num="?" IssueCountry="?" IssuePlace="?" BirthCountry="?" BirthCity="?" IssueDate="?"/> <!--Num — номер визы--> <!--IssueDate — дата(ДД.ММ.ГГГГ) выдачи визы--> <!--IssueCountry — страна выдачи визы--> <!--IssuePlace — место выдачи визы--> <!--BirthCountry — страна рождения(IATA код страны)--> <!--BirthCity — город рождения(название)--> <ArrAddress City="?" State="?" StreetAddress="?" PostalCode="?" CountryCode="?"/> <!--City — город--> <!--State — штат или область въезда--> <!--StreetAddress — адрес: улица, номер дома, квартиры и т.д.--> <!--PostalCode — почтовый код--> <!--CountryCode — код страны--> <PreferedPlace SmokingAllowed="?" Location="?" RowNumber="?" PlaceNumber="?" SegNumber="?"/> <!--Если указаны номер ряда и номер места, то параметры SmokingAllowed и Location игнорируются--> <!--SmokingAllowed — булевское значение, true — место для курящих, ; false — место для некурящих--> <!--Location — положение места в ряде, возможные значения: W — у окна (Window) M — где-то в середине ряда (Middle) NPW — возле прохода (NearPassengerWay) NS — нет предпочтения (NotSpecified)--> <!--RowNumber — номер ряда--> <!--PlaceNumber — номер места--> <!--SegNumber — номер сегмента--> <DocStringFormats> <!--Zero or more repetitions:--> <DocStringFormat>?</DocStringFormat> <!--DocStringFormat — формат паспортной строки, возможные значения: DOCS — строка формата DOCS, FOID — строка формата FOID--> </DocStringFormats> </Traveller> </Travellers> </BookFlight> <Requisites/> <RequestType xsi:nil="true"/> <UserID xsi:nil="true"/> <Errors> <Error Code="?"> <!--Code — код ошибки в системе Nemo--> <ServiceErrorMessage>?</ServiceErrorMessage> <!--ServiceErrorMessage — сообщение об ошибке полученное от веб-сервиса поставщика--> <Message>?</Message> <!--Message — сообщение об ошибке от системы Nemo--> </Error> </Errors> </Response> </ResponseBin> </ns1:BookFlightResponse> </SOAP-ENV:Body></SOAP-ENV:Envelope></syntaxhighlight></div>не отменена</divtd>
Пример одностороннего перелета Москва — Мадрид. </tr> <tr class="row32"> <td class="col0">Rules</td><td class="col1">да</td><td class="col2">сложный</td><td class="col3">Контейнер для правил</td> </tr> <tr class="row33"> <td class="col0">Rule</td><td class="col1">да</td><td class="col2">сложный</td><td class="col3">Правило</td>
===== Ответ ===== <div class="mw-collapsible-content"/tr> <syntaxhighlight lang="xml" line enclosetr class="div" style="font-size:9pt;background: #F9F9F9; border: 1px dashed #2F6FAB; padding: 10px 5px; margin: 10px 0;row38"> <SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns1="http://CLIENT_DOMAIN/nemoflights/?version%3D1.0%26for%3DBookFlight" xmlns:xsitd class="http://www.w3.org/2001/XMLSchema-instancecol0"> IsAvail<SOAP-ENV:Body> <ns1:BookFlightResponse> <ResponseBin> <Response> <BookFlight ID="262872" Status="booked" Code="LQHZWU"> <QueryPlace xsi:nil="true"/td> <Flight FlightIdtd class="171430002col1"> <WebService>SABREда</WebServicetd> <ValCompany>SU</ValCompany> <URL>http%3A%2F%2FCLIENT_DOMAIN%2F%3Fgo%3Dbooking%2Finfo%26uid%3D14290%26flight%3D171430002</URL> <Segments> <Segment SegNum="1" SegGroupNum="0"> <DepAirp CodeTypetd class="IATAcol2">SVOбулевский</DepAirptd> <DepTerminal>D</DepTerminal> <ArrAirp CodeTypetd class="IATAcol3">BCN</ArrAirp> <ArrTerminal>1</ArrTerminal> <OpAirline>SU</OpAirline> <MarkAirline>SU</MarkAirline> <FlightNumber>2512</FlightNumber> <AircraftType>321</AircraftType> <DepDateTime>2014-03-20T20Индикатор, показывающий доступность перелёта, возможные значения:40:00</DepDateTime> <ArrDateTime>2014-03-20T22:20:00</ArrDateTime> <StopNum>0</StopNum> <BookingCodes> <BookingCode ClassType="economy"> <BookingCode>E</BookingCode> </BookingCode> </BookingCodes> <FlightTime>280</FlightTime> <TimeZone Departure="4" Arrival="1"/> <ETicket>true</ETicket> </Segment> <Segment SegNum="2" SegGroupNum="0"> <DepAirp CodeType="IATA">BCN</DepAirp> <DepTerminal>1</DepTerminal> <ArrAirp CodeType="IATA">MAD</ArrAirp> <ArrTerminal>2</ArrTerminal> <OpAirline>UX</OpAirline> <MarkAirline>SU</MarkAirline> <FlightNumber>3403</FlightNumber> <AircraftType>738</AircraftType> <DepDateTime>2014-03-21T12:05:00</DepDateTime> <ArrDateTime>2014-03-21T13:25:00</ArrDateTime> <StopNum>0</StopNum> <BookingCodes> <BookingCode ClassType="economy"> <BookingCode>E</BookingCode> </BookingCode> </BookingCodes> <FlightTime>80</FlightTime> <TimeZone Departure="1" Arrival="1"/> <ETicket>true</ETicket> </Segment> </Segments> <PricingInfo Refundable="доступен; false"> <PassengerFare Type="ADT" Quantity="1"> <BaseFare Currency="EUR" Amount="165"/> <EquiveFare Currency="RUB" Amount="8335"/> <TotalFare Currency="RUB" Amount="14025"/> <Taxes> <Tax CurCode="RUB" TaxCode="YQF" Amount="4242"/> <Tax CurCode="RUB" TaxCode="YRI" Amount="374"/> <Tax CurCode="RUB" TaxCode="JD" Amount="844"/> <Tax CurCode="RUB" TaxCode="QV" Amount="230"/> </Taxes> <Tariffs/> <FareCalc>MOW SU X/BCN SU MAD225.45NUC225.45END ROE0.731857</FareCalc> <LastTicketDateTime>2014-03-14T12:45:00недоступен</LastTicketDateTimetd> </PassengerFaretr> </PricingInfo> <Commission Currencytr class="RUBrow39">0</Commission> <Charges Currencytd class="RUBcol0">140.25VoidTicketResult</Chargestd> <TotalPrice Currencytd class="RUBcol1">14165.25да</TotalPricetd> </Flight> <Agency/> <ItinReceipts xsi:niltd class="truecol2"/> сложный<FareStored xsi:nil="true"/td> <Travellers> <Traveller Type="ADT" IsContact="true" Num="1"> <Meal/> <Ticket/> <Seats/> <PersonalInfo DateOfBirth="20.05.1980" Nationality="RU" Gender="M"> <FirstName>PETR</FirstName> <LastName>IVANOV</LastName> <MiddleName/> </PersonalInfo> <LoyaltyCard/> <ContactInfo> <EmailID>TESTMAIL@MAIL.ru</EmailID> <Telephone Type="M"> <PhoneNumber>79051234567</PhoneNumber> <CountryAccessCode/> <AreaCityCode/> </Telephone> </ContactInfo> <DocumentInfo DocType="A" DocNum="123456" CountryCode="RU" DocElapsedTime="01.01.2020"/> <VisaInfo/> <ArrAddress/> <PreferedPlace/> <DocStringFormats/> </Traveller> </Travellers> </BookFlight> <Requisites/> <RequestType xsi:niltd class="truecol3"/> <UserID xsi:nil="true"/> <Errors xsi:nil="true"/> </Response> </ResponseBin> </ns1:BookFlightResponse> </SOAP-ENV:Body></SOAP-ENV:Envelope></syntaxhighlight></div>Контейнер для тела ответа отмены выписки брони</divtd>
После бронирования, </tr> <tr class="row42"> <td class="col0">Flight</td><td class="col1">нет</td><td class="col2">сложный</td><td class="col3">Представляет информацию о перелёте. Отсутствует если перелётов не истек таймлимит можно аннулировать сделанный заказ. Аннуляция заказа найдено (используется в Nemo может быть ручной поисковом ответе)</td> </tr> <tr class="row43"> <td class="col0">WebService</td><td class="col1">да</td><td class="col2">строка</td><td class="col3">Веб-сервис (сделанной пользователемпоставщик) и автоматической — по истечению таймлимита, установленного для заказа система сама аннулирует заказот которого был получен перелёт.</td>
WSDL: http: </tr> <tr class="row44"> <td class="col0">ValCompany</CLIENT_DOMAINtd><td class="col1">нет</nemoflightstd><td class="col2">строка</wsdltd><td class="col3">IATA код авиакомпании. Валидирующий перевозчик, на бланках которого должен выписываться билет.php?for</td> </tr> <tr class="row45"> <td class="col0">Segments</td><td class="col1">да</td><td class="col2">сложный</td><td class=CancelBook"col3">Контейнер для сегментов перелёта</td>
Всегда в явном виде нужно указывать пользователю информацию о штрафах за аннуляцию до бронирования. </tr> <tr class="row54"> <td class="col0">FlightNumber</td><td class="col1">да</td><td class="col2">число</td><td class="col3">Номер рейса</td> </tr> <tr class="row55"> <td class="col0">AircraftType</td><td class="col1">да</td><td class="col2">строка</td><td class="col3">Код типа самолёта</td>
Штрафы получаются по каждой услуге отдельным запросом. Нужно указать тип услуги </tr> <tr class="row56"> <td class="col0">DepDateTime</td><td class="col1">да</td><td class="col2">строка</td><td class="col3">Дата и время отправления, идентификатор результата поиска формат ГГГГ-MM-ДДTЧЧ:ММ:СС</td> </tr> <tr class="row57"> <td class="col0">ArrDateTime</td><td class="col1">да</td><td class="col2">строка</td><td class="col3">Дата и выбранную категорию.время прибытия, формат ГГГГ-MM-ДДTЧЧ:ММ:СС</td>
Внимание. Для отелей из Hotelbeds (Supplier </tr> <tr class=HOTELBEDS) штрафы до бронирования получить невозможно."row58"> <td class="col0">StopNum</td><td class="col1">да</td><td class="col2">число</td><td class="col3">Число остановок</td> </tr> <tr class="row59"> <td class="col0">Meal</td><td class="col1">да</td><td class="col2">строка</td><td class="col3">Тип питания, возможные значения: UNDEFINED - неизвестно; N - Нет питания; P - Алкогольные напитки в продаже; B - Завтрак; O - Холодная еда; C - Бесплатные алкогольные напитки; K - Континтальный завтрак; D - Обед; F - Еда в продаже; G - Еда/напитки в продаже; H - Горячая еда; L - Ланч; M - Еда; R - Освежающие еда/напитки бесплатно; V - Освежающие еда/напитки за отдельную плату; S - Закуска</td>
'''WSDL''' (тестовый сервер): http: </tr> <tr class="row60"> <td class="col0">BookingCodes</td><td class="col1">да</td><td class="col2">сложный</td><td class="col3">Контейнер для классов перелёта</td> </tr> <tr class="row61"> <td class="col0">BookingCode</td><td class="col1">да</td><td class="col2">строка</tsttd><td class="col3">Код класса перелёта.nemo-ibeЕсли производится поиск по расписанию, то может встречаться несколько раз.com</wsdev/wsdl.php?for=Penaltytd>
Элемент '''Item''' </tr>{| style <tr class="width: 800pxrow64" > <td class="wikitablecol0"|-! scope>Departure</td><td class="col1">да</td><td class="colcol2" width>число</td><td class="200col3" | Элемент>Часовой пояс отправления, UTC (смещение относительно Гринвича)</td>! scope </tr> <tr class="colrow65" width> <td class="300col0" | Описание! scope>Arrival</td><td class="colcol1" width>да</td><td class="300col2" | Допустимые значения|-| Type| Обязательный. Тип объекта.| HOTELS|-| CacheId| Обязательный. Идентификатор результата поиска в системе Nemo.| Целое >число|-| CategoryId| Обязательный. Идентификатор категории.| Целое число|}</td><td class="col3">Часовой пояс прибытия, UTC (смещение относительно Гринвича)</td>
Элемент '''Source''' </tr>{| style="width: 800px" <tr class="wikitablerow66">|-! scope <td class="colcol0" width>ETicket</td><td class="200col1" | Элемент! scope>да</td><td class="colcol2" width>булевский</td><td class="300col3 rightalign" | Описание! scope="col" width="300" | Допустимые > Индикатор электронного билета, возможные значения|: true - билет является электронным, false -| ClientID| Обязательный. ID клиента в системе Nemoбилет не является электронным.</td>Можно посмотреть </добавить в tr> <tr class="Администрированиеrow67" ⇨ > <td class="Веб-служба. Авторизацияcol0".| Целое число.|-| APIKey| Обязательный. APIKey - секретный ключ доступа к API Nemo.Можно посмотреть>Baggage</добавить в td><td class="Администрированиеcol1" ⇨ >нет</td><td class="Веб-служба. Авторизацияcol2".| Латинские буквы и цифры. Всего 32 символа.|}>сложный</divtd><td class="col3">Информация о багаже</divtd>
Элемент '''Penalty''' </tr>{| style <tr class="row70"> <td class="width: 800pxcol0">PricingInfo</td><td class="col1" >нет</td><td class="wikitablecol2"|-! scope>сложный</td><td class="colcol3" width>Контейнер для информации о ценах. Отсутствует в случае, если производится поиск по расписанию.</td> </tr> <tr class="200row71" | Элемент>! scope <td class="colcol0" width>Refundable</td><td class="300col1" | Описание! scope>да</td><td class="colcol2" width>булевский</td><td class="300col3" | Допустимые >Индикатор показывающий является ли билет возвратным или нет, возможные значения|: true -| ItemDateBegin| Обязательный. Дата начала услуги возвратный (дата заселения в отельнет штрафов за возврат).| Формат гггг, false -мм-дд чч:мм:сс|-| CancelCharges| Необязательный. Содержит информацию о штрафах невозвратный (могут быть штрафы за аннуляцию.| Элемент Charge|-| ModifyCharges| Необязательный. Содержит информацию о штрафах за модификацию.| Элемент Charge|}возврат)</td>
Штрафы разбиваются по временным интервалам. На каждом интервале указывается значение штрафа </tr> <tr class="row72"> <td class="col0">PassengerFare</td><td class="col1">да</td><td class="col2">сложный</td><td class="col3">Информация о ценах для конкретного типа пассажиров.</td> </tr> <tr class="row73"> <td class="col0">Quantity</td><td class="col1">да</td><td class="col2">число</td><td class="col3">Число пассажиров данного типа</td>
Элемент '''Charge''' </tr>{| style <tr class="width: 800pxrow74" > <td class="wikitablecol0"|-! scope>BaseFare</td><td class="colcol1" width>да</td><td class="200col2" | Элемент! scope>сложный</td><td class="colcol3" width>Цена в базовой валюте(за одного пассажира)</td> </tr> <tr class="300row75" | Описание>! scope <td class="colcol0" width>EquiveFare</td><td class="300col1" | Допустимые значения|-| DateFrom| Обязательный. Дата>нет</время начала интервала.| Формат гггг-мм-дд чч:мм:сс|-| DateTo| Необязательный. Датаtd><td class="col2">сложный</время окончания интервала.| Формат гггг-мм-дд чч:мм:сс|-| Money| Обязательный. Сумма штрафа.| Вещественное число.Атрибут: Currency - код валюты.|}td></divtd class="col3">Цена в эквивалентной валюте(за одного пассажира), при поиске цены не возвращается</divtd>
Сейчас же необходимо указывать только 1 услугу-отель (элемент Item) в запросе на бронирование. </tr> <tr class="row82"> <td class="col0">TaxCode</td><td class="col1">да</td><td class="col2">строка</td><td class="col3">Код таксы</td> </tr> <tr class="row83"> <td class="col0">Amount</td><td class="col1">да</td><td class="col2">число с плавающей точкой</td><td class="col3">Значение таксы</td>
Для успешного запроса нужно указать: </tr>#Услугу. В запросе не требуется перечислять все параметры из результатов поиска, достаточно указать уникальный ID результата. <tr class="row84">#Информация о клиентах. Все клиенты перечисляются в отдельной ветке и нумеруются по порядку. Указатели (элементы с номером клиента), также добавляются в описание услуги. <td class="col0">Tariffs</td><td class="col1">да</td><td class="col2">сложный</td><td class="col3">Контейнер для тарифов</td>#Заказчик. Указатель на одну персону. </tr> <tr class="row85"> <td class="col0">Tariff</td><td class="col1">да</td><td class="col2">сложный</td><td class="col3">Контейнер для одного тарифа</td>
'''WSDL''' (тестовый сервер): http: </tr> <tr class="row86"> <td class="col0">Code</td><td class="col1">да</td><td class="col2">строка</tst.nemo-ibe.comtd><td class="col3">Код тарифа</td> </tr> <tr class="row87"> <td class="col0">SegNum</wsdevtd><td class="col1">да</wsdltd><td class="col2">число</td><td class="col3">Номер сегмента для которого применяется тариф, если тариф применяется для всех сегментов, то возвращается 0.php?for=Booking</td>
Элемент '''Booking'''{| style="width: 800px" class="wikitable"|-! scope="col" width="200" | Элемент! scope="col" width="300" | Описание! scope="col" width="300" | Допустимые значения|-| Items| Обязательный. Массив элементов Item.| Элемент Item|-| Customer| Обязательный. Элемент установки заказчика.| |-| Persons| Обязательный. Массив клиентов.| |} Данные об услугах записываются в элементы <Item>. Элемент '''Item'''{| style="width: 800px" class="wikitable"|-! scope="col" width="200" | Элемент! scope="col" width="300" | Описание! scope="col" width="300" | Допустимые значения|-| HotelBookData| Обязательный. В зависимости от типа объекта бронирования. В данный момент возможно указать только данные для отеля.| |-| Persons| Необязательный. Привязка клиентов к услуге. Если не указаны, будут привязаны все из указанных в главном элементе Booking.| [ <Person Number=''"1"'' /tr>]|} <u>Бронирование отеля.</u>Для бронирования отеля необходимы следующие параметры:# ID результата поиска - один отель# ID выбранной категории этого отеля# Распределение клиентов по комнатам. Элемент '''HotelBookData'''{| style="width: 800px" class="wikitable"|-! scope="col" width="200" | Элемент! scope="col" width="300" | Описание! scope="col" width="300" | Допустимые значения|-| CacheId| Обязательный. Идентификатор результата поиска для данного отеля в системе Nemo.| Целое число|-| CategoryId| Обязательный. Идентификатор категории.| Целое число|-| Rooms| Обязательный. Распределение клиентов по комнатам.| Список элементов Room|-| Room| Атрибут IdИд комнаты из результата поиска Элемент Persons| Целое число|-| Persons| Обязательный.Список людей| Список элементов Person|-| Person| Обязательный.Атрибут NumberНомер пассажира из Booking ->Persons->Person->Number| Целое число|} <u>Информация о клиентах.</utable>Для успешного завершения бронирования нужно указать как минимум одного клиента. Максимальное число клиентов в текущей версии не ограничено. Набор обязательных данных может меняться в зависимости от типов услуг в бронировании. Рекомендуемый набор обязательных параметров: Lastname, Name, DateOfBirth. Остальные обязательные параметры будут устанавливаться индивидуально при подключении к сервису. Элемент '''Person'''{| style="width: 800px" class="wikitable"|-! scope="col" width="200" | Элемент! scope="col" width="300" | Описание! scope="col" width="300" | Допустимые значения|-| Атрибут Number| Обязательный. Номер клиента, необходим для правильной привязки к услугам.| Целое число|-| Type| Обязательный.Тип пассажира.| Строка.Возможные значения:ADTCLDINF|-| Lastname| Фамилия.| Строка в произвольном формате.|-| Name| Имя.| Строка в произвольном формате.|-| Middlename| Отчество.| Строка в произвольном формате.|-| DateOfBirth| Дата рождения.| Формат гггг-мм-дд.|-| Phone| Телефон.Рекомендуемый формат:+79871234567| Строка|-| Email| Электронный адрес.| Строка|-| Gender| Пол.| MR - мужчина,MS - женщина.|-| Document| Документ| Элемент Document|} Для некоторых услуг может потребоваться информация о документах. Элемент '''Document'''{| style="width: 800px" class="wikitable"|-! scope="col" width="200" | Элемент! scope="col" width="300" | Описание! scope="col" width="300" | Допустимые значения|-| Атрибут Type| Обязательный. Тип документа.| P - загранпаспортC - внутренний гражданский паспортB - свидетельство о рождении|-| Series| Необязательный. Серия документа. Можно указать слитно с номером в Number.| Строка в произвольном формате|-| Number| Обязательный. Номер документа.| Строка в произвольном формате|-| IssueDate| Необязательный. Дата выдачи документа.| Формат гггг-мм-дд|-| ExpiryDate| Необязательный. Дата истечения срока действия документа.| Формат гггг-мм-дд|} Элемент '''Source'''{| style="width: 800px" class="wikitable"|-! scope="col" width="200" | Элемент! scope="col" width="300" | Описание! scope="col" width="300" | Допустимые значения|-| ClientID| Обязательный. ID клиента в системе Nemo.Можно посмотреть/добавить в "Администрирование" ⇨ "Веб-служба. Авторизация".| Целое число.|-| APIKey| Обязательный. APIKey - секретный ключ доступа к API Nemo.Можно посмотреть/добавить в "Администрирование" ⇨ "Веб-служба. Авторизация".| Латинские буквы и цифры. Всего 32 символа.|}
<div class="toccolours mw-collapsible mw-collapsed" style="width:1000px">===== Ответ =====<div class="mw-collapsible-content">После выполнения запроса сразу поступит информация о бронировании. В первую очередь нужно внимательно проверить статусы <Status> всех услуг в бронировании. Если бронировалась услуга со статусом в результатах поиска RQ (по запросу), то статус скорее всего будет не равен «booked». Через некоторое время проверять реальный статус бука отправляя запрос на чтение данных о бронировании. <syntaxhighlight lang="xml" line enclose="div" style="font-size:9pt;background: #F9F9F9; border: 1px dashed #2F6FAB; padding: 10px 5px; margin: 10px 0;"><SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns1="http://tst.nemo-ibe.com/wsdev/?version%3D1.0%26for%3DBooking" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <SOAP-ENV:Body> <ns1:bookingResponse> <ResponseBin> <Response> <Booking> <Items> <Item Id="386610"> <Hotel Id="1872666"> <Supplier>GTA</Supplier> <CityId>22046</CityId> <DateBegin>2013-10-15</DateBegin> <DateEnd>2013-10-18</DateEnd> <CacheId>1872666</CacheId> <Name>ADLON KEMPINSKI</Name> <Categories> <Category Id="1"> <Rooms> <Room Count="1" Id="1" ServiceId="1"/> <Room Count="1" Id="2" ServiceId="2"/> </Rooms> <TotalPrice Currency="RUB">74733.84</TotalPrice> </Category> </Categories> <Services> <Service Id="1" Status="OK"> <Desc>Standard Twin</Desc> <Meal>Full Breakfast</Meal> <Price Currency="RUB">37366.92</Price> </Service> <Service Id="2" Status="OK"> <Desc>Standard Twin</Desc> <Meal>Full Breakfast</Meal> <Price Currency="RUB">37366.92</Price> </Service> </Services> <Rooms> <Room Id="1" Type="TWIN"/> <Room IdAPI Отелей="2" Type="SNGL"/> </Rooms> </Hotel> <Type>HOTELS</Type> <Status>waiting</Status> <Prices> <Price Currency="RUB">74733.84</Price> <Charges Currency="RUB">0</Charges> <Commission Currency="RUB">0</Commission> <Penalty Currency="RUB">0</Penalty> <TotalPrice Currency="RUB">74733.84</TotalPrice> </Prices> <Dates> <BookingDate>2013-08-01 19:49:56</BookingDate> <UpdateDate>2013-08-01 19:49:57</UpdateDate> <CancelDate xsi:nil="true"/> <PenaltyDate>2013-07-31 19:10:37</PenaltyDate> <AutoCancelDate>2013-08-01 19:51:56</AutoCancelDate> <ConfirmationLimit/> </Dates> <Statuses> <PaymentStatus>1</PaymentStatus> <DocumentStatus>1</DocumentStatus> <DeliveryStatus>1</DeliveryStatus> <InvoiceStatus>1</InvoiceStatus> <ProblemStatus>1</ProblemStatus> </Statuses> <Customer> <Person Number="1"/> </Customer> <Persons> <Person Number="1"/> <Person Number="2"/> <Person Number="3"/> </Persons> </Item> </Items> <Persons> <Person Number="1"> <Lastname>IVANOV</Lastname> <Name>IVAN</Name> <Middlename>IVANOVICH</Middlename> <DateOfBirth xsi:nil="true"/> <Phone>+79871231212</Phone> <Email>m.rudenko@mute-lab.com</Email> <Gender xsi:nil="true"/> <Document Type="P"> <Series>1811</Series> <Number>912219</Number> <IssueDate>2012-12-12 00:00:00</IssueDate> <ExpiryDate>2014-12-12 00:00:00</ExpiryDate> </Document> </Person> <Person Number="2"> <Lastname>PETROV</Lastname> <Name>IVAN</Name> <Middlename>MIKHAILOVICH</Middlename> <DateOfBirth xsi:nil="true"/> <Phone>+79871231212</Phone> <Email>m.rudenko@mute-lab.com</Email> <Gender xsi:nil="true"/> <Document Type="P"> <Series>1866</Series> <Number>913319</Number> <IssueDate>2012-12-12 00:00:00</IssueDate> <ExpiryDate>2014-12-12 00:00:00</ExpiryDate> </Document> </Person> <Person Number="3"> <Lastname>SIDOROV</Lastname> <Name>IVAN</Name> <Middlename>SERGEEVICH</Middlename> <DateOfBirth xsi:nil="true"/> <Phone>+79871231212</Phone> <Email>m.rudenko@mute-lab.com</Email> <Gender xsi:nil="true"/> <Document Type="P"> <Series>1866</Series> <Number>913319</Number> <IssueDate>2012-12-12 00:00:00</IssueDate> <ExpiryDate>2014-12-12 00:00:00</ExpiryDate> </Document> </Person> </Persons> </Booking> </Response> </ResponseBin> </ns1:bookingResponse> </SOAP-ENV:Body></SOAP-ENV:Envelope></syntaxhighlight> Структура ответа очень похожа на запрос. Выделяются те же основные элементы. Элемент '''BookingАгентский API Отелей'''{| style="width: 800px" class="wikitable"|-! scope="col" width="200" | Элемент! scope="col" width="300" | Описание! scope="col" width="300" | Допустимые значения|-| Items| Обязательный. Содержит элемент(ы) Item.| Элемент Item|-| Persons| Обязательный. Здесь перечислены все клиенты заказа.| Элемент Person|} В элементах Item раскрывается подробнейшая информация об одной услуге в бронировании. Элемент '''Item'''{| style="width: 800px" class="wikitable"|-! scope="col" width="200" | Элемент! scope="col" width="300" | Описание! scope="col" width="300" | Допустимые значения|-| Атрибут Id| Обязательный.Номер заказа в системе Nemo.| Целое число|-| Type| Обязательный.Тип объекта бронирования.| HOTELS|-| Status| Обязательный. Статус объекта бронирования .| booked - забронированcancelled - аннулированpending confirmation - в процессе подтвержденияpending – произошла попытка бронированиясистема, которое не было завершеноwaiting – ожидается результат запроса на бронирование|-| Prices| Обязательный. Данные о ценах.| см. Элемент Prices|-| Dates| Обязательный. Данные о датах.| см. Элемент Dates|-| Statuses| Обязательный. Различные дополнительные статусы заказанной услуги.| см. Элемент Statuses|-| Persons| Обязательный. Содержит клиентов привязанных к услуге.| элементы Person|-| Hotel| Необязательный. Элемент с данными об отеле.| см. элемент Hotel (результат которая предоставляет возможность поиска отеля)|} Информация о цене услуги вынесена в отдельную ветку: Элемент '''Prices'''{| style="width: 800px" class="wikitable"|-! scope="col" width="200" | Элемент! scope="col" width="300" | Описание! scope="col" width="300" | Допустимые значения|-| Price| Обязательный. Базовая цена услуги.| Вещественное число.Атрибут Currency - код валюты.|-| Charges| Необязательный. Сумма дополнительных сборов.| Вещественное число.Атрибут Currency - код валюты.|-| Commission| Необязательный. Сумма комиссий (вычитается из общей стоимости).| Вещественное число.Атрибут Currency - код валюты.|-| Penalty| Необязательный. Сумма штрафов.| Вещественное число.Атрибут Currency - код валюты.|-| TotalPrice| Обязательный. Итоговая стоимость.= Price + Charges + Commission| Вещественное число.Атрибут Currency - код валюты.|} Информация о датах услуги также вынесена в отдельную ветку: Элемент '''Dates'''{| style="width: 800px" class="wikitable"|-! scope="col" width="200" | Элемент! scope="col" width="300" | Описание! scope="col" width="300" | Допустимые значения|-| BookingDate| Обязательный. Дата и бронирования.| Формат гггг-мм-дд чч:мм:сс|-| UpdateDate| Необязательный. Дата обновления.| Формат гггг-мм-дд чч:мм:сс|-| CancelDate| Необязательный. Дата аннуляции.| Формат гггг-мм-дд чч:мм:сс|-| PenaltyDate| Необязательный. Дата наступления штрафов.| Формат гггг-мм-дд чч:мм:сс|-| AutoCancelDate| Необязательный. Дата автоаннулирования.| Формат гггг-мм-дд чч:мм:сс|} Дополнительные статусы: Элемент '''Statuses'''{| style="width: 800px" class="wikitable"|-! scope="col" width="200" | Элемент! scope="col" width="300" | Описание! scope="col" width="300" | Допустимые значения|-| PaymentStatus| Необязательный.Статус оплаты.| Целое число1 - неоплачено2 - частично оплачено3 - оплачено|-| DocumentStatus| Необязательный.Статус ваучера.| Целое число1 - документ не сформирован2 - документ сформирован|-| DeliveryStatus| Необязательный.Статус доставки.| Целое число1 - не доставлен2 - доставлен|-| InvoiceStatus| Необязательный.Статус счета.| Целое число1 - счет выставлен.2 - счет не выставлен.|} Информация отелей а так же получение информации о клиентах заказа полностью повторяет структуру запроса.</div></div> ==== Подтверждение бронирования ====<div class="toccolours mw-collapsible mw-collapsed" style="width:1000px">===== Запрос =====<div class="mw-collapsible-content">Подтверждение бронирования заказа. '''WSDL''' (тестовый сервер): http://tst.nemo-ibe.com/wsdev/wsdl.php?for=ConfirmBooking <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://tst.nemo-ibe.com/wsdev/?version%3D1.0%26for%3DConfirmBooking"> <soapenv:Header/> <soapenv:Body> <ver:confirm> <RequestBin> <Request> <BookingId>179547</BookingId> </Request> <Source> <ClientId></ClientId> <APIKey></APIKey> <Language>ru</Language> <Currency>RUB</Currency> </Source> </RequestBin> </ver:confirm> </soapenv:Body></soapenv:Envelope></syntaxhighlight> Элемент '''Request'''{| style="width: 800px" class="wikitable"|-! scope="col" width="200" | Элемент! scope="col" width="300" | Описание! scope="col" width="300" | Допустимые значения|-| BookingID| Обязательный. Идентификатор заказа в системе Nemo.| Целое число|} Элемент '''Source'''{| style="width: 800px" class="wikitable"|-! scope="col" width="200" | Элемент! scope="col" width="300" | Описание! scope="col" width="300" | Допустимые значения|-| ClientID| Обязательный. ID клиента в системе Nemo.Можно посмотреть/добавить в "Администрирование" ⇨ "Веб-служба. Авторизация".| Целое число.|-| APIKey| Обязательный. APIKey - секретный ключ доступа к API Nemo.Можно посмотреть/добавить в "Администрирование" ⇨ "Веб-служба. Авторизация".| Латинские буквы времени и цифры. Всего 32 символаразмерах штрафов, уникальной информации об отеле, получение статической информации.|}</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://tstsupport.nemo-ibe.comtravel/wsdevru/?version%3D1.0D0%90%D0%B3%D0%B5%D0%BD%D1%82%D1%81%D0%BA%D0%B8%D0%B9_API_%D0%9E%D1%82%D0%B5%D0%BB%D0%B5%26forD0%3DConfirmBooking"> <SOAP-ENV:Body> <ns1:confirmResponse> <ResponseBin> <Response> <Books> <Book> <Id>179547</Id> <Status>booked</Status> </Book> </Books> </Response> </ResponseBin> </ns1:confirmResponse> </SOAP-ENV:Body></SOAP-ENV:Envelope></syntaxhighlight></div></div>B9 Агентский АПИ отелей]
==== Выгрузка актуальных данных по заказу(ам) ====
Используется для экспорта бронирований и для обновления данных в локальной клиентской базе.
'''WSDL''' (тестовый сервер): http://tst.nemo-ibe.com/wsdev/wsdl.php?for=Export <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://tst.nemo-ibe.com/wsdev/?version%3D1.0%26for%3DExport"> <soapenv:Header/> <soapenv:Body> <ver:export> <RequestBin> <Request> <Export> <Items> <!--Zero or more repetitions:--> <Item Id="386621"/> </Items> </Export> </Request> <Source> <ClientId></ClientId> <APIKey></APIKey> <Language>ru</Language> <Currency>RUB</Currency> </Source> </RequestBin> </ver:export> </soapenv:Body></soapenv:Envelope></syntaxhighlight> Элемент '''Item'''{| style="width: 800px" class="wikitable"|-! scope="col" width="200" | Элемент! scope="col" width="300" | Описание! scope="col" width="300" | Допустимые значения|-| Атрибут Id| Обязательный. Идентификатор заказа в системе Nemo.| Целое число|} Элемент '''Source'''{| style="width: 800px" class="wikitable"|-! scope="col" width="200" | Элемент! scope="col" width="300" | Описание! scope="col" width="300" | Допустимые значения|-| ClientID| Обязательный. ID клиента в системе Nemo.Можно посмотреть/добавить в "Администрирование" ⇨ "Веб-служба. Авторизация".| Целое число.|-| APIKey| Обязательный. APIKey - секретный ключ доступа к API Nemo.Можно посмотреть/добавить в "Администрирование" ⇨ "Веб-служба. Авторизация".| Латинские буквы и цифры. Всего 32 символа.|}</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://tst.nemo-ibe.com/wsdev/?version%3D1.0%26for%3DExport" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <SOAP-ENV:Body> <ns1:exportResponse> <ResponseBin> <Response> <Export> <Items> <Item Id="386621"> <Hotel Id="1872666"> <Supplier>GTA</Supplier> <CityId>22046</CityId> <DateBegin>2013-10-15</DateBegin> <DateEnd>2013-10-18</DateEnd> <CacheId>1872666</CacheId> <Name>ADLON KEMPINSKI</Name> <Categories> <Category Id="1"> <Rooms> <Room Count="1" Id="1" ServiceId="1"/> <Room Count="1" Id="2" ServiceId="2"/> </Rooms> <TotalPrice Currency="RUB">74733.84</TotalPrice> </Category> </Categories> <Services> <Service Id="1" Status="OK"> <Desc>Standard Twin</Desc> <Meal>Full Breakfast</Meal> <Price Currency="RUB">37366.92</Price> </Service> <Service Id="2" Status="OK"> <Desc>Standard Twin</Desc> <Meal>Full Breakfast</Meal> <Price Currency="RUB">37366.92</Price> </Service> </Services> <Rooms> <Room Id="1" Type="TWIN"/> <Room Id="2" Type="SNGL"/> </Rooms> </Hotel> <Type>HOTELS</Type> <Status>waiting</Status> <Prices> <Price Currency="RUB">74733.84</Price> <Charges Currency="RUB">0</Charges> <Commission Currency="RUB">0</Commission> <Penalty Currency="RUB">0</Penalty> <TotalPrice Currency="RUB">74733.84</TotalPrice> </Prices> <Dates> <BookingDate>2013-08-01 20:21:47</BookingDate> <UpdateDate>2013-08-01 20:35:01</UpdateDate> <CancelDate xsi:nil="true"/> <PenaltyDate>2013-07-31 19:10:37</PenaltyDate> <AutoCancelDate>2013-08-01 20:23:47</AutoCancelDate> <ConfirmationLimit/> </Dates> <Statuses> <PaymentStatus>1</PaymentStatus> <DocumentStatus>1</DocumentStatus> <DeliveryStatus>1</DeliveryStatus> <InvoiceStatus>1</InvoiceStatus> <ProblemStatus>1</ProblemStatus> </Statuses> <Customer> <Person Number="1"/> </Customer> <Persons> <Person Number="1"/> <Person Number="2"/> <Person Number="3"/> </Persons> </Item> </Items> <Persons> <Person Number="1"> <Lastname>IVANOV</Lastname> <Name>IVAN</Name> <Middlename>IVANOVICH</Middlename> <DateOfBirth xsi:nil="true"/> <Phone>+79871231212</Phone> <Email>m.rudenko@mute-lab.com</Email> <Gender xsi:nil="true"/> <Document Type="P"> <Series>1811</Series> <Number>912219</Number> <IssueDate>2012-12-12 00:00:00</IssueDate> <ExpiryDate>2014-12-12 00:00:00</ExpiryDate> </Document> </Person> <Person Number="2"> <Lastname>PETROV</Lastname> <Name>IVAN</Name> <Middlename>MIKHAILOVICH</Middlename> <DateOfBirth xsi:nil="true"/> <Phone>+79871231212</Phone> <Email>m.rudenko@mute-lab.com</Email> <Gender xsi:nil="true"/> <Document Type="P"> <Series>1866</Series> <Number>913319</Number> <IssueDate>2012-12-12 00:00:00</IssueDate> <ExpiryDate>2014-12-12 00:00:00</ExpiryDate> </Document> </Person> <Person Number="3"> <Lastname>SIDOROV</Lastname> <Name>IVAN</Name> <Middlename>SERGEEVICH</Middlename> <DateOfBirth xsi:nil="true"/> <Phone>+79871231212</Phone> <Email>m.rudenko@mute-lab.com</Email> <Gender xsi:nil="true"/> <Document Type="P"> <Series>1866</Series> <Number>913319</Number> <IssueDate>2012-12-12 00:00:00</IssueDate> <ExpiryDate>2014-12-12 00:00:00</ExpiryDate> </Document> </Person> </Persons> </Export> </Response> </ResponseBin> </ns1:exportResponse> </SOAP-ENV:Body></SOAP-ENV:Envelope></syntaxhighlight> Формат ответа аналогичен результату бронирования.</div></div> ==== Аннуляция заказа ===='''WSDL''' (тестовый сервер): http://tst.nemo-ibe.com/wsdev/wsdl.php?for=CancelBooking<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://tst.nemo-ibe.com/wsdev/?version%3D1.0%26for%3DCancelBooking"> <soapenv:Header/> <soapenv:Body> <ver:cancel> <RequestBin> <Request> <CancelBooking> <Item Id="386621"/> </CancelBooking> </Request> <Source> <ClientId></ClientId> <APIKey></APIKey> <Language>ru</Language> <Currency>RUB</Currency> </Source> </RequestBin> </ver:cancel> </soapenv:Body></soapenv:Envelope></syntaxhighlight> Элемент '''Item'''{| style="width: 800px" class="wikitable"|-! scope="col" width="200" | Элемент! scope="col" width="300" | Описание! scope="col" width="300" | Допустимые значения|-| Атрибут Id| Обязательный. Идентификатор заказа в системе Nemo.| Целое число|} Элемент '''Source'''{| style="width: 800px" class="wikitable"|-! scope="col" width="200" | Элемент! scope="col" width="300" | Описание! scope="col" width="300" | Допустимые значения|-| ClientID| Обязательный. ID клиента в системе Nemo.Можно посмотреть/добавить в "Администрирование" ⇨ "Веб-служба. Авторизация".| Целое число.|-| APIKey| Обязательный. APIKey - секретный ключ доступа к API Nemo.Можно посмотреть/добавить в "Администрирование" ⇨ "Веб-служба. Авторизация".| Латинские буквы и цифры. Всего 32 символа.|}</div></div> ===== Ответ =====см. результаты бронирования. ==Выгрузки статистики продаж через API(Метапоиск)==
Необходимо убедиться, что API запросы на поиск отправляются на доменное имя, указанное для агентства В разделе статистики заказов из метапоисков можно получить данные по статистике метапоиска (субагента) в разделе '''Администрирование''' -> '''Настройки агентства''' ===== Запрос =====Пример запроса<syntaxhighlight lang="text" enclose="div" style="font-size:9pt;background: #F9F9F9; border: 1px dashed #2F6FAB; padding: 10px 5px; margin: 10px 0;">http://host/index.php?go=settings/download_metasearch_stat&date1=2012-05-01&date2=2012-06-01&partner=aviasales&password=secret</syntaxhighlight> Параметры запроса{| style="width: 800px" class="wikitable"|-! scope="col" | Параметр запроса! scope="col" | Описание|-| date1| YYYY-MM-DD дата.|-| date2| YYYY-MM-DD дата.|-| partner| Идентификатор партнёра - алиас источника по источнику переходов модуля метрики.|-| password| Пароль партнёра - пароль источника переходов модуля метрики.|}<div class="toccolours mw-collapsible mw-collapsed" style="width:800px">===== Ответ =====) <div class="mw-collapsible-content"u><syntaxhighlight lang="xml" line enclose="div" style="font-size:9pt;background: #F9F9F9; border: 1px dashed #2F6FAB; padding: 10px 5px; margin: 10px 0;"><bookings> <booking> <nemo_id>123123за определенный период бронирования заказов</nemo_idu> <id>JHKHVR</id> <created_at>2012-05-02 00:02:01</created_at> <marker>1232:1222в виде файла данных в формате XML.t</marker> <price>1199</price> <profit>200</profit> <currency>RUB</currency> <state>PAID</state> <validatingCarrier>UN</validatingCarrier> <segment> <flight> <operatingCarrier>UN</operatingCarrier> <number>3</number> <departure>DME</departure> <departureDate>2012-09-25</departureDate> <departureTime>09:55</departureTime> <arrival>LED</arrival> <arrivalDate>2012-09-25</arrivalDate> <arrivalTime>11:10</arrivalTime> <equipment>735</equipment> <cabin>Y</cabin> </flight> </segment> <adults>1</adults> <children>0</children> <infants>0</infants> </booking> ...more bookings...</bookings></syntaxhighlight> '''Описание параметров'''
<syntaxhighlight lang="text" enclose="div" style="font-size:9pt;background: #F9F9F9; border: 1px dashed #2F6FAB; padding: 10px 5px; margin: 10px 0;"> /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 летсделанных через метапоисковую систему.</syntaxhighlight></div></div>
Время и дата бронирования '''''created_at''''' передается Подробнее можно узнать в таймзоне UTC+4. Состояние брони '''''state''''' может принимать значения:* '''''PROCESSING''''' - забронирован;* '''''PAID''''' - выписан;* '''''CANCELLED''''' - аннулирован (по любым причинам). Прибыль партнёра '''''profit''''' от данного бронирования в формате 00.99 (через точку).Размер прибыли партнера устанавливается для конкретного источника трафика в Модуле метрики и считается как процент от стоимости оплаченного заказа, включая комиссию платежного шлюза и апсейловые продажи. В последующем расчет прибыли может измениться. При возврате авиабилетов сумма ранее засчитанная как прибыль партнера (метапоисковой системы) должна подставляться с минусом в данном периоде. Количество детей до 2 лет '''''infants''''' относится только к младенцам без места. Количество младенцев статье посвященной взаимодействию с местом объединяются метопоисковиками [[Взаимодействие с количеством детей до 12 лет '''''children'''''.метапоисковиками]]
Модуль является компонентом, включаемым и отключаемым из административной части.=== Авторизация B2B-пользователей === Все B2B-пользователи, загруженные через модуль взаимодействия со сторонней программой, будут иметь случайным образом сгенерированный криптостойкий [[пароль]]. Механизм О механизме авторизации работает следующим образом: 1.Система пытается авторизовать пользователя через собственную службу авторизации.2.В случае неудачи, но присутствия в системе введенного логина, она должна попытаться авторизовать пользователя во внешней службе авторизации («САМО-тур»), при включенном компоненте взаимодействия с «САМО-тур».3.В случае неудачного опознавания пользователя выводится соответствующее сообщение и процедура может быть повторена путем повторного ввода логина и пароля. Регистрация неудачных попыток входа производится только в двух случаях:*Компонент взаимодействия выключен.*Компонент взаимодействия включен и провалены обе попытки авторизации (внутренней и внешней). Для сторонней авторизации пользователей в системе Nemo внешняя программа должна иметь веб-службу, основанную на WSDL определенного формата. Ссылка на веб-службу прописывается в настройках системы Nemo на странице конфигурации интеграции с внешней системой. Для импортированных пользователей в Nemo имеется поле «Идентификатор внешней системы», который отвечает за сопоставление с ID пользователя в сторонней системе. Для менеджеров агентств оно равно номеру партнера (агента) во внешней системе, для пользователей — номеру пользователя в «САМО-туре». Для пользователей, имеющих какое-либо значение в поле «идентификатор во внешней системе», запрещен функционал смены пароля или его восстановления по электронной почте. Пример запросов и ответов на авторизацию: '''Request'''<pre><?xml version="1.0" encoding="utf-8"?><soap12:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap12="http://www.w3.org/2003/05/soap-envelope"> <soap12:Body> <getAuthorization xmlns="http://tempuri.org/"> <login>string</login> <pass>string</pass> </getAuthorization> </soap12:Body></soap12:Envelope></pre> '''Response'''<pre><?xml version="1.0" encoding="utf-8"?><soap12:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"xmlns:soap12="http://www.w3.org/2003/05/soap-envelope"> <soap12:Body> <getAuthorizationResponse xmlns="http://tempuri.org/"> <getAuthorizationResult> <session_id>string</session_id> <user_id>string</user_id> <login>string</login> <status>string</status> </getAuthorizationResult> </getAuthorizationResponse> </soap12:Body></soap12:Envelope></pre> Сервис реализует функцию «getAuthorization», на вход которой передается конструкция «getAuthorizationRequest»: *login (строка) - введенный пользователем логин*pass (строка) - введенный пользователем пароль Функция должна отдавать системе конструкцию getAuthorizationResponse: *session_id (строка) - пустое значение*user_id (строка) - идентификатор менеджера в системе «САМО-тур»*login (строка) - логин пользователя (для контроля)*status (строка) - может иметь значения:1. adm - администратор2. mgr - менеджер3. usr - пользователь (возвращается всегда это значение) === Импорт и синхронизация учетных записей === Со стороны внешней системы должно быть приложение, отправляющее в формате XML данные по учетным записям B2B-клиентов (агентств и пользователей). Со стороны Nemo имеется скрипт, который принимает XML в формате, приведенном в описании документов, передаваемых в Nemo, с ключом авторизации, определенным в Nemo в административной части модуля. Передаваемые элементы с описанием синхронизации учетных записей и партнеров имеют аккаунт (Account ID) во внешней системе и атрибут action, который может быть в состоянии update или delete, т.е. обновления/добавления и удаления, соответственно. В административной части модуля можно прочитать в Nemo задается ключ авторизации для защиты от несанкционированного доступа. Значение не должно быть пустым. Скрипт получает данные об обновлении и добавлении (проходят как одно и то же действие) или удалении информации по аккаунту. XML-данные могут содержать несколько элементов. Описание передаваемых в Nemo XML-документов: <pre><?xml version="1.0" encoding="UTF-8" ?><changes key="ключ_авторизации"> <accounts> - список изменений по аккаунтам пользователей <item id=3 partnerId=10 action="update" admin="1"> <login>Логин пользователя</login> </item> <item id=6 partnerId=15 action="update"> ... </item> <item id=9 partnerId=30 action="delete" /> </accounts> <partners> - список изменений по партнерам <item id=140 action="update"> <name>Название агентства</name> <ofname>Официальное Название агентства</ofname> <phone>Телефон</phone> <tax>Форма налогообложения</tax> <group>123</group> <code>ABCD</item> </partners></changes></code></pre> При импорте информации об агентствах будут возвращаться следующие значения: <table border="1"> <tr class="row0" bgcolor="#CCCCCC"> <th class="col0">Поле во внешней системе </th><th class="col1"> Путь к элементу xml </th><th class="col2"> Тип данных </th><th class="col3"> Сопоставляемое поле в Nemo </th><th class="col4"> Примечание </th> </tr> <tr class="row1"> <td class="col0">Идентификатор партнера</td><td class="col1">/changes/partners/itemстатье [@id]</td><td class="col2 leftalign">Целое число </td><td class="col3 leftalign">Идентификатор во внешней системе для менеджера / администратора </td><td class="col4"></td> </tr> <tr class="row2"> <td class="col0">Название юридического лица</td><td class="col1">/changes/partners/item/ofname</td><td class="col2">Строка</td><td class="col3">Полное официальное название юридического лица </td><td class="col4">Необходимо для выписки счетов юридическими лицами</td> </tr> <tr class="row3"> <td class="col0">Сокращенное название</td><td class="col1">/changes/partners/item/name</td><td class="col2">Строка</td><td class="col3 leftalign">Имя агентства </td><td class="col4"></td> </tr> <tr class="row4"> <td class="col0">Код агентства</td><td class="col1">/changes/partners/item/code</td><td class="col2">Строка</td><td class="col3">Используется при создании логина администратора</td><td class="col4"></td> </tr> <tr class="row5"> <td class="col0">Номер группы в самотуре</td><td class="col1">/changes/partners/item/group</td><td class="col2">Целое число, либо пусто</td><td class="col3 leftalign">На основании таблицы сопоставлений (см. ниже) определяется, к какой группе агентство принадлежит в Nemo </td><td class="col4"></td> </tr> <tr class="row6"> <td class="col0">Форма налогообложения</td><td class="col1">/changes/partners/item/tax</td><td class="col2">Целое число, равное идентификатору во внешней системе</td><td class="col3"></td><td class="col4"></td></tr></table> Для каждого возвращенного агентства Nemo проверяет наличие его в своей базе. Если [[агентство]] не найдено, то создается новое, для него создается менеджер (админ) с логином ABCD-1234, где ABCD – буквенный идентификатор партнера во внешней системе, 1234 — id партнера во внешней системе. Пароль генерируется случайный и криптостойкий. Если агентство найдено, то в случае необходимости производится обновление всех полей на основании данных из внешней системы. Если изменился буквенный код агентства, то Nemo переименовывает менеджера в соответствии с новым кодом. При импорте информации о пользователях агентств в Nemo будут посылаться следующие поля: <table border="1"> <tr class="row0" bgcolor="#CCCCCC"> <th class="col0">Поле во внешней системе</th><th class="col1">Путь к элементу xml</th><th class="col2">Тип данных</th><th class="col3">Сопоставляемое поле в Nemo</th><th class="col4">Примечание</th> </tr> <tr class="row1"> <td class="col0">Идентификатор пользователя</td><td class="col1">/changes/accounts/item[@idСинхронизация пользователей]</td><td class="col2">Целое число</td><td class="col3">Идентификатор внешней системы</td><td class="col4">Храним как дополнительное поле </td> </tr> <tr class="row2"> <td class="col0">Идентификатор партнера</td><td class="col1">/changes/accounts/item[@partnerId]</td><td class="col2">Целое число</td><td class="col3">Идентификатор внешней системы менеджера агентства</td><td class="col4"></td> </tr> <tr class="row3"> <td class="col0">Логин</td><td class="col1">/changes/accounts/item/login</td><td class="col2">Строка</td><td class="col3">Логин пользователя</td><td class="col4"></td> </tr> <tr class="row4"> <td class="col0">Администратор</td><td class="col1">/changes/accounts/item[@admin]</td><td class="col2">0 - нет, 1 - да</td><td class="col3 leftalign">Эксперт по бронированию </td><td class="col4"></td> </tr></table> Для каждого возвращенного пользователя Nemo проверяет наличие его в своей базе. Если пользователь не найден, то создается новый. Пароль генерируется случайный и криптостойкий. Если [[пользователь]] найден, то в случае необходимости производится обновление всех полей на основании данных из внешней системы. При запросе на удаление пользователя, в Nemo указанный логин удаляться не будет в целях сохранения целостности старых данных, а просто помечается как удаленный, и логин переименовывается и становится вида [логин_пользователя]_X_[числовой идентификатор_пользователя в Само]. <pre><item id=[идентификатор] action="delete" /></pre> === Таблица сопоставлений групп === В административной части Nemo надо создать отдельную страницу, на которой можно сопоставить имеющиеся [[Пользователь#Группы в Nemo|группы в Nemo]] номерам групп в САМО-тур (поле group в XML). Выводится список существующих групп для текущего (корневого) агентства.
==Передача параметров в форму поиска==
{{Contract}}
=== Применение ===Эта технология может использоватся к примеру для формирования ссылок с баннеров, при клике на которые пользователь попадает на форму, на которой уже могут быть заполнены пункты назначения, даты, количество пассажиров Примеры FastSearch запросов и прочие параметры. Также, при указании всех необходимых параметров, пользователя можно перебрасывать сразу на процесс поиска авиабилетов с указанными критериями. Для использования заполнения формы из URL следует включить опцию: '''Администрирование''' → '''Настройки системы''' → '''''Включить используемые переменные подробно описаны в статье [[FastSearch (передачу - передача параметров поиска)''''' После этого можно использовать ссылки на в форму поиска вида <pre>http://SITEMANE/?trip_type=OW&out_iata=MOW&in_iata=BER&departure_date=21.10.2009&adults=1&children=0&input_vendors=SU,PS¶m_by_get=on</pre> === Переменные FastSearch ===Имена полей - такие же как имена инпутов на поисковой форме. Следите за тем, чтобы значения соответствовали установленным в настройках ограничениям. Переменные, которые предполагают в качестве значения "true" можно просто не включать в запрос, чтобы их логика не отработала. ==== Форма поиска ====Чтобы перенаправить пользователя на страницу с заполненными параметрами поиска, необходимо указать get-параметр '''¶m_by_get=on''', иначе сработают стандартные предустановки полей формы поиска.]]
==== Процесс поиска ====Если вы указываете все необходимые FastSearch так же работает и для поиска параметрыотелей, то для того чтобы отправить пользователя сразу на результаты поиска, нужно указать get-параметр '''&fast_search=on'''. ==== Маршрут «В одну сторону» и «Туда и обратно» ===={| style="width: 800px;" class="wikitable"|-! scope="col" width="300" | Элемент! scope="col" width="250" | Переменная! scope="col" width="250" | Допустимые значения|-| Тип маршрута| trip_type| style="padding: 0;" | {| style="width: 257px; height: 100%; margin: -1px;" class="wikitable"|-| width="80" | OW| В одну сторону|-| RT| Туда и обратно|-| CR| Сложный маршрут|} |-| Пункт вылета| out_iata| style="padding: 0;" | {| style="width: 257px; height: 100%; margin: -1px;" class="wikitable"|-| width="80" | MOW| Код аэропорта ИАТА|} |-| Пункт прилета| in_iata| style="padding: 0;" | {| style="width: 257px; height: 100%; margin: -1px;" class="wikitable"|-| width="80" | LED| Код аэропорта ИАТА|} |-| Дата вылета| departure_date| style="padding: 0;" | {| style="width: 257px; height: 100%; margin: -1px;" class="wikitable"|-| width="80" | 25.10.2013| Дата подробности в формате ДД.ММ.ГГГГ|} |-| Дата обратного вылета| back_departure_date| style="padding: 0;" | {| style="width: 257px; height: 100%; margin: -1px;" class="wikitable"|-| width="80" | 27.10.2013| Дата в формате ДД.ММ.ГГГГ|} |-| Время вылета| prefered_departure_type| style="padding: 0;" | {| style="width: 257px; height: 100%; margin: -1px;" class="wikitable"|-| width="80" | not_important| Любое время|-| morning| Утром|-| afternoon| Днем|-| evening| Вечером|-| night| Ночью|} |-| Время обратного вылета| prefered_back_departure_type| style="padding: 0;" | {| style="width: 257px; height: 100%; margin: -1px;" class="wikitable"|-| width="80" | not_important| Любое время|-| morning| Утром|-| afternoon| Днем|-| evening| Вечером|-| night| Ночью|} |-| Поиск только среди прямых рейсов ("Без пересадок")| direct| true|} ===== Дополнительные параметры ====={| style="width: 800px" class="wikitable"|-! scope="col" width="300" | Элемент! scope="col" width="250" | Переменная! scope="col" width="250" | Допустимые значения|-| Нижнее ограничение по цене по умолчанию| money_from| style="padding: 0;" | {| style="width: 257px; height: 100%; margin: -1px;" class="wikitable"|-| width="80" | 0| Целое число большее либо равное 0|} |-| Верхнее ограничение по цене по умолчанию| money_to| style="padding: 0;" | {| style="width: 257px; height: 100%; margin: -1px;" class="wikitable"|-| width="80" | 10000| Целое число большее 0|} |-| Поиск в окружных датах| district_date| true|-| Диапазон соседних дат +(-) статье [дней]| date_range| style="padding: 0;" | {| style="width: 257px; height: 100%; margin: -1px;" class="wikitable"|-| width="80" | 1| Целое число большее [1..3]|} |-| Поиск по соседним аэропортам| district_airport| true|-| Класс обслуживания| class| style="padding: 0;" | {| style="width: 257px; height: 100%; margin: -1px;" class="wikitable"|-| econom| Перелет эконом-классом|-| business| Перелет бизнес-классом|-| first| Перелет первым-классом|} |-| Фильтр по авиакомпании | input_vendors| style="padding: 0;" | {| style="width: 257px; height: 100%; margin: -1px;" class="wikitable"|-| width="80" | SU,PS| Коды авиакомпании ИАТА через запятую без пробелов|} |-| Сортировка| sort| style="padding: 0;" | {| style="width: 257px; height: 100%; margin: -1px;" class="wikitable"|-| width="80" | price| По стоимости|-| out_date| По расписанию|-| company| По авиакомпании|-| fltduration| По длительности перелёта|} |} ==== Сложный маршрут ====<span style="font-size: large; color: rgb(255, 0, 0);">! </span><span style="background-color: rgb(255, 240, 245);"> Данные переменные применимы только Fast Search для сложного маршрута ('''trip_type=CR''').</span> '''[X]''' - номера отдельных перелетов. Нумерация начинается с 0, что означает первый перелет. Максимальное количество сегментов для сложного маршрута определяется одноименной настройкой в разделе '''Авиабилеты ⇨ Поиск ⇨ Ограничения поиска'''. {| style="width: 800px;" class="wikitable"|-! scope="col" width="300" | Элемент! scope="col" width="250" | Переменная! scope="col" width="250" colspan="2" | Допустимые значения|-| Пункты вылета| cr_iata[0]<br/>cr_iata[1]<br/>...<br/>cr_iata[8]| width="80" | MOW| Код аэропорта ИАТА|-| Пункты прилета| cr_back_iata[0]<br/>cr_back_iata[1]<br/>...<br/>cr_back_iata[8]| width="80" | LED| Код аэропорта ИАТА|-| Дата вылета| cr_date[0]<br/>cr_date[1]<br/>...<br/>cr_date[8]| width="80" | 25.10.2013 | Дата в формате ДД.ММ.ГГГГ |-| Время вылета| cr_pref_departure[0]<br/>cr_pref_departure[1]<br/>...<br/>cr_pref_departure[8]| colspan="2" style="padding: 0;" | {| style="width: 257px; height: 100%; margin: -1px;" class="wikitable"|-| width="80" | not_important| Любое время|-| morning| Утром|-| afternoon| Днем|-| evening| Вечером|-| night| Ночью|} |-| Класс обслуживания| cr_class[0]<br/>cr_class[1]<br/>...<br/>cr_class[8]| colspan="2" style="padding: 0;" | {| style="width: 257px; height: 100%; margin: -1px;" class="wikitable"|-| econom| Перелет эконом-классом|-| business| Перелет бизнес-классом|-| first| Перелет первым классом|} |-| Окружные аэропорты (±XX км) | cr_district_airport[0]<br/>cr_district_airport[1]<br/>...<br/>cr_district_airport[8]| colspan="2" | true|} ==== Пассажиры ===={| style="width: 800px" class="wikitable"|-! scope="col" width="300" | Элемент! scope="col" width="250" | Переменная! scope="col" width="250" | Допустимые значения|-| Взрослых от 12 лет| adults| style="padding: 0;" | {| style="width: 257px; height: 100%; margin: -1px;" class="wikitable"|-| width="80" | 1| Целое число большее либо равное 0|} |-| Детей от 2 до 12 лет| children| style="padding: 0;" | {| style="width: 257px; height: 100%; margin: -1px;" class="wikitable"|-| width="80" | 1| Целое число большее либо равное 0|} |-| Младенцев до 2 лет| infants| style="padding: 0;" | {| style="width: 257px; height: 100%; margin: -1px;" class="wikitable"|-| width="80" | 1| Целое число большее либо равное 0|} |-| Младенцев с местом до 2 лет| infants_seat| style="padding: 0;" | {| style="width: 257px; height: 100%; margin: -1px;" class="wikitable"|-| width="80" | 1| Целое число большее либо равное 0|} |-| Молодых от 12 до 24 лет <br/>| youths| style="padding: 0;" | {| style="width: 257px; height: 100%; margin: -1px;" class="wikitable"|-| width="80" | 1| Целое число большее либо равное 0<br/><span style="font-size: large; color: rgb(255, 0, 0);">! </span><span style="background-color: rgb(255, 240, 245);"> Данный параметр доступен только в новой базовой теме.</span>|} |-| Пожилых от 65 лет| seniors| style="padding: 0;" | {| style="width: 257px; height: 100%; margin: -1px;" class="wikitable"|-| width="80" | 1| Целое число большее либо равное 0<br/><span style="font-size: large; color: rgb(255, 0, 0);">! </span><span style="background-color: rgb(255, 240, 245);"> Данный параметр доступен только в новой базовой теме.</span>|} |} ==== Примеры FastSearch запросов ==== <div class="toccolours mw-collapsible mw-collapsed" style="width:800px"><u>'''В одну сторону (простой)'''</u><div class="mw-collapsible-content">'''Рейс в одну сторону из Москвы в Париж, дата вылета: 25.10.2013, без пересадок, 1 взрослый'''* '''''форма поиска'''''<pre>http://SITEMANE/?trip_type=OW&out_iata=MOW&in_iata=PAR&departure_date=25.10.2013&direct=true&adults=2¶m_by_get=on</pre>* '''''процесс поиска'''''<pre>http://SITEMANE/?trip_type=OW&out_iata=MOW&in_iata=PAR&departure_date=25.10.2013&direct=true&adults=2¶m_by_get=on&fast_search=on</pre></div></div> <div class="toccolours mw-collapsible mw-collapsed" style="width:800px"><u>'''В одну сторону (с фильтрами по авиакомпаниям)'''</u><div class="mw-collapsible-content">'''Рейс в одну сторону из Москвы в Париж, дата вылета 25.10.2013, Пассажиры: пожилых - 2, Авиакомпании: Аэрофлот - Российские авиалинии, Международные Авиалинии Украины'''* '''''форма поиска'''''<pre>http://SITEMANE/?trip_type=OW&out_iata=MOW&in_iata=PAR&departure_date=25.10.2013&seniors=2&input_vendors=SU,PS¶m_by_get=on</pre>* '''''процесс поиска'''''<pre>http://SITEMANE/?trip_type=OW&out_iata=MOW&in_iata=PAR&departure_date=25.10.2013&seniors=2&input_vendors=SU,PS¶m_by_get=on&fast_search=on</pre></div></div> <div class="toccolours mw-collapsible mw-collapsed" style="width:800px"><u>'''Туда-обратно'''</u><div class="mw-collapsible-content">'''Рейсы туда-обратно Москва ↔ Париж, дата вылета: 25.10.2013, обратно: 27.10.2013, класс перелета: Эконом, Пассажиры: взрослых - 2 младенцев - 1'''* '''''форма поиска'''''<pre>http://SITEMANE/?trip_type=RT&out_iata=MOW&in_iata=PAR&departure_date=25.10.2013&back_departure_date=27.10.2013&class=econom&adults=2&infants=1¶m_by_get=on</pre>* '''''процесс поиска'''''<pre>http://SITEMANE/?trip_type=RT&out_iata=MOW&in_iata=PAR&departure_date=25.10.2013&back_departure_date=27.10.2013&class=econom&adults=2&infants=1¶m_by_get=on&fast_search=on</pre></div></div> <div class="toccolours mw-collapsible mw-collapsed" style="width:800px"><u>'''Сложный маршрут'''</u><div class="mw-collapsible-content">'''из Москвы в Париж, дата вылета 25.10.2013,'''<br/>'''из Парижа в Санкт-Петербург, дата вылета 26.10.2013,'''<br/>'''из Санкт-Петербурга в Москву, дата вылета 29.10.2013,'''<br/>'''1 взрослый'''* '''''форма поиска'''''<pre>http://SITEMANE/?trip_type=CR&cr_iata[0]=MOW&cr_back_iata[0]=PAR&cr_date[0]=25.10.2013&cr_iata[1]=PAR&cr_back_iata[1]=LED&cr_date[1]=26.10.2013&cr_iata[2]=LED&cr_back_iata[2]=MOW&cr_date[2]=29.10.2013&adults=1¶m_by_get=on</pre>* '''''процесс поиска'''''<pre>http://SITEMANE/?trip_type=CR&cr_iata[0]=MOW&cr_back_iata[0отелей]=PAR&cr_date[0]=25.10.2013&cr_iata[1]=PAR&cr_back_iata[1]=LED&cr_date[1]=26.10.2013&cr_iata[2]=LED&cr_back_iata[2]=MOW&cr_date[2]=29.10.2013&adults=1¶m_by_get=on&fast_search=on</pre></div></div> === Взаимодействие FastSearch и Метрики ===Для того, чтобы переход был зарегистрирован системой как переход с определенного источника, необходимо передать в запросе дополнительный параметр utm_source (Metrics Session ID). Например:<pre>http://SITEMANE/?(some_parameters=vals&)utm_source=source_alias</pre>где source_alias - алиас источника переходов. [[Модуль метрики | Дополнительная информация по использованию модуля Метрики]]. ==== Пример FastSearch запроса с параметром для модуля Метрики ====<div class="toccolours mw-collapsible mw-collapsed" style="width:800px"><u>'''FastSearch (с учетом источника перехода для модуля Метрики)'''</u><div class="mw-collapsible-content">'''Рейс в одну сторону из Москвы в Париж, дата вылета: 25.10.2013, без пересадок, 1 взрослый (с учетом источника перехода для модуля Метрики).'''* '''''форма поиска'''''<pre>http://SITEMANE/?trip_type=OW&out_iata=MOW&in_iata=PAR&departure_date=25.10.2013&direct=true&adults=2¶m_by_get=on&utm_source=source_alias</pre>* '''''процесс поиска'''''<pre>http://SITEMANE/?trip_type=OW&out_iata=MOW&in_iata=PAR&departure_date=25.10.2013&direct=true&adults=2¶m_by_get=on&fast_search=on&utm_source=source_alias</pre></div></div>
→API Авиабилетов
==API Авиабилетов==
===API Поиска авиабилетов===
Это сервис внутри Nemo, который позволяет получить результаты поиска.
=== API Бронирования авиабилетов ===Сервис предназначен для получения списка отелейпозволяет забронировать/войдировать авиабилет с использованием API, описание подключения, удовлетворяющих условиям запроса. В условия запроса входят: идентификатор города, где будет вестись поиск; дата заезда и дата выезда; информация о количестве людей и способе их размещения ответов находится в комнатах. Так же указываются дополнительные необязательные поля фильтров.этой статье [[Веб-служба бронирования]]
<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://tst.nemo-ibe.com/wsdev/?version%3D1.0%26for%3DHotelsSearch"tr> <SOAP-ENV:Bodytr> <ns1:searchResponse> <ResponseBin> <Response> <HotelSearch> <Hotels> <Hotel Id="1872666"> <Supplier>GTA</Supplier> <CityId>22046</CityId> <DateBegin>2013-10-15</DateBegin> <DateEnd>2013-10-18</DateEnd> <CacheIdtd>1872666</CacheId> <Name>ADLON KEMPINSKI</Name> <Categoriestd> <Category Id="1"td> <Rooms> да <Room Count="1" Id="1" ServiceId="1"/td> <Room Count="1" Id="2" ServiceId="2"/td> строка </Rooms> <TotalPrice Currency="RUB"td>74733.84</TotalPricetd> Название агентства</Categorytd> </Categoriestr> <Services> <Service Id="1" Status="OK"> <Desc>Standard Twin</Desc> <Meal>Full Breakfast</Meal> <Price/> </Service> <Service Id="2" Status="OK"> <Desc>Standard Twin</Desc> <Meal>Full Breakfast</Meal> <Price/> </Service> </Services> <Rooms> <Room Id="1" Type="TWIN"/> <Room Id="2" Type="SNGL"/> </Rooms> </Hoteltr> ... </Hotelstd> Telephone </HotelSearchtd> </Responsetd> нет </ResponseBintd> </ns1:searchResponsetd> сложный </SOAP-ENV:Bodytd></SOAP-ENV:Envelopetd>Контактный телефон агентства</syntaxhighlighttd>
</tr> <tr class="row29"> <td class="col0">SmokingAllowed </td><td class="col1">нет </td><td class="col2">булевский </td><td class="col3">true - Идентификатор услуги из атрибута Id элемента Serviceместо для курящих, false - место для некурящих.По умолчанию false.</td>| Целое число </tr> <tr class="row30"> <td class="col0">Location </td><td class="col1">нет </td><td class="col2">строка </td><td class="col3">Расположение места, возможные значения: W - у окна (Window); M - где-то в середине ряда (Middle); NPW - возле прохода (NearPassengerWay); NS - нет предпочтения (NotSpecified).</td> </tr> <tr class="row31"> <td class="col0">RowNumber</td><td class="col1">нет</td><td class="col2">строка </td><td class="col3">Номер ряда</td> </tr> <tr class="row32"> <td class="col0">PlaceNumber </td><td class="col1">нет </td><td class="col2">строка </td><td class="col3">Номер места</td>
</tr>
<tr class="row39">
<td class="col0">VisaInfo </td><td class="col1">нет </td><td class="col2">сложный </td><td class="col3">Информация о визе</td>
</tr>
<tr class="row40">
<td class="col0">Num </td><td class="col1">да </td><td class="col2">строка </td><td class="col3">Номер визы</td>
</tr>
<tr class="row41">
<td class="col0">IssueDate </td><td class="col1">да </td><td class="col2">строка </td><td class="col3">Дата выдачи визы в формате dd.mm.yyyy</td>
</tr>
<tr class="row42">
<td class="col0">IssueCountry </td><td class="col1">да </td><td class="col2">строка </td><td class="col3">Страна выдачи визы</td>
</tr> <tr class="row43"> <td class="col0">IssuePlace </td><td class="col1">да </td><td class="col2">строка </td><td class="col3">Место выдачи визы</td> </tr> <tr class= Расширенная информация по одному отелю "row44"> <td class="col0">BirthCountry </td><td class="col1">нет </td><td class="col2">строка </td><td class=Сервис получения дополнительной информации об отеле требует указания идентификатора отеля в системе Nemo и категории."col3">Страна рождения (IATA код страны)</td>
<div class="toccolours mw-collapsible mw-collapsed" style="width:1000px"/tr>===== Запрос ===== <div tr class="mw-collapsible-contentrow47"> <syntaxhighlight lang="xml" line enclose="div" styletd class="font-size:9pt;background: #F9F9F9; border: 1px dashed #2F6FAB; padding: 10px 5px; margin: 10px 0;col0">CountryCode <soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:vertd><td class="http://tst.nemo-ibe.com/wsdev/?version%3D1.0%26for%3DHotelExtInfocol1"> да <soapenv:Header/td> <soapenv:Body> <ver:extInfo> <RequestBin> <Request> <HotelExtInfo> <Itemtd class="col2"> <CacheId>1867246строка </CacheIdtd> <!--Optional:--> <CategoryIdtd class="col3">1IATA код страны</CategoryIdtd> </Itemtr> </HotelExtInfotr class="row48"> </Request> <Source> <ClientIdtd class="col0">State </ClientIdtd> <APIKeytd class="col1">да </APIKeytd> <Languagetd class="col2">ruстрока </Languagetd> <Currency>RUB</Currency> </Source> </RequestBin> </ver:extInfo> </soapenv:Body></soapenv:Envelopetd class="col3">Штат или область въезда</syntaxhighlighttd>
<div /tr> <tr class="toccolours mw-collapsible mw-collapsed" style="width:1000pxrow53">===== Ответ ===== <div td class="mw-collapsible-contentcol0">DocStringFormat </td><syntaxhighlight langtd class="xmlcol1" line enclose>да </td><td class="divcol2" style>строка </td><td class="font-size:9pt;background: #F9F9F9; border: 1px dashed #2F6FAB; padding: 10px 5px; margin: 10px 0;col3"><SOAPФормат данных, возможные значения: DOCS -ENV:Envelope xmlns:SOAPстрока формата DOCS, FOID -ENV="http://schemasстрока формата FOID.xmlsoapУстановка данных в формате DOCS как правило необходима для последующей выписки в BSP среде.org/soap/envelope/" xmlns:ns1="http://tst.nemoУстановка FOID -ibeвсреде ТКП.com/wsdev/?version%3D1.0%26for%3DHotelExtInfo" xmlns:xsi="http:/</www.w3.org/2001/XMLSchema-instance"td> <SOAP-ENV:Body/tr> <ns1:extInfoResponsetr class="row54"> <ResponseBintd class="col0"> PersonalInfo <Response/td> <HotelExtInfotd class="col1"> <CategoryId>1да </CategoryIdtd> <PriceInfotd class="col2"> сложный <PriceBreakDown/td> <Datetd class="col3"> <From>2013-10-15Персональные данные пассажира</Fromtd> <To>2013-10-18 </Totr> <Price Currencytr class="RUBrow55">12455.64 </Pricetd class="col0"> DateOfBirth</Datetd> <Date> <Fromtd class="col1">2013-10-15да </Fromtd> <Totd class="col2">2013-10-18строка </Totd> <Price Currencytd class="RUBcol3">12455Дата рождения в формате dd.64mm.yyyy (например 31.12.2000)</Pricetd> </Datetr> </PriceBreakDowntr class="row56"> <Netto Currencytd class="EURcol0">1821Nationality </Nettotd> <Gross xsi:niltd class="truecol1"/> да </PriceInfotd> </HotelExtInfo> </Responsetd class="col2"> строка </ResponseBintd> </ns1:extInfoResponsetd class="col3"> <Национальность/SOAP-ENV:Body></SOAP-ENV:Envelope>гражданство, двух буквенный код страны (RU, UA, US и т.д.)</syntaxhighlighttd>
<div class="toccolours mw-collapsible mw-collapsed" style="width:1000px"/tr>===== Ответ ===== <div tr class="mw-collapsible-contentrow74"> <syntaxhighlight langtd class="xml" line enclose="div" style="font-size:9pt;background: #F9F9F9; border: 1px dashed #2F6FAB; padding: 10px 5px; margin: 10px 0;col0">Comission<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns1td><td class="http://tst.nemo-ibe.com/wsdev/?version%3D1.0%26for%3DCountryStatic" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instancecol1"> нет<SOAP-ENV:Body/td> <ns1:countriesResponse> <ResponseBin> <Response> <CountryStatic> <Countries> <Country Idtd class="4col2"> <Code>AFсложный</Codetd> <Continent>asia</Continent> <Data> <Info Languagetd class="RUcol3"> <Name>АфганистанКомиссия</Nametd> </Infotr> <Info Languagetr class="ENrow75"> <Name>Afghanistan</Name> </Info> </Data> </Country> </Countriestd class="col0"> Amount</CountryStatictd> </Responsetd class="col1"> нет</ResponseBintd> </ns1:countriesResponsetd class="col2"> число с плавающей точкой</SOAP-ENV:Bodytd></SOAP-ENV:Envelopetd class="col3">Значение комиссии в валюте, если указано, то комиссия в процентах игнорируется</syntaxhighlighttd>
</tr>
<tr class="row84">
<td class="col0">DepDate</td><td class="col1">да</td><td class="col2">строка</td><td class="col3">Дата вылета, Формат ГГГГ-MM-DDTЧЧ:ММ:СС</td>
</tr>
<tr class="row85">
<td class="col0">DepAirp</td><td class="col1">да</td><td class="col2">строка</td><td class="col3">Трёх буквенный код города отправления или конкретного аэропорта в городе отправления.</td>
</tr>
<tr class="row86">
<td class="col0">ArrAirp</td><td class="col1">да</td><td class="col2">строка</td><td class="col3">Трёх буквенный код города прибытия или конкретного аэропорта в городе прибытия.</td>
</tr>
<tr class="row87">
<td class="col0">Count</td><td class="col1">да</td><td class="col2">число</td><td class="col3">Число пассажиров данного типа. Общее количество пассажиров всех типов должно быть не более 9.</td>
</tr> <tr class="row88"> <td class="col0">Restrictions</td><td class="col1">нет</td><td class="col2">сложный</td><td class="col3">Контейнер дополнительной информации для поиска.</td> </tr> <tr class= Город "row89"> <td class="col0">ClassPref</td><td class="col1">нет</td><td class="col2">строка</td><td class=Параметры поиска всех услуг требуют указания ID города"col3">Предпочитаемый класс перелёта, возможные значения: All - все, Economy - эконом, Business - бизнес, First - первый. Города выгружаются Если не указан, то по каждой стране следующим запросом:умолчанию All.</td>
<div class="toccolours mw-collapsible mw-collapsed" style="width:1000px"/tr>===== Запрос ===== <div tr class="mw-collapsible-contentrow92"> <syntaxhighlight lang="xml" line enclosetd class="div" style="font-size:9pt;background: #F9F9F9; border: 1px dashed #2F6FAB; padding: 10px 5px; margin: 10px 0;col0">AirVPref<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:vertd><td class="http://tst.nemo-ibe.com/wsdev/?version%3D1.0%26for%3DCityStaticcol1"> да<soapenv:Header/td> <soapenv:Bodytd class="col2"> <ver:cities> <RequestBin> <Request> <CityStatic> <CountryId>4сложный</CountryIdtd> </CityStatictd class="col3"> Информация об авиакомпании.</Requesttd> <Source> <ClientId> </ClientIdtr> <APIKey></APIKeytr class="row93"> <Languagetd class="col0">ruInclude</Languagetd> <Currencytd class="col1">RUBнет</Currencytd> </Sourcetd class="col2"> булевский</RequestBintd> </ver:citiestd class="col3"> </soapenvИндикатор, показывающий включить или исключить в результатах поиска перелёты данной авиакомпании:Body></soapenv:Envelope>true - включить, false - исключить. Если не указан, то по умолчанию false.</syntaxhighlighttd>
</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; table border: 1px dashed #2F6FAB; padding: 10px 5px; margin: 10px 0;"><soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ver="http://tst.nemo-ibe.com/wsdev/?version%3D1.0%26for%3DHotelStatic1"> <soapenv:Header/> <soapenv:Body> <ver:hotels> <RequestBin> <Request> <HotelStatic> <CityId>58166</CityId> </HotelStatic> </Request> <Source> <ClientId></ClientId> <APIKey></APIKey> <Language>ru</Language> <Currency>RUB</Currency> </Source> </RequestBin> </ver:hotels> </soapenv:Body></soapenv:Envelope></syntaxhighlight>
<div class="toccolours mw-collapsible mw-collapsed" style="width:1000px"/tr>===== Ответ ===== <div tr class="mw-collapsible-contentrow4"> <syntaxhighlight lang="xml" line enclosetd class="div" style="font-size:9pt;background: #F9F9F9; border: 1px dashed #2F6FAB; padding: 10px 5px; margin: 10px 0;col0">Code <SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns1="http://tst.nemo-ibe.com/wsdev/?version%3D1.0%26for%3DHotelStatic" xmlns:xsitd><td class="http://www.w3.org/2001/XMLSchema-instancecol1"> да <SOAP-ENV:Body> <ns1:hotelsResponse/td> <ResponseBin> <Response> <HotelStatic> <Hotels> <Hotel Idtd class="271714col2" Apartment="false"> <CityId>58166строка </CityIdtd> <CountryId>643</CountryId> <Latitude xsi:niltd class="truecol3">Номер бронирования в системе поставщика (в sabre, sirena и т.д.)/> код тарифного правила<Longitude xsi:nil="true"/td> <Rating>3 </Ratingtr> <Floors xsi:niltr class="truerow5"/> <Data> <Info> <Name>* Azimut (business)</Name> <Area xsi:niltd class="truecol0"/> <Location>Within cityQueryPlace </Locationtd> <Desc>This 3 star hotel is located within the city of St Petersburg.</Desc> <Address>43/1 Lermoutovsky Prospect, St Petersburg, 190103</Address> </Info> </Data> <Phones> <Phone>812 7402640</Phone> </Phones> <Fax>812 2518890</Fax> <Images/> </Hotel> <Hotel Idtd class="159535" Apartment="falsecol1"> <CityId>58166нет </CityIdtd> <CountryId>643</CountryId> <Latitude>59.935011</Latitude> <Longitude>30.309284</Longitude> <Rating>5</Rating> <Floors xsi:niltd class="truecol2"/> <Data> <Info> <Name>W St.petersburgсложный </Nametd> <Area xsi:niltd class="truecol3"/> <Location>City centre</Location> <Desc>This 5 star hotel is located in the city centre of St Petersburg and was established in 2011. It is close to the St.Isaac's Cathedral and the nearest station is Admiralteyskaya station. The Hotel has a restaurant, 2 bars, a conference room, a coffee shop, an indoor swimming pool and a fitness centre/gym. All 137 rooms are equipped with minibar, hairdryer, safe, trouser press and air conditioning.</Desc> <Address>6 Voznesensky Prospect, St. Petersburg, 190000, St PetersburgОчередь, Russia</Address> </Info> </Data> <Phones/> <Fax>+7 812 6106160</Fax> <Images> <Image> <Path>https://www.miki.co.uk/live/hotel/mikiNet/image/v1.0/RU/44018/406/lr/ext.jpg</Path> <Icon>https://www.miki.co.uk/live/hotel/mikiNet/image/v1.0/RU/44018/406/ext-t.jpg</Icon> </Image> <Image> <Path>https://www.miki.co.uk/live/hotel/mikiNet/image/v1.0/RU/44018/406/lr/unknown.jpg</Path> <Icon>https://www.miki.co.uk/live/hotel/mikiNet/image/v1.0/RU/44018/406/unknown-t.jpg</Icon> </Image> <Image> <Path>https://www.miki.co.uk/live/hotel/mikiNet/image/v1.0/RU/44018/406/lr/bed room.jpg</Path> <Icon>https://www.miki.co.uk/live/hotel/mikiNet/image/v1.0/RU/44018/406/bed room-t.jpg</Icon> </Image> </Images> </Hotel> ... </Hotels> </HotelStatic> </Response> </ResponseBin> </ns1:hotelsResponse> </SOAP-ENV:Body></SOAP-ENV:Envelope>в которую помещено бронирование</syntaxhighlighttd>
</tr>
<tr class="row14">
<td class="col0">Ticket </td><td class="col1">нет </td><td class="col2">сложный </td><td class="col3">Билет пассажира.</td>
</tr>
<tr class="row15">
<td class="col0">TickectNum </td><td class="col1">да </td><td class="col2">строка </td><td class="col3">Номер билета</td>
</tr>
<tr class="row16">
<td class="col0">Seats</td><td class="col1">нет </td><td class="col2">сложный </td><td class="col3">Контейнер мест пассажира.</td>
</tr>
<tr class="row17">
<td class="col0">Seat </td><td class="col1">да </td><td class="col2">сложный </td><td class="col3">Место в самолёте</td>
</tr> <tr class="row18"> <td class="col0">Number </td><td class=API бронирования, аннуляции, войдирования авиабилетов"col1">да </td><td class="col2">строка</td><td class="col3">Номер места(ряд+номер в ряду)</td> </tr> <tr class="row19"> <td class="col0">Characteristic </td><td class= Подключение ="col1">нет</td><td class="col2">строка </td><td class="col3">Характеристика места в соответствии со стандартом EDIFACT. См справочник “Таблица характеристик мест”.</td>
</tr> <tr class="row22"> <td class="col0">PersonalInfo </td><td class= Общий формат запроса "col1">да </ ответа бронирования td><td class="col2">сложный </td><td class="col3">Личные данные</td> </tr> <tr class="row23"> <td class="col0">LoyaltyCard </td><td class="col1">нет </td><td class="col2">сложный </td><td class="col3">Карточка часто летающего пассажира</td>
<div class="toccolours mw-collapsible mw-collapsed" style="width:1000px"/tr>===== Запрос ===== <div tr class="mw-collapsible-contentrow24"> <syntaxhighlight lang="xml" line enclosetd class="div" style="font-size:9pt;background: #F9F9F9; border: 1px dashed #2F6FAB; padding: 10px 5px; margin: 10px 0;col0"><soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ver="http://CLIENT_DOMAIN/nemoflights/?version%3D1.0%26for%3DBookFlight"> ContactInfo <soapenv:Header/td> <soapenv:Body> <ver:BookFlight> <RequestBin> <Request> <BookFlight> <FlightId>?</FlightId> <!--FlightId — Id перелёта в системе Nemo--> <!--Optional:--> <ValidatingCompany>?</ValidatingCompany> <!--необязательный--> <!--ValidatingCompany — валидирующий перевозчик (тот кто выписывает билет)--> <!--Optional:--> <BookingCodes> <!--Zero or more repetitions:--> <BookingCode Code="?" SegNumbertd class="?col1"/> <!--Code — код класса перелёта--> <!--SegNumber — номер сегмента в перелёте (начинаются с 1)--> нет </BookingCodestd> <!--Optional:--> <CurrencyCode>?</CurrencyCode> <!--необязательный--> <!--CurrencyCode — код валюты--> <!--Optional:--> <TicketTimeLimit>?</TicketTimeLimit> <!--необязательный--> <!--TicketTimeLimit — таймлимит на оплату, формат: ГГГГ-ММ-ДДTЧЧ:ММ:СС--> <!--Optional:--> <Agency Nametd class="?col2"> сложный <!--необязательный--/td> <!--Name — название агентства--> <Telephone Typetd class="?col3"> <!--Type — тип номера, обязательный, возможные значения: M — мобильный, H — домашний, B — рабочий, A — агенство--> <!--Optional:--> <PhoneNumber>?Контактная информация для пассажира</PhoneNumbertd> <!--PhoneNumber — номер телефона--> <!--Optional:--> <CountryAccessCode>? </CountryAccessCode> <!--необязательный--tr> <!--CountryAccessCode — код страны--> <!--Optional:--> <AreaCityCode>?</AreaCityCode> <!--необязательный--> <!--AreaCityCode — код региона/города--> </Telephone> <Address City="?" State="?" StreetAddress="?" PostalCode="?" CountryCodetr class="?row25"/> <!--необязательный--> <!--City — город--> <!--State — штат--> <!--StreetAddress — адрес в городе (улица, дом, корпус, офис и т.д.)--> <!--PostalCode — почтовый индекс--> <!--CountryCode — код страны (RU, UA и т.п.)--> </Agency> <Travellers> <!--Zero or more repetitions:--> <Traveller Type="?" IsContact="?" LinkedTo="?" Numtd class="?col0" TravellerId="?"> <!--Type — тип пассажира, обязательный, возможные значения: ADT — взрослые, CNN — дети со взрослыми,UNN — дети без сопровождения взрослых, INF — младенцы, INS — младенцы с местом--> FareStored <!--IsContact — если true — то данный пассажир является контактным лицом, если false — то не является, контактное лицо может быть только 1, если среди пассажиров есть взрослые, то только кто-то из них может быть контактным лицом, по умолчанию false--> <!--Num — порядковый номер пассажира, начинается с 1--> <!--LinkedTo — номер взрослого, к которому привязан младенец/ребёнок--td> <!--необязательный--> <!--TravellerId — устаревший параметр, не используется--> <Meal>?</Meal> <!--необязательный--> <!--Meal — код типа питания, возможные значения: NONE — отсутствует AVML — Азиатская вегетарианская кухня BLML — Блюда щадящей диеты CHML — Детское питание CHPC — Детский холодный завтрак СНСС — Детский горячий завтрак CHHC — Детский ланч, ветчина и сыр PBJS — Детский ланч, ореховое масло CHMC — Детский обед макароны с сыром DBML — Диабетическое питание FPML — Фрукты GFML — Питание без клейковины HFML — Питание богатое клетчаткой HNML — Индусская кухня BBML — Питание для младенцев KSML — Кошерная кухня SMKB — Кошерный завтрак SMKL — Кошерный ланч SMKD — Кошерный обед LPML — Малобелковое питание LCML — Низкокалорийное питание LFML — Низкохолестериновое питание PRML — Низкопуриновое питание LSML — Малосоленое питание MOML — Мюсли NLML — Безмолочные продукты ORML — Восточная кухня RVML — Сырые овощи SFML — Морепродукты SPML — Особое питание VLML — Вегетарианское, молоко и яйца VGML — Строго вегетарианское питание VJML — Джайнизское вегетарианское VOML — Восточное вегетарианское питание--> <PersonalInfo DateOfBirthtd class="?" Nationality="?" Gender="?col1"> <!--DateOfBirth — дата рождения в формате ДД.ММ.ГГГГ (например 31.12.2000)--> <!--Nationality — гражданство, двух буквенный код страны (RU, UA, US и т.д.)--> <!--Gender — пол пассажира, возможные значения: M — мужской(Male), F — женский(Female)--> <FirstName>?нет </FirstNametd> <!--FirstName — имя пассажира--> <LastName>?</LastName> <!--LastName — фамилия пассажира--> <!--Optional:--> <MiddleName>?</MiddleName> <!--необязательный--> <!--MiddleName — отчество пассажира--> </PersonalInfo> <LoyaltyCard OpCode="?" Numbertd class="?col2"/> <!--необязательный--> <!--OpCode — код авиакомпании--> <!--Number — номер карточки--> <ContactInfo> <!--необязательный--> <!--Optional:--> <EmailID>?</EmailID> <!--EmailID — контактный email--> <!--Optional:--> <Telephone Type="?"> <!--Type — тип номера, возможные значения: M — мобильный, H — домашний, B — рабочий--> <!--Optionalсрока:--> <PhoneNumber>?<Yes/PhoneNumber> <!--PhoneNumber — номер телефона--> <!--Optional:--> <CountryAccessCode>?No </CountryAccessCodetd> <!--CountryAccessCode — код страны--> <!--Optional:--> <AreaCityCode>?</AreaCityCode> <!--AreaCityCode — код региона/города--> </Telephone> </ContactInfo> <DocumentInfo DocTypetd class="?" DocNum=col3"?" CountryCode="?" DocElapsedTime="?"/> <!--DocType — тип документа, возможные значения: Р — Паспорт A – Паспорт иностранца С — Внутренний гражданский паспорт F – Документ заменяющий паспорт М — Воинское удостоверение N – Сертификат натурализации(специфичный документ США) T – Док.повторного въезда, паспорт беженца V – Документ для пересечения границы--> <!--DocNum — номер документа--> <!--CountryCode — двух буквенный код страны выдачи паспорта (RU, UA, US и т.д.)--> <!--DocElapsedTime — срок истечения срока действия паспорта в ДД.ММ.ГГГ (например 31.12.2000)--> <VisaInfo Num="?" IssueCountry="?" IssuePlace="?" BirthCountry="?" BirthCity="?" IssueDate="?"Указывает установлена ли /> <!--необязательный--> <!--Num — номер визы--> <!--IssueDate — дата(ДД.ММгарантируется ли цена у поставщика.ГГГГ) выдачи визы--> <!--IssueCountry — страна выдачи визы--> <!--IssuePlace — место выдачи визы--> <!--BirthCountry — страна рождения(IATA код страны)--> <!--BirthCity — город рождения(название)--> <ArrAddress City="?" State="?" StreetAddress="?" PostalCode="?" CountryCode="?"/> <!--необязательный--> <!--City — город--> <!--State — штат или область въезда--> <!--StreetAddress — адрес: улица, номер дома, квартиры и т.д.--> <!--PostalCode — почтовый код--> <!--CountryCode — код страны--> <PreferedPlace SmokingAllowed="?" Location="?" RowNumber="?" PlaceNumber="?" SegNumber="?"/> <!--необязательный--> <!--Если указаны номер ряда и номер местапараметр отсутствует в ответе, то параметры SmokingAllowed и Location игнорируются--> <!--SmokingAllowed — булевское по умолчанию значение, true — место для курящих, false — место для некурящих--> <!--Location — положение места в ряде, возможные значения: W — у окна (Window) M — где-то в середине ряда (Middle) NPW — возле прохода (NearPassengerWay) NS — нет предпочтения (NotSpecified)--> <!--RowNumber — номер ряда--> <!--PlaceNumber — номер места--> <!--SegNumber — номер сегмента--> <DocStringFormats> <!--Zero or more repetitions:--> <DocStringFormat>?</DocStringFormat> <!--DocStringFormat — формат паспортной строки, возможные значения: DOCS — строка формата DOCS, FOID — строка формата FOID--> </DocStringFormats> </Traveller> </Travellers> <!--Optional:--> <QueueNum>?</QueueNum> <!--необязательный--> <!--QueueNum — номер очереди, в которую необходимо поместить бронирование--> </BookFlight> </Request> <Source> <ClientId>?</ClientId> <!--ClientId — ID клиента в системе Nemo. Можно посмотреть/добавить в разделе "Администрирование" ? "Веб-служба. Авторизация".--> <APIKey>?</APIKey> <!--APIKey — секретный ключ доступа к API Nemo“Yes”. Можно посмотреть/добавить в разделе "Администрирование" ? "Веб-служба. Авторизация".--> <Language>?</Language> <!--Language — язык--> <Currency>?</Currency> <!-- CUrrency — валюта--> </Source> </RequestBin> </ver:BookFlight> </soapenv:Body></soapenv:Envelope></syntaxhighlight></div></divtd>
<div /tr> <tr class="row26"> <td class="col0">CancelBookResult</td><td class="col1">да</td><td class="col2">сложный</td><td class="col3">Контейнер для тела ответа отмены брони</td> </tr> <tr class="row27"> <td class="col0">BookID</td><td class="toccolours mw-collapsible mw-collapsedcol1" style>да</td><td class="width:1000pxcol2">число</td><td class="col3">Номер брони, которая отменялась (Номер выписанной брони, выписка которой отменялась)</td>
</tr> <tr class="row30"> <td class="col0">GetAirRulesResult</td><td class= Пример использования "col1">да</td><td class="col2">сложный</td><td class="col3">Контейнер для тела ответа поиска тарифных правил</td> </tr> <tr class="row31"> <td class="col0">FlightId</td><td class="col1">да</td><td class="col2">число</td><td class="col3">Номер перелёта, для которого найдены тарифные правила (будет проводилась проверка доступности)</td>
<div class="toccolours mw-collapsible mw-collapsed" style="width:1000px"/tr>===== Запрос ===== <div tr class="mw-collapsible-contentrow34"> <syntaxhighlight lang="xml" line enclosetd class="div" style="font-size:9pt;background: #F9F9F9; border: 1px dashed #2F6FAB; padding: 10px 5px; margin: 10px 0;col0">Tarrif<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:vertd><td class="http://CLIENT_DOMAIN/nemoflights/?version%3D1.0%26for%3DBookFlightcol1"> да<soapenv:Header/td> <soapenv:Body> <ver:BookFlight> <RequestBin> <Request> <BookFlight> <FlightIdtd class="col2">171430002строка</FlightIdtd> <BookingCodes> <!--Zero or more repetitions:--> <BookingCode Code="E" SegNumbertd class="2col3"/> Код тарифа, для которого правило применяется</BookingCodestd> <Travellers/tr> <!--Zero or more repetitions:--> <Traveller Typetr class="ADT" IsContact="true" Num="1row35"> <PersonalInfo DateOfBirth="20.05.1980" Nationality="RU" Gendertd class="Mcol0"> <FirstName>PetrName</FirstNametd> <LastNametd class="col1">Ivanovда</LastNametd> </PersonalInfo> <ContactInfo> <!--Optional:--> <EmailID>testmail@mail.ru</EmailID> <!--Optional:--> <Telephone Typetd class="Mcol2"> <!--Optional:--> <PhoneNumber>79051234567строка</PhoneNumbertd> </Telephone> </ContactInfo> <DocumentInfo DocTypetd class="Acol3" DocNum="123456" CountryCode="RU" DocElapsedTime="01.01.2020"/> </Traveller> </Travellers> </BookFlight> </Request> <Source> <ClientId>---</ClientId> <APIKey>---</APIKey> <Language>RU</Language> <Currency>RUB</Currency> </Source> </RequestBin> </ver:BookFlight> </soapenv:Body></soapenv:Envelope></syntaxhighlight></div>Имя правила</divtd>
<div /tr> <tr class="row36"> <td class="col0">RuleText</td><td class="col1">да</td><td class="col2">строка</td><td class="col3">Текст правила</td> </tr> <tr class="row37"> <td class="col0">AirAvailResult</td><td class="toccolours mw-collapsible mw-collapsedcol1" style>да</td><td class="width:1000pxcol2">сложный</td><td class="col3">Контейнер для тела ответа помещения брони в очередь</td>
</tr> <tr class="row40"> <td class="col0">SearchResult</td><td class="col1">нет</td><td class= Общий формат запроса "col2">сложный</ td><td class="col3">Контейнер тела ответа отмены бронирования для результатов поиска.</td> </tr> <tr class="row41"> <td class="col0">Flights</td><td class="col1">да</td><td class="col2">сложный</td><td class="col3">Контейнер для перелётов</td>
<div class="toccolours mw-collapsible mw-collapsed" style="width:1000px"/tr>===== Запрос ===== <div tr class="mw-collapsible-contentrow46"> <syntaxhighlight langtd class="xml" line enclose="div" style="font-size:9pt;background: #F9F9F9; border: 1px dashed #2F6FAB; padding: 10px 5px; margin: 10px 0;col0">Segment<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:vertd><td class="http://CLIENT_DOMAIN/nemoflights/?version%3D1.0%26for%3DCancelBookcol1"> да<soapenv:Header/td> <soapenv:Bodytd class="col2"> сложный<ver:CancelBook/td> <RequestBin> <Request> <CancelBook BookIDtd class="?col3"/> <!--BookID — Id брони в системе Nemo, целое число--> Представляет информацию о сегменте</Request> <Sourcetd> <ClientId>? </ClientIdtr> <!--ClientId — ID клиента в системе Nemo. Можно посмотреть/добавить в разделе "Администрированиеtr class=" ? row47"Веб-служба. Авторизация".--> <APIKeytd class="col0">?SegNum</APIKeytd> <!--APIKey — секретный ключ доступа к API Nemo. Можно посмотреть/добавить в разделе td class="Администрированиеcol1" ? "Веб-служба. Авторизация".--> <Language>?да</Languagetd> <!--Language — язык--td class="col2"> <Currency>?</Currency> <!-- CUrrency — валюта--> число</Sourcetd> </RequestBintd class="col3"> </ver:CancelBook> </soapenv:Body></soapenv:Envelope></syntaxhighlight></div>Номер сегмента в перелёте</divtd>
<div class="toccolours mw-collapsible mw-collapsed" style="width:1000px"/tr>===== Ответ ===== <div tr class="mw-collapsible-contentrow48"> <syntaxhighlight langtd class="xml" line enclose="div" style="font-size:9pt;background: #F9F9F9; border: 1px dashed #2F6FAB; padding: 10px 5px; margin: 10px 0;col0">DepAirp<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns1="http://CLIENT_DOMAIN/nemoflights/?version%3D1.0%26for%3DCancelBook" xmlns:xsitd><td class="http://www.w3.org/2001/XMLSchema-instancecol1"> да<SOAP-ENV:Body/td> <ns1:CancelBookResponse> <ResponseBin> <Response> <CancelBook BookIDtd class="?col2"> строка<!--BookID — Id брони в системе Nemo, целое число--/td> <Result Successtd class="?col3"/> <!--Success — результат отмены брони, true или false--> IATA код аэропорта отправления</CancelBooktd> <Requisites/tr> <RequestType xsi:niltr class="truerow49"/> <UserID xsi:niltd class="truecol0">DepTerminal</td> <Errors xsi:niltd class="truecol1"/> </Response> нет</ResponseBintd> </ns1:CancelBookResponsetd class="col2"> строка</SOAP-ENV:Bodytd></SOAP-ENV:Envelopetd class="col3"></syntaxhighlight></div>Код терминала отправления</divtd>
</tr> <tr class="row50"> <td class=API бронирования, отмены отелей"col0">ArrAirp</td><td class="col1">да</td><td class="col2">строка</td><td class="col3">IATA код аэропорта прибытия</td> </tr> <tr class="row51"> <td class="col0">ArrTerminal</td><td class="col1">нет</td><td class="col2">строка</td><td class="col3">Код терминала прибытия</td>
</tr> <tr class="row52"> <td class="col0">OpAirline</td><td class="col1">да</td><td class= Штрафы за аннуляцию "col2">строка</td><td class="col3">Код авиакомпании, выполняющей рейс</td> </tr> <tr class="row53"> <td class="col0">MarkAirline</td><td class="col1">да</td><td class="col2">строка</td><td class="col3">Код авиакомпании, продающей билет</td>
<div class="toccolours mw-collapsible mw-collapsed" style="width:1000px"/tr>===== Запрос ===== <div tr class="mw-collapsible-contentrow62"> <syntaxhighlight lang="xml" line enclose="div" styletd class="font-size:9pt;background: #F9F9F9; border: 1px dashed #2F6FAB; padding: 10px 5px; margin: 10px 0;col0">FlightTime<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:vertd><td class="http://tst.nemo-ibe.com/wsdev/?version%3D1.0%26for%3DPenaltycol1"> нет<soapenv:Header/td> <soapenv:Body> <ver:penalty> <RequestBin> <Request> <Penalty> <Item> <Typetd class="col2">HOTELSчисло</Typetd> <CacheIdtd class="col3">1867246Время перелёта в минутах</CacheIdtd> <CategoryId>1 </CategoryIdtr> </Itemtr class="row63"> </Penaltytd class="col0"> TimeZone</Requesttd> <Source> <ClientIdtd class="col1">нет</ClientIdtd> <APIKeytd class="col2 rightalign">сложный</APIKeytd> <Languagetd class="col3">ru</Language> <Currency>RUB</Currency> </Source> </RequestBin> </ver:penalty> </soapenv:Body></soapenv:Envelope>Информация о временных зона прибытия и отправления</syntaxhighlighttd>
<div class="toccolours mw-collapsible mw-collapsed" style="width:1000px"/tr>===== Ответ ===== <div tr class="mw-collapsible-contentrow68"> <syntaxhighlight langtd class="xml" line enclose="div" style="font-size:9pt;background: #F9F9F9; border: 1px dashed #2F6FAB; padding: 10px 5px; margin: 10px 0;col0">Measure<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns1td><td class="http://tst.nemo-ibe.com/wsdev/?version%3D1.0%26for%3DPenaltycol1"> <SOAP-ENV:Body> <ns1:penaltyResponse> <ResponseBin> <Response> <Penalty> <ItemDateBegin>2013-10-15 00:00:00да</ItemDateBegintd> <CancelChargestd class="col2"> <Charge> <DateFrom>2013-10-12 00:00:00строка</DateFromtd> <DateTo>2013-10-15 23:59:59</DateTo> <Money Currencytd class="RUBcol3">74733Мера веса.84</Money> </Charge> <Charge> <DateFrom>2013K -09килограммы, PC -23 00:00:00сумки/клади</DateFromtd> <DateTo>2013-10-11 00:00:00 </DateTotr> <Money Currencytr class="RUBrow69">67260.46</Money> </Chargetd class="col0"> <Charge> <DateFrom>2013-08-01 17:59:00Value</DateFromtd> <DateTotd class="col1">2013-09-22 00:00:00да</DateTotd> <Money Currencytd class="RUBcol2">12455.64строка</Moneytd> </Charge> </CancelCharges> <ModifyCharges/> </Penalty> </Response> </ResponseBin> </ns1:penaltyResponsetd class="col3"> </SOAP-ENV:Body></SOAP-ENV:Envelope>Количество багажа</syntaxhighlighttd>
</tr>
<tr class="row76">
<td class="col0">TotalFare</td><td class="col1">нет</td><td class="col2">сложный</td><td class="col3">Полная стоимость для пассажиров данного типа включая таксы (за одного пассажира), при поиске цены не возвращается</td>
</tr>
<tr class="row77">
<td class="col0">Currency</td><td class="col1">да</td><td class="col2">строка</td><td class="col3">Трёх буквенный код валюты.</td>
</tr>
<tr class="row78">
<td class="col0">Amount</td><td class="col1">да</td><td class="col2">число с плавающей точкой</td><td class="col3">Значение стоимости.</td>
</tr>
<tr class="row79">
<td class="col0">Taxes</td><td class="col1">нет</td><td class="col2">сложный</td><td class="col3">Контейнер для такс, при поиске цены не возвращается</td>
</tr> <tr class="row80"> <td class="col0">Tax</td><td class="col1">да</td><td class= Бронирование =="col2">сложный</td><td class="col3">Одна такса</td> </tr> <tr class="row81"> <div td class="toccolours mw-collapsible mw-collapsedcol0" style>CurCode</td><td class="width:1000pxcol1">да</td><td class===== Запрос ====="col2">строка</td><div td class="mw-collapsible-contentcol3">Схема запроса позволяет указывать несколько услуг Трёх буквенный код валюты для бронирования сразу. Это было сделано с заделом на возможность расширения функциональности в будущем при сохранении совместимости.таксы</td>
<syntaxhighlight lang="xml" line enclose="div" style="font-size:9pt;background: #F9F9F9; border: 1px dashed #2F6FAB; padding: 10px 5px; margin: 10px 0;"/tr> <soapenv:Envelope xmlns:soapenvtr class="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ver="http://tst.nemo-ibe.com/wsdev/?version%3D1.0%26for%3DBookingrow88"> <soapenv:Header/> <soapenv:Body> <ver:booking> <RequestBin> <Request> <Booking> <Items> <!--Zero or more repetitions:--> <Item> <!--You have a CHOICE of the next 3 items at this level--> <HotelBookData> <CacheId>1872666</CacheId> <CategoryId>1</CategoryId> <Rooms> <!--Zero or more repetitions:--> <Room Idtd class="2col0"> <Persons> <!--Zero or more repetitions:--> FareCalc<Person Number="1"/td> <Person Numbertd class="2col1"/> нет</Persons> </Room> <Room Id="1"> <Persons> <!--Zero or more repetitions:--td> <Person Numbertd class="3col2"/> </Persons> </Room> </Rooms> строка</HotelBookData> <Customertd> <Person Numbertd class="1col3"/> </Customer> Строка расчёта цены</Itemtd> </Itemstr> <Persons> <!--Zero or more repetitions:--> <Person Number="1" Typetr class="ADTrow89"> <!--Optional:--> <Lastname>IVANOV</Lastname> <!--Optional:--> <Name>IVAN</Name> <!--Optional:--> <Middlename>IVANOVICH</Middlename> <!--Optional:--> <DateOfBirth>1987-12-12</DateOfBirth> <!--Optional:--> <Phone>+79871231212</Phone> <!--Optional:--> <Email>m.rudenko@mute-lab.com</Email> <!--Optional:--> <Gender>MR</Gender> <!--Optional:--> <Document Typetd class="Pcol0"> <Series>1811</Series> <Number>912219</Number> <!--Optional:--> <IssueDate>2012-12-12</IssueDate> <!--Optional:--> <ExpiryDate>2014-12-12</ExpiryDate> </Document> LastTicketDateTime</Persontd> <Person Number="2" Typetd class="CHDcol1"> <!--Optional:--> <Lastname>PETROVда</Lastnametd> <!--Optional:--> <Name>IVAN</Name> <!--Optional:--> <Middlename>MIKHAILOVICH</Middlename> <!--Optional:--> <DateOfBirth>2008-12-12</DateOfBirth> <!--Optional:--> <Phone>+79871231212</Phone> <!--Optional:--> <Email>m.rudenko@mute-lab.com</Email> <!--Optional:--> <Gender>MR</Gender> <!--Optional:--> <Document Typetd class="Pcol2"> <Series>1866строка</Seriestd> <Number>913319</Number> <!--Optional:--> <IssueDate>2012-12-12</IssueDate> <!--Optional:--> <ExpiryDate>2014-12-12</ExpiryDate> </Document> </Person> <Person Number="3" Typetd class="ADTcol3"> <!Дата и время таймлимита по выписке в формате ГГГГ-MM-OptionalДДTЧЧ:--> <Lastname>SIDOROV</Lastname> <!--Optional:--> <Name>IVAN</Name> <!--OptionalММ:--> <Middlename>SERGEEVICH</Middlename> <!--Optional:--> <DateOfBirth>1987-12-12</DateOfBirth> <!--Optional:--> <Phone>+79871231212</Phone> <!--Optional:--> <Email>mСС.rudenko@mute-labЕсли бронирование не будет аннулировано или выписано до этого времени, то могут быть применены штрафы.com</Email> <!--Optional:--> <Gender>MR</Gender> <!--Optional:--> <Document Type="P"> <Series>1866</Series> <Number>913319</Number> <!--Optional:--> <IssueDate>2012-12-12</IssueDate> <!--Optional:--> <ExpiryDate>2014-12-12</ExpiryDate> </Document> </Person> </Persons> </Booking> </Request> <Source> <ClientId></ClientId> <APIKey></APIKey> <Language>ru</Language> <Currency>RUB</Currency> </Source> </RequestBin> </ver:booking> </soapenv:Body></soapenv:Envelope></syntaxhighlighttd>
</div>
</div>
'''Метапоисковая система''' (метапоисковая машина, метапоисковик) — это поисковая система, которая в отличие от классических поисковых машин не имеет собственной базы данных и собственного поискового индекса, а формирует поисковую выдачу за счет смешивания и переранжирования результатов поиска других поисковых систем.
==Выгрузка информации о заказах ==
'''Выгрузка заказов''' — это экспорт данных заказа или заказов для различных компонентов системы Nemo.=== Процесс выгрузки ===Схематично процесс выгрузки заказов представлен на блок-схемеМодуль позволяет внешней системе получать данные по заказам для дальнейшей обработки. [[Файл:Export.png]]=== Статусы выгрузки заказа ===Коды статусов Подробнее о процессе выгрузки заказа соответствуют кодам состояния HTTP. Фактически указывается последний полученный код состояния HTTP, полученный при выгрузке данных по адресу, указанному в настройках выгрузки. Коды относятся к серверу, на который происходит выгрузка заказов. {| style="width: 800px" class="wikitable"|-! scope="col" width="20" | Код! scope="col" width="300" | Описание|-| 0| Неизвестный ответ. Адрес для форматах выгрузки не доступен.|-| 200| OK — успешный запрос.|-| 301| Запрошенный документ был окончательно перенесен на новый URI, указанный в поле Location заголовка.|-| 403| Сервер понял запрос, но он отказывается его выполнять из-за ограничений в доступе для клиента к указанному ресурсу.|-| 404| Сервер понял запрос, но не нашёл соответствующего ресурса по указанному URI.|-| 422| Unprocessable Entity — сервер успешно принял запрос, может работать с указанным видом данных, в теле запроса XML-документ имеет верный синтаксис, но имеется какая-то логическая ошибка, из-за которой невозможно произвести операцию над ресурсом.|-| 500| Любая внутренняя ошибка сервера.|} === Выгрузка заказа для компонента «Авиабилеты»===Для компонента '''«Авиабилеты»''' доступна выгрузка заказов в форматах Nemo и/или Софи (при включенном модуле '''«Выгрузка заказов Софи»). <div class="toccolours mw-collapsible mw-collapsed" style="width:1000px">==== Формат Nemo ====<div class="mw-collapsible-content"><syntaxhighlight lang="xml" line enclose="div" style="font-size:9pt;background: #F9F9F9; border: 1px dashed #2F6FAB; padding: 10px 5px; margin: 10px 0;"><?xml version="1.0" encoding="UTF-8"?><PNR> <Common> <id>277749</id> <Type>FLIGHTS</Type> <Service>SABRE</Service> <Locator>SQLJNK</Locator> <ExternalId>1234567</ExternalId> <!-- Внешний идентификатор --> <Stamp>123456789</Stamp> <UtmSource>100</UtmSource> <!-- Источник перехода --> <BeginDateTime>2014.12.18-10:45</BeginDateTime> <EndDateTime>2014.12.25-16:40</EndDateTime> <TicketingDateTime>2014.12.09-15:02</TicketingDateTime> <VoidDateTime/> <TotalPrice> <Amount>10773.8</Amount> <CurrencyCode>RUB</CurrencyCode> </TotalPrice> <UserId>2964</UserId> <EEUserId/> <UserLogin>userLogin</UserLogin> <GroupId>2963</GroupId> <CompanyId>2963</CompanyId> <UserStatus>Менеджер</UserStatus> <DateCreate>2014.12.09-14:59</DateCreate> <ExtServices> <!-- Дополнительные услуги --> <ExtService> <Type>AeroExpress</Type> <Price> <Amount>1440</Amount> <CurrencyCode>RUB</CurrencyCode> </Price> </ExtService> <ExtService> <Type>AlphaInsurance</Type> <Price> <Amount>480</Amount> <CurrencyCode>RUB</CurrencyCode> </Price> <Insurances> <Insurance> <Number>Z694.198TEST.2765282</Number> <Fio>IVANOV IVAN</Fio> </Insurance> <Insurance> <Number>Z694.198TEST.2765283</Number> <Fio>PETROV PETR</Fio> </Insurance> </Insurances> </ExtService> </ExtServices> </Common> <Payment> <Title>Testpay</Title> <Method>Testpay</Method> <BillingId>117607091</BillingId> <Date>2014-12-09 15:00:39</Date> <CreateDate>2014-12-09 15:00:34</CreateDate> <Status>ticket</Status> <PenaltyDate/> <Timelimit>2014-12-10 14:59:55</Timelimit> <PaymentCharge> <!-- Сбор платежного шлюза --> <Amount>313.8</Amount> <CurrencyCode>RUB</CurrencyCode> </PaymentCharge> <Charge> <!-- Общий сбор минус сбор платежного шлюза --> <Amount>1920</Amount> <CurrencyCode>RUB</CurrencyCode> </Charge> <BaseFare> <!-- Тариф --> <Amount>1600</Amount> <CurrencyCode>RUB</CurrencyCode> </BaseFare> <Book> <!-- Тариф плюс таксы --> <Amount>8540</Amount> <CurrencyCode>RUB</CurrencyCode> </Book> <Penalty> <Amount>0</Amount> <CurrencyCode>RUB</CurrencyCode> </Penalty> <Total> <Amount>10773.8</Amount> <CurrencyCode>RUB</CurrencyCode> </Total> <Commission> <Amount>0</Amount> <CurrencyCode>RUB</CurrencyCode> </Commission> <PaidValue> <Amount>10773.8</Amount> <CurrencyCode>RUB</CurrencyCode> </PaidValue> </Payment> <Client> <LastName/> <Name>SIDOROV PETR</Name> <MiddleName/> <Number/> <Birth/> <Email>mail@host.com</Email> <Phone>+74950000000</Phone> </Client> <PassengersCount>2</PassengersCount> <Passengers> <Passenger> <passenger_type>ADT</passenger_type> <lastname>IVANOV</lastname> <name>IVAN</name> <gender>F</gender> <date_of_birth>12.12.1987</date_of_birth> <doc_type>C</doc_type> <passport_number>1234567890</passport_number> <currency_of_passport>24.03.2023</currency_of_passport> <middlename/> <passenger_id>37667</passenger_id> <nationality>RU</nationality> <email>mail@host.com</email> <Tickets> <Active>0</Active> <Seg/> <Num>5553984070962</Num> <Date>2014-12-09 16:01:00</Date> </Tickets> <Tickets> <Active>1</Active> <Seg/> <Num>5553984070964</Num> <Date>2014-12-09 16:03:00</Date> </Tickets> <PriceInfo> <BaseFare> <Amount>800</Amount> <CurrencyCode>RUB</CurrencyCode> </BaseFare> <TotalFare> <Amount>4270</Amount> <CurrencyCode>RUB</CurrencyCode> </TotalFare> <Commission> <Amount>0</Amount> <CurrencyCode>RUB</CurrencyCode> </Commission> <AirlineCommission> <Amount>0</Amount> <CurrencyCode>RUB</CurrencyCode> </AirlineCommission> </PriceInfo> </Passenger> <Passenger> <passenger_type>ADT</passenger_type> <doc_type>C</doc_type> <middlename/> <passenger_id>37668</passenger_id> <lastname>PETROV</lastname> <name>PETR</name> <gender>M</gender> <date_of_birth>20.12.1984</date_of_birth> <passport_number>1234567899</passport_number> <currency_of_passport>20.12.2029</currency_of_passport> <nationality>RU</nationality> <email>mail@host.com</email> <Tickets> <Active>0</Active> <Seg/> <Num>5553984070963</Num> <Date>2014-12-09 16:01:00</Date> </Tickets> <Tickets> <Active>1</Active> <Seg/> <Num>5553984070965</Num> <Date>2014-12-09 16:03:00</Date> </Tickets> <PriceInfo> <BaseFare> <Amount>800</Amount> <CurrencyCode>RUB</CurrencyCode> </BaseFare> <TotalFare> <Amount>4270</Amount> <CurrencyCode>RUB</CurrencyCode> </TotalFare> <Commission> <Amount>0</Amount> <CurrencyCode>RUB</CurrencyCode> </Commission> <AirlineCommission> <Amount>0</Amount> <CurrencyCode>RUB</CurrencyCode> </AirlineCommission> </PriceInfo> </Passenger> </Passengers> <FlightType>Внутренний</FlightType> <OrderInfo> <Info> <Company>Аэрофлот - Российские авиалинии</Company> <CompanyCode>SU</CompanyCode> <OperatingCompanyCode>FV</OperatingCompanyCode> <StartDate>2014.12.18</StartDate> <StartTime>10:45</StartTime> <StartDayOfWeek>Thursday</StartDayOfWeek> <FlightNumber>6128 (FV6128)</FlightNumber> <StartAirportCode>VKO</StartAirportCode> <StartAirportName>Внуково, Москва</StartAirportName> <StartCountry>Россия</StartCountry> <StartCountryCode>RU</StartCountryCode> <EndAirportCode>LED</EndAirportCode> <EndAirportName>Санкт-Петербург, Пулково</EndAirportName> <EndCountry>Россия</EndCountry> <EndCountryCode>RU</EndCountryCode> <Time>1:30</Time> <Equip> <Name>Airbus 319</Name> <Type>319</Type> </Equip> <ClassType>economy</ClassType> <ClassTypeCode>R</ClassTypeCode> <Meal/> </Info> <Info> <Company>Аэрофлот - Российские авиалинии</Company> <CompanyCode>SU</CompanyCode> <OperatingCompanyCode>FV</OperatingCompanyCode> <StartDate>2014.12.25</StartDate> <StartTime>15:10</StartTime> <StartDayOfWeek>Thursday</StartDayOfWeek> <FlightNumber>6153 (FV6153)</FlightNumber> <StartAirportCode>LED</StartAirportCode> <StartAirportName>Санкт-Петербург, Пулково</StartAirportName> <StartCountry>Россия</StartCountry> <StartCountryCode>RU</StartCountryCode> <EndAirportCode>VKO</EndAirportCode> <EndAirportName>Внуково, Москва</EndAirportName> <EndCountry>Россия</EndCountry> <EndCountryCode>RU</EndCountryCode> <Time>1:30</Time> <Equip> <Name>Airbus 319</Name> <Type>319</Type> </Equip> <ClassType>economy</ClassType> <ClassTypeCode>R</ClassTypeCode> <Meal/> </Info> </OrderInfo> <Remarks>Debit</Remarks></PNR></syntaxhighlight> Ремарка ''<Remarks>Debit</Remarks>'' является не обязательной, означает что заказ был оплачен с помощью способа оплаты «Депозит»;если же заказ был оплачен с использованием депозитного кредита, и депозит ушел в минус даже на 1 руб., то будет ''<Remarks>Credit</Remarks>''. Элемент ''<TotalFare>'' возвращает стоимость уже оплаченного заказа. Если же заказ забронирован, но не оплачен, то значение будет 0 RUB. Элемент ''<CreateDate>'' в зависимости от состояния брони возвращает время окончания бронирования, если бронирование было завершено, иначе возвращает время создания брони. Формат поддерживает возможность передачи нескольких номеров электронных билетов на одного пассажира (в том числе войдированных и аннулированных).</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;"> <?xml version="1.0" encoding="UTF-8"?><order_snapshot xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <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"/> <customer email="cepogilixe@lackmail.net" phone="XXXX9048" name="" corp_code="2806"/> <products> <product> <!--@stamp - валидатор. Парсится из заказа(Сирена и Галилео). Если получить из ГДС не удалось, то передаётся валидатор, настроенный в реквизитах подключения к ГДС.--> <air_ticket_prod prod_id="0" psg_type="A" title="Москва - Ленинград" taxes="1776" fare="400" origin="MOW" service_fee="100" form_owner="SU" validating_carrier="SU" destination="LED" comission="0.4" stamp="92354802"> <air_seg segment_id="0" carrier="SU" flight_number="6128" op_carrier="FV" departure_datetime="2015-01-16 10:45:00" arrival_datetime="2015-01-16 12:15:00" departure_airport="VKO" arrival_airport="LED" fare_basis="RPROWRF"/> </air_ticket_prod> </product> <product> <ral_ticket_prod rsrv_id="2496500" prod_id="200" origin="Киевский вокзал" destination="Внуково, Москва" departure_datetime="2015-01-16 06:45:00" cartype="standart" fare="360"/> </product> <product> <service_prod prod_id="300" provider_type="INSURANCE" provider_id="AlphaInsurance" offer_type="alpha_insurance" ext_id="Z694.198TEST.2774397" price="100" count="1" psgr_id="0"/> </product> <product> <payment_prod price="123"/> </product> </products> <reservations> <reservation rsrv_id="279307" crs="SABRE" rloc="MKQFBZ"/> <reservation rsrv_id="2496500" crs="AeroExpress" rloc="218812"/> </reservations> <passengers> <passenger doc_number="1234567890" psgr_id="0" doc_country="RU" psgr_type="A" doc_type="C" birth_date="1990-01-04" name="IVAN" gender="M" first_name="IVANOV"/> </passengers> <travel_docs> <travel_doc> <air_ticket_doc tkt_oper="TKT" tkt_number="5555871998698" tkt_date="2015-01-13 12:10:50" prod_id="0" psgr_id="0" issuingAgent="2807"/> </travel_doc> <travel_doc> <aex_doc rsrv_id="2496500" prod_id="200" psgr_id="0" tkt_oper="TKT" tkt_date="2015-01-13 12:10:54" tkt_number="394612"/> </travel_doc> <travel_doc> <insur_doc main_prod_id="0" prod_id="300" psgr_id="0" tkt_oper="TKT" tkt_date="2015-01-13 12:10:54" tkt_number="Z694.198TEST.2774397"/> </travel_doc> </travel_docs> <payments> <payment pay_id="117607839" pay_oper="PAY" pay_time="2015-01-13 12:09:52" psp_code="024" psp_name="Rapida" psp_pay_id="" pay_system="ES" amount="2859" fop="CA"/> </payments></order_snapshot></syntaxhighlight> *service_fee — сбор агентский (только сервисный сбор, '''не включает''' в себя сбор за эквайринг).*comission - комиссия АК*stamp - код Валидатора в ПСС, берется из настроек Немо, если в настройках он не указан, то не передается.*ord_id — идентификатор заказа в НЕМО*corp_ord_id — PNR из ГДС*site — идентификатор агентства в Немо*payment pay_id — номер биллинга Немо.*pay_system — код платежной системы**SB — для сбербанка**ES — для Рапиды**UNT — для Юнителлера*cardholder — держатель карты.*expire_date — срок действия карты, у тех ПШ, что не приходит в ответе — пустой.*card_number — номер карты, в формате: 415481XXXXXX1734*approval_code — код подтверждения.*payment_prod price — сбор за эквайринг.*main_prod_id - ID основного продукта (авиабилета).*tkt_number - номер полиса для пассажира;*tkt_date - дата и время операции; *tkt_oper - тип операции (TKT/REF).*provider_type - тип поставщика (INSURANCE).*provider_id - AlphaInsurance;*offer_type - название полиса;*price - цена полиса для пассажира;*rloc - номер заказа у поставщика. </div></div> === Выгрузка заказа для компонента «Отели» ===Для компонента '''«Отели»''' доступна выгрузка заказов в формате Nemo. <div class="toccolours mw-collapsible mw-collapsed" style="width:1000px">==== Формат Nemo ====<div class="mw-collapsible-content"><syntaxhighlight lang="xml" line enclose="div" style="font-size:9pt;background: #F9F9F9; border: 1px dashed #2F6FAB; padding: 10px 5px; margin: 10px 0;"><?xml version="1.0" encoding="UTF-8"?><PNR> <Common> <id>263462</id> <Type>HOTELS</Type> <Service>ACADEM</Service> <Locator>3028655</Locator> <BeginDateTime>2014.04.15-00:00</BeginDateTime> <EndDateTime>2014.04.16-00:00</EndDateTime> <TotalPrice> <Amount>1950</Amount> <CurrencyCode>RUB</CurrencyCode> </TotalPrice> <UserId>123</UserId> <EEUserId /> <UserLogin>userLogin</UserLogin> <GroupId>332</GroupId> <UserStatus>Менеджер</UserStatus> <DateCreate>2014.03.21-16:11</DateCreate> </Common> <Payment> <Status>booked</Status> <PenaltyDate>2014.04.13-00:00</PenaltyDate> <Timelimit>2014-04-13 00:00:00</Timelimit> <Charge> <Amount>0</Amount> <CurrencyCode>RUB</CurrencyCode> </Charge> <Book> <Amount>1950</Amount> <CurrencyCode>RUB</CurrencyCode> </Book> <Penalty> <Amount>0</Amount> <CurrencyCode>RUB</CurrencyCode> </Penalty> <Total> <Amount>1950</Amount> <CurrencyCode>RUB</CurrencyCode> </Total> <Commission> <Amount>112</Amount> <CurrencyCode>RUB</CurrencyCode> </Commission> <PaidValue> <Amount>0</Amount> <CurrencyCode>RUB</CurrencyCode> </PaidValue> </Payment> <Client> <LastName>Сидоров</LastName> <Name>Владимир</Name> <MiddleName>Константинович</MiddleName> <Number>1806326598</Number> <Birth>1987-05-20</Birth> <Email>mail@host.com</Email> <Phone>+79871234567</Phone> </Client> <Passengers> <Passenger> <nationality>RU</nationality> <lastname>IVANOV</lastname> <name>IVAN</name> </Passenger> </Passengers> <Info> <Name>Интурист</Name> <City> <Code>34</Code> <Name>Великий Новгород</Name> </City> <Location /> <StarRating>3</StarRating> <Days>2</Days> <Nights>1</Nights> <CheckInDate>2014.04.15</CheckInDate> <CheckOutDate>2014.04.16</CheckOutDate> <CheckInTime>14:00</CheckInTime> <CheckOutTime>12:00</CheckOutTime> <OnRequest>false</OnRequest> </Info> <Rooms> <Room> <Name>Двухместный стандарт (две кровати)</Name> <Type>SNGL</Type> <FareId>1</FareId> </Room> </Rooms> <Fares> <Fare> <Id>1</Id> <Price> <Amount>1950</Amount> <CurrencyCode>RUB</CurrencyCode> </Price> <Meals>Завтрак "Шведский стол",Отсутствует</Meals> <Description>Одноместный</Description> </Fare> </Fares> <CancelCharges> <Charge> <DateFrom>2014.04.13-00:00</DateFrom> <DateTo>2014.04.15-00:00</DateTo> <Amount>1488</Amount> <CurrencyCode>RUB</CurrencyCode> </Charge> </CancelCharges> <ModifyCharges /> <ModificationMethods> <Method>MOD_PASS_NAMES</Method> <Method>MOD_DATES</Method> </ModificationMethods></PNR></syntaxhighlight></div></div> === Выгрузка заказа для компонента «ЖД» ===Для компонента '''«ЖД»''' доступна выгрузка заказов в формате Nemo. <div class="toccolours mw-collapsible mw-collapsed" style="width:1000px">==== Формат Nemo ====<div class="mw-collapsible-content"><syntaxhighlight lang="xml" line enclose="div" style="font-size:9pt;background: #F9F9F9; border: 1px dashed #2F6FAB; padding: 10px 5px; margin: 10px 0;"><?xml version="1.0" encoding="UTF-8"?><PNR> <Common> <id>123456</id> <Type>TRAINS</Type> <Service>UFS</Service> <Locator>64345987</Locator> <BeginDateTime>2014.04.26-00:15</BeginDateTime> <EndDateTime>2014.04.26-13:33</EndDateTime> <TicketingDateTime>2014.06.06-15:10</TicketingDateTime> <VoidDateTime>2014.06.07-14:19</VoidDateTime> <TotalPrice> <Amount>57505.8</Amount> <CurrencyCode>RUB</CurrencyCode> </TotalPrice> <UserId>123</UserId> <EEUserId /> <UserLogin>mikhalevtur</UserLogin> <GroupId>122</GroupId> <UserStatus>Менеджер</UserStatus> <DateCreate>2014.04.24-15:03</DateCreate> </Common> <Payment> <Title>Testpay</Title> <Method>Testpay</Method> <BillingId>117603370</BillingId> <Date>2014-04-24 15:10:12</Date> <CreateDate>2014-06-06 15:10:00</CreateDate> <Status>cancelled</Status> <PenaltyDate /> <Timelimit>2014-04-24 15:18:01</Timelimit> <Charge> <Amount>52278</Amount> <CurrencyCode>RUB</CurrencyCode> </Charge> <Book> <Amount>5227.8</Amount> <CurrencyCode>RUB</CurrencyCode> </Book> <Penalty> <Amount>0</Amount> <CurrencyCode>RUB</CurrencyCode> </Penalty> <TotalAgencyChargeForRefund> <Amount>100</Amount> <CurrencyCode>RUB</CurrencyCode> </TotalAgencyChargeForRefund> <Total> <Amount>57505.8</Amount> <CurrencyCode>RUB</CurrencyCode> </Total> <PaidValue> <Amount>0</Amount> <CurrencyCode>RUB</CurrencyCode> </PaidValue> </Payment> <Client> <LastName>Сидоров</LastName> <Name>Владимир</Name> <MiddleName>Константинович</MiddleName> <Number>1806326598</Number> <Birth>1987-05-20</Birth> <Email>mail@host.com</Email> <Phone>+79871234567</Phone> </Client> <Passengers> <Passenger> <name>Владимир</name> <middlename>Константинович</middlename> <phone> <country /> <city /> <number>+79271031610</number> <expansion /> </phone> <email>mlsdsar@gmail.com</email> <nationality>RU</nationality> <passenger_type>ADT</passenger_type> <lastname>Сидоров</lastname> <doc_type>C</doc_type> <passport_number>1806326598</passport_number> <passenger_id>1</passenger_id> <gender>M</gender> <date_of_birth>20.04.1984</date_of_birth> <TotalPrice>28752.9</TotalPrice> <FarePrice>2613.9</FarePrice> <Charge>26139</Charge> <RefundMoney>8649.3</RefundMoney> <ChargeForRefund>100</ChargeForRefund> <TicketNumber>74944708487545</TicketNumber> <SeatNumber>033</SeatNumber> <HasSeat>true</HasSeat> </Passenger> <Passenger> <nationality>RU</nationality> <middlename>Константинович</middlename> <passenger_type>ADT</passenger_type> <lastname>Сидоров</lastname> <name>Иван</name> <doc_type>C</doc_type> <passport_number>1806326554</passport_number> <passenger_id>2</passenger_id> <gender>M</gender> <date_of_birth>05.04.1984</date_of_birth> <TotalPrice>28752.9</TotalPrice> <FarePrice>2613.9</FarePrice> <Charge>26139</Charge> <TicketNumber /> <SeatNumber>034</SeatNumber> <HasSeat>true</HasSeat> </Passenger> </Passengers> <Info> <trainNumber>098ХА</trainNumber> <trainName /> <departureStation>МОСКВА КАЗ</departureStation> <arrivalStation>КАЗАНЬ ПАС</arrivalStation> <trainCategory>1</trainCategory> <beginStation>Москва</beginStation> <endStation>Казань</endStation> <startDate>2014-04-26 00:15:00</startDate> <endDate>2014-04-26 13:33:00</endDate> <timeInRoad>47880</timeInRoad> <carNumber>8</carNumber> <carType>4</carType> <choosenSeats> <type> <lower>1</lower> </type> <type> <upper>1</upper> </type> <type> <lower_side>0</lower_side> </type> <type> <upper_side>0</upper_side> </type> <type> <undefined>0</undefined> </type> </choosenSeats> <choosenRange> <start>0</start> <end>0</end> </choosenRange> <serviceClass>В стоимость входит - постельное белье. Наличие установки кондиционирования воздуха не гарантировано.</serviceClass> </Info></PNR></syntaxhighlight> '''Элемент PNR'''Элемент '''PNR''' — Passenger Name Record — запись, состоящая из группы отдельных элементов (полей), содержащих информацию об одном или более пассажирах, путешествующих вместе, и деталях путешествия.{| style="width: 800px" class="wikitable"|-! scope="col" width="200" | Элемент! scope="col" width="300" | Описание! scope="col" width="300" | Допустимые значения|-| Common| Общая информация по заказу.| Элементы id, Type, Service, Locator, BeginDateTime, EndDateTime, TicketingDateTime, TotalPrice, UserId, EEUserId, UserLogin, GroupId, UserStatus, DateCreate.|-| Payment| Информация о стоимости, штрафах, статусе заказа.| Элементы Status, PenaltyDate, Timelimit, Charge, Book, Penalty, Total, PaidValue.|-| Client| Информация о заказчике.| Элементы Name, MiddleName, Number, Birth, Email, Phone.|-| Passengers| Записи о пассажирах.| Элементы Passenger.|-| Info| Типовая информация по заказу в контексте услуги.| Элементы trainNumber, trainName, departureStation, arrivalStation, trainCategory, beginStation, endStation, startDate, endDate, timeInRoad, carNumber, carType, choosenSeats, choosenRange, serviceClass.|} '''Элемент Common'''{| style="width: 800px" class="wikitable"|-! scope="col" width="200" | Элемент! scope="col" width="300" | Описание! scope="col" width="300" | Допустимые значения|-| id| Номер заказа в Немо.| Число. Пример: 268281.|-| Type| Тип услуги.| Строка: Пример: FLIGHTS.<br/>Допустимые значения: <ul><li>FLIGHTS — авиа,</li><li>HOTELS — отели,</li><li>TRAINS — ЖД.</li></ul>|-| Service| Поставщик услуги.| Строка. Пример: UFS.|-| Locator| Идентификатор в системе поставщика.| Число. Пример: 65525140.|-| BeginDateTime| Дата и время отправления первого сегмента.| Дата и время. Пример: 2014.03.06-00:15.|-| EndDateTime| Дата и время прибытия последнего сегмента.| Дата и время. Пример: 2014.03.06-13:33.|-| TicketingDateTime| Дата и время выписки билета.| Дата и время. Пример: 2014.10.17-17:23|-| VoidDateTime| Дата и время возврата билета.| Дата и время. Пример: 2014.10.17-17:23|-| TotalPrice| Общая стоимость заказа.| Элементы Amount — номинал стоимости, CurrencyCode — валюта стоимости.|-| UserId| Идентификатор пользователя в системе Немо, оформившего заказ.| Число. Пример: 123.|-| UserLogin| Логин пользователя в системе Немо, оформившего заказ.| Строка. Пример: userLogin.|-| GroupId| Идентификатор группы пользователя в системе Немо, оформившего заказ.| Число. Пример: 122.|-| UserStatus| Тип пользователя в системе Немо.| Строка. Пример: Менеджер.|-| DateCreate| Дата и время резервирования в системе поставщика.| Дата и время. Пример: 2014.03.05-15:08|} '''Элемент TotalPrice'''{| style="width: 800px" class="wikitable"|-! scope="col" width="200" | Элемент! scope="col" width="300" | Описание! scope="col" width="300" | Допустимые значения|-| Amount| Номинал.| Число. Пример: 1884.|-| CurrencyCode| Валюта.| Строка (Код ISO 4217 alfa-3). Пример: RUB.|} '''Элемент Payment'''{| style="width: 800px" class="wikitable"|-! scope="col" width="200" | Элемент! scope="col" width="300" | Описание! scope="col" width="300" | Допустимые значения|-| Title| Название платежного шлюза<sup>*</sup>.| Строка. Пример: Testpay.|-| Method| Тип формы оплаты<sup>*</sup>.| Строка. Пример: Testpay.|-| BillingId| Идентификатор транзакции Немо.| Строка. Пример: 117603370.|-| Date| Дата и время оплаты платежной транзакции Немо.| Строка. Пример: 2014-04-24 15:10:12.|-| CreateDate| Дата и время создания платежной транзакции Немо.| Строка. Пример: 2014-06-06 15:10:00.|-| Status| Статус заказа в системе Немо.| Строка. Пример: booked.<br/>Допустимые значения: <ul><li>pending — в ожидании,</li><li>booked — зарезервирован,</li><li>ticket — выписан,</li><li>cancelled — отменен.</li></ul>|-| PenaltyDate| Дата и время наступления штрафных санкций.| Дата и время. Пример: 2014-03-05 15:23:40.|-| Timelimit| Таймлимит на оплату и подтверждение заказа.| Дата и время. Пример: 2014-03-05 15:23:40.|-| Charge| Сбор агентства.| См. элемент Common.TotalPrice.|-| Book| Тариф.| См. элемент Common.TotalPrice.|-| Penalty| Штраф. <br/><span style="background-color:#fff0f5;">'''<span style="color:#ff0000;">Внимание!</span>''' На данный момент параметр неактуален и при выгрузке всегда принимает нулевое значение.</span>| См. элемент Common.TotalPrice.|-| TotalAgencyChargeForRefund| Общий сбор агентства за возврат.| См. элемент Common.TotalPrice.|-| Total| Общая стоимость.| См. элемент Common.TotalPrice.|-| PaidValue| Оплачено.| См. элемент Common.TotalPrice.|} <sup>*</sup> — список возможный платежных шлюзов:<br/>Acquiro, Chronopay, Copayco, CourierNew, Deposit, EasyPay, GatelineNew, ITransfer, Invoice, Offices, PayU, Payture, Platron, PrivatBank, Qiwi, Rapida, Receipt, Sberbank, Sirena, Sirena2, UnitellerNew, WebMoney. '''Элемент Client'''{| style="width: 800px" class="wikitable"|-! scope="col" width="200" | Элемент! scope="col" width="300" | Описание! scope="col" width="300" | Допустимые значения|-| Name| Фамилия и имя заказчика.| Строка. Пример: Иванов Иван.|-| MiddleName| Отчество заказчика.| Строка. Пример: Иванович.|-| Number| Серия и номер документа.| Строка. Пример: 1806123456.|-| Birth| Дата рождения заказчика.| Дата. Пример: 1984-06-30.|-| Email| Адрес электронной почты заказчика.| Строка. Пример: client@host.com.|-| Phone| Номер телефона заказчика.| Строка. Пример: +74951234567|} '''Элемент Passenger'''{| style="width: 800px" class="wikitable"|-! scope="col" width="200" | Элемент! scope="col" width="300" | Описание! scope="col" width="300" | Допустимые значения|-| lastname| Фамилия пассажира.| Строка. Пример: Сидоров.|-| name| Имя пассажира.| Строка. Пример: Владимир.|-| middlename| Отчество пассажира.| Строка. Пример: Константинович.|-| doc_type| Тип документа.| Строка. Пример: C.<br/>Допустимые значения:<ul><li>C — Российский паспорт</li><li>P — Заграничный паспорт</li><li>A — Иностранный документ</li><li>S — Паспорт моряка</li><li>M — Военный билет</li><li>B — Свидетельство о рождении</li></ul>|-| passport_number| Серия и номер документа.| Строка. Пример: 1806123456. |-| gender| Пол пассажира.| Строка. Пример: M.<br/>Допустимые значения:<ul><li>M — мужской</li><li>F — женский</li></ul>|-| date_of_birth| Дата рождения пассажира.| Дата. Пример: 20.05.1987.|-| nationality| Гражданство пассажира.| Строка (ISO 3166-1 Alpha-2). Пример: RU.|-| passenger_type| Тип пассажира.| Строка. Пример: ADT.<br/>Допустимые значения:<ul><li>ADT — взрослый</li><li>CLD — ребенок до 10 лет<sup>*, **</sup></li><li>INF — ребенок до 5 лет<sup>*, ***</sup></li></ul>|-| passenger_id| Порядковый номер пассажира в заказе.| Число. Пример: 2.|-| TotalPrice| Общая стоимость билета со сборами для данного пассажира.| Число. Пример: 1934.|-| FarePrice| Стоимость по тарифу тарифу.| Число. Пример: 1884.|-| Charge| Сбор агентства.| Число. Пример: 50.|-| RefundMoney| Сумма к возврату. Значение, полученное от поставщика, уменьшенное на сумму сбора агентства за возврат.| Число. Пример: 1643.|-| ChargeForRefund| Cбор агентства за возврат.| Число. Пример: 100.|-| TicketNumber| Номер билета.| Число. Пример: 73944708472624.|-| SeatNumber| Номер места.| число. Пример: 21.|-| TariffType| Наименование тарифа.| Строка. Пример: ПОЛНЫЙ.|-| HasSeat| Занимает ли пассажир отдельное место.| Допустимые значения:<ul><li>true — с местом,</li><li>false — без места.</li></ul>|} <sup>*</sup> — Не включая верхний предел. Возраст ребенка определяется на день совершения поездки. <sup>**</sup> — Нижний и верхний пределы определяются видом сообщения:* от 5 до 10 лет — Внутригосударственное сообщение, а также международное сообщение со странами-участниками СНГ, Литовской, Латвийской, Эстонской Республиками, Республикой Абхазия.* от 6 до 17 лет — Международное сообщение в дальнем зарубежье по глобальным ценам. Направление Россия-Финляндия.* от 4 до 12 лет — Международное сообщение в дальнем зарубежье по глобальным ценам. Направление Восток-Запад. <sup>***</sup> — Верхний предел определяется видом сообщения:* до 5 лет — Внутригосударственное сообщение, а также международное сообщение со странами-участниками СНГ, Литовской, Латвийской, Эстонской Республиками, Республикой Абхазия.* до 6 лет — Международное сообщение в дальнем зарубежье по глобальным ценам. Направление Россия-Финляндия.* до 4 лет — Международное сообщение в дальнем зарубежье по глобальным ценам. Направление Восток-Запад. '''Элемент Passenger'''{| style="width: 800px" class="wikitable"|-! scope="col" width="200" | Элемент! scope="col" width="300" | Описание! scope="col" width="300" | Допустимые значения|-| trainNumber| Номер поезда.| Строка. Пример: 098ХА.|-| trainName| Имя фирменного поезда. Приходит от поставщика.| Строка. Пример: Россия.|-| departureStation| Станция отправления пассажира.| Строка. Пример: МОСКВА КАЗ.|-| arrivalStation| Станция прибытия пассажира.| Строка. Пример: КАЗАНЬ ПАС.|-| trainCategory| Тип поезда.| Число. Пример: 1.<br/>Допустимые значения:<ul><li>0 — неизвестный тип поезда</li><li>1 — скорый поезд</li><li>2 — фирменный поезд</li><li>3 — скоростной поезд</li><li>4 — фирменный скоростной поезд</li></ul>|-| beginStation| Начальная станция в маршруте поезда.| Строка. Пример: Казань|-| endStation| Конечная станция в маршруте поезда.| Строка. Пример: Москва|-| startDate| Дата и время отправления со станции отправления пассажира.| Дата и время. Пример: 2014-03-06 00:15:00.|-| endDate| Дата и время прибытия со станции отправления пассажира.| Дата и время. Пример: 2014-03-06 13:33:00. |-| timeInRoad| Время в пути от станции отправления до станции прибытия пассажира.| Число (секунд). Пример: 47880.|-| carNumber| Номер вагона.| Число. Пример: 7.|-| carType| Тип вагона.| Число. Пример: 1.<br/>Допустимые значения:<ul><li>1 - общий вагон</li><li>2 - сидячий вагон</li><li>3 - плацкарта</li><li>4 - купе</li><li>5 - люкс</li><li>6 - мягкий</li><li>7 - неизвестный тип</li></ul>|-| choosenSeats| Элемент описывает количество нижних, нижних боковых, верхних, верхних боковых мест.| Элементы type.|-| choosenRange| Выбранный диапазон мест в вагоне.| Элементы start, end.|-| serviceClass| Описание услуг. Приходит от поставщика.| Текст. Пример: В стоимость входит - постельное белье. Наличие установки кондиционирования воздуха не гарантировано.|} '''Элемент type'''{| style="width: 800px" class="wikitable"|-! scope="col" width="200" | Элемент! scope="col" width="300" | Описание! scope="col" width="300" | Допустимые значения|-| lower| Количество нижних мест.| Число. Пример: 1.|-| upper| Количество верхних мест.| Число. Пример: 0.|-| lower_side| Количество нижних боковых мест.| Число. Пример: 1.|-| upper_side| Количество верхних боковых мест.| Число. Пример: 1.|-| undefined| Количество мест неопределенного типа.| Число. Пример: 0.|} '''Элемент choosenRange'''{| style="width: 800px" class="wikitable"|-! scope="col" width="200" | Элемент! scope="col" width="300" | Описание! scope="col" width="300" | Допустимые значения|-| start| Начало выбранного диапазон мест в вагоне<sup>*</sup>.| Число. Пример: 4.|-| end| Конец выбранного диапазон мест в вагоне<sup>*</sup>.| Число. Пример: 17.|} <sup>*</sup> — Если диапазон не был зада пользователем на этапе выбора мест, то поля start и end будут содержать нули. </div></div> === Пакетный экспорт заказов по категориям в формате Nemo ===Сервис выгрузки заказов позволяет экспортировать интересующие выборки по заказам в формате XML. Например, различных компонент можно выбрать все заказы по дате бронирования и получить информацию по ним прочитать в XML-виде. ==== Экспорт заказов под авторизованным пользователем (в личном кабинете) ====статье [[Файл:Экспортировать_в_XML_(ЛК).png|400px|thumb|right|Фильтры пакетного экспорта заказов в личном кабинете]Выгрузка]Порядок пользования сервисом:# Перейти в личный кабинет# В адресной строке браузера к текущему адресу дописать параметр '''''&exportxml'''''. Должен получиться адрес вида: <syntaxhighlight lang="text" enclose="div" style="font-size:9pt;background: #F9F9F9; border: 1px dashed #2F6FAB; padding: 10px 5px; margin: 10px 0; width: 800px;">http://DOMAIN/index.php?go=poffice/table&exportxml</syntaxhighlight># После обновления страницы под блоком фильтров должна появиться кнопка '''«Экспортировать в XML»'''. При ее нажатии на странице появляется предложение сохранить в XML-файл выборку отфильтрованных заказов. Выгружаются только заказы выбранного пользователя/компании с учетом примененных параметров фильтра. Пользователь может произвести выгрузку только своих заказов. === Пакетный экспорт заказов по категориям в формате СОФИ ===Для использования выгрузки заказов в формате СОФИ у агентства должен быть включен модуль "Выгрузка заказов Софи" и заданы настройки:* "Тип выгрузки СОФИ" должен иметь значение "Выгрузка заказов СОФИ" или должна быть включена настройка "Выгрузка одновременно и Nemo, и Софи",* Должен быть указан "Url скрипта для выгрузки в формате СОФИ",* Должен быть указан "Код сайта в системе СОФИ". Выгрузка конкретного заказа: http://DOMAIN/booking__sofi_export_bookings&booking_id=123456 где booking_id — номер заказа в системе Немо. Выгрузка заказов забронированных за определенный период: http://DOMAIN/booking__sofi_export_bookings&date_begin=01.01.2014&date_end=01.01.2015 где [date_begin; date_end] — период бронирования заказа (забронированные заказы с датой бронирования совпадающей с началом/окончанием периода, заданного в запросе, попадают в экспорт), формат — дд.мм.гггг. ==Фиксация оплаты внешним запросом==!!! не нашел, есть просто фиксация оплаты, но это вроде немного не то !!! ==API универсального платежного шлюза==!!! сказано спросить у КШ, я спросил, у него нет информации !!!
== API Синхронизации пользователей и субагентов ==
Назначение данного модуля — обеспечение взаимодействия между сторонней программой (например, системой автоматизации туроператора "САМО-тур") и Nemo в части синхронизации списка B2B-пользователей.
Модуль является компонентом, включаемым и отключаемым из административной части.
==API Кроссавторизации==
'''Авторизация пользователей из внешних систем''' — Система Nemo позволяет обращаться к ней как базе пользователей для авторизации из других систем (например форума на сайте, собственного ПО компании и т.п)
Для этого нужно подключиться к веб-службе авторизации, WSDL-описание которой располагается по адресу:
</div></div>
==Передача параметров в форму поиска (FastSearch)==
В системе Nemo имеется возможность перенаправлять пользователей на страницу с уже заполненными параметрами поиска или сразу напрямую на результаты поиска.
<!-- Т.к. это внутренний формат обмена данными между Немо и одним клиентом, то данную инфу скроем в комментарии
==Проверка в сторонней системе возможности тикетинга==
При выписки билета через стороннюю систему 1С, отправляется запрос "GetDebtCounterparty", который спрашивает, можно ли с счета в 1С списать средства для оплаты. В ответе содержится заключение от 1С, в случае если ошибок нет, то в ответе будет
<pre><m:Opportunity>Да</m:Opportunity></pre>
Пример запроса "GetDebtCounterparty"
</pre>
</div></div>
-->