Мастер-Тур(15):API для разработки поиска авиабилетов — различия между версиями

Материал из Megatec
Перейти к: навигация, поиск
[досмотренная версия][досмотренная версия]
Строка 288: Строка 288:
 
</div></div><br />
 
</div></div><br />
  
===Выгрузка городов отправления (twoway)===
+
===Поиск авиабилетов в одну сторону (oneway)===
 +
====Выгрузка городов отправления (oneway)====
 +
Метод производит выгрузку всех доступных городов отправления.
 +
* Формат запроса:
 +
** GET .../TourSearchOwin/individuals/avia/oneway/departures?
 +
* Принимаемые параметры:
 +
** нет принимаемых параметров
 +
* Возвращаемый результат:
 +
** '''Key''' – ключ города
 +
** '''Name''' – название города
 +
 
 +
<div class="toccolours mw-collapsible mw-collapsed" style="width:900px">Пример
 +
<div class="mw-collapsible-content">
 +
<TABLE STYLE="border: 0.1em dashed #2F6FAB; margin: 8px; padding: 8px" WIDTH="99%"><TR><TD>
 +
Вызов метода
 +
<syntaxhighlight lang="java" enclose="div">
 +
GET http://localhost:9000/TourSearchOwin/individuals/avia/oneway/departures?
 +
</syntaxhighlight>
 +
Возвращаемый результат метода (в формате JSON)
 +
<syntaxhighlight lang="java" enclose="div">
 +
[{
 +
"Key": 312,
 +
"Name": "Астрахань"
 +
},
 +
{
 +
"Key": 1,
 +
"Name": "Москва"
 +
}]
 +
</syntaxhighlight>
 +
</TD></TR></TABLE>
 +
</div></div><br />
 +
 
 +
====Выгрузка списка стран прибытия (oneway)====
 +
Метод производит выгрузку всех доступных направлений.
 +
* Формат запроса:
 +
** GET .../TourSearchOwin/individuals/avia/oneway/arrivals/1/countries?
 +
* Принимаемые параметры ( '''*''' – обязательный):
 +
** '''1 *''' – идентификатор города отправления (из контроллера [[#Выгрузка городов отправления (twoway)|''.../TourSearchOwin/individuals/avia/oneway/departures?'']])
 +
* Возвращаемый результат:
 +
** '''Name''' – название страны
 +
** '''Key''' – ключ страны
 +
** '''DestinationType''' – тип результата (всегда возвращается в JSON = 1, в xml = country)
 +
 
 +
<div class="toccolours mw-collapsible mw-collapsed" style="width:900px">Пример
 +
<div class="mw-collapsible-content">
 +
<TABLE STYLE="border: 0.1em dashed #2F6FAB; margin: 8px; padding: 8px" WIDTH="99%"><TR><TD>
 +
Вызов метода
 +
<syntaxhighlight lang="java" enclose="div">
 +
GET http://localhost:9000/TourSearchOwin/individuals/avia/oneway/arrivals/1/countries?
 +
</syntaxhighlight>
 +
Возвращаемый результат метода (в формате JSON)
 +
<syntaxhighlight lang="java" enclose="div">
 +
[{
 +
"Name": "Австрия",
 +
"Key": 90,
 +
"DestinationType": 1
 +
},
 +
{
 +
"Name": "Индия",
 +
"Key": 26,
 +
"DestinationType": 1
 +
},
 +
{
 +
"Name": "Финляндия",
 +
"Key": 64,
 +
"DestinationType": 1
 +
}]
 +
</syntaxhighlight>
 +
</TD></TR></TABLE>
 +
</div></div><br />
 +
 
 +
====Выгрузка списка городов прибытия (oneway)====
 +
Метод возвращает список всех доступных городов по определенному городу отправления и стране прибытия.
 +
* Формат запроса:
 +
** GET .../TourSearchOwin/individuals/avia/oneway/arrivals/1/90?
 +
* Принимаемые параметры ( '''*''' – обязательный):
 +
** '''1 *''' – идентификатор города отправления (полученный из метода ''.../TourSearchOwin/individuals/avia/oneway/departures?'')
 +
** '''90 *''' – идентификатор страны прибытия (полученный из метода ''.../TourSearchOwin/individuals/avia/oneway/arrivals/1/countries?'')
 +
* Возвращаемый результат:
 +
** '''Key''' – идентификатор города
 +
** '''Name''' – название города
 +
 
 +
<div class="toccolours mw-collapsible mw-collapsed" style="width:900px">Пример
 +
<div class="mw-collapsible-content">
 +
<TABLE STYLE="border: 0.1em dashed #2F6FAB; margin: 8px; padding: 8px" WIDTH="99%"><TR><TD>
 +
Вызов метода
 +
<syntaxhighlight lang="java" enclose="div">
 +
GET http://localhost:9000/TourSearchOwin/individuals/avia/oneway/arrivals/1/90?
 +
</syntaxhighlight>
 +
Возвращаемый результат метода (в формате JSON)
 +
<syntaxhighlight lang="java" enclose="div">
 +
[{
 +
"Key": 35,
 +
"Name": "Вена"
 +
},
 +
{
 +
"Key": 440,
 +
"Name": "Зельден"
 +
}]
 +
</syntaxhighlight>
 +
</TD></TR></TABLE>
 +
</div></div><br />
 +
 
 +
====Выгрузка актуальных дат вылета (oneway)====
 +
Метод производит выгрузку доступных дат вылета для поискового запроса.
 +
* Формат запроса:
 +
** GET .../TourSearchOwin/individuals/avia/oneway/departures/dates/1/35?
 +
* Принимаемые параметры ( '''*''' – обязательный):
 +
** '''1 *''' – идентификатор города отправления (полученный из метода ''.../TourSearchOwin/individuals/avia/oneway/departures?'')
 +
** '''35 *''' – идентификатор города прибытия (полученный из метода ''.../TourSearchOwin/individuals/avia/oneway/arrivals/1/90?'')
 +
* Возвращаемый результат:
 +
** массив дат
 +
 
 +
<div class="toccolours mw-collapsible mw-collapsed" style="width:900px">Пример
 +
<div class="mw-collapsible-content">
 +
<TABLE STYLE="border: 0.1em dashed #2F6FAB; margin: 8px; padding: 8px" WIDTH="99%"><TR><TD>
 +
Вызов метода
 +
<syntaxhighlight lang="java" enclose="div">
 +
GET http://localhost:9000/TourSearchOwin/individuals/avia/oneway/departures/dates/1/35?
 +
</syntaxhighlight>
 +
Возвращаемый результат метода (в формате JSON)
 +
<syntaxhighlight lang="java" enclose="div">
 +
["28.08.2018",
 +
"29.08.2018",
 +
"30.08.2018",
 +
"31.08.2018",
 +
"01.09.2018",
 +
"02.09.2018",]
 +
</syntaxhighlight>
 +
</TD></TR></TABLE>
 +
</div></div><br />
 +
 
 +
====Поиск авиабилетов (oneway)====
 +
Метод поиска авиабилетов использует множество параметров для поиска и фильтрации авиабилетов. Метод возвращает варианты перелетов в порядке возрастания цены.
 +
* Формат запроса:
 +
** GET .../TourSearchOwin/individuals/avia/1/35/20180830?
 +
* Принимаемые параметры ( '''*''' – обязательный):
 +
** '''1 *''' – идентификатор города отправления (полученный из метода ''.../TourSearchOwin/individuals/avia/oneway/departures?'')
 +
** '''35 *''' – идентификатор города прибытия (полученный из метода ''.../TourSearchOwin/individuals/avia/oneway/arrivals/1/90?'')
 +
** '''20180830 *''' – дата вылета в формате YYYYMMDD (полученная из метода ''.../TourSearchOwin/individuals/avia/oneway/departures/dates/1/35?'')
 +
** '''PageNumber *''' – номер возвращаемой страницы (по умолчанию возвращается 1)
 +
** '''PageSize *''' – количество возвращаемых результатов на одной странице (возвращается 20)
 +
** '''AdultCount *''' – количество взрослых
 +
** '''ChildAges''' – возраст детей. Если детей несколько, и параметры передаются через url, то каждое значение необходимо передавать отдельным параметром.
 +
** '''CurrencyName *''' – код валюты
 +
** '''AviaQuota *''' – информация о квотах на авиаперелет (значения параметров: ''"1"'' — фильтр "Есть", ''"5"'' — фильтр "Есть+запрос", ''"7"'' — фильтр "Все")
 +
** '''fromFlexible''' – гибкий поиск (- "x" дней) от текущей даты, "x" в диапазоне от 1 до 3 дней.
 +
** '''toFlexible''' – гибкий поиск (+ "x" дней) от текущей даты, "x" в диапазоне от 1 до 3 дней.
 +
** '''MinPrice *''' – минимальная цена (по умолчанию не передается)
 +
** '''MaxPrice''' – максимальная цена (по умолчанию не передается)
 +
** '''Airline''' – ключ авиакомпании (дополнительный фильтр)
 +
** '''AirportDeparture''' – ключ аэропорта вылета (дополнительный фильтр)
 +
** '''AirportArrival''' – ключ аэропорта прилета (дополнительный фильтр)
 +
** '''TimeDepartureFrom''' – время отправления с (по умолчанию возвращается 00:00)
 +
** '''TimeDepartureTo''' – время отправления по (по умолчанию возвращается 23:59)
 +
** '''TimeArrivalFrom''' – время прибытия с (по умолчанию возвращается 00:00)
 +
** '''TimeArrivalTo''' – время прибытия по (по умолчанию возвращается 23:59)
 +
** '''ArrivalFlightNoTransfer''' – производить поиск без пересадок в прямом направлении (true/false, по умолчанию false)
 +
** '''DepartureFlightNoTransfer''' – производить поиск без пересадок в обратном направлении (true/false, по умолчанию false)
 +
** '''DepartureFlightNumberTransfer''' – наличие пересадок в прямом направлении (1 – одна пересадка, 2 – две пересадки и более, 3 – одна пересадка совместно с двумя пересадками и более)
 +
** '''ArrivalFlightNumberTransfer''' – наличие пересадок в обратном направлении (1 – одна пересадка, 2 – две пересадки и более, 3 – одна пересадка совместно с двумя пересадками и более)
 +
** '''Tariff''' – ключ класса авиаперелета (дополнительный фильтр)
 +
 
 +
* Возвращаемый результат:
 +
** '''CheckMessages''' – сообщения для логики проверки тура (не используется)
 +
** '''Message''' – сообщение об ошибке
 +
*** '''Key''' – код ошибки
 +
*** '''Value''' – сообщение об ошибке
 +
** '''Result''' – результаты поиска
 +
*** '''Key''' – идентификатов программы тура
 +
*** '''Name''' – название программы тура
 +
*** '''TourUrl''' – ссылка на программу тура
 +
*** '''BookingConditions''' – условия бронирования программы туров
 +
*** '''DefaultManagers''' – список ведущих менеджеров
 +
*** '''Manager''' – менеджер по умолчанию
 +
*** '''Branches''' – список филиалов бронирования
 +
*** '''DetermineTheBranchOnCity''' – признак определения филиала в зависимости от города начала поездки
 +
*** '''StartDate''' – дата начала тура
 +
*** '''Duration''' – продолжительность тура (в днях)
 +
*** '''DurationInNight''' – продолжительность тура (в ночах)
 +
*** '''Types''' – идентификатор типа туров
 +
*** '''Cost''' – цена тура
 +
*** '''Rate''' – код валюты тура
 +
*** '''CityDepature''' – город отправления
 +
**** '''Key''' – идентификатор города отправления
 +
**** '''Value''' – название города отправления
 +
*** '''CountryId''' – страна тура
 +
*** '''Services''' – услуги в туре
 +
**** '''DepartureCity''' – город отправления
 +
***** '''Key''' – идентификатор
 +
***** '''Value''' – название
 +
**** '''DepartureCountry''' – страна отправления
 +
***** '''Key''' – идентификатор
 +
***** '''Value''' – название
 +
**** '''ArrivalCity''' – город прибытия
 +
***** '''Key''' – идентификатор
 +
***** '''Value''' – название
 +
**** '''ArrivalCountry''' – страна прибытия
 +
***** '''Key''' – идентификатор
 +
***** '''Value''' – название
 +
**** '''DepartureAirport''' – аэропорт отправления
 +
***** '''Key''' – идентификатор
 +
***** '''Value''' – название
 +
**** '''ArrivalAirport''' – аэропорт прибытия
 +
***** '''Key''' – идентификатор
 +
***** '''Value''' – название
 +
**** '''Airline''' – авиакомпания
 +
***** '''Key''' – идентификатор
 +
***** '''Value''' – название
 +
**** '''Aircraft''' – воздушное судно
 +
***** '''Key''' – идентификатор
 +
***** '''Value''' – название
 +
**** '''Flight''' – рейс
 +
***** '''Key''' – идентификатор
 +
***** '''Value''' – название
 +
**** '''DepartureTime''' – время вылета
 +
**** '''ArrivalTime''' – время прилета
 +
**** '''EndDateTime''' – дата и время прилета
 +
**** '''FlightDetails''' – информация об авиаперелете
 +
***** '''Tariff''' – информация о тарифе перелета
 +
****** '''Key''' – идентификатор
 +
****** '''Code''' – код тарифа
 +
****** '''Name''' – название тарифа
 +
***** '''Cost''' – разница в стоимости с самым дешевым вариантом
 +
***** '''QuotaStatus''' – информация о квоте
 +
****** '''PlacesStatus''' – статус по квотам (есть места / нет мест / под запрос)
 +
****** '''FreePlaces''' – количество свободных мест, если удовлетворяются условия, заданные в настройке "Мало" и включена настройка "Отображать числовое значение оставшихся мест". Иначе возвращается 0. Если в данном параметре 0, то руководствоваться следует значением, полученном в параметре '''PlacesStatus'''.
 +
****** '''IsFewPlaces''' – выполнены ли условия, заданные в настройке "Мало": '''true''' – если заданы условия количества мест "Мало" и данные условия выполнены, '''false''' – если не заданы условия количества мест "Мало" или они заданы, но не выполнены.
 +
***** '''PartnerId''' – ключ партнера
 +
***** '''ByPax''' – цена за человека (true/false)
 +
***** '''Partner''' – информация о партнере
 +
****** '''Key''' – идентификатор
 +
****** '''Value''' – название
 +
**** '''FlightSetting''' – внутренняя информация о перелете из программы туров
 +
***** '''ServiceId''' – идентификатор класса услуги (внутренняя информация из программы туров)
 +
***** '''PatternId''' – идентификатор паттерна услуги (внутренняя информация из программы туров)
 +
***** '''FlightId''' – идентификатор перелета (внутренняя информация из программы туров)
 +
**** '''FlightSourceMode''' – локальный или удаленный перелет (внутренняя информация из программы туров)
 +
**** '''Id''' – идентификатор базового шаблона услуги (внутренняя информация из программы туров)
 +
**** '''SvKey''' – ключ типа услуги
 +
**** '''IsSubCode1''' – признак наличия доп. описания 1
 +
**** '''IsSubCode2''' – признак наличия доп. описания 2
 +
**** '''IsPartnerBasedOn''' – признак услуга с приоритетным подбором поставщика
 +
**** '''Day''' – день предоставления услуги
 +
**** '''DurationInNight''' – продолжительность услуги в ночах
 +
**** '''BeginDateTime''' – дата предоставления услуги
 +
**** '''IsHooded''' – признак скрытая услуга
 +
**** '''IsDeleted''' – признак удаляемая услуга
 +
**** '''IsNotCalculate''' – признак не рассчитываемая услуга
 +
**** '''PacketId''' – ключ пакета
 +
**** '''Index''' – порядковый номер услуги
 +
*** '''NotRouteServices''' – не используется
 +
*** '''MinCostServicesComposition''' – массив состав услуг минимальной цены
 +
**** '''Key''' – ключ
 +
***** '''TemplateId''' – идентификатор шаблона
 +
***** '''PatternId''' – идентификатор вкладки
 +
***** '''SettingId''' – идентификатор услуги
 +
**** '''Value''' – значение
 +
***** '''ServiceType''' – тип услуги
 +
***** '''Code''' – ключ услуги
 +
***** '''SubCode1''' – доп. описание 1
 +
***** '''SubCode2''' – доп. описание 2
 +
***** '''PacketId''' – пакет услуги
 +
***** '''PartnerId''' – партнер услуги
 +
***** '''CountryId''' – страна услуги
 +
***** '''CityId''' – город услуги
 +
***** '''Day''' – день предоставления услуги
 +
***** '''DurationInNight''' – продолжительность услуги в ночах
 +
*** '''FlightWeight''' –
 +
*** '''LinkingFlightsRules''' – объект правил связывания
 +
**** '''notCombineDifferentAirlineRule''' – объект не скрещивать авиакомпании
 +
***** '''airlines''' – авиакомпании
 +
***** '''flightSettings''' – массив ключей ServiceId, PatternId, FlightId
 +
***** '''enabled''' – флаг включен/выключен
 +
**** '''checkPlusMinus1CharterRule''' – объект Отличие номера рейса на 1
 +
***** '''FlightSettingPairs''' – массив чартеров, для которых это правило будет выполняться
 +
***** '''enabled''' – флаг включен/выключен
 +
**** '''notCombineDifferentTariffGroupRule''' – объект не комбинировать рейсы от разных классов перелетов
 +
***** '''FlightSettings''' – массив ключей ServiceId, PatternId, FlightId
 +
***** '''enabled''' – флаг включен/выключен
 +
**** '''notCombineDifferentPartnerRule''' – объект не комбинировать рейсы от разных партнеров
 +
***** '''FlightSettings''' – массив ключей ServiceId, PatternId, FlightId
 +
***** '''enabled''' – флаг включен/выключен
 +
**** '''departureCityEqualsArrivalCityRule''' – объект Город вылета = городу прилета
 +
***** '''FlightSettingPairs''' – чартеры, для которых это будет выполняться
 +
***** '''enabled''' – флаг включен/выключен
 +
**** '''combineOnlySpecificChartersRule''' – объект не комбинировать различные классы перелетов
 +
***** '''settings''' – массив ключей чартеров CharterIds и ServiceId, PatternId, FlightId
 +
***** '''enabled''' – флаг включен/выключен
 +
*** '''RouteSubVariants''' – не используется
 +
** '''SecondaryFiltersResult''' – результат, если заданы дополнительные фильтры
 +
*** '''TourTypes''' – типы тура
 +
**** '''Id''' –
 +
**** '''Name''' –
 +
**** '''ParentId''' –
 +
**** '''Type''' –
 +
*** '''TourPrograms''' – информация по каждой турпрограмме
 +
**** '''Key''' –
 +
**** '''Name''' –
 +
**** '''TourUrl''' –
 +
**** '''BookingConditions''' –
 +
**** '''IsLandOnly''' –
 +
**** '''IsRestrictMultiHotels''' –
 +
**** '''IsHotelTemplates''' –
 +
**** '''IsRouteServices''' –
 +
**** '''MultiHotelDelta''' –
 +
**** '''Rate''' –
 +
**** '''DateStart''' –
 +
**** '''DateEnd''' –
 +
**** '''Status''' –
 +
***** '''Key''' –
 +
***** '''Value''' –
 +
**** '''Templates''' –
 +
***** '''$id''' –
 +
***** '''$id''' –
 +
**** '''Types''' –
 +
***** '''Id''' –
 +
***** '''Name''' –
 +
***** '''ParentId''' –
 +
***** '''Type''' –
 +
**** '''LinkingFlightsRules''' –
 +
***** '''notCombineDifferentAirlineRule''' –
 +
****** '''airlines''' –
 +
****** '''flightSettings''' –
 +
****** '''enabled''' –
 +
***** '''checkPlusMinus1CharterRule''' –
 +
****** '''FlightSettingPairs''' –
 +
****** '''enabled''' –
 +
***** '''notCombineDifferentTariffGroupRule''' –
 +
****** '''FlightSettings''' –
 +
****** '''enabled''' –
 +
***** '''notCombineDifferentPartnerRule''' –
 +
****** '''FlightSettings''' –
 +
****** '''enabled''' –
 +
***** '''departureCityEqualsArrivalCityRule''' –
 +
****** '''FlightSettingPairs''' –
 +
****** '''enabled''' –
 +
***** '''combineOnlySpecificChartersRule''' –
 +
****** '''settings''' –
 +
****** '''enabled''' –
 +
**** '''XmlSettings''' – xml
 +
**** '''Type''' –
 +
*** '''TourDurations''' –
 +
*** '''TourDates''' –
 +
**** '''HotelCities''' – не используется 
 +
***** '''''' –
 +
**** '''HotelResorts''' – не используется 
 +
***** '''''' –
 +
**** '''HotelCategories''' – не используется
 +
***** '''''' –
 +
**** '''Hotels''' – не используется 
 +
***** '''''' –
 +
**** '''Pansions''' – не используется
 +
***** '''''' –
 +
**** '''Airlines''' – авиакомпании в дополнительных фильтрах
 +
***** '''''' –
 +
**** '''FlightTariffs''' – класс перелета в дополнительных фильтрах
 +
***** '''''' –
 +
**** '''DepartureCities''' – города вылета в дополнительных фильтрах
 +
***** '''''' –
 +
**** '''DepartureAirports''' – аэропорты вылета в дополнительных фильтрах
 +
***** '''''' –
 +
**** '''ArrivalCities''' – города прибытия в дополнительных фильтрах
 +
***** '''''' –
 +
**** '''ArrivalAirports''' – аэропорты прибытия в дополнительных фильтрах
 +
***** '''''' –
 +
**** '''HotelTypes''' – не используется
 +
***** '''''' –
 +
 
 +
<div class="toccolours mw-collapsible mw-collapsed" style="width:900px">Пример
 +
<div class="mw-collapsible-content">
 +
<TABLE STYLE="border: 0.1em dashed #2F6FAB; margin: 8px; padding: 8px" WIDTH="99%"><TR><TD>
 +
Вызов метода
 +
<syntaxhighlight lang="java" enclose="div">
 +
GET http://localhost:9000/TourSearchOwin/individuals/avia/1/35/20180830?
 +
AdultCount=2&AviaQuota=5&CurrencyName=EU&PageNumber=1&PageSize=20&departureFlightNoTransfer=true
 +
</syntaxhighlight>
 +
Возвращаемый результат метода (в формате JSON)
 +
<syntaxhighlight lang="java" enclose="div">
 +
{
 +
"CheckMessages": null,
 +
"Message": {
 +
"Key": 0,
 +
"Value": null
 +
},
 +
"Result": [{
 +
"Key": 100002328,
 +
"Name": "Общая проверка системы_Aviabooking",
 +
"TourUrl": "www.megatec.ru",
 +
"BookingConditions": "<p><strong>Условия бронирования<\/strong><\/p>",
 +
"DefaultManagers": [-1],
 +
"Manager": 128,
 +
"Branches": [1],
 +
"DetermineTheBranchOnCity": false,
 +
"StartDate": "2018-08-30T00:00:00",
 +
"Duration": 10,
 +
"DurationInNight": 9,
 +
"Types": [2],
 +
"Cost": 7.02,
 +
"Rate": "EU",
 +
"CityDepature": {
 +
"Key": 1,
 +
"Value": "Москва"
 +
},
 +
"CountryId": 90,
 +
"Services": [{
 +
"DepartureCity": {
 +
"Key": 1,
 +
"Value": "Москва"
 +
},
 +
"DepartureCountry": {
 +
"Key": 460,
 +
"Value": "Россия"
 +
},
 +
"ArrivalCity": {
 +
"Key": 35,
 +
"Value": "Вена"
 +
},
 +
"ArrivalCountry": {
 +
"Key": 90,
 +
"Value": "Австрия"
 +
},
 +
"DepartureAirport": {
 +
"Key": "DME",
 +
"Value": "Домодедово"
 +
},
 +
"ArrivalAirport": {
 +
"Key": "VIE",
 +
"Value": "Vena"
 +
},
 +
"Airline": {
 +
"Key": "7U",
 +
"Value": "Авиаэнерго"
 +
},
 +
"Aircraft": {
 +
"Key": "727",
 +
"Value": "Boeing"
 +
},
 +
"Flight": {
 +
"Key": 773,
 +
"Value": "111"
 +
},
 +
"DepartureTime": "10:00:00",
 +
"ArrivalTime": "13:00:00",
 +
"EndDateTime": "2018-08-30T13:00:00",
 +
"FlightDetails": [{
 +
"Tariff": {
 +
"Key": 89,