Открыть главное меню

Изменения

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

95 186 байт убрано, 14:43, 28 ноября 2018
м
API Авиабилетов
==API Поиска авиабилетов===== Подключение =Авиабилетов==
Чтобы авторизоваться в системе, в запросе необходимо указать APIKey и ClientID. Эти данные можно узнать в разделе Администрирование - Веб-сервис. Авторизация. Там же можно включить/выключить нотификацию для действий, совершенных через АПИ.
 
=== API Поиска авиабилетов ===
Это сервис внутри Nemo, который позволяет получить результаты поиска.
Для подключения к веб-службе поиска авиабилетов необходимо открыть доступ нужному пользователю. Это можно сделать в разделе '''«Администрирование»''' ⇨ '''«Веб-служба. Авторизация»'''.
После добавления пользователяПодробнее можно узнать в специальной статье [[Веб-служба поиска авиабилетов]] === API Бронирования авиабилетов ===Сервис позволяет забронировать/войдировать авиабилет с использованием API, описание подключения, ему будут присвоены Номер (ClientId) запроса, ответов находится в этой статье [[Веб-служба бронирования]] === API Выписки авиабилетов === Агентский АПИ выписки позволяет определить валидирующего перевозчика и значение комиссии от авиакомпании для брони, а также запустить процедуру выписки билета. [[Веб-служба выписки]] === API ключ клиентаОплаты === Сервис внутри Nemo, которые нужно использовать который предназначен для подключениявыполнения различных операций, относящихся к оплате заказов.[[Агентские АПИ оплаты]]
WSDL находится по адресу: http://CLIENT_DOMAIN/nemoflights/wsdl.php?for=SearchFlights== API Дополнительных запросов авиабилетов ===
К дополнительных запросам относятся проверка на доступность, запрос на обновление заказа, чтение тарифных правил. [[Дополнительные запросы АПИ авиабилетов]] === Общий формат запроса / ответа поиска Используемые параметры ===
<div class="toccolours mw-collapsible mw-collapsed" style="width:1000px">
===== Запрос =Параметры, используемые в запросах ====
<div class="mw-collapsible-content">
<syntaxhighlight langtable border="xml1" line enclose="div" style> <tr bgcolor="font-size:9pt;background: #F9F9F9; border: 1px dashed #2F6FAB; padding: 10px 5px; margin: 10px 0;CCCCCC"> <th> Имя элемента <soapenv:Envelope xmlns:soapenv="http:/th><th> Обязательный </schemas.xmlsoap.orgth><th> Тип </soapth><th> Описание </envelopeth> </" xmlns:ver="http:tr> <tr>  <td>BookFlight </td><td>да </CLIENT_DOMAINtd><td>сложный </nemoflights/?version%3D1.0%26for%3DSearchFlights"td><td> Контейнер для тела запроса бронирования<soapenv:Header/td> <soapenv:Body/tr> <ver:searchtr> <RequestBintd> FlightId <Request/td> <SearchFlights LinkOnlytd class="?col1"> да </td><td>число</td><!--LinkOnly — Позволяет управлять выдачей результатов. true — вернуть только ссылку на результаты поискаtd >Id перелёта для которого будет производится бронирование(поиск тарифных правил, без перелётов (занимает меньше временипроверка доступности), false — полная выдача, ссылки и перелёты.--</td> <ODPairs Type="?" Direct="?" AroundDates="?"/tr> <!--Type — тип перелёта, возможные значения: OW — туда, RT — туда-обратно, CR — сложный маршрут. Для перелета tr> туда-обратно или сложного маршрута необходимо добавить еще один или несколько тэгов ODPair, примеры далее-- <td> CurrencyCode <!--Direct — искать только прямые перелёты, возможные значения: true/false--td><td> нет<!--AroundDates — поиск по окружным датам, количество дней +/- от даты заездаtd><td>строка</возвращения, значения: 0, 1, 3. Применим только td><td>Трёх буквенный код валюты (обязателен для типов перелёта комиссии в одну сторону(OWвалюте) и туда-обратно(RT)--</td> <!--Zero or more repetitions:--/tr> <ODPairtr> <DepDatetd>?Agency </DepDatetd><td> да <!--DepDate — дата вылета, в формате ГГГГ-MM-ДД--/td> <DepAirp CodeType="IATA"td>?сложный </DepAirptd> <!--DepAirp — аэропорт вылета, IATA код--td> Информация об агентстве<ArrAirp CodeType="IATA"/td>?  </ArrAirptr> <!--ArrAirp — аэропорт прилёта, IATA код--tr> <td>Name </ODPairtd> </ODPairstd> да <Travellers/td> <!--Zero or more repetitions:--td> строка <Traveller Type="?" Count="?"/td> <!--Type — тип пассажира, возможные значения: ADT — взрослые, CNN — дети, INF — младенцы, INS — младенцы с местом--td> Название агентства<!--Count — количество пассажиров--/td> </Travellerstr> <Restrictionstr> <ClassPreftd>?Telephone </ClassPreftd> <!--необязательный--td> нет <!--ClassPref — предпочитаемый класс поиска, возможные значения: economy, business, first. Если не заполнять, то будет произведен поиск эконом класса--/td> <OnlyAvailtd>?сложный </OnlyAvailtd> <!--необязательный--td> Контактный телефон агентства<!--OnlyAvail — искать только доступные, возможные значения: true/false--td> <AirVPrefs/tr> <!--Zero or more repetitions:--tr> <AirVPref Code="?" Include="?" td>Type="IATA"</td><td>да </td><td> строка <!--необязательный--/td> <!td>Тип номера, возможные значения: M -мобильный, H -Code — код авиакомпаниидомашний, SUB - рабочий, FV и т.п.-A -агентство</td> <!--Include — включить или исключить авиакомпанию из результатов: true — включить, false — исключить--/tr> </AirVPrefstr> <IncludePrivateFaretd>?PhoneNumber </IncludePrivateFaretd> <!--необязательный--td> да <!--IncludePrivateFare — искать цены для агентства, если true — то включаем приватные, false — публичные--/td> <CurrencyCodetd>?строка </CurrencyCodetd><td> Номер телефона<!--необязательный--/td> <!--CurrencyCode — код валюты, например: RUB, EUR--/tr> </Restrictionstr> <td>CountryAccessCode </SearchFlightstd> <td>нет </Requesttd><td> строка <Source/td> <ClientIdtd>?Код страны</ClientIdtd> <!--ClientId — ID клиента в системе Nemo. Можно посмотреть/добавить в разделе tr> "Администрирование" ? "Веб-служба. Авторизация".-- <tr> <APIKeytd>?AreaCityCode </APIKeytd><td> нет <!--APIKey — секретный ключ доступа к API Nemo. Можно посмотреть/добавить в разделе "Администрирование" ? "Веб-служба. Авторизация".--td> <Languagetd>?строка</Languagetd> <!--Language — язык, например: RU--td> Код региона/города<Currency/td>?  </Currencytr> <!-- Currency — валюта, например: RUB, EUR--tr> <td>Address</td><ShowNamestd>?да </ShowNamestd> <!-- ShowNames — отображение названий аэропортов, авиакомпаний и воздушных судов: true - отображать, false - не отображать. Возвращает значение на том языке, который был указан в запросе. Для RU - русский вариант, для UKR, EN, ES - латинский вариант. Опциональный элемент. --td> сложный </Sourcetd><td class="col3"> Адрес агентства</RequestBintd> </ver:searchtr> </soapenv:Bodytr> <td>City</soapenv:Envelopetd><td>да </syntaxhighlighttd><td class="col2">строка </divtd><td>Город, в котором расположено агентство</divtd>
<div class="toccolours mw-collapsible mw-collapsed" style="width:1000px"/tr> <tr> <td>StreetAddress </td><td>нет </td><td>сложный </td><td>Адрес агентства в городе (улица, дом, корпус, офис и т.д.)</td> </tr> <tr> <td>PostalCode </td><td>нет </td><td>строка </td><td>Почтовый код, индекс.</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%3DSearchFlights" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <SOAP-ENV:Body> <ns1:searchResponse> <ResponseBintr> <Responsetr> <SearchFlightstd> <Flights SearchId="?" ResultURL="?"> <!--SearchId — номер процесса поиска в Nemo--> <!--ResultURL — ссылка на страницу просмотра результатов на сайте агентства--> <Flight FlightId="?"> <!--FlightId — Id перелёта в системе Nemo--> <WebService>?CountryCode </WebService> <!--WebService — поставщик перелёта--td> <ValCompanytd>?нет </ValCompany> <!--ValCompany — код авиакомпании, являющейся валидирующим перевозчиком, IATA--td> <URLtd>?строка </URLtd> <!--URL — ссылка на бронирование конкретного перелета--td> <Segments> <Segment SegNum="?" SegGroupNum="?"> <!--SegNum — номер сегмента в перелёте--> <!--SegGroupNum – номер плеча перелёта--> <DepAirp CodeType="IATA" Name="?">?</DepAirp> <!--DepAirp — аэропорт отправленияКод страны (RU, например: MOW — любой аэропорт в г.Москва или SVO — Шереметьево. Name - название аэропорта отправления--> <DepTerminal>?</DepTerminal> <!--DepTerminal — терминал пункта отправленияUA, если пустое значение, то в аэропорту всего 1 терминал--> <ArrAirp CodeType="IATA" Name="?">?</ArrAirp> <!--ArrAirp — аэропорт прибытияUS и т. Name - название аэропорта прибытия--> <ArrTerminal>?</ArrTerminal> <!--ArrTerminal — терминал пункта прибытия, если пустое значение, то в аэропорту всего 1 терминал--> <OpAirline>?</OpAirline> <!--OpAirline — авиакомпания перевозчик, например: SU — Аэрофлот--> <OpAirlineName>?</OpAirlineName> <!--OpAirlineName — название авиакомпании перевозчика, например: Аэрофлот - Российские авиалинии --> <MarkAirline>?</MarkAirline> <!--MarkAirline — авиакомпания, продающая перелёт--> <MarkAirlineName>?</MarkAirlineName> <!--MarkAirlineName — название авиакомпании, продающей перелёт--> <FlightNumber>?</FlightNumber> <!--FlightNumber — номер рейса--> <AircraftName>?</AircraftName> <!--AircraftName — название воздушного суднад. Например: Airbus 320--> <AircraftType>?)</AircraftType> <!--AircraftType — тип воздушного судна, код--td> <DepDateTime>? </DepDateTimetr> <!--DepDateTime — дата и время отправления, формат ГГГГ-MM-ДДTЧЧ:ММ:СС--tr> <ArrDateTimetd>?Travellers </ArrDateTimetd> <!--ArrDateTime — дата и время прибытия, формат ГГГГ-MM-ДДTЧЧ:ММ:СС--td> <StopNum>?да </StopNumtd> <!--StopNum — количество остановок--td> <BookingCodes> <BookingCode ClassType="?"> <!--ClassType — класс перелета, например: economy--> <BookingCode>?сложный </BookingCodetd> <!--BookingCode — код класса бронирования, у разных авиакомпаний один и тот же класс может записываться разными литерами, например: L--td> </BookingCode> </BookingCodes> <FlightTime>?</FlightTime> <!--FlightTime — время Контейнер для информации о пассажирах (для которых будет производится поиск перелёта в минутах--> <TimeZone Departure="?" Arrival="?"/> <!--Departure временная зона аэропорта отправления--> <!--Arrival — временная зона аэропорта прибытия--> <ETicket>?</ETicket> <!--ETicket — признак электронного билета, значения: true / false--> </Segment> </Segments> <PricingInfo Refundable="?"> <!--Refundable — возвратный/невозвратный, true/false. Если пустое, то не известно--> <PassengerFare Type="?" Quantity="?"> <!--Type — тип пассажира, возможные значения: ADT — взрослые, CNN — дети, INF — младенцы, INS — младенцы с местом--> <!--Quantity — количество пассажиров данного типа--> <BaseFare Currency="?" Amount="?"/> <!--BaseFare — базовая стоимость, в базовой валюте. Currency — код валюты, Amount — значение цены--> <EquiveFare Currency="?" Amount="?"/> <!--EquiveFare — базовая стоимость, в эквивалентной валюте(валюте продажибронирование). Currency — код валюты, Amount — значение цены--> <TotalFare Currency="?" Amount="?"/> <!--TotalFare — суммарная стоимость, в эквивалентной валюте. Currency — код валюты, Amount — значение цены--> <Taxes> <Tax CurCode="?" TaxCode="?" Amount="?"/> <!--CurCode — код валюты, TaxCode — код таксы, Amount — сумма таксы--> </Taxes> <Tariffs> <Tariff Code="?" SegNum="?"/> <!--Code — код тарифа, SegNum — номер сегмента, к которому применён тариф--> </Tariffs> <FareCalc>?</FareCalc> <!--FareCalc — строка расчёта цены--> <LastTicketDateTime>?</LastTicketDateTime> <!--LastTicketDateTime — дата и время таймлимита по выписке в формате ГГГГ-MM-ДДTЧЧ:ММ:СС--> </PassengerFare> </PricingInfo> <Commission/> <Charges Currency="?">?</Charges> <!--Charges — сборы, Currency — код валюты--> <TotalPrice Currency="?">?</TotalPrice> <!--TotalPrice — итоговая цена, Currency — код валюты--> </Flight> <Flight>...</Flight> .................... <Flight>...</Flight> </Flights> <Errors> <Error Code="?"> <!--Code — код ошибки в системе Nemo--> <ServiceErrorMessage>?</ServiceErrorMessage> <!--ServiceErrorMessage — сообщение об ошибке полученное от веб-сервиса поставщика--> <Message>?</Message> <!--Message — сообщение об ошибке от системы Nemo--> </Error> </Errors> </SearchFlights> </Response> </ResponseBin> </ns1:searchResponse> </SOAP-ENV:Body></SOAP-ENV:Envelope></syntaxhighlight></div></divtd>
В ссылках на просмотр страницы результата поиска и на бронирование конкретного перелета, домен агентства </tr> <tr> <td class="col0">Traveller </td><td class="col1">да </td><td class="col2">сложный </td><td class="col3">Информация о пассажире</td> </субагентства определяется следующим образом:tr> <tr class="row24">* Если текущий домен агентства <td>Type</субагентства есть в настройках ('''Администрирование''' ⇨ '''Настройки агентства''' ⇨ '''Доменное имя сайта для загрузки настроек''')td><td>да</td><td>строка</td><td>Тип пассажира возможные значения: ADT - взрослые, то этот домен используется в ссылках.* Если текущего домена нет в настройкахCNN - дети, UNN - дети без сопровождения взрослых, то используется первый домен из настроек.* Если в настройках не прописано ни одного доменаINF - младенцы, то используется текущий домен.INS - младенцы с местом</td>
На поиск действуют ограничения заданные в настройках агентства </tr> <tr class="row25"> <td class="col0">IsContact </td><td class="col1">нет</td><td class="col2">булевский </td><td class="col3">Индикатор показывающий является ли данное лицо контактным, в частности ограничения по пассажирам и ограничение ближайшей разрешенной даты поиска билетоввозможные значение: true - пассажир является контактным лицом, false - не является. Контактное лицо может быть только одно, если среди пассажиров есть взрослые, то только кто-то из них может быть контактным лицом.* Если дата поиска меньше ближайшей разрешенной даты для поиска билетовне указано, то выводится сообщение об ошибке Invalid search param: Неверная дата вылета: слишком близкаяпо умолчанию false.</td>* Если количество взрослых пассажиров превышает допустимое ограничение - Invalid search param: Слишком много взрослых </tr>* Если количество детей в поисковом запросе превышает допустимое ограничение - Invalid search param: Слишком много детей <tr class="row26">* Если количество младенцев в поисковом запросе превышает допустимое ограничение - Invalid search param: Слишком много инфантов* Если количество младенцев с местом в поисковом запросе превышает допустимое ограничение - Invalid search param: Слишком много инфантов <td class="col0">LinkedTo </td><td class="col1">нет </td><td class="col2">целое число </td><td class="col3">Номер взрослого, к которому привязан младенец/ребёнок (привязка ребёнка ко взрослому является опциональной)</td>
</tr> <tr class="row27"> <td class="col0">Num </td><td class= Примеры использования "col1">да </td><td class="col2">число </td><td class="col3">Номер пассажира.</td> </tr> <tr class="row28"> <td class="col0">PreferedPlace </td><td class="col1">нет </td><td class="col2">сложный </td><td class="col3">Информация о предпочитаемом месте. Если указаны номер ряда и номер места, то параметры Smoking и Location игнорируются и могут быть не указаны.</td>
</tr> <tr class="row29"> <td class="col0">SmokingAllowed </td><td class="col1">нет </td><td class= Односторонний перелет "col2">булевский </td><td class="col3">true - место для курящих, false - место для некурящих. По умолчанию false.</td> </tr> <tr class="row30"> <td class="col0">Location </td><td class="col1">нет </td><td class="col2">строка </td><td class="col3">Расположение места, возможные значения: W - у окна (Window); M - где-то в середине ряда (Middle); NPW - возле прохода (NearPassengerWay); NS - нет предпочтения (NotSpecified).</td> </tr> <tr class="row31"> <td class="col0">RowNumber</td><td class="col1">нет</td><td class="col2">строка </td><td class="col3">Номер ряда</td> </tr> <tr class="row32"> <td class="col0">PlaceNumber </td><td class="col1">нет </td><td class="col2">строка </td><td class="col3">Номер места</td>
Пример одностороннего перелета: Москва — Мадрид, 1 взрослый, 1 ребенок, эконом класс, предпочитаемая авиакомпания — Аэрофлот. </tr> <tr class="row33"> <td class="col0">SegNumber </td><td class="col1">да </td><td class="col2">строка </td><td class="col3">Номер сегмента</td> </tr> <tr class="row34"> <td class="col0">DocumentInfo </td><td class="col1">да </td><td class="col2">сложный </td><td class="col3">Паспортные данные</td>
<div class="toccolours mw-collapsible mw-collapsed" style="width:1000px"/tr>===== Запрос ===== <div tr class="mw-collapsible-contentrow35"> <syntaxhighlight lang="xml" line enclosetd class="div" style="font-size:9pt;background: #F9F9F9; border: 1px dashed #2F6FAB; padding: 10px 5px; margin: 10px 0;col0">DocType <soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ver="http://CLIENT_DOMAIN/nemoflights/?version%3D1.0%26for%3DSearchFlights"td> <soapenv:Header/> <soapenv:Body> <ver:search> <RequestBin> <Request> <SearchFlights LinkOnlytd class="falsecol1"> <ODPairs Type="OW" Direct="false" AroundDates="0"> <!--Zero or more repetitions:--> <ODPair> <DepDate>2014-03-20да </DepDatetd> <DepAirp CodeTypetd class="IATAcol2">MOWстрока </DepAirptd> <ArrAirp CodeTypetd class="IATAcol3">MADТип документа, обязательный.</ArrAirptd> </ODPairtr> </ODPairs> <Travellers> <!--Zero or more repetitions:--> <Traveller Typetr class="ADTrow36" Count="1"/> <Traveller Type="CNN" Counttd class="1col0"/> DocNum </Travellerstd> <Restrictions> <ClassPreftd class="col1">economyда </ClassPreftd> <OnlyAvailtd class="col2">falseстрока </OnlyAvailtd> <AirVPrefs> <!--Zero or more repetitions:--> <AirVPref Code="SU" Include="true" Typetd class="IATAcol3"/> Номер документа</AirVPrefstd> <IncludePrivateFare>false </IncludePrivateFaretr> <CurrencyCode>RUB</CurrencyCodetr class="row37"> </Restrictionstd class="col0"> CountryCode </SearchFlightstd> </Request> <Source> <ClientIdtd class="col1">---да </ClientIdtd> <APIKeytd class="col2">---строка </APIKeytd> <Languagetd class="col3">Страна выдачи, двух буквенный код(RU, US и т.д.)</Languagetd> <Currency>RUB </Currencytr> <ShowNames>true</ShowNamestr class="row38"> </Sourcetd class="col0"> DocElapsedTime</RequestBintd> </ver:searchtd class="col1"> да </soapenv:Bodytd></soapenv:Envelopetd class="col2">строка </syntaxhighlighttd></divtd class="col3">Срок истечения срока действия паспорта в фирмате dd.mm.yyyy (например 31.12.2012)</divtd>
<div /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="toccolours mw-collapsible mw-collapsedcol1" style>да </td><td class="width:1000pxcol2">строка </td><td class="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://CLIEN_DOMAIN/nemoflights/?version%3D1.0%26for%3DSearchFlights" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"tr> <SOAP-ENV:Body> <ns1:searchResponse> <ResponseBin> <Response> <SearchFlights> <Flights SearchId="13949" ResultURLtr class="http%3A%2F%2FCLIENT_DOMAIN%2F%3Fgo%3Dsearch%2Fview_results%26uid%3D13949row41"> <Flight FlightIdtd class="168090001col0"> <WebService>SABREIssueDate </WebServicetd> <ValCompany/> <URL>http%3A%2F%2FCLIENT_DOMAIN%2F%3Fgo%3Dbooking%2Finfo%26uid%3D13949%26flight%3D168090001</URL> <Segments> <Segment SegNum="1" SegGroupNumtd class="0col1"> <DepAirp CodeType="IATA" Name="Шереметьево, Москва">SVOда </DepAirptd> <DepTerminal/> <ArrAirp CodeType="IATA" Nametd class="Мадридcol2">MADстрока </ArrAirptd> <ArrTerminal/> <OpAirline>SU</OpAirline> <OpAirlineName>Аэрофлот - Российские авиалинии</OpAirlineName> <MarkAirline>SU</MarkAirline> <MarkAirlineName>Аэрофлот - Российские авиалинии</MarkAirlineName> <FlightNumber>2500</FlightNumber> <AircraftName>Airbus 320</AircraftName> <AircraftType>320</AircraftType> <DepDateTime>2014-03-20T08:05:00</DepDateTime> <ArrDateTime>2014-03-20T10:15:00</ArrDateTime> <StopNum>0</StopNum> <BookingCodes> <BookingCode ClassType="economy"> <BookingCode>E</BookingCode> </BookingCode> </BookingCodes> <FlightTime>310</FlightTime> <TimeZone Departure="4" Arrival="1"/> <ETicket>true</ETicket> </Segment> </Segments> <PricingInfo Refundable="false"> <PassengerFare Type="ADT" Quantity="1"> <BaseFare Currency="EUR" Amount="165"/> <EquiveFare Currency="RUB" Amount="8250"/> <TotalFare Currency="RUB" Amount="10535"/> <Taxes> <Tax CurCode="RUB" TaxCode="YQF" Amount="2100"/> <Tax CurCode="RUB" TaxCode="YRI" Amounttd class="185col3"/> </Taxes> <Tariffs/> <FareCalc>MOW SU MAD225.45NUC225Дата выдачи визы в формате dd.45END ROE0mm.731857yyyy</FareCalctd> <LastTicketDateTime>2014-03-09T23:59:59 </LastTicketDateTimetr> </PassengerFare> <PassengerFare Type="CNN" Quantitytr class="1row42"> <BaseFare Currency="EUR" Amounttd class="124col0"/> IssueCountry <EquiveFare Currency="RUB" Amount="6200"/td> <TotalFare Currencytd class="RUBcol1" Amount="8485"/> <Taxes> да <Tax CurCode="RUB" TaxCode="YQF" Amount="2100"/td> <Tax CurCodetd class="RUBcol2" TaxCode="YRI" Amount="185"/> строка </Taxestd> <Tariffs/> <FareCalc>MOW SU MAD169.08NUC169.08END ROE0.731857</FareCalc> <LastTicketDateTime>2014-03-09T23:59:59</LastTicketDateTime> </PassengerFare> </PricingInfo> <Commission/> <Charges Currency="RUB">0</Charges> <TotalPrice Currency="RUB">19020</TotalPrice> </Flight> <Flight FlightId="168090002"> <WebService>SABRE</WebService> <ValCompany/> <URL>http%3A%2F%2FCLIENT_DOMAIN%2F%3Fgo%3Dbooking%2Finfo%26uid%3D13949%26flight%3D168090002</URL> <Segments> <Segment SegNum="1" SegGroupNum="0"> <DepAirp CodeType="IATA">SVO</DepAirp> <DepTerminal/> <ArrAirp CodeType="IATA">MAD</ArrAirp> <ArrTerminal/> <OpAirline>SU</OpAirline> <MarkAirline>SU</MarkAirline> <FlightNumber>2604</FlightNumber> <AircraftType>320</AircraftType> <DepDateTime>2014-03-20T20:30:00</DepDateTime> <ArrDateTime>2014-03-20T22:40:00</ArrDateTime> <StopNum>0</StopNum> <BookingCodes> <BookingCode ClassType="economy"> <BookingCode>E</BookingCode> </BookingCode> </BookingCodes> <FlightTime>310</FlightTime> <TimeZone Departure="4" Arrival="1"/> <ETicket>true</ETicket> </Segment> </Segments> <PricingInfo Refundable="false"> <PassengerFare Type="ADT" Quantity="1"> <BaseFare Currency="EUR" Amount="165"/> <EquiveFare Currency="RUB" Amount="8250"/> <TotalFare Currency="RUB" Amount="10535"/> <Taxes> <Tax CurCode="RUB" TaxCode="YQF" Amount="2100"/> <Tax CurCode="RUB" TaxCode="YRI" Amount="185"/> </Taxes> <Tariffs/> <FareCalc>MOW SU MAD225.45NUC225.45END ROE0.731857</FareCalc> <LastTicketDateTime>2014-03-09T23:59:59</LastTicketDateTime> </PassengerFare> <PassengerFare Type="CNN" Quantity="1"> <BaseFare Currency="EUR" Amount="124"/> <EquiveFare Currency="RUB" Amount="6200"/> <TotalFare Currency="RUB" Amount="8485"/> <Taxes> <Tax CurCode="RUB" TaxCode="YQF" Amounttd class="2100col3"/> <Tax CurCode="RUB" TaxCode="YRI" Amount="185"/> </Taxes> <Tariffs/> <FareCalc>MOW SU MAD169.08NUC169.08END ROE0.731857</FareCalc> <LastTicketDateTime>2014-03-09T23:59:59</LastTicketDateTime> </PassengerFare> </PricingInfo> <Commission/> <Charges Currency="RUB">0</Charges> <TotalPrice Currency="RUB">19020</TotalPrice> </Flight> <Flight FlightId="168090003"> <WebService>SABRE</WebService> <ValCompany/> <URL>http%3A%2F%2FCLIENT_DOMAIN%2F%3Fgo%3Dbooking%2Finfo%26uid%3D13949%26flight%3D168090003</URL> <Segments> <Segment SegNum="1" SegGroupNum="0"> <DepAirp CodeType="IATA">SVO</DepAirp> <DepTerminal/> <ArrAirp CodeType="IATA">BCN</ArrAirp> <ArrTerminal/> <OpAirline>SU</OpAirline> <MarkAirline>SU</MarkAirline> <FlightNumber>2638</FlightNumber> <AircraftType>321</AircraftType> <DepDateTime>2014-03-20T09:10:00</DepDateTime> <ArrDateTime>2014-03-20T10:40:00</ArrDateTime> <StopNum>0</StopNum> <BookingCodes> <BookingCode ClassType="economy"> <BookingCode>E</BookingCode> </BookingCode> </BookingCodes> <FlightTime>270</FlightTime> <TimeZone Departure="4" Arrival="1"/> <ETicket>true</ETicket> </Segment> <Segment SegNum="2" SegGroupNum="0"> <DepAirp CodeType="IATA">BCN</DepAirp> <DepTerminal/> <ArrAirp CodeType="IATA">MAD</ArrAirp> <ArrTerminal/> <OpAirline>UX</OpAirline> <MarkAirline>SU</MarkAirline> <FlightNumber>3403</FlightNumber> <AircraftType>738</AircraftType> <DepDateTime>2014-03-20T12:05:00</DepDateTime> <ArrDateTime>2014-03-20T13: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="8250"/> <TotalFare Currency="RUB" Amount="13681"/> <Taxes> <Tax CurCode="RUB" TaxCode="YQF" Amount="2100"/> <Tax CurCode="RUB" TaxCode="YQF" Amount="2100"/> <Tax CurCode="RUB" TaxCode="YRI" Amount="185"/> <Tax CurCode="RUB" TaxCode="YRI" Amount="185"/> <Tax CurCode="RUB" TaxCode="JD" Amount="675"/> <Tax CurCode="RUB" TaxCode="QV" Amount="186"/> </Taxes> <Tariffs/> <FareCalc>MOW SU X/BCN SU MAD225.45NUC225.45END ROE0.731857</FareCalc> <LastTicketDateTime>2014-03-09T23:59:59</LastTicketDateTime> </PassengerFare> <PassengerFare Type="CNN" Quantity="1"> <BaseFare Currency="EUR" Amount="124"/> <EquiveFare Currency="RUB" Amount="6200"/> <TotalFare Currency="RUB" Amount="11631"/> <Taxes> <Tax CurCode="RUB" TaxCode="YQF" Amount="2100"/> <Tax CurCode="RUB" TaxCode="YQF" Amount="2100"/> <Tax CurCode="RUB" TaxCode="YRI" Amount="185"/> <Tax CurCode="RUB" TaxCode="YRI" Amount="185"/> <Tax CurCode="RUB" TaxCode="JD" Amount="675"/> <Tax CurCode="RUB" TaxCode="QV" Amount="186"/> </Taxes> <Tariffs/> <FareCalc>MOW SU X/BCN SU MAD169.08NUC169.08END ROE0.731857</FareCalc> <LastTicketDateTime>2014-03-09T23:59:59</LastTicketDateTime> </PassengerFare> </PricingInfo> <Commission/> <Charges Currency="RUB">0</Charges> <TotalPrice Currency="RUB">25312</TotalPrice> </Flight> ......... <Flight>...</Flight> </Flights> <Errors xsi:nil="true"/> </SearchFlights> </Response> </ResponseBin> </ns1:searchResponse> </SOAP-ENV:Body></SOAP-ENV:Envelope></syntaxhighlight></div>Страна выдачи визы</divtd>
</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="col3">Страна рождения (IATA код страны)</td>
Пример перелета туда-обратно: Москва — Париж </tr> <tr class="row45"> <td class="col0">BirthCity </td><td class="col1">нет</td><td class="col2">строка</td><td class="col3">Город рождения (название)</td> </tr> <tr class="row46"> <td class="col0">ArrAddress </td><td class="col1">нет </td><td class="col2">сложный </td><td class="col3">Адрес прибытия, 2 взрослых, бизнес классдля въезжающих в США (не граждан США) информация является обязательной. '''Выдача с именами авиакомпаний, воздушных судовЕсли она не заполняется при оформлении брони, аэропортовто её всё равно придётся заполнять при посадке на самолёт.'''</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://CLIENT_DOMAIN/nemoflights/?version%3D1.0%26for%3DSearchFlightscol1"> да <soapenv:Header/td> <soapenv:Body> <ver:search> <RequestBin> <Request> <SearchFlights LinkOnlytd class="falsecol2"> строка </td><ODPairs Type="RT" Directtd class="false" AroundDates="0col3"> IATA код страны<!--Zero or more repetitions:--/td> <ODPair> <DepDate>2014-12-20 </DepDatetr> <DepAirp CodeTypetr class="IATArow48">MOW</DepAirp> <ArrAirp CodeTypetd class="IATAcol0">PARState </ArrAirptd> </ODPair> <ODPair> <DepDate>2014-12-21</DepDate> <DepAirp CodeTypetd class="IATAcol1">PARда </DepAirptd> <ArrAirp CodeTypetd class="IATAcol2">MOWстрока </ArrAirptd> </ODPair> </ODPairs> <Travellers> <!--Zero or more repetitions:--> <Traveller Type="ADT" Counttd class="2col3"/> </Travellers> <Restrictions> <ClassPref>business</ClassPref> <OnlyAvail>false</OnlyAvail> <AirVPrefs/> <IncludePrivateFare>false</IncludePrivateFare> <CurrencyCode>RUB</CurrencyCode> </Restrictions> </SearchFlights> </Request> <Source> <ClientId>---</ClientId> <APIKey>---</APIKey> <Language>RU</Language> <Currency>RUB</Currency> <ShowNames>true</ShowNames> </Source> </RequestBin> </ver:search> </soapenv:Body></soapenv:Envelope></syntaxhighlight></div>Штат или область въезда</divtd>
<div /tr> <tr class="row49"> <td class="col0">PostalCode </td><td class="col1">да </td><td class="col2">строка </td><td class="col3">Почтовый код</td> </tr> <tr class="row50"> <td class="col0">City </td><td class="toccolours mw-collapsible mw-collapsedcol1" style>да </td><td class="width:1000pxcol2">строка </td><td class="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://trunk.mlsd.ru/nemoflights/?version%3D1.0%26for%3DSearchFlights" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"tr> <SOAP-ENV:Body> <ns1:searchResponse> <ResponseBin> <Response> <SearchFlights> <Flights SearchIdtr class="190484987" ResultURL="http%3A%2F%2Ftst.nemo.travel%2F%3Fgo%3Dsearch%2Fview_results%26uid%3D190484987row51"> <Flight FlightIdtd class="372384680001col0"> <WebService>SABREStreetAddress </WebServicetd> <ValCompany/> <URL>http%3A%2F%2Ftst.nemo.travel%2F%3Fgo%3Dbooking%2Finfo%26uid%3D190484987%26flight%3D372384680001%26utm_source%3Dalias1</URL> <Segments> <Segment SegNum="1" SegGroupNumtd class="0col1"> <DepAirp CodeType="IATA" Name="Шереметьево, Москва">SVOда </DepAirptd> <DepTerminal xsi:niltd class="truecol2"/> <ArrAirp CodeType="IATA" Name="Белград, Никола Тесла">BEGстрока </ArrAirptd> <ArrTerminal xsi:niltd class="truecol3"/> <OpAirline>JU</OpAirline> <OpAirlineName>ДЖАТ Эйрвэйз</OpAirlineName> <MarkAirline>JU</MarkAirline> <MarkAirlineName>ДЖАТ Эйрвэйз</MarkAirlineName> <FlightNumber>657</FlightNumber> <AircraftName>Airbus 319</AircraftName> <AircraftType>319</AircraftType> <DepDateTime>2014-12-20T05Адрес:05:00</DepDateTime> <ArrDateTime>2014-12-20T06:05:00</ArrDateTime> <StopNum>0</StopNum> <BookingCodes> <BookingCode ClassType="business"> <BookingCode>W</BookingCode> </BookingCode> </BookingCodes> <FlightTime>180</FlightTime> <TimeZone Departure="3" Arrival="1"/> <ETicket>true</ETicket> </Segment> <Segment SegNum="2" SegGroupNum="0"> <DepAirp CodeType="IATA" Name="Белградулица, Никола Тесла">BEG</DepAirp> <DepTerminal xsi:nil="true"/> <ArrAirp CodeType="IATA" Name="Шарль де Голльномер дома, Париж">CDGквартиры и тп</ArrAirptd> <ArrTerminal xsi:nil="true"/tr> <OpAirline>JU</OpAirline> <OpAirlineName>ДЖАТ Эйрвэйз</OpAirlineName> <MarkAirline>JU</MarkAirline> <MarkAirlineName>ДЖАТ Эйрвэйз</MarkAirlineName> <FlightNumber>314</FlightNumber> <AircraftName>Airbus 320</AircraftName> <AircraftType>320</AircraftType> <DepDateTime>2014-12-20T17:10:00</DepDateTime> <ArrDateTime>2014-12-20T19:50:00</ArrDateTime> <StopNum>0</StopNum> <BookingCodes> <BookingCode ClassTypetr class="businessrow52"> <BookingCode>W</BookingCode> </BookingCode> </BookingCodes> <FlightTime>160</FlightTime> <TimeZone Departuretd class="1col0" Arrival="1"/> <ETicket>trueDocStringFormats </ETickettd> </Segment> <Segment SegNum="3" SegGroupNumtd class="1col1"> <DepAirp CodeType="IATA" Name="Шарль де Голль, Париж">CDGнет </DepAirptd> <DepTerminal xsi:nil="true"/> <ArrAirp CodeTypetd class="IATA" Name="Белград, Никола Теслаcol2">BEGсложный </ArrAirptd> <ArrTerminal xsi:nil="true"/> <OpAirline>JU</OpAirline> <OpAirlineName>ДЖАТ Эйрвэйз</OpAirlineName> <MarkAirline>JU</MarkAirline> <MarkAirlineName>ДЖАТ Эйрвэйз</MarkAirlineName> <FlightNumber>311</FlightNumber> <AircraftName>Airbus 320</AircraftName> <AircraftType>320</AircraftType> <DepDateTime>2014-12-21T10:10:00</DepDateTime> <ArrDateTime>2014-12-21T12:30:00</ArrDateTime> <StopNum>0</StopNum> <BookingCodes> <BookingCode ClassType="business"> <BookingCode>W</BookingCode> </BookingCode> </BookingCodes> <FlightTime>140</FlightTime> <TimeZone Departure="1" Arrival="1"/> <ETicket>true</ETicket> </Segment> <Segment SegNum="4" SegGroupNum="1"> <DepAirp CodeType="IATA" Name="Белград, Никола Тесла">BEG</DepAirp> <DepTerminal xsi:niltd class="truecol3"/> <ArrAirp CodeType="IATA" Name="ШереметьевоСписок форматов строк паспортных данных, Москва">SVO</ArrAirp> <ArrTerminal xsi:nil="true"/> <OpAirline>JU</OpAirline> <OpAirlineName>ДЖАТ Эйрвэйз</OpAirlineName> <MarkAirline>JU</MarkAirline> <MarkAirlineName>ДЖАТ Эйрвэйз</MarkAirlineName> <FlightNumber>656</FlightNumber> <AircraftName>Airbus 319</AircraftName> <AircraftType>319</AircraftType> <DepDateTime>2014-12-21T23:20:00</DepDateTime> <ArrDateTime>2014-12-22T04:10:00</ArrDateTime> <StopNum>0</StopNum> <BookingCodes> <BookingCode ClassType="business"> <BookingCode>W</BookingCode> </BookingCode> </BookingCodes> <FlightTime>170</FlightTime> <TimeZone Departure="1" Arrival="3"/> <ETicket>true</ETicket> </Segment> </Segments> <PricingInfo Refundable="true"> <PassengerFare Type="ADT" Quantity="2"> <BaseFare Currency="EUR" Amount="620"/> <EquiveFare Currency="RUB" Amount="34720"/> <TotalFare Currency="RUB" Amount="44430"/> <Taxes> <Tax CurCode="RUB" TaxCode="YQF" Amount="1176"/> <Tax CurCode="RUB" TaxCode="YQF" Amount="1176"/> <Tax CurCode="RUB" TaxCode="YQF" Amount="1176"/> <Tax CurCode="RUB" TaxCode="YQF" Amount="1176"/> <Tax CurCode="RUB" TaxCode="RI" Amount="428"/> <Tax CurCode="RUB" TaxCode="RI" Amount="428"/> <Tax CurCode="RUB" TaxCode="UH" Amount="304"/> <Tax CurCode="RUB" TaxCode="LG" Amount="185"/> <Tax CurCode="RUB" TaxCode="LG" Amount="185"/> <Tax CurCode="RUB" TaxCode="RS" Amount="224"/> <Tax CurCode="RUB" TaxCode="RS" Amount="224"/> <Tax CurCode="RUB" TaxCode="RF" Amount="55"/> <Tax CurCode="RUB" TaxCode="RF" Amount="55"/> <Tax CurCode="RUB" TaxCode="FR1" Amount="434"/> <Tax CurCode="RUB" TaxCode="FR4" Amount="714"/> <Tax CurCode="RUB" TaxCode="QX3" Amount="1546"/> <Tax CurCode="RUB" TaxCode="IZ4" Amount="224"/> </Taxes> <Tariffs> <Tariff Code="WRTRU" SegNum="4"/> </Tariffs> <FareCalc>MOW JU X/BEG JU PAR401.57JU X/BEG JU MOW401.57NUC803.14END ROE0.771963</FareCalc> <LastTicketDateTime>2014-12-20T04:05:00</LastTicketDateTime> </PassengerFare> </PricingInfo> <Commission/> <Charges Currency="RUB">0</Charges> <TotalPrice Currency="RUB">88860</TotalPrice> </Flight> .....которые будут отправлены в дополнение к стандартным.... <Flight>...</Flight> </Flights> <Errors xsi:nil="true"/> </SearchFlights> </Response> </ResponseBin> </ns1:searchResponse> </SOAP-ENV:Body></SOAP-ENV:Envelope></syntaxhighlight></div></divtd>
</tr> <tr class="row53"> <td class="col0">DocStringFormat </td><td class="col1">да </td><td class= Сложный маршрут "col2">строка </td><td class="col3">Формат данных, возможные значения: DOCS - строка формата DOCS, FOID - строка формата FOID. Установка данных в формате DOCS как правило необходима для последующей выписки в BSP среде. Установка FOID - всреде ТКП.</td> </tr> <tr class="row54"> <td class="col0">PersonalInfo </td><td class="col1">да </td><td class="col2">сложный </td><td class="col3">Персональные данные пассажира</td> </tr> <tr class="row55"> <td class="col0">DateOfBirth</td><td class="col1">да </td><td class="col2">строка </td><td class="col3">Дата рождения в формате dd.mm.yyyy (например 31.12.2000)</td> </tr> <tr class="row56"> <td class="col0">Nationality </td><td class="col1">да </td><td class="col2">строка </td><td class="col3">Национальность/гражданство, двух буквенный код страны (RU, UA, US и т.д.)</td>
Пример сложного маршрута: Прага — Москва — Милан — Мадрид </tr> <tr class="row57"> <td class="col0">Gender </td><td class="col1">да </td><td class="col2">строка </td><td class="col3">Пол пассажира, 1 взрослыйобязательный, 1 младенец, эконом класс. '''Выдача с именами авиакомпаний, воздушных судов, аэропортоввозможные значения: M - мужской(Male); F - женский(Female).'''</td> </tr> <tr class="row58"> <td class="col0">FirstName </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-contentrow59"> <syntaxhighlight langtd class="xml" line enclose="div" style="font-size:9pt;background: #F9F9F9; border: 1px dashed #2F6FAB; padding: 10px 5px; margin: 10px 0;col0">LastName <soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ver="http://CLIENT_DOMAIN/nemoflights/?version%3D1.0%26for%3DSearchFlights"td> <soapenv:Header/> <soapenv:Body> <ver:search> <RequestBin> <Request> <SearchFlights LinkOnly="false"> <ODPairs Type="CR" Direct="false" AroundDatestd class="0col1"> <!--Zero or more repetitions:--> <ODPair> <DepDate>2014-12-20да </DepDatetd> <DepAirp CodeTypetd class="IATAcol2">PRGстрока </DepAirptd> <ArrAirp CodeTypetd class="IATAcol3">MOWФамилия пассажира</ArrAirptd> </ODPairtr> <ODPairtr class="row60"> <DepDate>2014-12-23</DepDate> <DepAirp CodeTypetd class="IATAcol0">MOWBMiddleName </DepAirptd> <ArrAirp CodeTypetd class="IATAcol1">MILда </ArrAirptd> </ODPair> <ODPair> <DepDate>2014-12-27</DepDate> <DepAirp CodeTypetd class="IATAcol2">MILстрока </DepAirptd> <ArrAirp CodeTypetd class="IATAcol3">MADОтчество пассажира</ArrAirptd> </ODPairtr> </ODPairs> <Travellers> <!--Zero or more repetitions:--> <Traveller Type="ADT" Counttr class="1row61"/> <Traveller Typetd class="INFcol0" Count="1"/> Meal </Travellerstd> <Restrictions> <ClassPreftd class="col1">economyнет</ClassPreftd> <OnlyAvailtd class="col2">falseстрока </OnlyAvailtd> <AirVPrefs/td class="col3"> <IncludePrivateFare>falseКод типа питания, возможные значения: 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 - Восточное вегетарианское питание.</IncludePrivateFaretd> <CurrencyCode>RUB </CurrencyCodetr> </Restrictionstr class="row62"> </SearchFlightstd class="col0"> LoyaltyCard </Requesttd> <Sourcetd class="col1"> <ClientId>134нет </ClientIdtd> <APIKeytd class="col2">93632C10DA299034C03D742FB160C2D6сложный </APIKeytd> <Language>RU</Language> <Currency>RUB</Currency> <ShowNames>true</ShowNames> </Sourcetd class="col3"> </RequestBin> </ver:search> </soapenv:Body></soapenv:Envelope></syntaxhighlight></div>Карточка часто летающего пассажира</divtd>
<div /tr> <tr class="row63"> <td class="col0">OpCode </td><td class="col1">да </td><td class="col2">строка </td><td class="col3">IATA код компании авиаперевозчика</td> </tr> <tr class="row64"> <td class="col0">Number </td><td class="col1">да </td><td class="col2">строка </td><td class="col3">Номер карточки</td> </tr> <tr class="row65"> <td class="col0">ContactInfo</td><td class="col1">нет </td><td class="col2">сложный </td><td class="col3">Контактная информация для пассажира</td> </tr> <tr class="row66"> <td class="col0">EmailID </td><td class="col1">нет </td><td class="toccolours mw-collapsible mw-collapsedcol2" style>строка </td><td class="width:1000pxcol3">Контактный email</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://trunk.mlsd.ru/nemoflights/?version%3D1.0%26for%3DSearchFlights" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"tr> <SOAP-ENV:Body> <ns1:searchResponse> <ResponseBin> <Response> <SearchFlights> <Flights SearchIdtr class="190491108" ResultURL="http%3A%2F%2Ftst.nemo.travel%2F%3Fgo%3Dsearch%2Fview_results%26uid%3D190491108row67"> <Flight FlightIdtd class="372394480001col0"> <WebService>SABRETelephone </WebServicetd> <ValCompany/> <URL>http%3A%2F%2Ftst.nemo.travel%2F%3Fgo%3Dbooking%2Finfo%26uid%3D190491108%26flight%3D372394480001%26utm_source%3Dalias1</URL> <Segments> <Segment SegNum="1" SegGroupNum="0"> <DepAirp CodeType="IATA" Nametd class="Прагаcol1">PRGнет </DepAirptd> <DepTerminal xsi:niltd class="truecol2"/> <ArrAirp CodeType="IATA" Name="Цюрих">ZRHсложный </ArrAirptd> <ArrTerminal xsi:niltd class="truecol3"/> <OpAirline>LXКонтактный телефон пассажира, описание аналогично описанию телефона агентства</OpAirlinetd> <OpAirlineName>Свисс Интернешнл Эйрлайнз </OpAirlineNametr> <MarkAirline>LX</MarkAirline> <MarkAirlineName>Свисс Интернешнл Эйрлайнз</MarkAirlineName> <FlightNumber>1485</FlightNumber> <AircraftName>Avro RJ100</AircraftName> <AircraftType>AR1</AircraftType> <DepDateTime>2014-12-20T10:05:00</DepDateTime> <ArrDateTime>2014-12-20T11:30:00</ArrDateTime> <StopNum>0</StopNum> <BookingCodes> <BookingCode ClassTypetr class="economyrow68"> <BookingCode>K</BookingCode> </BookingCode> </BookingCodes> <FlightTime>85</FlightTime> <TimeZone Departure="1" Arrivaltd class="1col0"/> <ETicket>trueCancelBook</ETickettd> </Segment> <Segment SegNum="2" SegGroupNumtd class="0col1"> <DepAirp CodeType="IATA" Name="Цюрих">ZRHда</DepAirptd> <DepTerminal xsi:niltd class="truecol2"/> <ArrAirp CodeType="IATA" Name="Домодедово, Москва">DMEсложный</ArrAirptd> <ArrTerminal xsi:niltd class="truecol3"/> <OpAirline>LXКонтейнер для тела запроса отмены брони</OpAirlinetd> <OpAirlineName>Свисс Интернешнл Эйрлайнз </OpAirlineNametr> <MarkAirline>LX</MarkAirline> <MarkAirlineName>Свисс Интернешнл Эйрлайнз</MarkAirlineName> <FlightNumber>1326</FlightNumber> <AircraftName>Airbus 321</AircraftName> <AircraftType>321</AircraftType> <DepDateTime>2014-12-20T12:20:00</DepDateTime> <ArrDateTime>2014-12-20T17:50:00</ArrDateTime> <StopNum>0</StopNum> <BookingCodes> <BookingCode ClassTypetr class="economyrow69"> <BookingCode>K</BookingCode> </BookingCode> </BookingCodes> <FlightTime>210</FlightTime> <TimeZone Departuretd class="1col0" Arrival="3"/> <ETicket>trueBookID</ETickettd> </Segment> <Segment SegNum="3" SegGroupNumtd class="1col1"> <DepAirp CodeType="IATA" Name="Домодедово, Москва">DMEда</DepAirptd> <DepTerminal xsi:niltd class="truecol2"/> <ArrAirp CodeType="IATA" Name="Цюрих">ZRH</ArrAirp> число<ArrTerminal xsi:nil="true"/td> <OpAirline>LX</OpAirline> <OpAirlineName>Свисс Интернешнл Эйрлайнз</OpAirlineName> <MarkAirline>LX</MarkAirline> <MarkAirlineName>Свисс Интернешнл Эйрлайнз</MarkAirlineName> <FlightNumber>1325</FlightNumber> <AircraftName>Airbus 321</AircraftName> <AircraftType>321</AircraftType> <DepDateTime>2014-12-23T09:05:00</DepDateTime> <ArrDateTime>2014-12-23T10:50:00</ArrDateTime> <StopNum>0</StopNum> <BookingCodes> <BookingCode ClassType="economy"> <BookingCode>V</BookingCode> </BookingCode> </BookingCodes> <FlightTime>225</FlightTime> <TimeZone Departure="3" Arrival="1"/> <ETicket>true</ETicket> </Segment> <Segment SegNum="4" SegGroupNum="1"> <DepAirp CodeType="IATA" Nametd class="Цюрихcol3">ZRH</DepAirp> <DepTerminal xsi:nil="true"/> <ArrAirp CodeType="IATA" Name="МальпенсаНомер брони, Милан">MXP</ArrAirp> <ArrTerminal xsi:nil="true"/> <OpAirline>LX</OpAirline> <OpAirlineName>Свисс Интернешнл Эйрлайнз</OpAirlineName> <MarkAirline>LX</MarkAirline> <MarkAirlineName>Свисс Интернешнл Эйрлайнз</MarkAirlineName> <FlightNumber>1628</FlightNumber> <AircraftName>Avro RJ100</AircraftName> <AircraftType>AR1</AircraftType> <DepDateTime>2014-12-23T12:25:00</DepDateTime> <ArrDateTime>2014-12-23T13:20:00</ArrDateTime> <StopNum>0</StopNum> <BookingCodes> <BookingCode ClassType="economy"> <BookingCode>K</BookingCode> </BookingCode> </BookingCodes> <FlightTime>55</FlightTime> <TimeZone Departure="1" Arrival="1"/> <ETicket>true</ETicket> </Segment> <Segment SegNum="5" SegGroupNum="2"> <DepAirp CodeType="IATA" Name="Мальпенсакоторая будет отменяться (для которой будет производится выписка, Милан">MXP</DepAirp> <DepTerminal xsi:nil="true"/> <ArrAirp CodeType="IATA" Name="Цюрих">ZRH</ArrAirp> <ArrTerminal xsi:nil="true"/> <OpAirline>LX</OpAirline> <OpAirlineName>Свисс Интернешнл Эйрлайнз</OpAirlineName> <MarkAirline>LX</MarkAirline> <MarkAirlineName>Свисс Интернешнл Эйрлайнз</MarkAirlineName> <FlightNumber>1639</FlightNumber> <AircraftName>Avro RJ100</AircraftName> <AircraftType>AR1</AircraftType> <DepDateTime>2014-12-27T07:05:00</DepDateTime> <ArrDateTime>2014-12-27T08:05:00</ArrDateTime> <StopNum>0</StopNum> <BookingCodes> <BookingCode ClassType="economy"> <BookingCode>K</BookingCode> </BookingCode> </BookingCodes> <FlightTime>60</FlightTime> <TimeZone Departure="1" Arrival="1"/> <ETicket>true</ETicket> </Segment> <Segment SegNum="6" SegGroupNum="2"> <DepAirp CodeType="IATA" Name="Цюрих">ZRH</DepAirp> <DepTerminal xsi:nil="true"/> <ArrAirp CodeType="IATA" Name="Мадрид">MAD</ArrAirp> <ArrTerminal xsi:nil="true"/> <OpAirline>LX</OpAirline> <OpAirlineName>Свисс Интернешнл Эйрлайнз</OpAirlineName> <MarkAirline>LX</MarkAirline> <MarkAirlineName>Свисс Интернешнл Эйрлайнз</MarkAirlineName> <FlightNumber>2026</FlightNumber> <AircraftName/> <AircraftType>32A</AircraftType> <DepDateTime>2014-12-27T12:30:00</DepDateTime> <ArrDateTime>2014-12-27T14:50:00</ArrDateTime> <StopNum>0</StopNum> <BookingCodes> <BookingCode ClassType="economy"> <BookingCode>V</BookingCode> </BookingCode> </BookingCodes> <FlightTime>140</FlightTime> <TimeZone Departure="1" Arrival="1"/> <ETicket>true</ETicket> </Segment> </Segments> <PricingInfo Refundable="false"> <PassengerFare Type="ADT" Quantity="1"> <BaseFare Currency="CZK" Amount="8440"/> <EquiveFare Currency="RUB" Amount="17305"/> <TotalFare Currency="RUB" Amount="31456"/> <Taxes> <Tax CurCode="RUB" TaxCode="YQI" Amount="840"/> <Tax CurCode="RUB" TaxCode="YQI" Amount="840"/> <Tax CurCode="RUB" TaxCode="YQI" Amount="1960"/> <Tax CurCode="RUB" TaxCode="YQI" Amount="840"/> <Tax CurCode="RUB" TaxCode="YQI" Amount="840"/> <Tax CurCode="RUB" TaxCode="YQI" Amount="1960"/> <Tax CurCode="RUB" TaxCode="RI" Amount="378"/> <Tax CurCode="RUB" TaxCode="RI" Amount="378"/> <Tax CurCode="RUB" TaxCode="UH" Amount="284"/> <Tax CurCode="RUB" TaxCode="CZ" Amount="1159"/> <Tax CurCode="RUB" TaxCode="CH2" Amount="1112"/> <Tax CurCode="RUB" TaxCode="CH2" Amount="1112"/> <Tax CurCode="RUB" TaxCode="CH2" Amount="1112"/> <Tax CurCode="RUB" TaxCode="EX" Amount="56"/> <Tax CurCode="RUB" TaxCode="IT1" Amount="707"/> <Tax CurCode="RUB" TaxCode="VT" Amount="142"/> <Tax CurCode="RUB" TaxCode="HB" Amount="364"/> <Tax CurCode="RUB" TaxCode="MJ" Amount="67"/> </Taxes> <Tariffs> <Tariff Code="KNC29F3S" SegNum="2"/> <Tariff Code="VNC28G2S" SegNum="6"/> <Tariff Code="KNN2SSR" SegNum="5"/> </Tariffs> <FareCalc>PRG LX X/ZRH LX MOW28.06LX ZRH*LX MIL31.13LX ZRH31.13*LX MAD175.52 1S129.53NUC395.37END ROE21.3469</FareCalc> <LastTicketDateTime>2014-12-20T11:05:00</LastTicketDateTime> </PassengerFare> <PassengerFare Type="INF" Quantity="1"> <BaseFare Currency="CZK" Amount="3333"/> <EquiveFare Currency="RUB" Amount="6835"/> <TotalFare Currency="RUB" Amount="6835"/> <Taxes/> <Tariffs> <Tariff Code="KNC29F3S/IN90" SegNum="2"/> <Tariff Code="VNC28G2S/IN90" SegNum="6"/> <Tariff Code="KNN2SSR/IN90" SegNum="5"/> </Tariffs> <FareCalc>PRG LX X/ZRH LX MOW2.80LX ZRH*LX MIL3.11LX ZRH3.11*LX MAD17.55 1S129.53NUC156.10END ROE21.3469</FareCalc> <LastTicketDateTime>2014-12-20T11:05:00</LastTicketDateTime> </PassengerFare> </PricingInfo> <Commission/> <Charges Currency="RUB">765.82</Charges> <TotalPrice Currency="RUB">39056.82</TotalPrice> </Flight> ......... <Flight>...</Flight> </Flights> <Errors xsi:nil="true"/> </SearchFlights> </Response> </ResponseBin> </ns1:searchResponse> </SOAP-ENV:Body></SOAP-ENV:Envelope></syntaxhighlight></div>отмена выписки)</divtd>
</tr>
<tr class="row70">
<td class="col0">GetAirRules</td><td class="col1">да</td><td class="col2">сложный</td><td class="col3">Контейнер для тела запроса поиска тарифных правил</td>
</tr>
<tr class="row71">
<td class="col0">AirAvail</td><td class="col1">да</td><td class="col2">сложный</td><td class="col3">Контейнер для тела запроса проверки доступности перелёта</td>
</tr>
<tr class="row72">
<td class="col0">Ticketing</td><td class="col1">да</td><td class="col2">сложный</td><td class="col3">Контейнер для тела запроса выписки брони</td>
</tr>
<tr class="row73">
<td class="col0">ValCompany</td><td class="col1">нет</td><td class="col2">строка</td><td class="col3">Валидирующий перевозчик, на бланке которого выписывается билет</td>
</tr> <tr class="row74"> <td class="col0">Comission</td><td class=API Поиска отелей"col1">нет</td><td class="col2">сложный</td><td class="col3">Комиссия</td> </tr>'''Агентский API Отелей''' - система, которая предоставляет возможность поиска и бронирования отелей а так же получение информации о времени и размерах штрафов <tr class="row75"> <td class="col0">Amount</td><td class="col1">нет</td><td class="col2">число с плавающей точкой</td><td class="col3">Значение комиссии в валюте, уникальной информации об отелеесли указано, получение статической информации.то комиссия в процентах игнорируется</td>
</tr> <tr class="row76"> <td class="col0">Percent</td><td class= Динамические данные "col1">нет</td><td class="col2">число</td><td class="col3">Комиссия в процентах</td> </tr> <tr class="row77"> <td class="col0">VoidTicket</td><td class="col1">да</td><td class="col2">сложный</td><td class= Поиск ===="col3">Контейнер для тела запроса отмены выписки брони</td>
Сервис предназначен </tr> <tr class="row78"> <td class="col0">Search</td><td class="col1">да</td><td class="col2">сложный</td><td class="col3">Контейнер для получения списка отелей, удовлетворяющих условиям тела запроса. В условия запроса входят: идентификатор города, где будет вестись поиск; дата заезда и дата выезда; информация поиска</td> </tr> <tr class="row79"> <td class="col0">ODPairs</td><td class="col1">да</td><td class="col2">сложный</td><td class="col3">Контейнер для информации о количестве людей и способе их размещения в комнатах. Так же указываются дополнительные необязательные поля фильтров.перелёте</td>
Для получения списка доступных городов </tr> <tr class="row80"> <td class="col0">Type</td><td class="col1">да</td><td class="col2">строка</td><td class="col3">Тип перелёта, воспользуйтесь запросом на выгрузку статики возможные значения: OW - в одну сторону, RT - туда-обратно, CR - сложный маршрут</td> </tr> <tr class="row81"> <td class="col0">Direct</td><td class="col1">нет</td><td class="col2">булевский</td><td class="col3">Индикатор, указывающий какие перелёты искать, только прямые или с пересадками, возможные значения: false - с пересадками, true - только прямые. Если не указан, значение по умолчанию false.</td> </tr> <tr class="row82"> <td class="col0">AroundDates</td><td class="col1">нет</td><td class="col2">число</td><td class="col3">Включает поиск по окружным датам, количество дней +/- от даты заезда/возвращения. Применим только для типов перелёта в одну сторону(OW) и туда-обратно(см. ССЫЛКАRT). Список допустимых отелей Возможные значения: 0, 1, 2, 3</td> </tr> <tr class="row83"> <td class="col0">ODPair</td><td class="col1">да</td><td class="col2">сложный</td><td class="col3">Контейнер для фильтра также доступен через сервис (сминформации о сегменте перелёта. ССЫЛКА)Может повторяться 1-6 раз. Рекомендуется выгрузить все данные Поиск по отелямрасписанию использует только первый сегмент, городам поиск сложных перелётов и странам в локальную базу, для экономии времени перелётов туда и запросов.обратно не поддерживается</td>
'''WSDL''' (тестовый сервер): [http: </tr> <tr class="row84"> <td class="col0">DepDate</tst.nemo-ibe.comtd><td class="col1">да</wsdevtd><td class="col2">строка</wsdl.php?fortd><td class=HotelsSearch http"col3">Дата вылета, Формат ГГГГ-MM-DDTЧЧ:ММ:СС</td> </tr> <tr class="row85"> <td class="col0">DepAirp</tst.nemo-ibe.comtd><td class="col1">да</wsdevtd><td class="col2">строка</wsdltd><td class="col3">Трёх буквенный код города отправления или конкретного аэропорта в городе отправления.php?for=HotelsSearch]</td>
<div class="toccolours mw-collapsible mw-collapsed" style="width:1000px"/tr>===== Запрос ===== <div tr class="mw-collapsible-contentrow86"> <syntaxhighlight lang="xml" line enclosetd class="div" style="font-size:9pt;background: #F9F9F9; border: 1px dashed #2F6FAB; padding: 10px 5px; margin: 10px 0;col0">ArrAirp<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:vertd><td class="http://tst.nemo-ibe.com/wsdev/?version%3D1.0%26for%3DHotelsSearchcol1"> да<soapenv:Header/td> <soapenv:Body> <ver:search> <RequestBin> <Request> <HotelSearchtd class="col2"> <CityId>22046строка</CityIdtd> <DateBegintd class="col3">2013-10-15Трёх буквенный код города прибытия или конкретного аэропорта в городе прибытия.</DateBegintd> <DateEnd>2013-10-18 </DateEndtr> <Rooms> <!--Zero or more repetitions:--> <Room> <Persons> <!--Zero or more repetitions:--> <Person Id="1" Typetr class="ADT" Age=row87"30"/> <Person Idtd class="2col0" Type="CLD" Age="10"/> Count</Personstd> <!--Optional:--td class="col1"> <DoubleBed>falseда</DoubleBedtd> </Room> <Room> <Persons> <!--Zero or more repetitions:--> <Person Id="1" Type="ADT" Agetd class="30col2"/> число</Personstd> </Roomtd class="col3"> </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>Число пассажиров данного типа. Общее количество пассажиров всех типов должно быть не более 9.</syntaxhighlighttd>
Элемент '''HotelSearch''' </tr> <tr class="row88">{| style <td class="width: 800pxcol0">Restrictions</td><td class="col1" >нет</td><td class="wikitablecol2"|-! scope>сложный</td><td class="colcol3" width>Контейнер дополнительной информации для поиска.</td> </tr> <tr class="200row89" | Элемент>! scope <td class="colcol0" width>ClassPref</td><td class="300col1" | Описание! scope>нет</td><td class="colcol2" width>строка</td><td class="300col3" | Допустимые >Предпочитаемый класс перелёта, возможные значения|: All -| CityId| Обязательный. Идентификатор города в системе Nemo.| Целое число|все, Economy -| DateBegin| Обязательный. Дата заселения.| Формат ггггэконом, Business -ммбизнес, First -ддпервый.|-| DateEnd| ОбязательныйЕсли не указан, то по умолчанию All. Дата выезда.| Формат гггг-мм-дд.|-| Rooms| Обязательный. Содержит массив запрашиваемых номеров</апартаментов.| Элемент Room. Максимум 4 элемента Room.|-| Filters| Необязательный. Содержит различные фильтры поиска отелей.| Элемент Hotels.|}td>
Элемент '''Room''' </tr> <tr class="row90">{| style <td class="width: 800pxcol0">OnlyAvail</td><td class="col1" >нет</td><td class="wikitablecol2"|-! scope>булевский</td><td class="colcol3" width>Искать только доступные, возможные значения: true - только доступные, false - все. Если не указан, то по умолчанию false.</td> </tr> <tr class="200row91" | Элемент>! scope <td class="colcol0" width>AirVPrefs</td><td class="300col1" | Описание! scope>нет</td><td class="colcol2" width>сложный</td><td class="300col3" | Допустимые значения|-| Persons| Обязательный. Содержит данные о клиентах в номерах.| Элемент Person|-| DoubleBed| Необязательный. Может быть использован только если сумма количества детей и взрослых равна 2-м>Обёртка для списка авиакомпаний, а такжеЕсли в запросе сумма детей и взрослых по которым будет или не равна 2, то данный элемент будет проигнорированпроводиться поиск.| true</falsetrue означает, что номер должен иметь двуспальную кровать|}td>
Элемент '''Person''' </tr>{| style <tr class="row92"> <td class="width: 800pxcol0" >AirVPref</td><td class="wikitablecol1"|-! scope>да</td><td class="colcol2" width>сложный</td><td class="200col3" | Элемент>Информация об авиакомпании.</td>! scope </tr> <tr class="colrow93" width> <td class="300col0" | Описание! scope>Include</td><td class="col1">нет</td><td class="colcol2" width>булевский</td><td class="300col3" | Допустимые значения|>Индикатор, показывающий включить или исключить в результатах поиска перелёты данной авиакомпании: true -| Атрибут Id| Уникальный идентификатор. См. результаты бронирования.| Целое число|включить, false -| Атрибут Type| Тип клиентаисключить.Если не указан, будет определен то по возрасту Age.| Константы:ADT - взрослыйCLD - ребенок 2-12 летINF - младенец до 2х лет|-| Атрибут Age| Возраст. Обязателен для детей (CLD)умолчанию false.| Целое число. Количество лет.|}</td>
Элемент '''Filters''' </tr>{| style <tr class="row94"> <td class="width: 800pxcol0">IncludePrivateFare</td><td class="col1" >нет</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" | Допустимые значения|>Контейнер массива используемых веб-| Hotels| Необязательный. Набор идентификаторов отелей в системе Nemo.Результаты поиска будут ограничены только этими отелями. Данная опция может существенно ускорить поиск - рекомендуется всегда устанавливать сервисов при поиске конкретных отелей.| Элемент Id – целое число|}</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>
</div>
<div class="toccolours mw-collapsible mw-collapsed" style="width:1000px">
 ===== Ответ =Параметры, используемые в ответах ====
<div class="mw-collapsible-content">
Система по заданным параметрам ищет отели и возвращает результаты поиска. Все результаты поиска хранятся в базе Nemo определенный срок и доступны для бронирования по идентификатору CacheId.<table border="1">
Структура <tr bgcolor="#CCCCCC"> <th class="col0 leftalign"> Имя элемента </th><th class="col1 leftalign"> Обязательный </th><th class="col2 leftalign"> Тип </th><th class="col3 centeralign"> Описание </th> </tr> <tr class="row1"> <td class="col0">BookFlightResult </td><td class="col1">да </td><td class="col2">сложный </td><td class="col3">Контейнер для тела ответа - это набор уникальных отелей. У каждого указан Id - это идентификатор из базы Nemo. По нему можно получить дополнительную статичную информацию из путеводителя Nemo.бронирования</td>
Каждый отель содержит: </tr>* Набор номеров &lt;Rooms&gt;. Типы номеров (одноместный, двухместный и т.д.)&nbsp;: устанавливается автоматически по количеству клиентов из запроса. <tr class="row2">* Сервисы &lt;Services&gt;. Каждый отель предлагает различные типы обслуживания <td class="col0">ID </td><td class="col1">да </td><td class="col2">число</td><td class="col3">Номер бронирования в номерах. Цена и доступность может различатьсясистеме Nemo.</td> </tr> <tr class="row3">* Категория &lt;Categories&gt <td class="col0 leftalign">Status </td><td class="col1">да </td><td class="col2">строка </td><td class="col3">Статус брони, возможные значения: booked - забронировано, canceled - бронь отменена, ticket - выписана;UNDEFINED - статус не определён. Это допустимые комбинации номер + обслуживание. Для бронирования отеля пользователь должен выбрать одну из предлагаемых ему категорий.</td>
<syntaxhighlight lang/tr> <tr class="xmlrow4" line enclose> <td class="divcol0" style>Code </td><td class="font-size:9pt;background: #F9F9F9; border: 1px dashed #2F6FAB; padding: 10px 5px; margin: 10px 0;col1">да </td><SOAP-ENV:Envelope xmlns:SOAP-ENVtd class="http:col2">строка <//schemastd><td class="col3">Номер бронирования в системе поставщика (в sabre, sirena и т.xmlsoapд.org)/soapкод тарифного правила</envelopetd> </tr> <tr class="row5" >xmlns:ns1 <td class="http:col0">QueryPlace </td><td class="col1">нет </tst.nemo-ibe.comtd><td class="col2">сложный </wsdevtd><td class="col3">Очередь, в которую помещено бронирование</?version%3D1.0%26for%3DHotelsSearch"td> <SOAP-ENV:Body/tr> <ns1:searchResponsetr class="row6"> <ResponseBintd class="col0 leftalign"> Number <Response/td> <HotelSearchtd class="col1"> да <Hotels/td> <Hotel Idtd class="1872666col2"> число </td><Suppliertd class="col3">GTAНомер очереди</Suppliertd> <CityId/tr>22046 </CityIdtr class="row7"> <DateBegintd class="col0">2013-10-15Flight </DateBegintd> <DateEndtd class="col1">2013-10-18да </DateEndtd> <CacheIdtd class="col2">1872666сложный </CacheIdtd> <Nametd class="col3">ADLON KEMPINSKIПерелёт, по которому была сделана бронь (Результаты проверки доступности для перелёта)</Nametd> <Categories/tr> <Category Idtr class="1row8"> <td class="col0">Agency <Rooms/td> <Room Counttd class="1col1" Id>да </td><td class="1col2" ServiceId>сложный </td><td class="1col3">Информация об агентстве</td> </tr> <Room Counttr class="1row9" Id> <td class="2col0" ServiceId>ItinReceipts</td><td class="2col1">нет </td><td class="col2"> сложный </Roomstd> <TotalPrice Currencytd class="RUBcol3">74733Маршрут квитанция. Содержит строку в кодировки Encoding (как правило в base64), представляющую маршрут квитанцию в формате Format.84</TotalPricetd> </Category> </Categoriestr> <Servicestr class="row10"> <Service Idtd class="1col0" Status>Encoding </td><td class="OKcol1"> да </td><Desctd class="col2">Standard Twinстрока </Desctd> <Mealtd class="col3">Full BreakfastКодировка</Mealtd> <Price/tr> </Servicetr class="row11"> <Service Idtd class="2col0" Status>Format </td><td class="OKcol1"> <Desc>Standard Twinда </Desctd> <Mealtd class="col2">Full Breakfastстрока</Mealtd> <Price/td class="col3"> Формат</Servicetd> </Servicestr> <Roomstr class="row12"> <Room Idtd class="1col0" Type>Travellers</td><td class="TWINcol1">да </td> <Room Idtd class="2col2" Type>сложный </td><td class="SNGLcol3">Контейнер для информации о пассажирах</td> </Roomstr> </Hoteltr class="row13"> ... </Hotelstd class="col0"> Traveller </HotelSearchtd> </Responsetd class="col1"> да </ResponseBintd> </ns1:searchResponsetd class="col2"> сложный </SOAP-ENV:Bodytd></SOAP-ENV:Envelopetd class="col3">Информация о пассажире</syntaxhighlighttd>
Элемент '''Hotel''' </tr>{| style <tr class="row14"> <td class="width: 800pxcol0" >Ticket </td><td class="wikitablecol1"|-! scope>нет </td><td class="col2">сложный </td><td class="colcol3" width>Билет пассажира.</td> </tr> <tr class="200row15" | Элемент>! scope <td class="colcol0" width>TickectNum </td><td class="300col1" | Описание! scope>да </td><td class="colcol2" width>строка </td><td class="300col3" | Допустимые значения|-| Атрибут Id| Обязательный. Идентификатор отеля как одного из результатов поиска в системе Nemo.| Целое число.|-| Supplier| Обязательный. Тип поставщика, в котором найден отель.| Строка.Возможные значения:GTAHOTELBEDSDOTWSERHSMIKITRAVCOACADEMTOURICO|-| CityId| Обязательный. Идентификатор города в системе Nemo.| Целое число.|-| CacheId| Обязательный. Идентификатор результата поиска для данного отеля в системе Nemo.| Целое число.|-| Name| Обязательный. Название отеля.| Строка в произвольном формате.|-| Services| Обязательный. Услуги в отеле.| Элемент Service|-| Rooms| Обязательный. Комнаты в отеле.| Элемент Room|-| Categories| Обязательный. Категории, доступные для бронирования в отеле.| Элемент Category|}>Номер билета</td>
Элемент '''Service''' </tr>{| style <tr class="width: 800pxrow16" > <td class="wikitablecol0"|-! scope>Seats</td><td class="col1">нет </td><td class="colcol2" width>сложный </td><td class="200col3" | Элемент>Контейнер мест пассажира.</td> </tr>! scope <tr class="colrow17" width> <td class="300col0" | Описание! scope>Seat </td><td class="colcol1" width>да </td><td class="300col2" | Допустимые значения|-| Атрибут Id| Обязательный. Идентификатор услуги.| Целое число|-| Атрибут Status| Обязательный. Доступность отеля. ОК означает доступен (мгновенное подтверждение).RQ - недоступен (по запросу).| ОК>сложный </RQ|-| Desc| Необязательный. Описание отеля.| Строка td><td class="col3">Место в произвольном формате.|-| Meal| Обязательный. Питание для данного сервиса.| Строка в произвольном формате.|-| Price| Необязательный. Указывает на стоимость номера с данной услугой.| Вещественное число.Атрибут Currency - код валюты.|}самолёте</td>
Элемент '''Room''' </tr>{| style <tr class="row18"> <td class="col0">Number </td><td class="width: 800pxcol1" >да </td><td class="wikitablecol2"|-! scope>строка</td><td class="colcol3" width>Номер места(ряд+номер в ряду)</td> </tr> <tr class="200row19" | Элемент>! scope <td class="colcol0" width>Characteristic </td><td class="300col1" | Описание! scope>нет</td><td class="colcol2" width>строка </td><td class="300col3" | Допустимые значения|-| Атрибут Id| Обязательный. Идентификатор комнаты >Характеристика места в отеле.| Целое число.|-| Type| Обязательныйсоответствии со стандартом EDIFACT. Тип номераСм справочник “Таблица характеристик мест”.| Строка. Возможные значения:SNGL – одноместныйDBL – двухместный с двухспальной кроватьюTWIN – двухместный с двумя кроватямиTRIP – трёхместныйQUAD – четырёхместный|}</td>
Элемент '''Category''' </tr>{| style <tr class="row20"> <td class="width: 800pxcol0" >SmokingPreference </td><td class="wikitablecol1"|-! scope>нет </td><td class="colcol2" width>строка </td><td class="200col3" | Элемент>Статус курения на этом месте, если Y - место для курящих, если N - место для некурящих.</td> </tr>! scope <tr class="colrow21" width> <td class="300col0" | Описание! scope>SegmentNumber </td><td class="colcol1" width>да </td><td class="300col2" | Допустимые значения|-| Атрибут Id| Обязательный. Идентификатор категории.| Целое >число.|-| Rooms| Обязательный. Массив комнат с соответствием услуг.| Целое число.|-| Room| Атрибут: Count</td><td class="col3">Номер сегмента</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>
Атрибут </tr> <tr class="row24"> <td class="col0">ContactInfo </td><td class="col1">нет </td><td class="col2">сложный </td><td class="col3">Контактная информация для пассажира</td> </tr> <tr class="row25"> <td class="col0">FareStored </td><td class="col1">нет </td><td class="col2">срока: IdYes/No </td><td class="col3">Указывает установлена ли / гарантируется ли цена у поставщика. Если параметр отсутствует в ответе, то по умолчанию значение “Yes”.</td>
Обязательный. Идентификатор комнаты из атрибута Id в элементе Hotel- </tr> Rooms- <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="col1">да</td><td class="col2">число</td><td class="col3">Номер брони, которая отменялась (Номер выписанной брони, выписка которой отменялась)</td> Room.
Атрибут </tr> <tr class="row28"> <td class="col0">Result</td><td class="col1">да</td><td class="col2">сложный</td><td class="col3">Результат отмены (войдирования)</td> </tr> <tr class="row29"> <td class="col0">Success</td><td class="col1">да</td><td class="col2">булевский</td><td class="col3">Индикатор, показывающий успешно или нет прошла отмена, возможные значения: ServiceIdtrue - успешно отменена (войдирование); false - не отменена</td>
- Идентификатор услуги из атрибута Id элемента Service. </tr>| Целое <tr class="row30"> <td class="col0">GetAirRulesResult</td><td class="col1">да</td><td class="col2">сложный</td><td class="col3">Контейнер для тела ответа поиска тарифных правил</td> </tr> <tr class="row31"> <td class="col0">FlightId</td><td class="col1">да</td><td class="col2">число.</td><td class="col3">Номер перелёта, для которого найдены тарифные правила (будет проводилась проверка доступности)</td>
Целое число. </tr> <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>
Целое число. </tr>|- <tr class="row34">| TotalPrice <td class="col0">Tarrif</td><td class="col1">да</td><td class="col2">строка</td><td class="col3">Код тарифа, для которого правило применяется</td>| Обязательный. Суммарная стоимость бронируемого сочетания “Комнаты - услуги”. </tr>| Вещественное число.Атрибут Currency - код валюты.|} <tr class="row35"> <td class="col0">Name</td><td class="col1">да</td><td class="col2">строка</divtd><td class="col3">Имя правила</divtd>
</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="col1">да</td><td class="col2">сложный</td><td class="col3">Контейнер для тела ответа помещения брони в очередь</td>
</tr>
<tr class="row38">
<td class="col0">IsAvail</td><td class="col1">да</td><td class="col2">булевский</td><td class="col3">Индикатор, показывающий доступность перелёта, возможные значения: true - доступен; false - недоступен</td>
</tr>
<tr class="row39">
<td class="col0">VoidTicketResult</td><td class="col1">да</td><td class="col2">сложный</td><td class="col3">Контейнер для тела ответа отмены выписки брони</td>
</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=Сервис получения дополнительной информации об отеле требует указания идентификатора отеля в системе Nemo и категории."col3">Контейнер для перелётов</td>
'''WSDL''' </tr> <tr class="row42"> <td class="col0">Flight</td><td class="col1">нет</td><td class="col2">сложный</td><td class="col3">Представляет информацию о перелёте. Отсутствует если перелётов не найдено (тестовый сервериспользуется в поисковом ответе): http:</td> </tr> <tr class="row43"> <td class="col0">WebService</td><td class="col1">да</td><td class="col2">строка</tst.nemotd><td class="col3">Веб-ibeсервис (поставщик) от которого был получен перелёт.com/wsdev</wsdl.php?for=HotelExtInfotd>
<div class="toccolours mw-collapsible mw-collapsed" style="width:1000px"/tr>===== Запрос ===== <div tr class="mw-collapsible-contentrow44"> <syntaxhighlight langtd class="xml" line enclose="div" style="font-size:9pt;background: #F9F9F9; border: 1px dashed #2F6FAB; padding: 10px 5px; margin: 10px 0;col0">ValCompany<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:--td class="col3"> <CategoryId>1IATA код авиакомпании. Валидирующий перевозчик, на бланках которого должен выписываться билет.</CategoryIdtd> </Itemtr> </HotelExtInfotr class="row45"> </Request> <Source> <ClientIdtd class="col0">Segments</ClientIdtd> <APIKeytd class="col1">да</APIKeytd> <Languagetd class="col2">ruсложный</Languagetd> <Currency>RUB</Currency> </Sourcetd class="col3"> </RequestBin> </ver:extInfo> </soapenv:Body></soapenv:Envelope>Контейнер для сегментов перелёта</syntaxhighlighttd>
Элемент '''Item''' </tr>{| style <tr class="width: 800pxrow46" > <td class="wikitablecol0"|-! scope>Segment</td><td class="colcol1" width>да</td><td class="200col2" | Элемент! scope>сложный</td><td class="colcol3" width>Представляет информацию о сегменте</td> </tr> <tr class="300row47" | Описание>! scope <td class="colcol0" width>SegNum</td><td class="300col1">да</td><td class=" | Допустимые значения|-| CacheId| Обязательный. Идентификатор результата поиска.| Целое col2">число|-| CategoryId| ID выбранной категории.| Целое число|}</td><td class="col3">Номер сегмента в перелёте</td>
Элемент '''Source''' </tr>{| style <tr class="width: 800pxrow48" > <td class="wikitablecol0"|-! scope>DepAirp</td><td class="colcol1" width>да</td><td class="200col2" | Элемент! scope>строка</td><td class="colcol3" width>IATA код аэропорта отправления</td> </tr> <tr class="300row49" | Описание>! scope <td class="colcol0" width>DepTerminal</td><td class="300col1" | Допустимые значения|-| ClientID| Обязательный. ID клиента в системе Nemo.Можно посмотреть>нет</добавить в td><td class="Администрированиеcol2" ⇨ "Веб-служба. Авторизация".| Целое число.|-| APIKey| Обязательный. APIKey - секретный ключ доступа к API Nemo.Можно посмотреть>строка</добавить в td><td class="Администрированиеcol3" ⇨ "Веб-служба. Авторизация".| Латинские буквы и цифры. Всего 32 символа.|}</div>Код терминала отправления</divtd>
<div class="toccolours mw-collapsible mw-collapsed" style="width:1000px"/tr>===== Ответ ===== <div tr class="mw-collapsible-contentrow50"> <syntaxhighlight langtd class="xml" line enclose="div" style="font-size:9pt;background: #F9F9F9; border: 1px dashed #2F6FAB; padding: 10px 5px; margin: 10px 0;col0">ArrAirp<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%3DHotelExtInfo" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instancecol1"> <SOAP-ENV:Body> <ns1:extInfoResponse> <ResponseBin> <Response> <HotelExtInfo> <CategoryId>1да</CategoryIdtd> <PriceInfo> <PriceBreakDown> <Datetd class="col2"> <From>2013-10-15строка</Fromtd> <To>2013-10-18</To> <Price Currencytd class="RUBcol3">12455.64IATA код аэропорта прибытия</Pricetd> </Datetr> <Datetr class="row51"> <Fromtd class="col0">2013-10-15ArrTerminal</Fromtd> <To>2013-10-18</To> <Price Currencytd class="RUBcol1">12455.64нет</Pricetd> </Date> </PriceBreakDown> <Netto Currencytd class="EURcol2">1821строка</Nettotd> <Gross xsi:niltd class="truecol3"/> </PriceInfo> </HotelExtInfo> </Response> </ResponseBin> </ns1:extInfoResponse> </SOAP-ENV:Body></SOAP-ENV:Envelope>Код терминала прибытия</syntaxhighlighttd>
Элемент '''HotelExtInfo''' </tr>{| style <tr class="row52"> <td class="width: 800pxcol0" >OpAirline</td><td class="wikitablecol1"|-! scope>да</td><td class="col2">строка</td><td class="colcol3" width>Код авиакомпании, выполняющей рейс</td> </tr> <tr class="200row53" | Элемент>! scope <td class="colcol0" width>MarkAirline</td><td class="300col1" | Описание! scope>да</td><td class="colcol2" width>строка</td><td class="300col3" | Допустимые значения|-| CategoryId| Обязательный. Идентификатор категории.| Целое число|-| PriceInfo| Обязательный. Элемент содержащий информацию о цене| см. Элемент PriceInfo|}>Код авиакомпании, продающей билет</td>
Элемент '''PriceInfo''' </tr>{| style="width: 800px" <tr class="wikitablerow54">|-! scope <td class="colcol0" width>FlightNumber</td><td class="200col1" | Элемент! scope>да</td><td class="colcol2" width>число</td><td class="300col3" | Описание>Номер рейса</td>! scope </tr> <tr class="colrow55" width> <td class="300col0" | Допустимые значения|-| style>AircraftType</td><td class="width:208px; height:35pxcol1" | PriceBreakDown| style>да</td><td class="width:208px; height:35pxcol2" | Необязательный. Информация о ценах, расписанная по каждому дню.| style>строка</td><td class="width:208px; height:35pxcol3" | Список элементов Date|-| Netto| Обязательный. Стоимость от поставщика.| Вещественное число.Атрибут Currency - код валюты.|-| Gross| Обязательный. Общая стоимость.| Вещественное число.Атрибут Currency - код валюты.|}>Код типа самолёта</td>
Элемент '''Date''' </tr>{| style <tr class="width: 800pxrow56"> <td class="col0" >DepDateTime</td><td class="wikitablecol1"|-! scope>да</td><td class="colcol2" width>строка</td><td class="200col3" | Элемент>Дата и время отправления, формат ГГГГ-MM-ДДTЧЧ:ММ:СС</td>! scope </tr> <tr class="colrow57" width> <td class="300col0" | Описание! scope>ArrDateTime</td><td class="col1">да</td><td class="colcol2" width>строка</td><td class="300col3" | Допустимые значения|-| From| Обязательный. >Дата начала действия тарифа| Формат гггги время прибытия, формат ГГГГ-ммMM-дд|-| To| Обязательный. Дата окончания действия тарифа| Формат гггг-мм-дд|-| Price| Цена за одну ночь.| Вещественное число.Атрибут Currency - код валюты.|}</div>ДДTЧЧ:ММ:СС</divtd>
=== Статические данные ===Для работы с веб-сервисом Nemo необходимо выгрузить статичные данные. Это данные о странах, городах и отелях.==== Страна ===='''WSDL''' (тестовый сервер): http: <//tst.nemo-ibe.com/wsdev/wsdl.php?for=CountryStatictr> <div tr class="toccolours mw-collapsible mw-collapsed" style="width:1000pxrow58">====== Запрос ====== <div td class="mw-collapsible-contentcol0">StopNum</td><syntaxhighlight langtd class="xml" line enclose="div" style="font-size:9pt;background: #F9F9F9; border: 1px dashed #2F6FAB; padding: 10px 5px; margin: 10px 0;col1">да<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:vertd><td class="http://tst.nemo-ibe.com/wsdev/?version%3D1.0%26for%3DCountryStaticcol2"> число<soapenv:Header/td> <soapenv:Bodytd class="col3"> <ver:countries> <RequestBin> <Request> <CountryStatic> Число остановок</CountryStatictd> </Requesttr> <Sourcetr class="row59"> <ClientIdtd class="col0">Meal</ClientIdtd> <APIKeytd class="col1">да</APIKeytd> <Languagetd class="col2">ruстрока</Languagetd> <Currencytd class="col3">RUB<Тип питания, возможные значения: UNDEFINED - неизвестно; N - Нет питания; P - Алкогольные напитки в продаже; B - Завтрак; O - Холодная еда; C - Бесплатные алкогольные напитки; K - Континтальный завтрак; D - Обед; F - Еда в продаже; G - Еда/Currency> <напитки в продаже; H - Горячая еда; L - Ланч; M - Еда; R - Освежающие еда/Source> <напитки бесплатно; V - Освежающие еда/RequestBin> </ver:countries> </soapenv:Body></soapenv:Envelope>напитки за отдельную плату; S - Закуска</syntaxhighlighttd>
Элемент '''Request''' </tr>{| style <tr class="width: 800pxrow60" > <td class="wikitablecol0"|-! scope>BookingCodes</td><td class="col1">да</td><td class="colcol2" width>сложный</td><td class="200col3" | Элемент>Контейнер для классов перелёта</td>! scope </tr> <tr class="row61"> <td class="colcol0" width>BookingCode</td><td class="300col1" | Описание! scope>да</td><td class="colcol2" width>строка</td><td class="300col3" | Допустимые значения|-| CountryStatic| Пустой элемент| >Код класса перелёта. Если производится поиск по расписанию, то может встречаться несколько раз.<br/td>|}
Элемент '''Source''' </tr>{| style <tr class="width: 800pxrow62" > <td class="wikitablecol0"|-! scope>FlightTime</td><td class="colcol1" width>нет</td><td class="200col2" | Элемент! scope>число</td><td class="colcol3" width>Время перелёта в минутах</td> </tr> <tr class="300row63" | Описание>! scope <td class="colcol0" width>TimeZone</td><td class="300col1" | Допустимые значения|-| ClientID| Обязательный. ID клиента в системе Nemo.Можно посмотреть>нет</добавить в td><td class="Администрированиеcol2 rightalign" ⇨ "Веб-служба. Авторизация".| Целое число.|-| APIKey| Обязательный. APIKey - секретный ключ доступа к API Nemo.Можно посмотреть> сложный</добавить в td><td class="Администрированиеcol3" ⇨ "Веб-служба. Авторизация".| Латинские буквы >Информация о временных зона прибытия и цифры. Всего 32 символа.|}</div>отправления</divtd>
<div class="toccolours mw-collapsible mw-collapsed" style="width:1000px"/tr>====== Ответ ====== <div tr class="mw-collapsible-contentrow64"> <syntaxhighlight lang="xml" line enclosetd class="div" style="font-size:9pt;background: #F9F9F9; border: 1px dashed #2F6FAB; padding: 10px 5px; margin: 10px 0;col0">Departure<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>АфганистанЧасовой пояс отправления, UTC (смещение относительно Гринвича)</Nametd> </Infotr> <Info Languagetr class="ENrow65"> <Name>Afghanistan</Name> </Info> </Data> </Country> </Countriestd class="col0"> Arrival</CountryStatictd> </Responsetd class="col1"> да</ResponseBintd> </ns1:countriesResponsetd class="col2"> число</SOAP-ENV:Bodytd></SOAP-ENV:Envelopetd class="col3">Часовой пояс прибытия, UTC (смещение относительно Гринвича)</syntaxhighlighttd>
Элемент '''CountryStatic''' </tr>{| style <tr class="width: 800pxrow66"> <td class="col0">ETicket</td><td class="col1" >да</td><td class="wikitablecol2"|-! scope>булевский</td><td class="colcol3 rightalign" width> Индикатор электронного билета, возможные значения: true - билет является электронным, false - билет не является электронным.</td> </tr> <tr class="200row67" | Элемент>! scope <td class="colcol0" width>Baggage</td><td class="300col1" | Описание! scope>нет</td><td class="colcol2" width>сложный</td><td class="300col3" | Допустимые значения|-| Countries| Обязательный| Набор элементов Country|}>Информация о багаже</td>
Элемент '''Country''' </tr>{| style <tr class="row68"> <td class="width: 800pxcol0" >Measure</td><td class="wikitablecol1"|-! scope>да</td><td class="colcol2" width>строка</td><td class="200col3" | Элемент>Мера веса. K - килограммы, PC - сумки/клади</td>! scope </tr> <tr class="colrow69" width> <td class="col0">Value</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>{| style <tr class="width: 800pxrow70" > <td class="wikitablecol0"|-! scope>PricingInfo</td><td class="col1">нет</td><td class="colcol2" width>сложный</td><td class="200col3" | Элемент>Контейнер для информации о ценах. Отсутствует в случае, если производится поиск по расписанию.</td> </tr>! scope <tr class="colrow71" width> <td class="col0">Refundable</td><td class="300col1" | Описание! scope>да</td><td class="colcol2" width>булевский</td><td class="300col3" | Допустимые >Индикатор показывающий является ли билет возвратным или нет, возможные значения|-| Атрибут Language| Обязательный. Язык в котором представлена информация.| Строка из 2: true -х латинских букв.|возвратный (нет штрафов за возврат), false -| Name| Обязательный. Наименование страны.| Строка в произвольном формате.|}</div>невозвратный (могут быть штрафы за возврат)</divtd>
</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>
</tr>
<tr class="row74">
<td class="col0">BaseFare</td><td class="col1">да</td><td class="col2">сложный</td><td class="col3">Цена в базовой валюте(за одного пассажира)</td>
</tr>
<tr class="row75">
<td class="col0">EquiveFare</td><td class="col1">нет</td><td class="col2">сложный</td><td class="col3">Цена в эквивалентной валюте(за одного пассажира), при поиске цены не возвращается</td>
</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=Параметры поиска всех услуг требуют указания ID города"col3">Трёх буквенный код валюты. Города выгружаются по каждой стране следующим запросом:</td>
'''WSDL''' (тестовый сервер): http: </tr> <tr class="row78"> <td class="col0">Amount</tsttd><td class="col1">да</td><td class="col2">число с плавающей точкой</td><td class="col3">Значение стоимости.nemo-ibe.com</td> </tr> <tr class="row79"> <td class="col0">Taxes</td><td class="col1">нет</wsdevtd><td class="col2">сложный</wsdl.php?fortd><td class=CityStatic"col3">Контейнер для такс, при поиске цены не возвращается</td>
<div class="toccolours mw-collapsible mw-collapsed" style="width:1000px"/tr>====== Запрос ====== <div tr class="mw-collapsible-contentrow80"> <syntaxhighlight lang="xml" line enclosetd class="div" style="font-size:9pt;background: #F9F9F9; border: 1px dashed #2F6FAB; padding: 10px 5px; margin: 10px 0;col0">Tax<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:Body> <ver:citiestd class="col2"> <RequestBin> <Request> <CityStatic> <CountryId>4сложный</CountryIdtd> </CityStatictd class="col3"> Одна такса</Requesttd> <Source> <ClientId> </ClientIdtr> <APIKey></APIKeytr class="row81"> <Languagetd class="col0">ruCurCode</Languagetd> <Currencytd class="col1">RUBда</Currencytd> </Source> </RequestBintd class="col2"> строка</ver:citiestd> </soapenv:Bodytd class="col3"></soapenv:Envelope>Трёх буквенный код валюты для таксы</syntaxhighlighttd>
Элемент '''CityStatic''' </tr>{| style <tr class="width: 800pxrow82" > <td class="wikitablecol0"|-! scope>TaxCode</td><td class="col1">да</td><td class="colcol2" width>строка</td><td class="200col3" | Элемент>Код таксы</td> </tr>! scope <tr class="colrow83" width> <td class="300col0" | Описание! scope>Amount</td><td class="colcol1" width>да</td><td class="300col2" | Допустимые значения|-| CountryId| Обязательный. Идентификатор страны.| Целое >число|}с плавающей точкой</td><td class="col3">Значение таксы</td>
Элемент '''Source''' </tr>{| style <tr class="width: 800pxrow84" > <td class="wikitablecol0"|-! scope>Tariffs</td><td class="colcol1" width>да</td><td class="200col2" | Элемент! scope>сложный</td><td class="colcol3" width>Контейнер для тарифов</td> </tr> <tr class="300row85" | Описание>! scope <td class="colcol0" width>Tariff</td><td class="300col1" | Допустимые значения|-| ClientID| Обязательный. ID клиента в системе Nemo.Можно посмотреть>да</добавить в td><td class="Администрированиеcol2" ⇨ "Веб-служба. Авторизация".| Целое число.|-| APIKey| Обязательный. APIKey - секретный ключ доступа к API Nemo.Можно посмотреть>сложный</добавить в td><td class="Администрированиеcol3" ⇨ "Веб-служба. Авторизация".| Латинские буквы и цифры. Всего 32 символа.|}</div>Контейнер для одного тарифа</divtd>
<div class="toccolours mw-collapsible mw-collapsed" style="width:1000px"/tr>====== Ответ ====== <div tr class="mw-collapsible-contentrow86"> <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%3DCityStatic"td> <SOAP-ENV:Body> <ns1:citiesResponse> <ResponseBin> <Response> <CityStatic> <Cities> <City Idtd class="1col1"> <Name>Кабулда</Nametd> <CountryId>4</CountryId> <Data> <Info Languagetd class="ENcol2"> <Name>Kabulстрока</Nametd> </Info> <Info Languagetd class="RUcol3"> <Name>КабулКод тарифа</Nametd> </Infotr> </Data> </City> <City Idtr class="204793row87"> <Name>Aibak</Name> <CountryId>4</CountryId> <Data> <Info Languagetd class="ENcol0"> <Name>AibakSegNum</Nametd> </Info> <Info Languagetd class="RUcol1"> <Name>Aibakда</Nametd> </Info> </Data> </City> <City Idtd class="204785col2"> <Name>Anar Darahчисло</Nametd> <CountryId>4</CountryId> <Data> <Info Languagetd class="ENcol3"> <Name>Anar Darah</Name> </Info> <Info Language="RU"> <Name>Anar Darah</Name> </Info> </Data> </City> Номер сегмента для которого применяется тариф, если тариф применяется для всех сегментов, то возвращается 0... </Cities> </CityStatic> </Response> </ResponseBin> </ns1:citiesResponse> </SOAP-ENV:Body></SOAP-ENV:Envelope></syntaxhighlighttd>
Элемент '''CityStatic''' </tr>{| style <tr class="row88"> <td class="width: 800pxcol0" >FareCalc</td><td class="wikitablecol1"|-! scope>нет</td><td class="colcol2" width>строка</td><td class="200col3" | Элемент>Строка расчёта цены</td> </tr>! scope <tr class="colrow89" width> <td class="300col0" | Описание! scope>LastTicketDateTime</td><td class="col1">да</td><td class="colcol2" width>строка</td><td class="300col3" | Допустимые значения|>Дата и время таймлимита по выписке в формате ГГГГ-MM-| Cities| ОбязательныйДДTЧЧ:ММ:СС. Массив городовЕсли бронирование не будет аннулировано или выписано до этого времени, то могут быть применены штрафы. | Набор элементов City|}</td>
Элемент '''City''' </tr>{| style="width: 800px" class="wikitable"|-! scope="col" width="200" | Элемент! scope="col" width="300" | Описание! scope="col" width="300" | Допустимые значения|-| Атрибут '''Id'''| Обязательный. Идентификатор города.| Целое число|-| Name| Название города.| |-| Data| Названия городов на разных языках. В данный момент поддерживаются названия на русском и английском.| См. описание элемента Data в ответе получения информации о стране.|}</table>
</div>
</div>
==API Отелей==
'''Агентский API Отелей''' - система, которая предоставляет возможность поиска и бронирования отелей а так же получение информации о времени и размерах штрафов, уникальной информации об отеле, получение статической информации.
==== Статика по отелям и апартаментам ====Этот запрос будет использоваться для выгрузки статичной информации по одному или нескольким отелямПодробнее можно узнать в нашей специальной статье [http://support.nemo.travel/ru/%D0%90%D0%B3%D0%B5%D0%BD%D1%82%D1%81%D0%BA%D0%B8%D0%B9_API_%D0%9E%D1%82%D0%B5%D0%BB%D0%B5%D0%B9 Агентский АПИ отелей]
'''WSDL''' (тестовый сервер): http://tst.nemo-ibe.com/wsdev/wsdl.php?for=HotelStatic
<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%3DHotelStatic">
<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>
Элемент '''Hotels'''{| style="width: 800px" class="wikitable"|-! scopeВыгрузки статистики продаж через API (Метапоиск)="col" width="200" | Элемент! scope="col" width="300" | Описание! scope="col" width="300" | Допустимые значения|-| CityId| Обязательный. Идентификатор города из которого необходимо получить отели.| Целое число|}
Элемент '''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%3DHotelStatic" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <SOAP-ENV:Body> <ns1:hotelsResponse> <ResponseBin> <Response> <HotelStatic> <Hotels> <Hotel Id="271714" Apartment="false"> <CityId>58166</CityId> <CountryId>643</CountryId> <Latitude xsi:nil="true"/> <Longitude xsi:nil="true"/> <Rating>3</Rating> <Floors xsi:nil="true"/> <Data> <Info> <Name>* Azimut (businessметапоисковая машина, метапоисковик)</Name> <Area xsi:nil="true"/> <Location>Within city</Location> <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 Id="159535" Apartment="false"> <CityId>58166</CityId> <CountryId>643</CountryId> <Latitude>59.935011</Latitude> <Longitude>30.309284</Longitude> <Rating>5</Rating> <Floors xsi:nil="true"/> <Data> <Info> <Name>W St.petersburg</Name> <Area xsi:nil="true"/> <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></syntaxhighlight>
Элемент '''Hotel'''{| style="width: 800px" class="wikitable"|-! scope="col" width="200" | Элемент! scope="col" width="300" | Описание! scope="col" width="300" | Допустимые значения|-| Атрибут Id| Обязательный. Идентификатор отеля В разделе статистики заказов из метапоисков можно получить данные по статистике метапоиска (по источнику переходов модуля метрики) <u>за определенный период бронирования заказов</u> в системе Nemo.| Целое число.|-| CityId| Обязательный. Идентификатор города.| Целое число.|-| CountryId| Обязательный. Идентификатор страны .| Целое число.|-| Latitude| Необязательный. Широта.| Вещественное число.|-| Longitude| Необязательный. Долгота.| Вещественное число.|-| Rating| Необязательный. Рейтинг.| Вещественное число.|-| Floors| Необязательный. Количество этажей| Целое число.|-| Data| Необязательный.| Набор элементов Info.|-| Phones| Необязательный. Массив телефонов.| Набор элементов Phone.|-| Fax| Необязательный. Факс.| Строка виде файла данных в произвольном форматеXML.|-| Images| Необязательный. Маcсив изображений.| Набор элементов Image.|}
Элемент '''Info'''{| style="width: 800px" class="wikitable"|-! scope="col" width="200" | Элемент! scope="col" width="300" | Описание! scope="col" width="300" | Допустимые значения|-| Name| ОбязательныйМожно получить список заказов с их статусом (забронирован, выписан, аннулирован), сделанных через метапоисковую систему. Наименование отеля.| Строка в произвольном формате.|-| Area| Необязательный. Описание места расположения отеля.| Строка в произвольном формате.|-| Location| Необязательный. Район города.| Строка в произвольном формате.|-| Desc| Необязательный. Описание отеля.| Строка в произвольном формате.|-| Address| Необязательный. Адрес отеля.| Строка в произвольном формате.|}
Элемент '''Phones'''{| style="width: 800px" class="wikitable"|-! scope="col" width="200" | Элемент! scope="col" width="300" | Описание! scope="col" width="300" | Допустимые значения|-| Phone| Обязательный. Телефон.| Строка Подробнее можно узнать в произвольном формате.|}статье посвященной взаимодействию с метопоисковиками [[Взаимодействие с метапоисковиками]]
Элемент ==Выгрузка информации о заказах =='''ImageВыгрузка заказов'''{| style="width: 800px" class="wikitable"|-! scope="col" width="200" | Элемент! scope="col" width="300" | Описание! scope="col" width="300" | Допустимые значения|-| Path| Необязательный— это экспорт данных заказа или заказов для различных компонентов системы Nemo. Путь к полному изображениюМодуль позволяет внешней системе получать данные по заказам для дальнейшей обработки.| Строка в произвольном формате.|-| Icon| Необязательный. Путь к миниатюреПодробнее о процессе выгрузки, настройках, иконке.| Строка форматах выгрузки для различных компонент можно прочитать в произвольном формате.|}</div></div>статье [[Выгрузка]]
== API Синхронизации пользователей и субагентов ==
Назначение данного модуля — обеспечение взаимодействия между сторонней программой (например, системой автоматизации туроператора "САМО-тур") и Nemo в части синхронизации списка B2B-пользователей.
Модуль является компонентом, включаемым и отключаемым из административной части.
О механизме авторизации B2B-пользователей, синхронизации учетных записей можно прочитать в статье [[Синхронизация пользователей]]
==API бронирования, аннуляции, войдирования авиабилетовКросс­авторизации===== Подключение ==='''Авторизация пользователей из внешних систем''' — Система Nemo позволяет обращаться к ней как базе пользователей для авторизации из других систем (например форума на сайте, собственного ПО компании и т.п)
Получить доступ Для этого нужно подключиться к результатам бронирования в данном сервисе можно через SOAP клиента. Для получения результата необходим параметр — «FlightId» — Id перелётавеб-службе авторизации, для которого будет производится бронирование. WSDL находится -описание которой располагается по адресу: http://CLIENT_DOMAIN/nemoflights/wsdl.php?for=BookFlight.
=== Общий формат запроса [http:/ ответа бронирования ===/hostname/authorization_reol.wsdl http://hostname/authorization_reol.wsdl]
<div class="toccolours mw-collapsible mw-collapsed" style="width:1000px">
===== Запрос =====
<div class="mw-collapsible-content">
<syntaxhighlight lang="xml" line enclose="div" style="font-size:9pt;background: #F9F9F9; border: 1px dashed #2F6FAB; padding: 10px 5px; margin: 10px 0;">
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ver="http://CLIENT_DOMAIN/nemoflights/?version%3D1.0%26for%3DBookFlight">
<soapenv:Header/>
<soapenv:Body>
<ver:BookFlight>
<RequestBin>
<Request>
<BookFlight>
<FlightId>?</FlightId>
<!--FlightId — Id перелёта в системе Nemo-->
<!--Optional:-->
<ValidatingCompany>?</ValidatingCompany> <!--необязательный-->
<!--ValidatingCompany — валидирующий перевозчик (тот кто выписывает билет)-->
<!--Optional:-->
<BookingCodes>
<!--Zero or more repetitions:-->
<BookingCode Code="?" SegNumber="?"/>
<!--Code — код класса перелёта-->
<!--SegNumber — номер сегмента в перелёте (начинаются с 1)-->
</BookingCodes>
<!--Optional:-->
<CurrencyCode>?</CurrencyCode> <!--необязательный-->
<!--CurrencyCode — код валюты-->
<!--Optional:-->
<TicketTimeLimit>?</TicketTimeLimit> <!--необязательный-->
<!--TicketTimeLimit — таймлимит на оплату, формат: ГГГГ-ММ-ДДTЧЧ:ММ:СС-->
<!--Optional:-->
<Agency Name="?"> <!--необязательный-->
<!--Name — название агентства-->
<Telephone Type="?">
<!--Type — тип номера, обязательный, возможные значения:
M — мобильный, H — домашний, B — рабочий, A — агенство-->
<!--Optional:-->
<PhoneNumber>?</PhoneNumber>
<!--PhoneNumber — номер телефона-->
<!--Optional:-->
<CountryAccessCode>?</CountryAccessCode> <!--необязательный-->
<!--CountryAccessCode — код страны-->
<!--Optional:-->
<AreaCityCode>?</AreaCityCode> <!--необязательный-->
<!--AreaCityCode — код региона/города-->
</Telephone>
<Address City="?" State="?" StreetAddress="?" PostalCode="?" CountryCode="?"/> <!--необязательный-->
<!--City — город-->
<!--State — штат-->
<!--StreetAddress — адрес в городе (улица, дом, корпус, офис и т.д.)-->
<!--PostalCode — почтовый индекс-->
<!--CountryCode — код страны (RU, UA и т.п.)-->
</Agency>
<Travellers>
<!--Zero or more repetitions:-->
<Traveller Type="?" IsContact="?" LinkedTo="?" Num="?" TravellerId="?">
<!--Type — тип пассажира, обязательный, возможные значения: ADT — взрослые,
CNN — дети со взрослыми,UNN — дети без сопровождения взрослых, INF — младенцы, INS — младенцы с местом-->
<!--IsContact — если true — то данный пассажир является контактным лицом, если false — то не является,
контактное лицо может быть только 1, если среди пассажиров есть взрослые, то только кто-то из них
может быть контактным лицом, по умолчанию false-->
<!--Num — порядковый номер пассажира, начинается с 1-->
<!--LinkedTo — номер взрослого, к которому привязан младенец/ребёнок--> <!--необязательный-->
<!--TravellerId — устаревший параметр, не используется-->
<Meal>?</Meal> <!--необязательный-->
<!--Meal — код типа питания, возможные значения:
NONE — отсутствует
AVML — Азиатская вегетарианская кухня
BLML — Блюда щадящей диеты
CHML — Детское питание
CHPC — Детский холодный завтрак
СНСС — Детский горячий завтрак
CHHC — Детский ланч, ветчина и сыр
PBJS — Детский ланч, ореховое масло
CHMC — Детский обед макароны с сыром
DBML — Диабетическое питание
FPML — Фрукты
GFML — Питание без клейковины
HFML — Питание богатое клетчаткой
HNML — Индусская кухня
BBML — Питание для младенцев
KSML — Кошерная кухня
SMKB — Кошерный завтрак
SMKL — Кошерный ланч
SMKD — Кошерный обед
LPML — Малобелковое питание
LCML — Низкокалорийное питание
LFML — Низкохолестериновое питание
PRML — Низкопуриновое питание
LSML — Малосоленое питание
MOML — Мюсли
NLML — Безмолочные продукты
ORML — Восточная кухня
RVML — Сырые овощи
SFML — Морепродукты
SPML — Особое питание
VLML — Вегетарианское, молоко и яйца
VGML — Строго вегетарианское питание
VJML — Джайнизское вегетарианское
VOML — Восточное вегетарианское питание-->
<PersonalInfo DateOfBirth="?" Nationality="?" Gender="?">
<!--DateOfBirth — дата рождения в формате ДД.ММ.ГГГГ (например 31.12.2000)-->
<!--Nationality — гражданство, двух буквенный код страны (RU, UA, US и т.д.)-->
<!--Gender — пол пассажира, возможные значения: M — мужской(Male), F — женский(Female)-->
<FirstName>?</FirstName>
<!--FirstName — имя пассажира-->
<LastName>?</LastName>
<!--LastName — фамилия пассажира-->
<!--Optional:-->
<MiddleName>?</MiddleName> <!--необязательный-->
<!--MiddleName — отчество пассажира-->
</PersonalInfo>
<LoyaltyCard OpCode="?" Number="?"/> <!--необязательный-->
<!--OpCode — код авиакомпании-->
<!--Number — номер карточки-->
<ContactInfo> <!--необязательный-->
<!--Optional:-->
<EmailID>?</EmailID>
<!--EmailID — контактный email-->
<!--Optional:-->
<Telephone Type="?">
<!--Type — тип номера, возможные значения: M — мобильный, H — домашний, B — рабочий-->
<!--Optional:-->
<PhoneNumber>?</PhoneNumber>
<!--PhoneNumber — номер телефона-->
<!--Optional:-->
<CountryAccessCode>?</CountryAccessCode>
<!--CountryAccessCode — код страны-->
<!--Optional:-->
<AreaCityCode>?</AreaCityCode>
<!--AreaCityCode — код региона/города-->
</Telephone>
</ContactInfo>
<DocumentInfo DocType="?" DocNum="?" CountryCode="?" DocElapsedTime="?"/>
<!--DocType — тип документа, возможные значения:
Р — Паспорт
A – Паспорт иностранца
С — Внутренний гражданский паспорт
F – Документ заменяющий паспорт
М — Воинское удостоверение
N – Сертификат натурализации(специфичный документ США)
T – Док.повторного въезда, паспорт беженца
V – Документ для пересечения границы-->
<!--DocNum — номер документа-->
<!--CountryCode — двух буквенный код страны выдачи паспорта (RU, UA, US и т.д.)-->
<!--DocElapsedTime — срок истечения срока действия паспорта в ДД.ММ.ГГГ (например 31.12.2000)-->
<VisaInfo Num="?" IssueCountry="?" IssuePlace="?" BirthCountry="?" BirthCity="?" IssueDate="?"/>
<!--необязательный-->
<!--Num — номер визы-->
<!--IssueDate — дата(ДД.ММ.ГГГГ) выдачи визы-->
<!--IssueCountry — страна выдачи визы-->
<!--IssuePlace — место выдачи визы-->
<!--BirthCountry — страна рождения(IATA код страны)-->
<!--BirthCity — город рождения(название)-->
<ArrAddress City="?" State="?" StreetAddress="?" PostalCode="?" CountryCode="?"/> <!--необязательный-->
<!--City — город-->
<!--State — штат или область въезда-->
<!--StreetAddress — адрес: улица, номер дома, квартиры и т.д.-->
<!--PostalCode — почтовый код-->
<!--CountryCode — код страны-->
<PreferedPlace SmokingAllowed="?" Location="?" RowNumber="?" PlaceNumber="?" SegNumber="?"/>
<!--необязательный-->
<!--Если указаны номер ряда и номер места, то параметры SmokingAllowed и Location игнорируются-->
<!--SmokingAllowed — булевское значение, true — место для курящих, false — место для некурящих-->
<!--Location — положение места в ряде, возможные значения:
W — у окна (Window)
M — где-то в середине ряда (Middle)
NPW — возле прохода (NearPassengerWay)
NS — нет предпочтения (NotSpecified)-->
<!--RowNumber — номер ряда-->
<!--PlaceNumber — номер места-->
<!--SegNumber — номер сегмента-->
<DocStringFormats>
<!--Zero or more repetitions:-->
<DocStringFormat>?</DocStringFormat>
<!--DocStringFormat — формат паспортной строки, возможные значения:
DOCS — строка формата DOCS, FOID — строка формата FOID-->
</DocStringFormats>
</Traveller>
</Travellers>
<!--Optional:-->
<QueueNum>?</QueueNum> <!--необязательный-->
<!--QueueNum — номер очереди, в которую необходимо поместить бронирование-->
</BookFlight>
</Request>
<Source>
<ClientId>?</ClientId>
<!--ClientId — ID клиента в системе Nemo. Можно посмотреть/добавить в разделе
"Администрирование" ? "Веб-служба. Авторизация".-->
<APIKey>?</APIKey>
<!--APIKey — секретный ключ доступа к API Nemo. Можно посмотреть/добавить в разделе
"Администрирование" ? "Веб-служба. Авторизация".-->
<Language>?</Language>
<!--Language — язык-->
<Currency>?</Currency>
<!-- CUrrency — валюта-->
</Source>
</RequestBin>
</ver:BookFlight>
</soapenv:Body>
</soapenv:Envelope>
</syntaxhighlight>
</div>
</div>
<pre>?xml version ='1.0' encoding ='UTF-8' ?><definitions name='Authorization' targetNamespace='http://example.org/Authorization' xmlns:tns=' http://example.org/Authorization ' xmlns:soap='http://schemas.xmlsoap.org/wsdl/soap/' xmlns:xsd='http://www.w3.org/2001/XMLSchema' xmlns:soapenc='http://schemas.xmlsoap.org/soap/encoding/' xmlns:wsdl='http://schemas.xmlsoap.org/wsdl/' xmlns='http://schemas.xmlsoap.org/wsdl/'> <message name='getAuthorizationRequest'> <part name='login' type='xsd:string'/> <part name='pass' type='xsd:string'/></message><message name='getAuthorizationResponse'> <part name='session_id' type='xsd:string'/> <part name='user_id' type='xsd:string'/> <part name='login' type='xsd:string'/> <part name='status' type='xsd:string'/></message> <portType name='AuthorizationPortType'> <operation name='getAuthorization'> <input message='tns:getAuthorizationRequest'/> <output message='tns:getAuthorizationResponse'/> </operation></portType> <binding name='AuthorizationBinding' type='tns:AuthorizationPortType'> <soap:binding style='rpc' transport='http://schemas.xmlsoap.org/soap/http'/> <operation name='getAuthorization'> <soap:operation soapAction='urn:xmethods-delayed-quotes#getAuthorization'/> <input> <soap:body use='encoded' namespace='urn:xmethods-delayed-quotes' encodingStyle='http://schemas.xmlsoap.org/soap/encoding/'/> </input> <output> <soap:body use='encoded' namespace='urn:xmethods-delayed-quotes' encodingStyle='http://schemas.xmlsoap.org/soap/encoding/'/> </output> </operation></binding> <service name='AuthorizationService'> <port name='AuthorizationPort' binding='AuthorizationBinding'> <soap:address location='http://nemo.local/controllers/authorization/auth_server.php'/> </port></service></definitions></pre></div class></div> ="toccolours mw=Передача параметров в форму поиска (FastSearch)== В системе Nemo имеется возможность перенаправлять пользователей на страницу с уже заполненными параметрами поиска или сразу напрямую на результаты поиска. Примеры FastSearch запросов и используемые переменные подробно описаны в статье [[FastSearch - передача параметров в форму]]  FastSearch так же работает и для отелей, подробности в статье [[Fast Search для отелей]] <!-collapsible mw-collapsedТ.к. это внутренний формат обмена данными между Немо и одним клиентом, то данную инфу скроем в комментарии==Проверка в сторонней системе возможности тикетинга== При выписки билета через стороннюю систему 1С, отправляется запрос "GetDebtCounterparty" style, который спрашивает, можно ли с счета в 1С списать средства для оплаты. В ответе содержится заключение от 1С, в случае если ошибок нет, то в ответе будет <pre><m:Opportunity>Да</m:Opportunity></pre>Пример запроса "GetDebtCounterparty"<pre><?xml version="1.0" encoding="width:1000pxUTF-8"?>
==== Ответ ====<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"Body> <SOAP-ENVns1:BodyGetDebtCounterparty> <ns1:BookFlightResponseExternalUserId> 00000001<ResponseBin> <Response> <BookFlight ID="?" Status="?" Code="?"> <!--ID — Id брони в системе Nemo, целое число, обязательный--> <!--Status — индикатор состояния брони, возможные значения: booked — забронировано, canceled — бронь отменена, ticket — выписана UNDEFINED — статус не определён--> <!--Code — код брони в системе поставщика--> <QueryPlace xsi:nil="true"/> <!--QueryPlace — положение брони в очереди, Number — номер брони в очереди--> <Flight FlightId="?"> <!--FlightId — Id перелёта в системе Nemo--> <WebService>?</WebService> <!--WebService — поставщик перелёта--> <ValCompany>?</ValCompany> <!--ValCompany — код авиакомпании, являющейся валидирующим перевозчиком, IATA--> <URL>?</URL> <!--URL — ссылка на бронирование конкретного перелета--> <Segments> <Segment SegNum="?" SegGroupNum="?"> <!--SegNum — номер сегмента в перелёте--> <!--SegGroupNum – номер плеча перелёта--> <DepAirp CodeType="IATA">?</DepAirp> <!--DepAirp — аэропорт отправления, напримерns1: MOW — любой аэропорт в г.Москва или SVO — Шереметьево--ExternalUserId> <DepTerminal>?</DepTerminal> <!--DepTerminal — терминал пункта отправления, если пустое значение, то в аэропорту всего 1 терминал--> <ArrAirp CodeType="IATA">?</ArrAirp> <!--ArrAirp — аэропорт прибытия--> <ArrTerminal>?</ArrTerminal> <!--ArrTerminal — терминал пункта прибытия, если пустое значение, то в аэропорту всего 1 терминал--> <OpAirline>?</OpAirline> <!--OpAirline — авиакомпания перевозчик, напримерns1: SU — Аэрофлот--> <MarkAirlineExternalPaymentId>?00000001</MarkAirline> <!--MarkAirline — авиакомпания, продающая перелёт--> <FlightNumber>?</FlightNumber> <!--FlightNumber — номер рейса--> <AircraftType>?</AircraftType> <!--AircraftType — тип воздушного судна, код--> <DepDateTime>?</DepDateTime> <!--DepDateTime — дата и время отправления, формат ГГГГ-MM-ДДTЧЧns1:ММ:СС--ExternalPaymentId> <ArrDateTime>?</ArrDateTime> <!--ArrDateTime — дата и время прибытия, формат ГГГГ-MM-ДДTЧЧns1:ММ:СС--BaseFare> <StopNum>?2490</StopNum> <!--StopNum — количество остановок--> <BookingCodes> <BookingCode ClassType="?"> <!--ClassType — класс перелета, напримерns1: economy--BaseFare> <BookingCode>?</BookingCode> <!--BookingCode — код класса бронирования, у разных авиакомпаний один и тот же класс может записываться разными литерами, напримерns1: L--Tax> 643</BookingCode> </BookingCodes> <FlightTime>?</FlightTime> <!--FlightTime — время перелёта в минутах--> <TimeZone Departure="?" Arrival="?"/> <!--Departure временная зона аэропорта отправления--> <!--Arrival — временная зона аэропорта прибытия--> <ETicket>?</ETicket> <!--ETicket — признак электронного билета, значенияns1: true / false--Tax> </Segment> </Segments> <PricingInfo Refundable="?"> <!--Refundable — возвратный/невозвратный, true/false. Если пустое, то не известно--> <PassengerFare Type="?" Quantity="?"> <!--Type — тип пассажира, возможные значенияns1: ADT — взрослые, CNN — дети, INF — младенцы, INS — младенцы с местом--> <!--Quantity — количество пассажиров данного типа--ValVendorCommission> <BaseFare Currency="?" Amount="?"/> <!--BaseFare — базовая стоимость, в базовой валюте49. Currency — код валюты, Amount — значение цены--> 8<EquiveFare Currency="?" Amount="?"/ns1:ValVendorCommission> <!--EquiveFare — базовая стоимость, в эквивалентной валюте(валюте продажи). Currency — код валюты, Amount — значение цены--> <TotalFare Currency="?" Amount="?"/> <!--TotalFare — суммарная стоимость, в эквивалентной валюте. Currency — код валюты, Amount — значение цены--> <Taxes> <Tax CurCode="?" TaxCode="?" Amount="?"/> <!--CurCode — код валюты, TaxCode — код таксы, Amount — сумма таксы--> </Taxes> <Tariffs> <Tariff Code="?" SegNum="?"/> <!--Code — код тарифа, SegNum — номер сегмента, к которому применён тариф--> </Tariffs> <FareCalc>?</FareCalc> <!--FareCalc — строка расчёта цены--> <LastTicketDateTime>?</LastTicketDateTime> <!--LastTicketDateTime — дата и время таймлимита по выписке в формате ГГГГ-MM-ДДTЧЧns1:ММ:СС--Locator> 0X97T6</PassengerFare> </PricingInfo> <Commission/> <Charges Currency="?">?</Charges> <!--Charges — сборы, Currency — код валюты--> <TotalPrice Currency="?">?</TotalPrice> <!--TotalPrice — итоговая цена, Currency — код валюты--> </Flight> <Agency Name="?"> <!--Name — название агентства--> <Telephone Type="?"> <!--Type — тип номера, обязательный, возможные значенияns1: M — мобильный, H — домашний, B — рабочий, A — агенство--Locator> <!--Optionalns1:--Discount> <PhoneNumber>?0</PhoneNumber> <!--PhoneNumber — номер телефона--> <!--Optionalns1:--Discount> <CountryAccessCode>?</CountryAccessCode> <!--CountryAccessCode — код страны--> <!--Optionalns1:--Charge> <AreaCityCode>?0</AreaCityCode> <!--AreaCityCode — код региона/города--> </Telephone> <Address City="?" State="?" StreetAddress="?" PostalCode="?" CountryCode="?"/> <!--City — город--> <!--State — штат--> <!--StreetAddress — адрес в городе (улица, дом, корпус, офис и т.д.)--> <!--PostalCode — почтовый индекс--> <!--CountryCode — код страны (RU, UA и т.п.)--> </Agency> <ItinReceipts Encoding="?" Format="?"> <!--ItinReceipts — маршрут квитанция, Encoding — кодировка, Format — формат--> <FareStored xsins1:nil="true"/Charge> <Travellers> <!--Zero or more repetitionsns1:--Sum> 3133<Traveller Type="?" IsContact="?" LinkedTo="?" Num="?" TravellerId="?"> <!--Type — тип пассажира, обязательный, возможные значения/ns1: ADT — взрослые, CNN — дети со взрослыми,UNN — дети без сопровождения взрослых, INF — младенцы, INS — младенцы с местом--Sum> <!--IsContact — если true — то данный пассажир является контактным лицом, если false — то не является, контактное лицо может быть только 1, если среди пассажиров есть взрослые, то только кто-то из них может быть контактным лицом, по умолчанию false--> <!--Num — порядковый номер пассажира, начинается с 1--> <!--LinkedTo — номер взрослого, к которому привязан младенец/ребёнок--> <!--TravellerId — устаревший параметр, не используется--> <Meal>?</Meal> <!--Meal — код типа питания, возможные значенияns1: 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 — Восточное вегетарианское питание--TotalPrice> <PersonalInfo DateOfBirth="?" Nationality="?" Gender="?"> <!--DateOfBirth — дата рождения в формате ДД3658.ММ.ГГГГ (например 31.12.2000)--> <!--Nationality — гражданство, двух буквенный код страны (RU, UA, US и т.д.)--> <!--Gender — пол пассажира, возможные значения: M — мужской(Male), F — женский(Female)--> <FirstName>?1</FirstName> <!--FirstName — имя пассажира--> <LastName>?</LastName> <!--LastName — фамилия пассажира--> <!--Optionalns1:--TotalPrice> <MiddleName>?</MiddleName> <!--MiddleName — отчество пассажира--> </PersonalInfo> <LoyaltyCard OpCode="?" Number="?"/> <!--OpCode — код авиакомпании--> <!--Number — номер карточки--> <ContactInfo> <!--Optionalns1:--> <EmailIDGDSCurrency>?RUB</EmailID> <!--EmailID — контактный email--> <!--Optionalns1:--GDSCurrency> <Telephone Type="?"> <!--Type — тип номера, возможные значенияns1: M — мобильный, H — домашний, B — рабочий--OrderCurrency> <!--Optional:--> <PhoneNumber>?RUB</PhoneNumber> <!--PhoneNumber — номер телефона--> <!--Optionalns1:--OrderCurrency> <CountryAccessCode>?</CountryAccessCode> <!--CountryAccessCode — код страны--> <!--Optionalns1:--OrderCurrencyRate> <AreaCityCode>?1</AreaCityCode> <!--AreaCityCode — код региона/города--> </Telephone> </ContactInfo> <DocumentInfo DocType="?" DocNum="?" CountryCode="?" DocElapsedTime="?"/> <!--DocType — тип документа, возможные значенияns1: Р — Паспорт A – Паспорт иностранца С — Внутренний гражданский паспорт F – Документ заменяющий паспорт М — Воинское удостоверение N – Сертификат натурализации(специфичный документ США) T – Док.повторного въезда, паспорт беженца V – Документ для пересечения границы--OrderCurrencyRate> <!--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 — адресns1: улица, номер дома, квартиры и т.д.--beginDate> <!--PostalCode — почтовый код2014-08-> <!--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 repetitions30T11:--> <DocStringFormat>?</DocStringFormat> <!--DocStringFormat — формат паспортной строки, возможные значения05: DOCS — строка формата DOCS, FOID — строка формата FOID--> 00</DocStringFormats> </Traveller> </Travellers> </BookFlight> <Requisites/> <RequestType xsins1:nil="true"/> <UserID xsi:nil="true"/> <Errors> <Error Code="?"> <!--Code — код ошибки в системе Nemo--> <ServiceErrorMessage>?</ServiceErrorMessagebeginDate> <!--ServiceErrorMessage — сообщение об ошибке полученное от веб-сервиса поставщика--> <Message>?</Message> <!--Message — сообщение об ошибке от системы Nemo--> </Error> </Errors> </Response> </ResponseBin> </ns1:BookFlightResponseGetDebtCounterparty> </SOAP-ENV:Body>
</SOAP-ENV:Envelope>
</syntaxhighlight>
</div>
</div>
</pre>Пример ответа "GetDebtCounterparty"<pre><?xml version="1.0"?><soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"> <soap:Header/> <soap:Body> <m:GetDebtCounterpartyResponse xmlns:m="http://DOMEN_NAME/avia"> <m:return xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="m:AnswerDebt"> <m:Opportunity>Да</m:Opportunity> <m:Message1/> </m:return> </m:GetDebtCounterpartyResponse> </soap:Body></soap:Envelope> </pre> = Пример использования =Загрузка счетов из сторонней системы == При взаимодействии с веб-сервисом 1С, на этапе бронирования отправляется запрос, на создание аккаунта 1С, содержащий в себе данные счета. В системе логирования этот запрос можно найти под именем «[GDS] Запрос "NewAccount"» и ответ «[GDS] Ответ "NewAccount"»
Пример одностороннего перелета Москва — Мадрид.<div class="toccolours mw-collapsible mw-collapsed" style="width:800px">
<div class="toccolours mw-collapsible mw-collapsed" style="width:1000px">==== Запрос =Пример запроса ===
<div class="mw-collapsible-content">
<syntaxhighlight lang="xml" line enclose="div" style="font-size:9pt;background: #F9F9F9; border: 1px dashed #2F6FAB; padding: 10px 5px; margin: 10px 0;">
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ver="http://CLIENT_DOMAIN/nemoflights/?version%3D1.0%26for%3DBookFlight">
<soapenv:Header/>
<soapenv:Body>
<ver:BookFlight>
<RequestBin>
<Request>
<BookFlight>
<FlightId>171430002</FlightId>
<BookingCodes>
<!--Zero or more repetitions:-->
<BookingCode Code="E" SegNumber="2"/>
</BookingCodes>
<Travellers>
<!--Zero or more repetitions:-->
<Traveller Type="ADT" IsContact="true" Num="1">
<PersonalInfo DateOfBirth="20.05.1980" Nationality="RU" Gender="M">
<FirstName>Petr</FirstName>
<LastName>Ivanov</LastName>
</PersonalInfo>
<ContactInfo>
<!--Optional:-->
<EmailID>testmail@mail.ru</EmailID>
<!--Optional:-->
<Telephone Type="M">
<!--Optional:-->
<PhoneNumber>79051234567</PhoneNumber>
</Telephone>
</ContactInfo>
<DocumentInfo DocType="A" DocNum="123456" CountryCode="RU" DocElapsedTime="01.01.2020"/>
</Traveller>
</Travellers>
</BookFlight>
</Request>
<Source>
<ClientId>---</ClientId>
<APIKey>---</APIKey>
<Language>RU</Language>
<Currency>RUB</Currency>
</Source>
</RequestBin>
</ver:BookFlight>
</soapenv:Body>
</soapenv:Envelope>
</syntaxhighlight>
</div>
</div>
<div class="toccolours mw-collapsible mw-collapsed" style="width:1000px"pre>
==== Ответ ====<div class="mw-collapsible-content"><syntaxhighlight lang="?xml" line encloseversion="div1.0" styleencoding="fontUTF-size:9pt;background: #F9F9F9; border: 1px dashed #2F6FAB; padding: 10px 5px; margin: 10px 0;8"?><SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns1="http://CLIENT_DOMAIN/nemoflights/?version%3D1.0%26for%3DBookFlightDOMEN_NAME" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <SOAP-ENV:Body> <ns1:BookFlightResponseNewAccount> <ResponseBinns1:Input> <Responsens1:CompanyID> 0001<BookFlight ID="262872" Status="booked" Code="LQHZWU"/ns1:CompanyID> <QueryPlace xsins1:nil="true"/ID> <Flight FlightId="171430002"> <WebService>SABRE123321</WebServicens1:ID> <ValCompanyns1:ExternalUserId>SU00123321</ValCompanyns1:ExternalUserId> <URLns1:Locator>http%3A%2F%2FCLIENT_DOMAIN%2F%3Fgo%3Dbooking%2Finfo%26uid%3D14290%26flight%3D17143000211KW22</URLns1:Locator> <Segmentsns1:ExternalPaymentId> <Segment SegNum="1" SegGroupNum="0"> <DepAirp CodeType="IATA">SVO</DepAirpns1:ExternalPaymentId> <DepTerminal>D</DepTerminalns1:Tickets> <ArrAirp CodeType="IATA"ns1:IATAValidator>BCN92222616</ArrAirpns1:IATAValidator> <ArrTerminalns1:ValVendor>1UT</ArrTerminalns1:ValVendor> <OpAirlinens1:GDSCurrency>SURUB</OpAirlinens1:GDSCurrency> <MarkAirlinens1:OrderCurrency>SURUB</MarkAirlinens1:OrderCurrency> <FlightNumberns1:OrderCurrencyRate>25121</FlightNumberns1:OrderCurrencyRate> <AircraftTypens1:BaseFare>3218990</AircraftTypens1:BaseFare> <DepDateTime>2014-03-20T20ns1:40:00</DepDateTimeTax> <ArrDateTime>2014-03-20T22ns1:20:00</ArrDateTime> <StopNumCode>0YQ</StopNumns1:Code> <BookingCodes> <BookingCode ClassType="economy"> <BookingCodens1:Amount>E975</BookingCodens1:Amount> </BookingCodens1:Tax> </BookingCodesns1:Tax> <FlightTimens1:Code>280YR</FlightTimens1:Code> <TimeZone Departure="4" Arrival="1"/ns1:Amount> <ETicket>true75</ETicketns1:Amount> </Segmentns1:Tax> <ns1:Segment SegNum="2" SegGroupNum="0"> <DepAirp CodeType="IATA"ns1:StartDate>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>20142015-0302-21T1217T20:0520:00</DepDateTimens1:StartDate> <ArrDateTime>2014-03-21T13:25ns1:00</ArrDateTimeStartAirportCode> <StopNum>0VKO</StopNumns1:StartAirportCode> <BookingCodes> <BookingCode ClassType="economy"ns1:EndAirportCode> <BookingCode>ESGC</BookingCodens1:EndAirportCode> </BookingCodens1:CompanyCode> UT</BookingCodesns1:CompanyCode> <FlightTimens1:Tariffs>80OSSOW</FlightTimens1:Tariffs> <TimeZone Departure="1" Arrival="1"/ns1:FlightNumber> <ETicket>true295</ETicketns1:FlightNumber> </Segmentns1:StopOver> O</Segmentsns1:StopOver> <PricingInfo Refundable="false"> <PassengerFare Type="ADT" Quantity="1"ns1:ClassTypeCode> O<BaseFare Currency="EUR" Amount="165"/ns1:ClassTypeCode> <EquiveFare Currency="RUB" Amount="8335"/ns1:Segment> <TotalFare Currency="RUB" Amount="14025"/ns1:FullName> PASSANGER NAME<Taxes> <Tax CurCode="RUB" TaxCode="YQF" Amount="4242"/ns1:FullName> <Tax CurCode="RUB" TaxCode="YRI" Amount="374"/ns1:Tickets> <Tax CurCode="RUB" TaxCode="JD" Amount="844"/ns1:Options> <Tax CurCode="RUB" TaxCode="QV" Amount="230"/ns1:Name> Service</Taxesns1:Name> <Tariffs/ns1:StringValue> GALILEO<FareCalc>MOW SU X/BCN SU MAD225.45NUC225.45END ROE0.731857</FareCalcns1:StringValue> <LastTicketDateTime>2014-03-14T12ns1:45:00</LastTicketDateTime> </PassengerFare> </PricingInfo> <Commission Currency="RUB">0</Commission> <Charges Currency="RUB">140.25</Charges> <TotalPrice Currency="RUB">14165.25</TotalPrice> </Flight> <Agency/> <ItinReceipts NumericValue xsi:nil="true"/> <FareStored ns1:DateValue xsi:nil="true"/> <Travellers> <Traveller Type="ADT" IsContact="true" Num="1"> <Meal/ns1:Options> <Ticket/ns1:Options> <Seats/ns1:Name> <PersonalInfo DateOfBirth="20.05.1980" Nationality="RU" Gender="M"> <FirstName>PETRAAA</FirstNamens1:Name> <LastNamens1:StringValue>IVANOV000A</LastNamens1:StringValue> <MiddleName/> </PersonalInfo> <LoyaltyCard/> <ContactInfo> <EmailID>TESTMAIL@MAIL.ru</EmailID> <Telephone Typens1:NumericValue xsi:nil="Mtrue"> <PhoneNumber>79051234567</PhoneNumber> <CountryAccessCode/> <AreaCityCode/> </Telephone> </ContactInfo> <DocumentInfo DocTypens1:DateValue xsi:nil="A" DocNum="123456" CountryCode="RU" DocElapsedTime="01.01.2020true"/> <VisaInfo/ns1:Options> <ArrAddress/ns1:Options> <PreferedPlace/ns1:Name> Checkbox<DocStringFormats/ns1:Name> </Travellerns1:StringValue> YES</Travellersns1:StringValue> </BookFlight> <Requisites/> <RequestType ns1:NumericValue xsi:nil="true"/> <UserID xsins1:nil="true"/> <Errors DateValue xsi:nil="true"/> </Responsens1:Options> </ResponseBinns1:Input> </ns1:BookFlightResponseNewAccount> </SOAP-ENV:Body>
</SOAP-ENV:Envelope>
</syntaxhighlight>
</div>
</div>
=== Общий формат запроса / ответа отмены бронирования ===
После бронирования, если не истек таймлимит можно аннулировать сделанный заказ. Аннуляция заказа в Nemo может быть ручной (сделанной пользователем) и автоматической — по истечению таймлимита, установленного для заказа система сама аннулирует заказ.</pre></div></div> <div class="toccolours mw-collapsible mw-collapsed" style="width:800px">=== Пример ответа ===<div class="mw-collapsible-content"><pre>
WSDL<?xml version="1.0"?><soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"> <soap:Header/> <soap:Body> <m:NewAccountResponse xmlns: m="http://CLIENT_DOMAINDOMEN_NAME"> <m:return xmlns:xs="http:/nemoflights/wsdlwww.php?forw3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type=CancelBook"m:outInvoice"> <m:NoDoc>00015365</m:NoDoc> <m:DateInvoice>2015-02-04T00:00:00</m:DateInvoice> <m:ExternalUserId>00017483</m:ExternalUserId> <m:TicketsSum> <m:Price>10040</m:Price> <m:Discount>0</m:Discount> <m:Charge>0</m:Charge> <m:Sum>10040</m:Sum> </m:TicketsSum> </m:return> </m:NewAccountResponse> </soap:Body></soap:Envelope>
<div class="toccolours mw-collapsible mw-collapsed" style="width:1000px">
==== Запрос ====
<div class="mw-collapsible-content">
<syntaxhighlight lang="xml" line enclose="div" style="font-size:9pt;background: #F9F9F9; border: 1px dashed #2F6FAB; padding: 10px 5px; margin: 10px 0;">
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ver="http://CLIENT_DOMAIN/nemoflights/?version%3D1.0%26for%3DCancelBook">
<soapenv:Header/>
<soapenv:Body>
<ver:CancelBook>
<RequestBin>
<Request>
<CancelBook BookID="?"/>
<!--BookID — Id брони в системе Nemo, целое число-->
</Request>
<Source>
<ClientId>?</ClientId>
<!--ClientId — ID клиента в системе Nemo. Можно посмотреть/добавить в разделе
"Администрирование" ? "Веб-служба. Авторизация".-->
<APIKey>?</APIKey>
<!--APIKey — секретный ключ доступа к API Nemo. Можно посмотреть/добавить в разделе
"Администрирование" ? "Веб-служба. Авторизация".-->
<Language>?</Language>
<!--Language — язык-->
<Currency>?</Currency>
<!-- CUrrency — валюта-->
</Source>
</RequestBin>
</ver:CancelBook>
</soapenv:Body>
</soapenv:Envelope>
</syntaxhighlight>
</div>
</div>
<div class="toccolours mw-collapsible mw-collapsed" style="width:1000px">==== Ответ ====<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%3DCancelBook" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <SOAP-ENV:Body> <ns1:CancelBookResponse> <ResponseBin> <Response> <CancelBook BookID="?"> <!--BookID — Id брони в системе Nemo, целое число--> <Result Success="?"/> <!--Success — результат отмены брони, true или false--> </CancelBook> <Requisites/> <RequestType xsi:nil="true"/> <UserID xsi:nil="true"/> <Errors xsi:nil="true"/> </Response> </ResponseBin> </ns1:CancelBookResponse> </SOAP-ENV:Body></SOAP-ENV:Envelope></syntaxhighlightpre></div></div>
==API бронирования, отмены отелей====API Выгрузки статистики продаж через API====Выгрузка информации о продажах в формате Nemo XML====Выгрузка информации о продажах в формате СОФИ XML====Фиксация оплаты внешним запросом====Выгрузка заказов по критериям в формате Nemo XML====Выгрузка определенного заказа по критериям в формате Nemo XML====API универсального платежного шлюза====API Синхронизации пользователей и субагентов====API Кросс­авторизации====Передача параметров в форму поиска====Проверка в сторонней системе возможности тикетинга====API загрузки счетов из сторонней системы====API загрузки сальдо компаний из СОФИ==-->
1382
правки
'