Мастер-Тур(15):API для отдачи цен в поисковые системы — различия между версиями
[досмотренная версия] | [ожидает проверки] |
Biryukov (обсуждение | вклад) |
Belyaeva (обсуждение | вклад) (→Выгрузка списка типов размещения (GetHtPlaces) начиная с релиза 15.3) |
||
(не показано 88 промежуточных версий 8 участников) | |||
Строка 15: | Строка 15: | ||
==Установка== | ==Установка== | ||
− | Для работы с web-сервисом необходимо установить [[Мастер-Тур(15):Установка#Установка службы поиска|службу поиска]].<br /> | + | Для работы с web-сервисом необходимо на отдающей стороне установить [[Мастер-Тур(15):Установка#Установка службы поиска|службу поиска]].<br /> |
После установки web-сервис будет доступен по адресу ''<nowiki>http://значение настройки "serviceAddress" в TourSearchOwin/searchApi?action="название метода"</nowiki>'' (пример: ''http://localhost:9000/TourSearchOwin/searchApi?action=GetCountries'') | После установки web-сервис будет доступен по адресу ''<nowiki>http://значение настройки "serviceAddress" в TourSearchOwin/searchApi?action="название метода"</nowiki>'' (пример: ''http://localhost:9000/TourSearchOwin/searchApi?action=GetCountries'') | ||
+ | |||
+ | Для поддержки систем с большой нагрузкой можно использовать сторонние "балансировщики нагрузки". | ||
+ | Пример настройки балансировщика [[Мастер-Тур(15):Балансировщик нагрузки HaProxy|HaProxy]]. | ||
==Загрузка справочников== | ==Загрузка справочников== | ||
Строка 164: | Строка 167: | ||
} | } | ||
] | ] | ||
+ | } | ||
+ | </syntaxhighlight> | ||
+ | </TD></TR></TABLE> | ||
+ | </div></div><br /> | ||
+ | |||
+ | |||
+ | ===Выгрузка типов тура (GetTourTypes) начиная с релиза 15.4=== | ||
+ | Метод возвращает список типов туров по определенному городу отправления, стране и городу прибытия. | ||
+ | * Формат запроса: | ||
+ | ** ?action=GetTourTypes | ||
+ | * Принимаемые параметры: | ||
+ | ** '''id''' – идентификатор типа тура (опциональный, передача в запрос нескольких id не обрабатывается, в этом случае возвращаются все результаты. Если указан, то запрашивается только одна запись) | ||
+ | * Либо | ||
+ | ** '''departureCityIds *''' – идентификатор города(ов) отправления (из метода [[#Выгрузка списка городов вылета (GetDepartCities)|GetDepartCities]]) | ||
+ | ** '''countryId *''' – идентификатор страны прибытия (из метода [[#Выгрузка списка стран (GetCountries)|GetCountries]]) | ||
+ | ** '''resortIds *''' – идентификатор города(ов) прибытия (из метода [[#Выгрузка списка городов (GetResorts)|GetResorts]]), при значении ''-1'' будут переданы все города в рамках данной страны | ||
+ | * Возвращаемый результат: | ||
+ | ** '''id''' – идентификатор типа тура | ||
+ | ** '''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> | ||
+ | Вызов метода GetTourTypes | ||
+ | <syntaxhighlight lang="java" enclose="div"> | ||
+ | http://localhost:9000/TourSearchOwin/searchApi?action=GetTourTypes&departureCityIds=1&countryId=90&resortIds=-1 | ||
+ | </syntaxhighlight> | ||
+ | Возвращаемый результат метода GetTourTypes (в формате JSON) | ||
+ | <syntaxhighlight lang="java" enclose="div"> | ||
+ | { | ||
+ | "version": "1.08", | ||
+ | "TourTypes": [ | ||
+ | { | ||
+ | "id": 1, | ||
+ | "name": "Стандартный тур" | ||
+ | }, | ||
+ | { | ||
+ | "id": 5, | ||
+ | "name": "Экскурсионный тур", | ||
+ | "lname": "Hammamet" | ||
+ | }, | ||
+ | { | ||
+ | "id": 40, | ||
+ | "name": "Пляжный отдых" | ||
+ | } | ||
+ | ] | ||
+ | } | ||
+ | </syntaxhighlight> | ||
+ | </TD></TR></TABLE> | ||
+ | </div></div><br /> | ||
+ | |||
+ | |||
+ | ===Выгрузка актуальных дат заездов (GetDates) начиная с релиза 15.4=== | ||
+ | Метод возвращает список доступных дат заездов для поискового запроса | ||
+ | * Формат запроса: | ||
+ | ** ?action=GetDates | ||
+ | * Принимаемые параметры: | ||
+ | ** '''departureCityIds *''' – идентификатор города(ов) отправления (из метода [[#Выгрузка списка городов вылета (GetDepartCities)|GetDepartCities]]) | ||
+ | ** '''countryId *''' – идентификатор страны прибытия (из метода [[#Выгрузка списка стран (GetCountries)|GetCountries]]) | ||
+ | ** '''resortIds *''' – идентификатор города(ов) прибытия (из метода [[#Выгрузка списка городов (GetResorts)|GetResorts]]), при значении ''-1'' будут переданы все города в рамках данной страны | ||
+ | ** '''tourTypeIds *''' – идентификатор типа(ов) тура (из метода [[#Выгрузка типов тура (GetTourTypes) начиная с релиза 15.4|GetTourTypes]]), при значении ''-1'' будут переданы все типы тура в рамках данной страны | ||
+ | * Возвращаемый результат: | ||
+ | ** массив актуальных дат заезда в формате dd.MM.yyyy | ||
+ | |||
+ | <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> | ||
+ | Вызов метода GetDates | ||
+ | <syntaxhighlight lang="java" enclose="div"> | ||
+ | http://localhost:9000/TourSearchOwin/searchApi?action=GetDates&departureCityIds=1&countryId=90&resortIds=-1&tourTypeIds=22 | ||
+ | </syntaxhighlight> | ||
+ | Возвращаемый результат метода GetDates (в формате JSON) | ||
+ | <syntaxhighlight lang="java" enclose="div"> | ||
+ | { | ||
+ | "version": "1.08", | ||
+ | "dates": [ | ||
+ | "01.08.2019", | ||
+ | "02.08.2019", | ||
+ | "03.08.2019", | ||
+ | "04.08.2019", | ||
+ | "05.08.2019", | ||
+ | "06.08.2019", | ||
+ | "07.08.2019", | ||
+ | "08.08.2019", | ||
+ | "09.08.2019", | ||
+ | "10.08.2019" | ||
+ | ] | ||
+ | } | ||
+ | </syntaxhighlight> | ||
+ | </TD></TR></TABLE> | ||
+ | </div></div><br /> | ||
+ | |||
+ | |||
+ | ===Выгрузка актуальных продолжительностей (GetDurations) начиная с релиза 15.4=== | ||
+ | Метод возвращает список доступных продолжительностей для поискового запроса | ||
+ | * Формат запроса: | ||
+ | ** ?action=GetDurations | ||
+ | * Принимаемые параметры: | ||
+ | ** '''departureCityIds *''' – идентификатор города(ов) отправления (из метода [[#Выгрузка списка городов вылета (GetDepartCities)|GetDepartCities]]) | ||
+ | ** '''countryId *''' – идентификатор страны прибытия (из метода [[#Выгрузка списка стран (GetCountries)|GetCountries]]) | ||
+ | ** '''resortIds *''' – идентификатор города(ов) прибытия (из метода [[#Выгрузка списка городов (GetResorts)|GetResorts]]), при значении ''-1'' будут переданы все города в рамках данной страны | ||
+ | ** '''tourTypeIds *''' – идентификатор типа(ов) тура (из метода [[#Выгрузка типов тура (GetTourTypes) начиная с релиза 15.4|GetTourTypes]]), при значении ''-1'' будут переданы все типы тура в рамках данной страны | ||
+ | ** '''tourDates *''' – массив дат заездов в формате dd.MM.yyyy (из метода [[#Выгрузка актуальных дат заездов (GetDates) начиная с релиза 15.4|GetDates]]) | ||
+ | * Возвращаемый результат: | ||
+ | ** '''durations''' – массив актуальных продолжительностей (в днях) | ||
+ | ** '''durationType''' – тип продолжительности: 0 – в днях тура, 1 – в ночах тура, 2 – в ночах проживания в отеле. | ||
+ | |||
+ | <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> | ||
+ | Вызов метода GetDurations | ||
+ | <syntaxhighlight lang="java" enclose="div"> | ||
+ | http://localhost:9000/TourSearchOwin/searchApi?action=GetDurations&departureCityIds=1&countryId=90&resortIds=-1&tourTypeIds=22&tourDates=22.05.2019,28.05.2019 | ||
+ | </syntaxhighlight> | ||
+ | Возвращаемый результат метода GetDurations (в формате JSON) | ||
+ | <syntaxhighlight lang="java" enclose="div"> | ||
+ | { | ||
+ | "version": "1.08", | ||
+ | "durations": [ | ||
+ | 8, | ||
+ | 9, | ||
+ | 10, | ||
+ | 11, | ||
+ | 12, | ||
+ | 13, | ||
+ | 14 | ||
+ | ], | ||
+ | "durationType": 0 | ||
+ | } | ||
+ | </syntaxhighlight> | ||
+ | </TD></TR></TABLE> | ||
+ | </div></div><br /> | ||
+ | |||
+ | ===Выгрузка программ туров (GetTourPrograms) начиная с релиза 15.4=== | ||
+ | Метод возвращает список актуальных для поиска программ туров | ||
+ | * Формат запроса: | ||
+ | ** ?action=GetTourPrograms | ||
+ | * Принимаемые параметры: | ||
+ | ** '''id *''' – идентификатор программы тура (обязательный, передача в запрос нескольких id не обрабатывается, в этом случае возвращается ошибка. Если указан, то запрашивается только одна запись) | ||
+ | * Либо | ||
+ | ** '''departureCityIds *''' – идентификатор города(ов) отправления (из метода [[#Выгрузка списка городов вылета (GetDepartCities)|GetDepartCities]]) | ||
+ | ** '''countryId *''' – идентификатор страны прибытия (из метода [[#Выгрузка списка стран (GetCountries)|GetCountries]]) | ||
+ | ** '''resortIds *''' – идентификатор города(ов) прибытия (из метода [[#Выгрузка списка городов (GetResorts)|GetResorts]]), при значении ''-1'' передается город отправления "Без перелета" | ||
+ | ** '''tourTypeIds *''' – идентификатор типа(ов) тура (из метода [[#Выгрузка типов тура (GetTourTypes) начиная с релиза 15.4|GetTourTypes]]), при значении ''-1'' будут переданы все типы тура в рамках данной страны | ||
+ | ** '''fromDateTime''' – дата (в формате dd.MM.yyyy HH:mm:ss), начиная с которой будут выгружаться изменения (то есть будут получены только те доступные программы туров, которые изменялись, начиная с указанной даты) | ||
+ | * Возвращаемый результат: | ||
+ | ** '''id''' – ключ программы туров | ||
+ | ** '''name''' – название программы туров | ||
+ | ** '''updateDate''' – дата последнего изменения программы туров (или связанных с ней компонентов) | ||
+ | ** '''beginDate''' – дата начала заездов по программе туров (в формате dd.MM.yyyy) | ||
+ | ** '''endDate''' – дата окончания заездов по программе туров (в формате dd.MM.yyyy) | ||
+ | ** '''tourTypeIds''' – типы туров для данной программы туров | ||
+ | ** '''routes''' – массив возможных маршрутов в данной программе туров | ||
+ | *** '''departureCountryKey''' – страна начала поездки (для каждой страны начала поездки в одной программе тура будет отдельный маршрут) | ||
+ | *** '''departureCityKey''' – город начала поездки (для каждого города начала поездки в одной программе тура будет отдельный маршрут) | ||
+ | *** '''destinationCountryKeys''' – страны по туру (если в туре несколько услуг класса отель и они в разных странах, то будут возвращаться все страны отелей) | ||
+ | *** '''destinationCityKeys''' – города по туру (если в туре отели в нескольких городах, то будут возвращаться все города отелей) | ||
+ | |||
+ | <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> | ||
+ | Вызов метода GetTourPrograms | ||
+ | <syntaxhighlight lang="java" enclose="div"> | ||
+ | http://localhost:9000/TourSearchOwin/searchApi?action=GetTourPrograms&departureCityIds=1&countryId=90&resortIds=-1&tourTypeIds=22&fromDateTime=22.05.2019 12:00:00 | ||
+ | </syntaxhighlight> | ||
+ | Возвращаемый результат метода GetTourPrograms (в формате JSON) | ||
+ | <syntaxhighlight lang="java" enclose="div"> | ||
+ | { | ||
+ | "version": "1.08", | ||
+ | "TourPrograms": [{ | ||
+ | "id": 100004493, | ||
+ | "name": "Автобусный тур", | ||
+ | "updateDate": "2019-05-20T17:17:02.087", | ||
+ | "beginDate": "01.06.2019", | ||
+ | "endDate": "01.08.2019", | ||
+ | "tourTypeIds": [2, | ||
+ | 22], | ||
+ | "routes": [{ | ||
+ | "departureCountryId": 460, | ||
+ | "departureCityId": 1, | ||
+ | "destinationCountryIds": [90], | ||
+ | "destinationCityIds": [35] | ||
+ | }] | ||
+ | }, | ||
+ | { | ||
+ | "id": 100005542, | ||
+ | "name": "Общая проверка системы", | ||
+ | "updateDate": "2019-05-15T15:54:10.81", | ||
+ | "beginDate": "01.03.2018", | ||
+ | "endDate": "15.08.2019", | ||
+ | "tourTypeIds": [22], | ||
+ | "routes": [{ | ||
+ | "departureCountryId": 460, | ||
+ | "departureCityId": 1, | ||
+ | "destinationCountryIds": [90], | ||
+ | "destinationCityIds": [35, | ||
+ | 440, | ||
+ | 562] | ||
+ | }] | ||
+ | }] | ||
} | } | ||
</syntaxhighlight> | </syntaxhighlight> | ||
Строка 287: | Строка 490: | ||
** '''fax''' – факс отеля | ** '''fax''' – факс отеля | ||
** '''http''' – адрес в интернете отеля | ** '''http''' – адрес в интернете отеля | ||
+ | ** '''latitude''' – GPS координаты: географическая широта (обрабатывается с релиза 15.6) | ||
+ | ** '''longitude''' – GPS координаты: географическая долгота (обрабатывается с релиза 15.6) | ||
+ | ** '''timeFrom''' – заезд в отель (обрабатывается с релиза 15.7) | ||
+ | ** '''timeTo''' – выезд из отеля (обрабатывается с релиза 15.7) | ||
+ | ** '''countryId''' – идентификатор страны, в которой расположен отель (обрабатывается с релиза 15.9) | ||
+ | ** '''countryName''' – название страны, в которой расположен отель (обрабатывается с релиза 15.9) | ||
<div class="toccolours mw-collapsible mw-collapsed" style="width:900px">Пример | <div class="toccolours mw-collapsible mw-collapsed" style="width:900px">Пример | ||
Строка 301: | Строка 510: | ||
"hotels": [ | "hotels": [ | ||
{ | { | ||
− | "id": | + | "id": 112830, |
− | + | "name": "0012", | |
− | + | "hotelCategoryId": 964, | |
− | + | "hotelCategoryName": "!!", | |
− | + | "resortId": 1464, | |
− | + | "resortName": "Адлер", | |
− | + | "areaId": 1187, | |
− | + | "areaName": "Amur Oblast", | |
− | + | "address": "", | |
− | + | "phone": "", | |
− | + | "email": "", | |
− | + | "fax": "", | |
− | + | "http": null, | |
+ | "latitude": "", | ||
+ | "longitude": "", | ||
+ | "timeFrom": "", | ||
+ | "timeTo": "", | ||
+ | "countryId": 460, | ||
+ | "countryName": "Россия" | ||
}, | }, | ||
{ | { | ||
− | "id": | + | "id": 111884, |
− | + | "name": "111", | |
− | + | "hotelCategoryId": 964, | |
− | + | "hotelCategoryName": "!!", | |
− | + | "resortId": 35, | |
− | + | "resortName": "Вена", | |
− | + | "areaId": -1, | |
− | + | "areaName": "Без курорта", | |
− | + | "address": "", | |
− | + | "phone": null, | |
− | + | "email": "", | |
− | + | "fax": null, | |
− | + | "http": null, | |
+ | "latitude": null, | ||
+ | "longitude": null, | ||
+ | "timeFrom": "", | ||
+ | "timeTo": "", | ||
+ | "countryId": 90, | ||
+ | "countryName": "Австрия" | ||
}, | }, | ||
{ | { | ||
− | "id": | + | "id": 112827, |
− | + | "name": "11111", | |
− | + | "hotelCategoryId": 964, | |
− | + | "hotelCategoryName": "!!", | |
− | + | "resortId": 1313, | |
− | + | "resortName": "Kazan", | |
− | + | "areaId": -1, | |
− | + | "areaName": "Без курорта", | |
− | + | "address": "", | |
− | + | "phone": "", | |
− | + | "email": "", | |
− | + | "fax": "", | |
− | + | "http": null, | |
+ | "latitude": "", | ||
+ | "longitude": "", | ||
+ | "timeFrom": "", | ||
+ | "timeTo": "", | ||
+ | "countryId": 6259, | ||
+ | "countryName": "Russia" | ||
}, | }, | ||
{ | { | ||
− | "id": | + | "id": 12303, |
− | + | "name": "4 Barcelona", | |
− | + | "hotelCategoryId": 964, | |
− | + | "hotelCategoryName": "!!", | |
− | + | "resortId": 19, | |
− | + | "resortName": "Барселона", | |
− | + | "areaId": -1, | |
− | + | "areaName": "Без курорта", | |
− | + | "address": null, | |
− | + | "phone": null, | |
− | + | "email": null, | |
− | + | "fax": null, | |
− | + | "http": null, | |
+ | "latitude": null, | ||
+ | "longitude": null, | ||
+ | "timeFrom": "", | ||
+ | "timeTo": "", | ||
+ | "countryId": 84, | ||
+ | "countryName": "Испания" | ||
} | } | ||
] | ] | ||
} | } | ||
</syntaxhighlight> | </syntaxhighlight> | ||
+ | </TD></TR></TABLE> | ||
+ | </div></div><br /> | ||
+ | |||
+ | ===Выгрузка описания и изображений отеля (GetHotelInfo) начиная с релиза 15.5=== | ||
+ | Метод возвращает описания и изображения запрашиваемого отеля. | ||
+ | * Формат запроса: | ||
+ | ** ?action=GetHotelInfo | ||
+ | * Принимаемые параметры: | ||
+ | ** '''hotelKey *''' – идентификатор отеля | ||
+ | ** '''needImages''' – возвращать ли изображения отеля в ответе: 0 – не возвращать, 1 – возвращать. | ||
+ | ** '''imageSize''' – варианты размера возвращаемых изображений. Обрабатывается только если передан параметр '''needImages''' = 1 и в этом случае является обязательным параметром. Возможные значения: 0 – small, 1 – medium, 2 – big. | ||
+ | |||
+ | * Возвращаемый результат: | ||
+ | ** '''Images''' – массив изображений отеля | ||
+ | *** '''Key''' – ключ изображения | ||
+ | *** '''Description''' – описание изображения отеля | ||
+ | *** '''Priority''' – приоритет изображения | ||
+ | *** '''Image''' – изображение в byte array | ||
+ | ** '''Country''' – страна отеля | ||
+ | ** '''City''' – город отеля | ||
+ | ** '''Name''' – название отеля | ||
+ | ** '''HotelCategoryName''' – название категории отеля | ||
+ | ** '''Address''' – адрес отеля | ||
+ | ** '''Phone''' – телефон отеля | ||
+ | ** '''Email''' – e-mail отеля | ||
+ | ** '''Http''' – адрес в интернете отеля | ||
+ | ** '''Description''' – описание | ||
+ | ** '''InfrastructureHotel''' – инфраструктура отеля | ||
+ | ** '''RecreationSport''' – развлечение и спорт | ||
+ | ** '''Beach''' – пляж | ||
+ | ** '''Healing''' – лечение | ||
+ | ** '''Excursion''' – экскурсии | ||
+ | ** '''AdditionalService''' – дополнительные услуги | ||
+ | ** '''ForChildren''' – для детей | ||
+ | ** '''AddCost''' – доплаты | ||
+ | ** '''checkInTime''' – время заезда в отель (обрабатывается с релиза 15.6) | ||
+ | ** '''checkOutTime''' – время выезда из отеля (обрабатывается с релиза 15.6) | ||
+ | ** '''latitude''' – GPS координаты: географическая широта (обрабатывается с релиза 15.6) | ||
+ | ** '''longitude''' – GPS координаты: географическая долгота (обрабатывается с релиза 15.6) | ||
+ | |||
+ | <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> | ||
+ | Вызов метода GetHotelInfo | ||
+ | <syntaxhighlight lang="java" enclose="div"> | ||
+ | http://localhost:9000/TourSearchOwin/searchApi?action=GetHotelInfo&hotelKey=8659&needImages=1&imageSize=2 | ||
+ | </syntaxhighlight> | ||
+ | Возвращаемый результат метода GetHotelInfo (в формате JSON) | ||
+ | <syntaxhighlight lang="java" enclose="div"> | ||
+ | { | ||
+ | "version": "1.08", | ||
+ | "hotelInfoAndPhoto": { | ||
+ | "Images": [ | ||
+ | { | ||
+ | "Key": 2618, | ||
+ | "Description": "Общий вид отеля", | ||
+ | "Priority": 1, | ||
+ | "Image": "iVBORw0KGgoAAAANSUhEUgAAARUAAAC0CAYAAAC62bgdSR0IArs4c6QAAAARnQU1BAA....." | ||
+ | }, | ||
+ | { | ||
+ | "Key": 2786, | ||
+ | "Description": "Вид на бассейн", | ||
+ | "Priority": 2, | ||
+ | "Image": "/9j/4AAQSkZJRgABAQEBLAEsAAD/2wBDAAgGBgcGBQgHBwcJCQgKDBQNDAsLDBkSEw.....=" | ||
+ | } | ||
+ | ], | ||
+ | "Country": "Австрия", | ||
+ | "City": "Вена", | ||
+ | "Name": "ContinentalSun", | ||
+ | "HotelCategoryName": "HV", | ||
+ | "Address": "Ул. Пушкина, 100, Вена, Австрия", | ||
+ | "Phone": "+79991234567", | ||
+ | "Email": "sun@sun.com", | ||
+ | "Http": "www.sun.ru", | ||
+ | "Description": "<p>Описание<\/p>", | ||
+ | "InfrastructureHotel": "<p>Инфраструктура отеля<\/p>", | ||
+ | "RecreationSport": "<p>Развлечение и спорт<\/p>", | ||
+ | "Beach": "<p>Пляж<\/p>", | ||
+ | "Healing": "<p>Лечение<\/p>", | ||
+ | "Excursion": "<p>Экскурсии<\/p>", | ||
+ | "AdditionalService": "<p>Дополнительные услуги<\/p>", | ||
+ | "ForChildren": "<p>Для детей<\/p>", | ||
+ | "AddCost": "<p>Доплата<\/p>", | ||
+ | "checkInTime": null, | ||
+ | "checkOutTime": null, | ||
+ | "latitude": null, | ||
+ | "longitude": null | ||
+ | } | ||
+ | }</syntaxhighlight> | ||
</TD></TR></TABLE> | </TD></TR></TABLE> | ||
</div></div><br /> | </div></div><br /> | ||
Строка 495: | Строка 817: | ||
</div></div><br /> | </div></div><br /> | ||
− | ===Выгрузка списка типов | + | ===Выгрузка списка типов размещения (GetHtPlaces) начиная с релиза 15.3=== |
Метод возвращает список всех доступных типов размещений, на которые есть актуальные цены. | Метод возвращает список всех доступных типов размещений, на которые есть актуальные цены. | ||
* Формат запроса: | * Формат запроса: | ||
Строка 511: | Строка 833: | ||
** '''mainplaces''' – общее количество основных мест для взрослых и детей | ** '''mainplaces''' – общее количество основных мест для взрослых и детей | ||
** '''extraplaces''' – общее количество дополнительных мест для взрослых и детей | ** '''extraplaces''' – общее количество дополнительных мест для взрослых и детей | ||
− | ** '''childAges''' – коллекция возможных возрастов детей в размещении (указывается полный возраст, то есть 12 | + | ** '''childAges''' – коллекция возможных возрастов детей в размещении (указывается полный возраст, то есть 12 – это 12,99). Не поддерживается начиная с релиза 15.9, рекомендуется использовать '''childAgesMain''' и '''childAgesExtra'''. |
*** '''from''' – нижняя граница возраста первого ребенка | *** '''from''' – нижняя граница возраста первого ребенка | ||
*** '''to''' – верхняя граница возраста первого ребенка | *** '''to''' – верхняя граница возраста первого ребенка | ||
*** '''from''' – нижняя граница возраста второго ребенка | *** '''from''' – нижняя граница возраста второго ребенка | ||
*** '''to''' – верхняя граница возраста второго ребенка | *** '''to''' – верхняя граница возраста второго ребенка | ||
+ | ** '''childAgesMain''' – коллекция возможных возрастов детей в размещении на основных местах (указывается полный возраст, то есть 12 – это 12,99) | ||
+ | *** '''AgeFrom''' – нижняя граница возраста первого ребенка | ||
+ | *** '''AgeTo''' – верхняя граница возраста первого ребенка | ||
+ | *** '''AgeFrom''' – нижняя граница возраста второго ребенка | ||
+ | *** '''AgeTo''' – верхняя граница возраста второго ребенка | ||
+ | ** '''childAgesExtra''' – коллекция возможных возрастов детей в размещении на дополнительных местах (указывается полный возраст, то есть 12 - это 12,99) | ||
+ | *** '''AgeFrom''' – нижняя граница возраста первого ребенка | ||
+ | *** '''AgeTo''' – верхняя граница возраста первого ребенка | ||
+ | *** '''AgeFrom''' – нижняя граница возраста второго ребенка | ||
+ | *** '''AgeTo''' – верхняя граница возраста второго ребенка | ||
<div class="toccolours mw-collapsible mw-collapsed" style="width:900px">Пример | <div class="toccolours mw-collapsible mw-collapsed" style="width:900px">Пример | ||
Строка 530: | Строка 862: | ||
"hotelPlaces": [ | "hotelPlaces": [ | ||
{ | { | ||
− | "id": | + | "id": 1235, |
− | + | "code": "1 взр, 1 реб. на осн. месте (3-6), 1 реб. на доп. месте (6-12), 1 реб. без места (0-3)", | |
− | + | "name": "1 взр, 1 реб. на осн. месте (3-6), 1 реб. на доп. месте (6-12), 1 реб. без места (0-3)", | |
− | + | "adultmainplaces": 2, | |
− | + | "adultextraplaces": 0, | |
− | + | "childtmainplaces": 1, | |
− | + | "childextraplaces": 2, | |
− | + | "mainplaces": 3, | |
− | + | "extraplaces": 2, | |
− | + | "childAges": [ | |
− | + | { | |
− | + | "from": null, | |
− | + | "to": null | |
− | + | }, | |
− | + | { | |
− | + | "from": null, | |
− | + | "to": null | |
− | } | + | } |
− | + | ], | |
+ | "childAgesMain": [ | ||
+ | { | ||
+ | "AgeFrom": "3", | ||
+ | "AgeTo": "6" | ||
+ | } | ||
+ | ], | ||
+ | "childAgesExtra": [ | ||
+ | { | ||
+ | "AgeFrom": "6", | ||
+ | "AgeTo": "12" | ||
+ | }, | ||
+ | { | ||
+ | "AgeFrom": "0", | ||
+ | "AgeTo": "3" | ||
+ | } | ||
+ | ] | ||
}, | }, | ||
{ | { | ||
− | "id": | + | "id": 1575, |
− | + | "code": "1 взр. + 1 реб. ( 5)", | |
− | + | "name": "1 взр. + 1 реб. ( 5)", | |
− | + | "adultmainplaces": 1, | |
− | + | "adultextraplaces": 0, | |
− | + | "childtmainplaces": 0, | |
− | + | "childextraplaces": 1, | |
− | + | "mainplaces": 1, | |
− | + | "extraplaces": 1, | |
− | + | "childAges": [ | |
− | + | { | |
− | + | "from": 5, | |
− | + | "to": 5 | |
− | + | }, | |
− | + | { | |
− | + | "from": null, | |
− | + | "to": null | |
+ | } | ||
+ | ], | ||
+ | "childAgesMain": [], | ||
+ | "childAgesExtra": [ | ||
+ | { | ||
+ | "AgeFrom": "5", | ||
+ | "AgeTo": "5" | ||
} | } | ||
] | ] | ||
}, | }, | ||
{ | { | ||
− | "id": | + | "id": 1582, |
− | + | "code": "1 взр. + 1 реб. ( 7)", | |
− | + | "name": "1 взр. + 1 реб. ( 7)", | |
− | + | "adultmainplaces": 1, | |
− | + | "adultextraplaces": 0, | |
− | + | "childtmainplaces": 0, | |
− | + | "childextraplaces": 1, | |
− | + | "mainplaces": 1, | |
− | + | "extraplaces": 1, | |
− | + | "childAges": [ | |
− | + | { | |
− | + | "from": 7, | |
− | + | "to": 7 | |
− | + | }, | |
− | + | { | |
− | + | "from": null, | |
− | + | "to": null | |
+ | } | ||
+ | ], | ||
+ | "childAgesMain": [], | ||
+ | "childAgesExtra": [ | ||
+ | { | ||
+ | "AgeFrom": "7", | ||
+ | "AgeTo": "7" | ||
} | } | ||
] | ] | ||
}, | }, | ||
{ | { | ||
− | "id": | + | "id": 2006, |
− | + | "code": "1 взр. + 1 реб. (5)", | |
− | + | "name": "1 взр. + 1 реб. (5)", | |
− | + | "adultmainplaces": 1, | |
− | + | "adultextraplaces": 0, | |
− | + | "childtmainplaces": 0, | |
− | + | "childextraplaces": 1, | |
− | + | "mainplaces": 1, | |
− | + | "extraplaces": 1, | |
− | + | "childAges": [ | |
− | + | { | |
− | + | "from": null, | |
− | + | "to": null | |
− | + | }, | |
− | + | { | |
− | + | "from": null, | |
− | + | "to": null | |
+ | } | ||
+ | ], | ||
+ | "childAgesMain": [], | ||
+ | "childAgesExtra": [ | ||
+ | { | ||
+ | "AgeFrom": "5", | ||
+ | "AgeTo": "5" | ||
} | } | ||
] | ] | ||
Строка 719: | Строка 1088: | ||
===Выгрузка курсов валют (GetCurrencyRates)=== | ===Выгрузка курсов валют (GetCurrencyRates)=== | ||
− | Метод возвращает список курсов валют, актуальных на дату запроса. | + | Метод возвращает список курсов валют, актуальных на дату запроса. Курсы отображаются только для тех валют, которые отмечены в справочнике признаком ''Отображать в онлайне'' |
* Формат запроса: | * Формат запроса: | ||
** ?action=GetCurrencyRates | ** ?action=GetCurrencyRates | ||
* Принимаемые параметры: | * Принимаемые параметры: | ||
− | ** | + | ** '''dateFrom''' – начальная дата, от которой вывести список курсов валют, в формате DD.MM.YYYY, не обязательный параметр |
+ | ** '''dateTo''' – конечная дата, до которой вывести список курсов валют, в формате DD.MM.YYYY, не обязательный параметр | ||
* Возвращаемый результат: | * Возвращаемый результат: | ||
− | ** '''baseCurrencyId''' – идентификатор национальной валюты | + | ** '''baseCurrencyId''' – идентификатор национальной валюты, либо произвольной валюты, указанной в настройке ''basketCurrency'' в конфигурационном файле (обрабатывается с релиза 15.6) |
** '''currencyId''' – идентификатор валюты, курс которой приводится | ** '''currencyId''' – идентификатор валюты, курс которой приводится | ||
** '''rate''' – курс валюты (отношение '''currencyId''' к '''baseCurrencyId''') | ** '''rate''' – курс валюты (отношение '''currencyId''' к '''baseCurrencyId''') | ||
+ | ** '''date''' – дата, на которую был зарегистрирован выводимый курс валюты | ||
<div class="toccolours mw-collapsible mw-collapsed" style="width:900px">Пример | <div class="toccolours mw-collapsible mw-collapsed" style="width:900px">Пример | ||
Строка 734: | Строка 1105: | ||
Вызов метода GetCurrencyRates | Вызов метода GetCurrencyRates | ||
<syntaxhighlight lang="java" enclose="div"> | <syntaxhighlight lang="java" enclose="div"> | ||
− | http://localhost:9000/TourSearchOwin/searchApi?action=GetCurrencyRates | + | http://localhost:9000/TourSearchOwin/searchApi?action=GetCurrencyRates&dateFrom=18.09.2024&dateTo=19.09.2024 |
</syntaxhighlight> | </syntaxhighlight> | ||
Возвращаемый результат метода GetCurrencyRates (в формате JSON) | Возвращаемый результат метода GetCurrencyRates (в формате JSON) | ||
<syntaxhighlight lang="java" enclose="div"> | <syntaxhighlight lang="java" enclose="div"> | ||
{ | { | ||
− | + | "version": "1.08", | |
− | + | "currencyRates": [ | |
− | { | + | { |
− | + | "BaseCurrencyId": 14, | |
− | + | "CurrencyId": 1, | |
− | + | "Rate": 91.429200, | |
− | + | "Date": "18.09.2024" | |
− | + | }, | |
− | + | { | |
− | + | "BaseCurrencyId": 14, | |
− | + | "CurrencyId": 2, | |
− | + | "Rate": 101.505700, | |
− | + | "Date": "18.09.2024" | |
+ | }, | ||
+ | { | ||
+ | "BaseCurrencyId": 14, | ||
+ | "CurrencyId": 1, | ||
+ | "Rate": 91.671200, | ||
+ | "Date": "19.09.2024" | ||
+ | }, | ||
+ | { | ||
+ | "BaseCurrencyId": 14, | ||
+ | "CurrencyId": 2, | ||
+ | "Rate": 102.039000, | ||
+ | "Date": "19.09.2024" | ||
+ | } | ||
+ | ] | ||
} | } | ||
Строка 759: | Строка 1144: | ||
==Поиск туров (GetTours)== | ==Поиск туров (GetTours)== | ||
− | Метод поиска туров использует множество параметров для поиска и фильтрации туров. Метод возвращает наиболее дешевые предложения, найденные по предоставленным параметрам и сгруппированные по отелям в порядке возрастания цены. Количество туров в выдаче регулируется параметром '''count'''. | + | Метод поиска туров использует множество параметров для поиска и фильтрации туров. Метод возвращает наиболее дешевые предложения, найденные по предоставленным параметрам и сгруппированные по отелям (без учета группировки по турам) в порядке возрастания цены. Количество туров в выдаче регулируется параметром '''count'''. |
* Формат запроса: | * Формат запроса: | ||
** ?action=GetTours&count=int&countryId=int&departCityId=int&dateFrom=date&dateTo=date&adults=int&kids=int&nightsMin=int&nightsMax=int¤cyId=int | ** ?action=GetTours&count=int&countryId=int&departCityId=int&dateFrom=date&dateTo=date&adults=int&kids=int&nightsMin=int&nightsMax=int¤cyId=int | ||
* Принимаемые параметры ( '''*''' – обязательный): | * Принимаемые параметры ( '''*''' – обязательный): | ||
− | |||
** '''count *''' – максимальное количество предложений в выдаче. | ** '''count *''' – максимальное количество предложений в выдаче. | ||
** '''countryId *''' – идентификатор страны. | ** '''countryId *''' – идентификатор страны. | ||
Строка 773: | Строка 1157: | ||
** '''kids *''' – количество детей. | ** '''kids *''' – количество детей. | ||
** '''kidsAges''' – количество полных лет каждому ребенку, передается в виде строки, перечисление через запятую (пример: 3,6). | ** '''kidsAges''' – количество полных лет каждому ребенку, передается в виде строки, перечисление через запятую (пример: 3,6). | ||
− | ** '''nightsMin *''' – минимальное количество дней в туре. | + | ** '''nightsMin *''' – минимальное количество дней в туре (всегда запрашиваются дни тура, независимо он настройки осуществления поиска: в днях тура/в ночах тура/в ночах проживания в отеле). |
− | ** '''nightsMax *''' – максимальное количество дней в туре. | + | ** '''nightsMax *''' – максимальное количество дней в туре (всегда запрашиваются дни тура, независимо он настройки осуществления поиска: в днях тура/в ночах тура/в ночах проживания в отеле). |
** '''resorts''' – идентификаторы городов, перечисление через запятую. | ** '''resorts''' – идентификаторы городов, перечисление через запятую. | ||
+ | ** '''areas''' – идентификаторы курортов, перечисление через запятую. | ||
+ | ** '''tourTypeIds''' – идентификаторы типов тура, перечисление через запятую (начиная с релиза 15.4). | ||
+ | ** '''tourProgramIds''' – идентификаторы программ туров, перечисление через запятую (начиная с релиза 15.4). | ||
** '''hotelCategories''' – идентификаторы категорий отелей, перечисление через запятую. | ** '''hotelCategories''' – идентификаторы категорий отелей, перечисление через запятую. | ||
** '''hotels''' – идентификаторы отелей, перечисление через запятую. | ** '''hotels''' – идентификаторы отелей, перечисление через запятую. | ||
Строка 785: | Строка 1172: | ||
** '''ticketsIncluded *''' – при значении 1 в результатах должны быть только туры с включенной стоимостью перелета («только отель» недопустимы). При значении 0 в результат должны попадать как туры без перелета, так и туры с перелетом. | ** '''ticketsIncluded *''' – при значении 1 в результатах должны быть только туры с включенной стоимостью перелета («только отель» недопустимы). При значении 0 в результат должны попадать как туры без перелета, так и туры с перелетом. | ||
** '''hasTickets''' – при значении 1 в результатах должны быть туры только с реальным наличием билетов в перелете (не должно быть туров со стопом на перелете, перелеты со статусом «под запрос» недопустимы). При значении 0 в результат должны попадать как туры без билетов на рейс, так и туры с наличием билетов и с билетами по запросу. | ** '''hasTickets''' – при значении 1 в результатах должны быть туры только с реальным наличием билетов в перелете (не должно быть туров со стопом на перелете, перелеты со статусом «под запрос» недопустимы). При значении 0 в результат должны попадать как туры без билетов на рейс, так и туры с наличием билетов и с билетами по запросу. | ||
+ | ** '''hasQuotas''' – при значении 1 в результатах должны быть туры только с реальным наличием мест во всех квотируемых услугах (не должно быть туров с услугами со стопом или со статусом «под запрос»). При значении 0 в результат должны попадать как туры с услугами на стопе, так и туры с наличием мест по квотам и с местами по запросу. | ||
** '''excludeUsualTours''' – при значении 1 из результатов должны быть исключены туры, являющиеся обычными турами (не являющиеся многоотельными). При значении 0 или отсутствии данного параметра такие туры должны быть включены в результат. | ** '''excludeUsualTours''' – при значении 1 из результатов должны быть исключены туры, являющиеся обычными турами (не являющиеся многоотельными). При значении 0 или отсутствии данного параметра такие туры должны быть включены в результат. | ||
** '''excludeCombined''' – при значении 1 из результатов должны быть исключены туры, являющиеся многоотельными. При значении 0 или отсутствии данного параметра такие туры должны быть включены в результат. | ** '''excludeCombined''' – при значении 1 из результатов должны быть исключены туры, являющиеся многоотельными. При значении 0 или отсутствии данного параметра такие туры должны быть включены в результат. | ||
** '''showToursWithoutHotels''' – при значении 1 в результатах поиска вместе с обычными турами должны подбираться туры без проживания (без услуги отель в составе тура). При значении 0 или отсутствии данного параметра такие туры должны быть исключены из результата поиска. ''Параметр обрабатывается, начиная с релиза 15.2''. | ** '''showToursWithoutHotels''' – при значении 1 в результатах поиска вместе с обычными турами должны подбираться туры без проживания (без услуги отель в составе тура). При значении 0 или отсутствии данного параметра такие туры должны быть исключены из результата поиска. ''Параметр обрабатывается, начиная с релиза 15.2''. | ||
+ | ** '''hasGDSFlight''' – подбирать туры с GDS перелетами. ''Параметр обрабатывается, начиная с релиза 15.5''. | ||
+ | *** '''0''' – подбирать любые туры, вне зависимости от того, есть в них GDS перелеты или нет (значение по умолчанию) | ||
+ | *** '''1''' – подбирать туры только с локальными перелетами | ||
+ | *** '''2''' – подбирать туры только с обязательными GDS перелетами | ||
+ | *** '''3''' – подбирать туры только с необязательными GDS перелетами | ||
+ | *** '''4''' – подбирать туры, в которых в одном направлении присутствует обязательный GDS перелет, а в другом направлении есть обязательный и необязательный GDS перелет (на двух вкладках в программе туров) | ||
+ | ** '''hasGDSHotel''' – подбирать туры с GDS отелями. ''Параметр обрабатывается, начиная с релиза 15.5''. | ||
+ | *** '''0''' – подбирать любые туры, вне зависимости от того, есть в них GDS отели или нет (значение по умолчанию) | ||
+ | *** '''1''' – подбирать туры только с локальными отелями | ||
+ | *** '''2''' – подбирать туры только с GDS отелями | ||
* Возвращаемый результат: | * Возвращаемый результат: | ||
Строка 814: | Строка 1212: | ||
** '''tourDate''' – дата начала тура в формате dd.MM.yyyy (пример: 31.12.2016). | ** '''tourDate''' – дата начала тура в формате dd.MM.yyyy (пример: 31.12.2016). | ||
** '''tourEndDate''' – дата окончания тура (дата прилета) в формате dd.MM.yyyy (пример: 31.12.2016). | ** '''tourEndDate''' – дата окончания тура (дата прилета) в формате dd.MM.yyyy (пример: 31.12.2016). | ||
− | ** '''nights''' – продолжительность тура в днях. | + | ** '''nights''' – продолжительность тура в днях (всегда возвращается продолжительность тура в днях, независимо он настройки осуществления поиска: в днях тура/в ночах тура/в ночах проживания в отеле). |
** '''price''' – цена тура в валюте, которая была указана во входном параметре '''currencyId'''. | ** '''price''' – цена тура в валюте, которая была указана во входном параметре '''currencyId'''. | ||
** '''currencyId''' – идентификатор валюты. | ** '''currencyId''' – идентификатор валюты. | ||
Строка 820: | Строка 1218: | ||
** '''hotelIsInStop''' – наличие мест в отеле, допустимы значения: 0 – есть места, 1 – нет мест, 2 – запрос. | ** '''hotelIsInStop''' – наличие мест в отеле, допустимы значения: 0 – есть места, 1 – нет мест, 2 – запрос. | ||
** '''ticketsIncluded''' – включена ли стоимость билетов в стоимость тура, допустимы значения: 0 – не включена (тур только отель), 1 – включена (пакетный тур). | ** '''ticketsIncluded''' – включена ли стоимость билетов в стоимость тура, допустимы значения: 0 – не включена (тур только отель), 1 – включена (пакетный тур). | ||
− | ** '''hasEconomTicketsDpt''' – наличие билетов эконом класса | + | ** '''hasEconomTicketsDpt''' – наличие билетов эконом класса из рассчитанной цены, допустимы значения: 0 – нет мест, 1 есть места, 2 – запрос. При значении атрибута '''ticketsIncluded''' = 0 значение данного параметра будет проигнорировано. |
− | ** '''hasEconomTicketsRtn''' – наличие обратных билетов эконом класса, допустимы значения: 0 – нет мест, 1 есть места, 2 – запрос. При значении атрибута '''ticketsIncluded''' = 0 значение данного параметра будет проигнорировано. Группы перелетов задаются в настройке [[Мастер-Тур(15):Установка#Установка службы поиска|flightTariffGroups]]. | + | ** '''hasAnotherEconomTicketsDpt''' – наличие билетов эконом класса из групп перелетов, допустимы значения: 0 – нет мест, 1 есть места, 2 – запрос. При значении атрибута '''ticketsIncluded''' = 0 значение данного параметра будет проигнорировано. Группы перелетов задаются в настройке [[Мастер-Тур(15):Установка#Установка службы поиска|flightTariffGroups]]. |
− | ** '''hasBusinessTicketsDpt''' – наличие билетов бизнес класса | + | ** '''hasEconomTicketsRtn''' – наличие обратных билетов эконом класса из рассчитанной цены, допустимы значения: 0 – нет мест, 1 есть места, 2 – запрос. При значении атрибута '''ticketsIncluded''' = 0 значение данного параметра будет проигнорировано. |
− | ** '''hasBusinessTicketsRtn''' – наличие обратных билетов бизнес класса, допустимы значения: 0 – нет мест, 1 есть места, 2 – запрос. При значении атрибута '''ticketsIncluded''' = 0 значение данного параметра будет проигнорировано. Группы перелетов задаются в настройке [[Мастер-Тур(15):Установка#Установка службы поиска|flightTariffGroups]]. | + | ** '''hasAnotherEconomTicketsRtn''' – наличие обратных билетов эконом класса из групп перелетов, допустимы значения: 0 – нет мест, 1 есть места, 2 – запрос. При значении атрибута '''ticketsIncluded''' = 0 значение данного параметра будет проигнорировано. Группы перелетов задаются в настройке [[Мастер-Тур(15):Установка#Установка службы поиска|flightTariffGroups]]. |
− | ** '''tourUrl''' – ссылка на корзину (при переходе по которой можно забронировать тур). | + | ** '''hasBusinessTicketsDpt''' – наличие билетов бизнес класса из рассчитанной цены, допустимы значения: 0 – нет мест, 1 есть места, 2 – запрос. При значении атрибута '''ticketsIncluded''' = 0 значение данного параметра будет проигнорировано. |
+ | ** '''hasAnotherBusinessTicketsDpt''' – наличие билетов бизнес класса из групп перелетов, допустимы значения: 0 – нет мест, 1 есть места, 2 – запрос. При значении атрибута '''ticketsIncluded''' = 0 значение данного параметра будет проигнорировано. Группы перелетов задаются в настройке [[Мастер-Тур(15):Установка#Установка службы поиска|flightTariffGroups]]. | ||
+ | ** '''hasBusinessTicketsRtn''' – наличие обратных билетов бизнес класса из рассчитанной цены, допустимы значения: 0 – нет мест, 1 есть места, 2 – запрос. При значении атрибута '''ticketsIncluded''' = 0 значение данного параметра будет проигнорировано. | ||
+ | ** '''hasAnotherBusinessTicketsRtn''' – наличие обратных билетов бизнес класса из групп перелетов, допустимы значения: 0 – нет мест, 1 есть места, 2 – запрос. При значении атрибута '''ticketsIncluded''' = 0 значение данного параметра будет проигнорировано. Группы перелетов задаются в настройке [[Мастер-Тур(15):Установка#Установка службы поиска|flightTariffGroups]]. | ||
+ | ** '''hasGDSFlight''' – информация о GDS перелетах в туре: 1 – все перелеты локальные, 2 – хотя бы один перелет из GDS и его выбор обязателен, 3 – хотя бы один перелет из GDS и его выбор необязателен и нет обязательных перелетов из GDS. Начиная с релиза 15.5. | ||
+ | Если в туре используется перелет из GDS и мы получили в параметре '''hasGDSFlight''' 2 или 3, то для расчета стоимости перелетов после вызова GetTours необходимо вызвать [[Мастер-Тур(15):API для отдачи цен в поисковые системы#Актуализация тура (ActualizeTour)|ActualizeTour]], а затем последовательно вызвать методы для получения цены регулярного перелета [[Мастер-Тур(15):API для разработки онлайн поиска и бронирования#Поиск рейсов из внешней системы (GetGDSFlights)|GetGDSFlights]], [[Мастер-Тур(15):API для разработки онлайн поиска и бронирования#Выгрузка информации от внешнего поставщика по перелету (RebuildFlights)|RebuidFlights]] и [[Мастер-Тур(15):API для разработки онлайн поиска и бронирования#Расчет путевки (CalculateReservation)|CalculateReservation]]. | ||
+ | ** '''hasGDSHotel''' – информация о GDS отелях в туре: 1 – локальный отель, 2 – хотя бы один отель из GDS. Начиная с релиза 15.5. | ||
+ | ** '''tourUrl''' – ссылка на корзину (при переходе по которой можно забронировать тур), формируется сервисом ПК "Мастер-тур". | ||
** '''spoUrl''' – ссылка на описание тура (указывается в программе тура). | ** '''spoUrl''' – ссылка на описание тура (указывается в программе тура). | ||
** '''fewPlacesInHotel''' – числовое значение мест в отеле. По умолчанию поле возвращается с пустым значением. Если удовлетворяются условия, заданные в настройке "Мало", но не включена настройка "Отображать числовое значение оставшихся мест" в панели администрирования, то возвращается значение «-1». Если удовлетворяются условия, заданные в настройке "Мало" и включена настройка "Отображать числовое значение оставшихся мест", то возвращается числовое значение того количества мест, которое осталось. | ** '''fewPlacesInHotel''' – числовое значение мест в отеле. По умолчанию поле возвращается с пустым значением. Если удовлетворяются условия, заданные в настройке "Мало", но не включена настройка "Отображать числовое значение оставшихся мест" в панели администрирования, то возвращается значение «-1». Если удовлетворяются условия, заданные в настройке "Мало" и включена настройка "Отображать числовое значение оставшихся мест", то возвращается числовое значение того количества мест, которое осталось. | ||
Строка 844: | Строка 1249: | ||
*** '''packetKey''' – ключ пакета. | *** '''packetKey''' – ключ пакета. | ||
*** '''partnerKey''' – ключ партнера. | *** '''partnerKey''' – ключ партнера. | ||
− | ** '''hotels''' – массив отелей, который соответствует количеству отелей в | + | *** '''gdsProviderId''' – ключ провайдера из внешней системы. |
+ | *** '''totalTourDuration''' – общая продолжительность тура в днях. | ||
+ | ** '''hotels''' – массив отелей, который соответствует количеству отелей в туре. Каждая запись массива содержит в себе информацию по одному отелю. Для многоотельных туров выводятся по порядку проживания в отелях. | ||
*** '''countryId''' – идентификатор страны | *** '''countryId''' – идентификатор страны | ||
*** '''countryName''' – название страны | *** '''countryName''' – название страны | ||
Строка 866: | Строка 1273: | ||
*** '''checkIn''' – дата заезда в отель | *** '''checkIn''' – дата заезда в отель | ||
*** '''checkOut''' – дата выезда из отеля | *** '''checkOut''' – дата выезда из отеля | ||
+ | *** '''checkInTime''' – время заезда в отель (обрабатывается с релиза 15.6) | ||
+ | *** '''checkOutTime''' – время выезда из отеля (обрабатывается с релиза 15.6) | ||
+ | *** '''latitude''' – GPS координаты: географическая широта (обрабатывается с релиза 15.6) | ||
+ | *** '''longitude''' – GPS координаты: географическая долгота (обрабатывается с релиза 15.6) | ||
*** '''htNights''' – количество ночей в отеле | *** '''htNights''' – количество ночей в отеле | ||
*** '''hotelIsInStop''' – наличие мест в отеле, допустимы значения: 0 – есть места, 1 – нет мест, 2 – запрос | *** '''hotelIsInStop''' – наличие мест в отеле, допустимы значения: 0 – есть места, 1 – нет мест, 2 – запрос | ||
+ | *** '''isGDS''' – информация о том, локальный отель или из GDS системы: 0 – локальный отель, 1 – отель из GDS. Начиная с релиза 15.5. | ||
*** '''hotelScheme''' – объект схемы отеля | *** '''hotelScheme''' – объект схемы отеля | ||
**** '''templateId''' – идентификатор шаблона услуги | **** '''templateId''' – идентификатор шаблона услуги | ||
Строка 874: | Строка 1286: | ||
**** '''packetKey''' – ключ пакета | **** '''packetKey''' – ключ пакета | ||
**** '''partnerKey''' – ключ партнера | **** '''partnerKey''' – ключ партнера | ||
+ | **** '''gdsProviderId''' – ключ провайдера из внешней системы | ||
+ | **** '''totalTourDuration''' – общая продолжительность тура в днях | ||
+ | ** '''services''' – массив услуг, которые входят в тур (заполняется по настройке '''showServiceDescription''' в конфигурационном файле ''TourSearchOwin'', обрабатывается с релиза 15.6) | ||
+ | *** '''ServiceType''' – класс услуги | ||
+ | *** '''Code''' – код (ключ) услуги | ||
+ | *** '''SubCode1''' – доп. описание 1 услуги | ||
+ | *** '''SubCode2''' – доп. описание 2 услуги | ||
+ | *** '''PacketId''' – ключ пакета цены услуги | ||
+ | *** '''PartnerId''' – ключ партнера цены услуги (заполняется по настройке '''showServicePartner''' в конфигурационном файле ''TourSearchOwin'', обрабатывается с релиза 15.6) | ||
+ | *** '''CountryId''' – ключ страны услуги | ||
+ | *** '''CityId''' – ключ города услуги | ||
+ | *** '''DateBegin''' – дата предоставления услуги в формате dd.MM.yyyy (пример: 01.08.2020) | ||
+ | *** '''DateEnd''' – дата окончания услуги в формате dd.MM.yyyy (пример: 01.08.2020) | ||
+ | *** '''TimeBegin''' – время начала услуги в формате hh:mm (пример: 06:00), обрабатывается только для авиаперелетов и автобусных переездов | ||
+ | *** '''TimeEnd''' – время окончания услуги в формате hh:mm (пример: 22:00), обрабатывается только для авиаперелетов и автобусных переездов | ||
+ | *** '''Day''' – день предоставления услуги | ||
+ | *** '''DurationInNight''' – продолжительность услуги в ночах | ||
+ | *** '''GDSProviderId''' – ключ внешнего провайдера услуги (GDS) | ||
+ | *** '''Name''' – название услуги | ||
+ | *** '''Price''' – нетто стоимость услуги (заполняется по настройке '''showServiceNetto''' в конфигурационном файле ''TourSearchOwin'', обрабатывается с релиза 15.6) | ||
+ | *** '''Cost''' – брутто стоимость услуги (заполняется по настройке '''showServiceBrutto''' в конфигурационном файле ''TourSearchOwin'', обрабатывается с релиза 15.6) | ||
+ | *** '''Availability''' – результат проверки квоты по услуге: 0 – нет мест, 1 – есть места, 2 – запрос | ||
+ | *** '''Tariffs''' – поле ''cs_trfid'' из таблицы ''tbl_costs''. В ответе должны быть через запятую уникальные id этих тарифов, исходя из цен, по которым считалось | ||
+ | ** '''nodeId''' – уникальный идентификатор узла в кластере балансировки нагрузки [[Мастер-Тур(15):Балансировщик нагрузки HaProxy|HaProxy]] | ||
<div class="toccolours mw-collapsible mw-collapsed" style="width:900px">Пример | <div class="toccolours mw-collapsible mw-collapsed" style="width:900px">Пример | ||
Строка 922: | Строка 1358: | ||
"hasBusinessTicketsDpt": 2, | "hasBusinessTicketsDpt": 2, | ||
"hasBusinessTicketsRtn": 2, | "hasBusinessTicketsRtn": 2, | ||
− | "tourUrl": "http://localhost/TourSearchClient/Basket?departureCities=1&destination=1_22&tour=161&date=10.08.16&duration=8&hotelScheme= | + | "tourUrl": "http://localhost/TourSearchClient/Basket?departureCities=1&destination=1_22&tour=161&date=10.08.16&duration=8&hotelScheme=1_7_3239_221_10760_98 |
&adultCount=2&hotelQuota=7&aviaQuota=7&serviceDescriptions=2_1_586_89_1_22_33_221_10760_1_0, | &adultCount=2&hotelQuota=7&aviaQuota=7&serviceDescriptions=2_1_586_89_1_22_33_221_10760_1_0, | ||
1_3_3239_1148_38_22_33_221_10760_1_7,3_1_587_89_33_460_1_221_10760_8_0¤cy=USD", | 1_3_3239_1148_38_22_33_221_10760_1_7,3_1_587_89_33_460_1_221_10760_8_0¤cy=USD", | ||
+ | "hasGDSFlight ": 0, | ||
+ | "hasGDSHotel ": 0, | ||
"spoUrl": "www.megatec.ru", | "spoUrl": "www.megatec.ru", | ||
"fewPlacesInHotel": null, | "fewPlacesInHotel": null, | ||
Строка 944: | Строка 1382: | ||
"code": 705, | "code": 705, | ||
"packetKey": 779, | "packetKey": 779, | ||
− | "partnerKey": 12667 | + | "partnerKey": 12667, |
+ | "gdsProviderId" 98, | ||
+ | "totalTourDuration" 11 | ||
} | } | ||
"hotels": [{ | "hotels": [{ | ||
Строка 968: | Строка 1408: | ||
"checkIn": "2018-11-10T00:00:00", | "checkIn": "2018-11-10T00:00:00", | ||
"checkOut": "2018-11-16T00:00:00", | "checkOut": "2018-11-16T00:00:00", | ||
+ | "checkInTime": null, | ||
+ | "checkOutTime": null, | ||
+ | "latitude": null, | ||
+ | "longitude": null, | ||
"htNights": 6, | "htNights": 6, | ||
− | "hotelIsInStop": 2 | + | "hotelIsInStop": 2, |
+ | "isGDS": 0, | ||
"hotelScheme": { | "hotelScheme": { | ||
"templateId": 4, | "templateId": 4, | ||
Строка 975: | Строка 1420: | ||
"code": 705, | "code": 705, | ||
"packetKey": 1083, | "packetKey": 1083, | ||
− | "partnerKey": 12695 | + | "partnerKey": 12695, |
+ | "gdsProviderId": 98, | ||
+ | "totalTourDuration": 7 | ||
} | } | ||
}, | }, | ||
Строка 1001: | Строка 1448: | ||
"checkIn": "2018-11-16T00:00:00", | "checkIn": "2018-11-16T00:00:00", | ||
"checkOut": "2018-11-20T00:00:00", | "checkOut": "2018-11-20T00:00:00", | ||
+ | "checkInTime": null, | ||
+ | "checkOutTime": null, | ||
+ | "latitude": null, | ||
+ | "longitude": null, | ||
"htNights": 4, | "htNights": 4, | ||
− | "hotelIsInStop": 2 | + | "hotelIsInStop": 2, |
+ | "isGDS": 0, | ||
"hotelScheme": { | "hotelScheme": { | ||
"templateId": 3, | "templateId": 3, | ||
Строка 1008: | Строка 1460: | ||
"code": 178, | "code": 178, | ||
"packetKey": 1085, | "packetKey": 1085, | ||
− | "partnerKey": 12796 | + | "partnerKey": 12796, |
+ | "gdsProviderId" 98, | ||
+ | "totalTourDuration" 5 | ||
} | } | ||
}] | }] | ||
}, | }, | ||
+ | "nodeId": 1 | ||
} | } | ||
</syntaxhighlight> | </syntaxhighlight> | ||
Строка 1018: | Строка 1473: | ||
==Поиск всех цен по туру (GetToursAllPrices) начиная с релиза 15.3== | ==Поиск всех цен по туру (GetToursAllPrices) начиная с релиза 15.3== | ||
− | Метод поиска туров использует множество параметров для поиска и фильтрации туров. Метод возвращает цены, не сгруппированные по отелям. Количество туров в выдаче регулируется параметром '''count'''. | + | Метод поиска туров использует множество параметров для поиска и фильтрации туров. Метод возвращает цены, не сгруппированные по отелям. Количество туров в выдаче регулируется параметром '''count'''.<br /> |
+ | Существует возможность ограничить количество цен, отдаваемых методом ''GetToursAllPrices''. Регулируется настройкой [[Мастер-Тур(15):Установка#Установка службы поиска|getToursAllPricesMaxCostCount]]. | ||
* Формат запроса: | * Формат запроса: | ||
** ?action=GetToursAllPrices&count=int&countryId=int&departCityId=int&dateFrom=date&dateTo=date&adults=int&kids=int&nightsMin=int&nightsMax=int¤cyId=int | ** ?action=GetToursAllPrices&count=int&countryId=int&departCityId=int&dateFrom=date&dateTo=date&adults=int&kids=int&nightsMin=int&nightsMax=int¤cyId=int | ||
Строка 1032: | Строка 1488: | ||
** '''kids *''' – количество детей. | ** '''kids *''' – количество детей. | ||
** '''kidsAges''' – количество полных лет каждому ребенку, передается в виде строки, перечисление через запятую (пример: 3,6). | ** '''kidsAges''' – количество полных лет каждому ребенку, передается в виде строки, перечисление через запятую (пример: 3,6). | ||
− | ** '''nightsMin *''' – минимальное количество дней в туре. | + | ** '''nightsMin *''' – минимальное количество дней в туре (всегда запрашиваются дни тура, независимо он настройки осуществления поиска: в днях тура/в ночах тура/в ночах проживания в отеле). |
− | ** '''nightsMax *''' – максимальное количество дней в туре. | + | ** '''nightsMax *''' – максимальное количество дней в туре (всегда запрашиваются дни тура, независимо он настройки осуществления поиска: в днях тура/в ночах тура/в ночах проживания в отеле). |
** '''resorts''' – идентификаторы городов, перечисление через запятую. | ** '''resorts''' – идентификаторы городов, перечисление через запятую. | ||
+ | ** '''areas''' – идентификаторы курортов, перечисление через запятую. | ||
+ | ** '''tourTypeIds''' – идентификаторы типов тура, перечисление через запятую (начиная с релиза 15.4). | ||
+ | ** '''tourProgramIds''' – идентификаторы программ туров, перечисление через запятую (начиная с релиза 15.4). | ||
** '''hotelCategories''' – идентификаторы категорий отелей, перечисление через запятую. | ** '''hotelCategories''' – идентификаторы категорий отелей, перечисление через запятую. | ||
** '''hotels''' – идентификаторы отелей, перечисление через запятую. | ** '''hotels''' – идентификаторы отелей, перечисление через запятую. | ||
Строка 1044: | Строка 1503: | ||
** '''ticketsIncluded *''' – при значении 1 в результатах должны быть только туры с включенной стоимостью перелета («только отель» недопустимы). При значении 0 в результат должны попадать как туры без перелета, так и туры с перелетом. | ** '''ticketsIncluded *''' – при значении 1 в результатах должны быть только туры с включенной стоимостью перелета («только отель» недопустимы). При значении 0 в результат должны попадать как туры без перелета, так и туры с перелетом. | ||
** '''hasTickets''' – при значении 1 в результатах должны быть туры только с реальным наличием билетов в перелете (не должно быть туров со стопом на перелете, перелеты со статусом «под запрос» недопустимы). При значении 0 в результат должны попадать как туры без билетов на рейс, так и туры с наличием билетов и с билетами по запросу. | ** '''hasTickets''' – при значении 1 в результатах должны быть туры только с реальным наличием билетов в перелете (не должно быть туров со стопом на перелете, перелеты со статусом «под запрос» недопустимы). При значении 0 в результат должны попадать как туры без билетов на рейс, так и туры с наличием билетов и с билетами по запросу. | ||
+ | ** '''hasQuotas''' – при значении 1 в результатах должны быть туры только с реальным наличием мест во всех квотируемых услугах (не должно быть туров с услугами со стопом или со статусом «под запрос»). При значении 0 в результат должны попадать как туры с услугами на стопе, так и туры с наличием мест по квотам и с местами по запросу. | ||
** '''excludeUsualTours''' – при значении 1 из результатов должны быть исключены туры, являющиеся обычными турами (не являющиеся многоотельными). При значении 0 или отсутствии данного параметра такие туры должны быть включены в результат. | ** '''excludeUsualTours''' – при значении 1 из результатов должны быть исключены туры, являющиеся обычными турами (не являющиеся многоотельными). При значении 0 или отсутствии данного параметра такие туры должны быть включены в результат. | ||
** '''excludeCombined''' – при значении 1 из результатов должны быть исключены туры, являющиеся многоотельными. При значении 0 или отсутствии данного параметра такие туры должны быть включены в результат. | ** '''excludeCombined''' – при значении 1 из результатов должны быть исключены туры, являющиеся многоотельными. При значении 0 или отсутствии данного параметра такие туры должны быть включены в результат. | ||
+ | ** '''hasGDSFlight''' – подбирать туры с GDS перелетами. ''Параметр обрабатывается, начиная с релиза 15.5''. | ||
+ | *** '''0''' – подбирать любые туры, вне зависимости от того, есть в них GDS перелеты или нет (значение по умолчанию) | ||
+ | *** '''1''' – подбирать туры только с локальными перелетами | ||
+ | *** '''2''' – подбирать туры только с обязательными GDS перелетами | ||
+ | *** '''3''' – подбирать туры только с необязательными GDS перелетами | ||
+ | *** '''4''' – подбирать туры, в которых в одном направлении присутствует обязательный GDS перелет, а в другом направлении есть обязательный и необязательный GDS перелет (на двух вкладках в программе туров) | ||
+ | ** '''hasGDSHotel''' – подбирать туры с GDS отелями. ''Параметр обрабатывается, начиная с релиза 15.5''. | ||
+ | *** '''0''' – подбирать любые туры, вне зависимости от того, есть в них GDS отели или нет (значение по умолчанию) | ||
+ | *** '''1''' – подбирать туры только с локальными отелями | ||
+ | *** '''2''' – подбирать туры только с GDS отелями | ||
** '''showToursWithoutHotels''' – при значении 1 в результатах поиска вместе с обычными турами должны подбираться туры без проживания (без услуги отель в составе тура). При значении 0 или отсутствии данного параметра такие туры должны быть исключены из результата поиска. ''Параметр обрабатывается, начиная с релиза 15.2''. | ** '''showToursWithoutHotels''' – при значении 1 в результатах поиска вместе с обычными турами должны подбираться туры без проживания (без услуги отель в составе тура). При значении 0 или отсутствии данного параметра такие туры должны быть исключены из результата поиска. ''Параметр обрабатывается, начиная с релиза 15.2''. | ||
** '''Sort''' – сортировка результатов. Возможно использование нескольких параметров через запятую. Если параметр не указан, то по умолчанию сортировка производится по возрастанию цены. Возможные значения: | ** '''Sort''' – сортировка результатов. Возможно использование нескольких параметров через запятую. Если параметр не указан, то по умолчанию сортировка производится по возрастанию цены. Возможные значения: | ||
Строка 1096: | Строка 1566: | ||
** '''tourDate''' – дата начала тура в формате dd.MM.yyyy (пример: 31.12.2016). | ** '''tourDate''' – дата начала тура в формате dd.MM.yyyy (пример: 31.12.2016). | ||
** '''tourEndDate''' – дата окончания тура (дата прилета) в формате dd.MM.yyyy (пример: 31.12.2016). | ** '''tourEndDate''' – дата окончания тура (дата прилета) в формате dd.MM.yyyy (пример: 31.12.2016). | ||
− | ** '''nights''' – продолжительность тура в днях. | + | ** '''nights''' – продолжительность тура в днях (всегда возвращается продолжительность тура в днях, независимо он настройки осуществления поиска: в днях тура/в ночах тура/в ночах проживания в отеле). |
** '''price''' – цена тура в валюте, которая была указана во входном параметре '''currencyId'''. | ** '''price''' – цена тура в валюте, которая была указана во входном параметре '''currencyId'''. | ||
** '''currencyId''' – идентификатор валюты. | ** '''currencyId''' – идентификатор валюты. | ||
Строка 1102: | Строка 1572: | ||
** '''hotelIsInStop''' – наличие мест в отеле, допустимы значения: 0 – есть места, 1 – нет мест, 2 – запрос. | ** '''hotelIsInStop''' – наличие мест в отеле, допустимы значения: 0 – есть места, 1 – нет мест, 2 – запрос. | ||
** '''ticketsIncluded''' – включена ли стоимость билетов в стоимость тура, допустимы значения: 0 – не включена (тур только отель), 1 – включена (пакетный тур). | ** '''ticketsIncluded''' – включена ли стоимость билетов в стоимость тура, допустимы значения: 0 – не включена (тур только отель), 1 – включена (пакетный тур). | ||
− | ** '''hasEconomTicketsDpt''' – наличие билетов эконом класса | + | ** '''hasEconomTicketsDpt''' – наличие билетов эконом класса из рассчитанной цены, допустимы значения: 0 – нет мест, 1 есть места, 2 – запрос. При значении атрибута '''ticketsIncluded''' = 0 значение данного параметра будет проигнорировано. |
− | ** '''hasEconomTicketsRtn''' – наличие обратных билетов эконом класса, допустимы значения: 0 – нет мест, 1 есть места, 2 – запрос. При значении атрибута '''ticketsIncluded''' = 0 значение данного параметра будет проигнорировано. Группы перелетов задаются в настройке [[Мастер-Тур(15):Установка#Установка службы поиска|flightTariffGroups]]. | + | ** '''hasAnotherEconomTicketsDpt''' – наличие билетов эконом класса из групп перелетов, допустимы значения: 0 – нет мест, 1 есть места, 2 – запрос. При значении атрибута '''ticketsIncluded''' = 0 значение данного параметра будет проигнорировано. Группы перелетов задаются в настройке [[Мастер-Тур(15):Установка#Установка службы поиска|flightTariffGroups]]. |
− | ** '''hasBusinessTicketsDpt''' – наличие билетов бизнес класса | + | ** '''hasEconomTicketsRtn''' – наличие обратных билетов эконом класса из рассчитанной цены, допустимы значения: 0 – нет мест, 1 есть места, 2 – запрос. При значении атрибута '''ticketsIncluded''' = 0 значение данного параметра будет проигнорировано. |
− | ** '''hasBusinessTicketsRtn''' – наличие обратных билетов бизнес класса, допустимы значения: 0 – нет мест, 1 есть места, 2 – запрос. При значении атрибута '''ticketsIncluded''' = 0 значение данного параметра будет проигнорировано. Группы перелетов задаются в настройке [[Мастер-Тур(15):Установка#Установка службы поиска|flightTariffGroups]]. | + | ** '''hasAnotherEconomTicketsRtn''' – наличие обратных билетов эконом класса из групп перелетов, допустимы значения: 0 – нет мест, 1 есть места, 2 – запрос. При значении атрибута '''ticketsIncluded''' = 0 значение данного параметра будет проигнорировано. Группы перелетов задаются в настройке [[Мастер-Тур(15):Установка#Установка службы поиска|flightTariffGroups]]. |
+ | ** '''hasBusinessTicketsDpt''' – наличие билетов бизнес класса из рассчитанной цены, допустимы значения: 0 – нет мест, 1 есть места, 2 – запрос. При значении атрибута '''ticketsIncluded''' = 0 значение данного параметра будет проигнорировано. | ||
+ | ** '''hasAnotherBusinessTicketsDpt''' – наличие билетов бизнес класса из групп перелетов, допустимы значения: 0 – нет мест, 1 есть места, 2 – запрос. При значении атрибута '''ticketsIncluded''' = 0 значение данного параметра будет проигнорировано. Группы перелетов задаются в настройке [[Мастер-Тур(15):Установка#Установка службы поиска|flightTariffGroups]]. | ||
+ | ** '''hasBusinessTicketsRtn''' – наличие обратных билетов бизнес класса из рассчитанной цены, допустимы значения: 0 – нет мест, 1 есть места, 2 – запрос. При значении атрибута '''ticketsIncluded''' = 0 значение данного параметра будет проигнорировано. | ||
+ | ** '''hasAnotherBusinessTicketsRtn''' – наличие обратных билетов бизнес класса из групп перелетов, допустимы значения: 0 – нет мест, 1 есть места, 2 – запрос. При значении атрибута '''ticketsIncluded''' = 0 значение данного параметра будет проигнорировано. Группы перелетов задаются в настройке [[Мастер-Тур(15):Установка#Установка службы поиска|flightTariffGroups]]. | ||
+ | ** '''hasGDSFlight''' – информация о GDS перелетах в туре: 1 – все перелеты локальные, 2 – хотя бы один перелет из GDS и его выбор обязателен, 3 – хотя бы один перелет из GDS и его выбор необязателен и нет обязательных перелетов из GDS. Начиная с релиза 15.5. | ||
+ | ** '''hasGDSHotel''' – информация о GDS отелях в туре: 1 – локальный отель, 2 – хотя бы один отель из GDS. Начиная с релиза 15.5. | ||
** '''tourUrl''' – ссылка на корзину (при переходе по которой можно забронировать тур). | ** '''tourUrl''' – ссылка на корзину (при переходе по которой можно забронировать тур). | ||
** '''spoUrl''' – ссылка на описание тура (указывается в программе тура). | ** '''spoUrl''' – ссылка на описание тура (указывается в программе тура). | ||
Строка 1126: | Строка 1602: | ||
*** '''packetKey''' – ключ пакета. | *** '''packetKey''' – ключ пакета. | ||
*** '''partnerKey''' – ключ партнера. | *** '''partnerKey''' – ключ партнера. | ||
− | ** '''hotels''' – массив отелей, который соответствует количеству отелей | + | *** '''gdsProviderId''' – ключ провайдера из внешней системы. |
+ | *** '''totalTourDuration''' – общая продолжительность тура в днях. | ||
+ | ** '''hotels''' – массив отелей, который соответствует количеству отелей туре. Каждая запись массива содержит в себе информацию по одному отелю. Для многоотельных туров выводятся по порядку проживания в отелях. | ||
*** '''countryId''' – идентификатор страны | *** '''countryId''' – идентификатор страны | ||
*** '''countryName''' – название страны | *** '''countryName''' – название страны | ||
Строка 1148: | Строка 1626: | ||
*** '''checkIn''' – дата заезда в отель | *** '''checkIn''' – дата заезда в отель | ||
*** '''checkOut''' – дата выезда из отеля | *** '''checkOut''' – дата выезда из отеля | ||
+ | *** '''CheckInTime''' – время заезда в отель (обрабатывается с релиза 15.6) | ||
+ | *** '''CheckOutTime''' – время выезда из отеля (обрабатывается с релиза 15.6) | ||
+ | *** '''latitude''' – GPS координаты: географическая широта (обрабатывается с релиза 15.6) | ||
+ | *** '''longitude''' – GPS координаты: географическая долгота (обрабатывается с релиза 15.6) | ||
*** '''htNights''' – количество ночей в отеле | *** '''htNights''' – количество ночей в отеле | ||
*** '''hotelIsInStop''' – наличие мест в отеле, допустимы значения: 0 – есть места, 1 – нет мест, 2 – запрос | *** '''hotelIsInStop''' – наличие мест в отеле, допустимы значения: 0 – есть места, 1 – нет мест, 2 – запрос | ||
+ | *** '''isGDS''' – информация о том, локальный отель или из GDS системы: 0 – локальный отель, 1 – отель из GDS. Начиная с релиза 15.5. | ||
*** '''hotelScheme''' – объект схемы отеля | *** '''hotelScheme''' – объект схемы отеля | ||
**** '''templateId''' – идентификатор шаблона услуги | **** '''templateId''' – идентификатор шаблона услуги | ||
Строка 1156: | Строка 1639: | ||
**** '''packetKey''' – ключ пакета | **** '''packetKey''' – ключ пакета | ||
**** '''partnerKey''' – ключ партнера | **** '''partnerKey''' – ключ партнера | ||
+ | **** '''gdsProviderId''' – ключ провайдера из внешней системы | ||
+ | **** '''totalTourDuration''' – общая продолжительность тура в днях | ||
+ | ** '''services''' – массив услуг, которые входят в тур (заполняется по настройке '''showServiceDescription''' в конфигурационном файле ''TourSearchOwin'', обрабатывается с релиза 15.6) | ||
+ | *** '''ServiceType''' – класс услуги | ||
+ | *** '''Code''' – код (ключ) услуги | ||
+ | *** '''SubCode1''' – доп. описание 1 услуги | ||
+ | *** '''SubCode2''' – доп. описание 2 услуги | ||
+ | *** '''PacketId''' – ключ пакета цены услуги | ||
+ | *** '''PartnerId''' – ключ партнера цены услуги (заполняется по настройке '''showServicePartner''' в конфигурационном файле ''TourSearchOwin'', обрабатывается с релиза 15.6) | ||
+ | *** '''CountryId''' – ключ страны услуги | ||
+ | *** '''CityId''' – ключ города услуги | ||
+ | *** '''DateBegin''' – дата предоставления услуги в формате dd.MM.yyyy (пример: 01.08.2020) | ||
+ | *** '''DateEnd''' – дата окончания услуги в формате dd.MM.yyyy (пример: 01.08.2020) | ||
+ | *** '''TimeBegin''' – время начала услуги в формате hh:mm (пример: 06:00), обрабатывается только для авиаперелетов и автобусных переездов | ||
+ | *** '''TimeEnd''' – время окончания услуги в формате hh:mm (пример: 22:00), обрабатывается только для авиаперелетов и автобусных переездов | ||
+ | *** '''Day''' – день предоставления услуги | ||
+ | *** '''DurationInNight''' – продолжительность услуги в ночах | ||
+ | *** '''GDSProviderId''' – ключ внешнего провайдера услуги (GDS) | ||
+ | *** '''Name''' – название услуги | ||
+ | *** '''Price''' – нетто стоимость услуги (заполняется по настройке '''showServiceNetto''' в конфигурационном файле ''TourSearchOwin'', обрабатывается с релиза 15.6) | ||
+ | *** '''Cost''' – брутто стоимость услуги (заполняется по настройке '''showServiceBrutto''' в конфигурационном файле ''TourSearchOwin'', обрабатывается с релиза 15.6) | ||
+ | *** '''Availability''' – результат проверки квоты по услуге: 0 – нет мест, 1 – есть места, 2 – запрос | ||
+ | *** '''Tariffs''' – поле ''cs_trfid'' из таблицы ''tbl_costs''. В ответе должны быть через запятую уникальные id этих тарифов, исходя из цен, по которым считалось | ||
+ | ** '''nodeId''' – уникальный идентификатор узла в кластере балансировки нагрузки [[Мастер-Тур(15):Балансировщик нагрузки HaProxy|HaProxy]] | ||
<div class="toccolours mw-collapsible mw-collapsed" style="width:900px">Пример | <div class="toccolours mw-collapsible mw-collapsed" style="width:900px">Пример | ||
Строка 1162: | Строка 1669: | ||
Вызов метода GetToursAllPrices | Вызов метода GetToursAllPrices | ||
<syntaxhighlight lang="java" enclose="div"> | <syntaxhighlight lang="java" enclose="div"> | ||
− | http://localhost:9000/TourSearchOwin/searchApi?action= | + | http://localhost:9000/TourSearchOwin/searchApi?action=GetToursAllPrices&count=20&countryId=90&departCityId=1 |
&dateFrom=10.10.2018&dateTo=10.10.2018&ticketsIncluded=0&adults=2&kids=0&nightsMin=7&nightsMax=7¤cyId=1 | &dateFrom=10.10.2018&dateTo=10.10.2018&ticketsIncluded=0&adults=2&kids=0&nightsMin=7&nightsMax=7¤cyId=1 | ||
&Sort=ByStartDate | &Sort=ByStartDate | ||
Строка 1205: | Строка 1712: | ||
"hasBusinessTicketsDpt": 2, | "hasBusinessTicketsDpt": 2, | ||
"hasBusinessTicketsRtn": 2, | "hasBusinessTicketsRtn": 2, | ||
− | "tourUrl": "http://localhost/TourSearchClient/Basket?departureCities=1&destination=1_22&tour=161&date=10.08.16&duration=8&hotelScheme= | + | "tourUrl": "http://localhost/TourSearchClient/Basket?departureCities=1&destination=1_22&tour=161&date=10.08.16&duration=8&hotelScheme=1_7_3239_221_10760_0 |
&adultCount=2&hotelQuota=7&aviaQuota=7&serviceDescriptions=2_1_586_89_1_22_33_221_10760_1_0, | &adultCount=2&hotelQuota=7&aviaQuota=7&serviceDescriptions=2_1_586_89_1_22_33_221_10760_1_0, | ||
1_3_3239_1148_38_22_33_221_10760_1_7,3_1_587_89_33_460_1_221_10760_8_0¤cy=USD", | 1_3_3239_1148_38_22_33_221_10760_1_7,3_1_587_89_33_460_1_221_10760_8_0¤cy=USD", | ||
+ | "hasGDSFlight ": 0, | ||
+ | "hasGDSHotel ": 0, | ||
"spoUrl": "www.megatec.ru", | "spoUrl": "www.megatec.ru", | ||
"fewPlacesInHotel": null, | "fewPlacesInHotel": null, | ||
Строка 1227: | Строка 1736: | ||
"code": 705, | "code": 705, | ||
"packetKey": 779, | "packetKey": 779, | ||
− | "partnerKey": 12667 | + | "partnerKey": 12667, |
+ | "gdsProviderId": 0, | ||
+ | "totalTourDuration": 11 | ||
} | } | ||
"hotels": [{ | "hotels": [{ | ||
Строка 1251: | Строка 1762: | ||
"checkIn": "2018-11-10T00:00:00", | "checkIn": "2018-11-10T00:00:00", | ||
"checkOut": "2018-11-16T00:00:00", | "checkOut": "2018-11-16T00:00:00", | ||
+ | "checkInTime": null, | ||
+ | "checkOutTime": null, | ||
+ | "latitude": null, | ||
+ | "longitude": null, | ||
"htNights": 6, | "htNights": 6, | ||
− | "hotelIsInStop": 2 | + | "hotelIsInStop": 2, |
+ | "isGDS": 0, | ||
"hotelScheme": { | "hotelScheme": { | ||
"templateId": 4, | "templateId": 4, | ||
Строка 1258: | Строка 1774: | ||
"code": 705, | "code": 705, | ||
"packetKey": 1083, | "packetKey": 1083, | ||
− | "partnerKey": 12695 | + | "partnerKey": 12695, |
+ | "gdsProviderId" 0, | ||
+ | "totalTourDuration": 7 | ||
} | } | ||
}, | }, | ||
Строка 1284: | Строка 1802: | ||
"checkIn": "2018-11-16T00:00:00", | "checkIn": "2018-11-16T00:00:00", | ||
"checkOut": "2018-11-20T00:00:00", | "checkOut": "2018-11-20T00:00:00", | ||
+ | "checkInTime": null, | ||
+ | "checkOutTime": null, | ||
+ | "latitude": null, | ||
+ | "longitude": null, | ||
"htNights": 4, | "htNights": 4, | ||
− | "hotelIsInStop": 2 | + | "hotelIsInStop": 2, |
+ | "isGDS": 0, | ||
"hotelScheme": { | "hotelScheme": { | ||
"templateId": 3, | "templateId": 3, | ||
Строка 1291: | Строка 1814: | ||
"code": 178, | "code": 178, | ||
"packetKey": 1085, | "packetKey": 1085, | ||
− | "partnerKey": 12796 | + | "partnerKey": 12796, |
+ | "gdsProviderId" 0, | ||
+ | "totalTourDuration": 5 | ||
} | } | ||
}] | }] | ||
}, | }, | ||
+ | "nodeId": 1 | ||
+ | } | ||
+ | </syntaxhighlight> | ||
+ | </TD></TR></TABLE> | ||
+ | </div></div><br /> | ||
+ | |||
+ | ==Поиск минимальных цен по каждому варианту питания (GetToursAllPricesPansion) начиная с релиза 15.9== | ||
+ | Метод поиска туров использует множество параметров для поиска и фильтрации туров. Метод возвращает минимальные цены по каждому варианту питания, сгруппированные по отелям. Количество туров в выдаче регулируется параметром '''count'''.<br /> | ||
+ | * Формат запроса: | ||
+ | ** ?action=GetToursAllPricesPansion&count=int&countryId=int&departCityId=int&dateFrom=date&dateTo=date&adults=int&kids=int&nightsMin=int&nightsMax=int¤cyId=int | ||
+ | |||
+ | * Принимаемые параметры ( '''*''' – обязательный): | ||
+ | ** '''count *''' – максимальное количество предложений в выдаче. | ||
+ | ** '''countryId *''' – идентификатор страны. | ||
+ | ** '''departCityId *''' – идентификатор города вылета. | ||
+ | ** '''dateFrom *''' – начальная дата в диапазоне дат вылета в формате dd.MM.yyyy (пример: 31.12.2024). | ||
+ | ** '''dateTo *''' – конечная дата в диапазоне дат вылета в формате dd.MM.yyyy (пример: 31.12.2024). | ||
+ | ** '''adults *''' – количество взрослых. | ||
+ | ** '''kids *''' – количество детей. | ||
+ | ** '''kidsAges''' – количество полных лет каждому ребенку, передается в виде строки, перечисление через запятую (пример: 3,6). | ||
+ | ** '''nightsMin *''' – минимальное количество дней в туре (всегда запрашиваются дни тура, независимо от настройки осуществления поиска: в днях тура/в ночах тура/в ночах проживания в отеле). | ||
+ | ** '''nightsMax *''' – максимальное количество дней в туре (всегда запрашиваются дни тура, независимо от настройки осуществления поиска: в днях тура/в ночах тура/в ночах проживания в отеле). | ||
+ | ** '''resorts''' – идентификаторы городов, перечисление через запятую. | ||
+ | ** '''areas''' – идентификаторы курортов, перечисление через запятую. | ||
+ | ** '''tourTypeIds''' – идентификаторы типов тура, перечисление через запятую. | ||
+ | ** '''tourProgramIds''' – идентификаторы программ туров, перечисление через запятую. | ||
+ | ** '''hotelCategories''' – идентификаторы категорий отелей, перечисление через запятую. | ||
+ | ** '''hotels''' – идентификаторы отелей, перечисление через запятую. | ||
+ | ** '''meals''' – идентификаторы видов питания, перечисление через запятую. | ||
+ | ** '''currencyId *''' – валюта, в которой будут выданы цены, а также валюта для входящих параметров '''priceMin''' и '''priceMax''' (если они есть). | ||
+ | ** '''priceMin''' – Цена тура от. | ||
+ | ** '''priceMax''' – Цена тура до. | ||
+ | ** '''hotelIsNotInStop''' – при значении 1 в результатах не должно быть отелей в стопе (отели со статусом «под запрос» допустимы). При значении 0 в результат должны попадать как отели в стопе, так и отели с наличием мест и с местами по запросу. | ||
+ | ** '''ticketsIncluded *''' – при значении 1 в результатах должны быть только туры с включенной стоимостью перелета («только отель» недопустимы). При значении 0 в результат должны попадать как туры без перелета, так и туры с перелетом. | ||
+ | ** '''hasTickets''' – при значении 1 в результатах должны быть туры только с реальным наличием билетов в перелете (не должно быть туров со стопом на перелете, перелеты со статусом «под запрос» недопустимы). При значении 0 в результат должны попадать как туры без билетов на рейс, так и туры с наличием билетов и с билетами по запросу. | ||
+ | ** '''hasQuotas''' – при значении 1 в результатах должны быть туры только с реальным наличием мест во всех квотируемых услугах (не должно быть туров с услугами со стопом или со статусом «под запрос»). При значении 0 в результат должны попадать как туры с услугами на стопе, так и туры с наличием мест по квотам и с местами по запросу. | ||
+ | ** '''excludeUsualTours''' – при значении 1 из результатов должны быть исключены туры, являющиеся обычными турами (не являющиеся многоотельными). При значении 0 или отсутствии данного параметра такие туры должны быть включены в результат. | ||
+ | ** '''excludeCombined''' – при значении 1 из результатов должны быть исключены туры, являющиеся многоотельными. При значении 0 или отсутствии данного параметра такие туры должны быть включены в результат. | ||
+ | ** '''hasGDSFlight''' – подбирать туры с GDS перелетами. | ||
+ | *** '''0''' – подбирать любые туры, вне зависимости от того, есть в них GDS перелеты или нет (значение по умолчанию) | ||
+ | *** '''1''' – подбирать туры только с локальными перелетами | ||
+ | *** '''2''' – подбирать туры только с обязательными GDS перелетами | ||
+ | *** '''3''' – подбирать туры только с необязательными GDS перелетами | ||
+ | *** '''4''' – подбирать туры, в которых в одном направлении присутствует обязательный GDS перелет, а в другом направлении есть обязательный и необязательный GDS перелет (на двух вкладках в программе туров) | ||
+ | ** '''hasGDSHotel''' – подбирать туры с GDS отелями. | ||
+ | *** '''0''' – подбирать любые туры, вне зависимости от того, есть в них GDS отели или нет (значение по умолчанию) | ||
+ | *** '''1''' – подбирать туры только с локальными отелями | ||
+ | *** '''2''' – подбирать туры только с GDS отелями | ||
+ | |||
+ | * Возвращаемый результат: | ||
+ | ** '''offerId''' – уникальный идентификатор предложения, по которому в дальнейшем можно провести актуализацию тура. | ||
+ | ** '''tourId''' – идентификатор программы тура. | ||
+ | ** '''tourName''' – название программы тура. | ||
+ | ** '''countryId''' – идентификатор страны. | ||
+ | ** '''countryName''' – название страны. | ||
+ | ** '''resortId''' – идентификатор города, в котором расположен отель. | ||
+ | ** '''resortName''' – название города, в котором расположен отель. | ||
+ | ** '''areaId''' – идентификатор курорта, в котором расположен отель. | ||
+ | ** '''areaName''' – название курорта, в котором расположен отель. | ||
+ | ** '''hotelId''' – идентификатор отеля. | ||
+ | ** '''hotelName''' – название отеля. | ||
+ | ** '''hotelUrl''' – ссылка на страницу с описанием отеля. | ||
+ | ** '''hotelCategoryId''' – идентификатор категории отеля. | ||
+ | ** '''hotelCategoryName''' – название категории отеля. | ||
+ | ** '''roomId''' – идентификатор типа номера. | ||
+ | ** '''roomName''' – название типа номера. | ||
+ | ** '''roomTypeId''' – идентификатор категории номера. | ||
+ | ** '''roomTypeName''' – название категории номера (примеры: standard, deluxe, family, deluxe super ocean view). | ||
+ | ** '''htPlaceId''' – идентификатор типа размещения. | ||
+ | ** '''htPlaceName''' – название типа размещения в номере (примеры: 2 ADL + 1 CH (2-12), 2 ADL + INF). | ||
+ | ** '''mealId''' – идентификатор вида питания. | ||
+ | ** '''mealName''' – название питания. | ||
+ | ** '''tourDate''' – дата начала тура в формате dd.MM.yyyy (пример: 30.12.2024). | ||
+ | ** '''tourEndDate''' – дата окончания тура (дата прилета) в формате dd.MM.yyyy (пример: 31.12.2024). | ||
+ | ** '''nights''' – продолжительность тура в днях (всегда возвращается продолжительность тура в днях, независимо от настройки осуществления поиска: в днях тура/в ночах тура/в ночах проживания в отеле). | ||
+ | ** '''price''' – цена тура в валюте, которая была указана во входном параметре '''currencyId'''. | ||
+ | ** '''currencyId''' – идентификатор валюты. | ||
+ | ** '''currencyName''' – ISO код валюты. | ||
+ | ** '''hotelIsInStop''' – наличие мест в отеле, допустимы значения: 0 – есть места, 1 – нет мест, 2 – запрос. | ||
+ | ** '''ticketsIncluded''' – включена ли стоимость билетов в стоимость тура, допустимы значения: 0 – не включена (тур только отель), 1 – включена (пакетный тур). | ||
+ | ** '''hasEconomTicketsDpt''' – наличие билетов эконом класса из рассчитанной цены, допустимы значения: 0 – нет мест, 1 есть места, 2 – запрос. При значении атрибута '''ticketsIncluded''' = 0 значение данного параметра будет проигнорировано. | ||
+ | ** '''hasEconomTicketsRtn''' – наличие обратных билетов эконом класса из рассчитанной цены, допустимы значения: 0 – нет мест, 1 есть места, 2 – запрос. При значении атрибута '''ticketsIncluded''' = 0 значение данного параметра будет проигнорировано. | ||
+ | ** '''hasBusinessTicketsDpt''' – наличие билетов бизнес класса из рассчитанной цены, допустимы значения: 0 – нет мест, 1 есть места, 2 – запрос. При значении атрибута '''ticketsIncluded''' = 0 значение данного параметра будет проигнорировано. | ||
+ | ** '''hasBusinessTicketsRtn''' – наличие обратных билетов бизнес класса из рассчитанной цены, допустимы значения: 0 – нет мест, 1 есть места, 2 – запрос. При значении атрибута '''ticketsIncluded''' = 0 значение данного параметра будет проигнорировано. | ||
+ | ** '''hasAnotherEconomTicketsDpt''' – наличие билетов эконом класса из групп перелетов, допустимы значения: 0 – нет мест, 1 есть места, 2 – запрос. При значении атрибута '''ticketsIncluded''' = 0 значение данного параметра будет проигнорировано. Группы перелетов задаются в настройке [[Мастер-Тур(15):Установка#Установка службы поиска|flightTariffGroups]]. | ||
+ | ** '''hasAnotherEconomTicketsRtn''' – наличие обратных билетов эконом класса из групп перелетов, допустимы значения: 0 – нет мест, 1 есть места, 2 – запрос. При значении атрибута '''ticketsIncluded''' = 0 значение данного параметра будет проигнорировано. Группы перелетов задаются в настройке [[Мастер-Тур(15):Установка#Установка службы поиска|flightTariffGroups]]. | ||
+ | ** '''hasAnotherBusinessTicketsDpt''' – наличие билетов бизнес класса из групп перелетов, допустимы значения: 0 – нет мест, 1 есть места, 2 – запрос. При значении атрибута '''ticketsIncluded''' = 0 значение данного параметра будет проигнорировано. Группы перелетов задаются в настройке [[Мастер-Тур(15):Установка#Установка службы поиска|flightTariffGroups]]. | ||
+ | ** '''hasAnotherBusinessTicketsRtn''' – наличие обратных билетов бизнес класса из групп перелетов, допустимы значения: 0 – нет мест, 1 есть места, 2 – запрос. При значении атрибута '''ticketsIncluded''' = 0 значение данного параметра будет проигнорировано. Группы перелетов задаются в настройке [[Мастер-Тур(15):Установка#Установка службы поиска|flightTariffGroups]]. | ||
+ | ** '''hasGDSFlight''' – информация о GDS перелетах в туре: 1 – все перелеты локальные, 2 – хотя бы один перелет из GDS и его выбор обязателен, 3 – хотя бы один перелет из GDS и его выбор необязателен и нет обязательных перелетов из GDS. | ||
+ | ** '''hasGDSHotel''' – информация о GDS отелях в туре: 1 – локальный отель, 2 – хотя бы один отель из GDS. | ||
+ | ** '''tourUrl''' – ссылка на корзину (при переходе по которой можно забронировать тур). | ||
+ | ** '''spoUrl''' – ссылка на описание тура (указывается в программе тура). | ||
+ | ** '''fewPlacesInHotel''' – числовое значение мест в отеле. По умолчанию поле возвращается с пустым значением. Если удовлетворяются условия, заданные в настройке "Мало", но не включена настройка "Отображать числовое значение оставшихся мест" в панели администрирования, то возвращается значение «-1». Если удовлетворяются условия, заданные в настройке "Мало" и включена настройка "Отображать числовое значение оставшихся мест", то возвращается числовое значение того количества мест, которое осталось. | ||
+ | ** '''fewTicketsDptY''' – числовое значение мест прямого перелета эконом класса. По умолчанию поле возвращается с пустым значением. Если удовлетворяются условия, заданные в настройке "Мало", но не включена настройка "Отображать числовое значение оставшихся мест" в панели администрирования, то возвращается значение «-1». Если удовлетворяются условия, заданные в настройке "Мало" и включена настройка "Отображать числовое значение оставшихся мест", то возвращается числовое значение того количества мест, которое осталось. | ||
+ | ** '''fewTicketsRtnY''' – числовое значение мест обратного перелета эконом класса. По умолчанию поле возвращается с пустым значением. Если удовлетворяются условия, заданные в настройке "Мало", но не включена настройка "Отображать числовое значение оставшихся мест" в панели администрирования, то возвращается значение «-1». Если удовлетворяются условия, заданные в настройке "Мало" и включена настройка "Отображать числовое значение оставшихся мест", то возвращается числовое значение того количества мест, которое осталось. | ||
+ | ** '''fewTicketsDptB''' – числовое значение мест прямого перелета бизнес класса. По умолчанию поле возвращается с пустым значением. Если удовлетворяются условия, заданные в настройке "Мало", но не включена настройка "Отображать числовое значение оставшихся мест" в панели администрирования, то возвращается значение «-1». Если удовлетворяются условия, заданные в настройке "Мало" и включена настройка "Отображать числовое значение оставшихся мест", то возвращается числовое значение того количества мест, которое осталось. | ||
+ | ** '''fewTicketsRtnB''' – числовое значение мест обратного перелета бизнес класса. По умолчанию поле возвращается с пустым значением. Если удовлетворяются условия, заданные в настройке "Мало", но не включена настройка "Отображать числовое значение оставшихся мест" в панели администрирования, то возвращается значение «-1». Если удовлетворяются условия, заданные в настройке "Мало" и включена настройка "Отображать числовое значение оставшихся мест", то возвращается числовое значение того количества мест, которое осталось. | ||
+ | ** '''flags''' – если тур многоотельный, возвращается код '''1024'''. Во всех остальных случаях возвращается '''0'''. | ||
+ | ** '''description''' – указывается информация о проживании. Если тур многоотельный, то указывается информация обо всех отелях в туре (пример: 1 н., Resort1, Hotel1, Standard, BB; 3 н., Resort2, Hotel2, Standard, BB; 2 н., Resort3, Hotel3, Standard, BB). | ||
+ | ** '''receivingParty''' – параметр не обрабатывается. | ||
+ | ** '''earlyBookingValidTill''' – параметр не обрабатывается. | ||
+ | ** '''TourTypes''' – массив типов тура, привязанных к программе тура. | ||
+ | *** '''Key''' – идентификатор типа тура. | ||
+ | *** '''Value''' – название типа тура. | ||
+ | ** '''hotelScheme''' – объект схемы отеля (для многоотельных туров - объект схемы первого отеля). | ||
+ | *** '''templateId''' – идентификатор шаблона услуги. | ||
+ | *** '''durationInNight''' – продолжительность отеля в ночах. | ||
+ | *** '''code''' – ключ отеля. | ||
+ | *** '''packetKey''' – ключ пакета. | ||
+ | *** '''partnerKey''' – ключ партнера. | ||
+ | *** '''gdsProviderId''' – ключ провайдера из внешней системы. | ||
+ | *** '''totalTourDuration''' – общая продолжительность тура в днях. | ||
+ | ** '''hotels''' – массив отелей, который соответствует количеству отелей туре. Каждая запись массива содержит в себе информацию по одному отелю. Для многоотельных туров выводятся по порядку проживания в отелях. | ||
+ | *** '''countryId''' – идентификатор страны | ||
+ | *** '''countryName''' – название страны | ||
+ | *** '''resortId''' – идентификатор города, в котором расположен отель | ||
+ | *** '''resortName''' – название города, в котором расположен отель | ||
+ | *** '''areaId''' – идентификатор курорта, в котором расположен отель | ||
+ | *** '''areaName''' – название курорта, в котором расположен отель | ||
+ | *** '''hotelId''' – идентификатор отеля | ||
+ | *** '''hotelName''' – название отеля | ||
+ | *** '''hotelUrl''' – ссылка на страницу с описанием отеля | ||
+ | *** '''hotelCategoryId''' – идентификатор категории отеля | ||
+ | *** '''hotelCategoryName''' – название категории отеля | ||
+ | *** '''roomId''' – идентификатор типа номера | ||
+ | *** '''roomName''' – название типа номера | ||
+ | *** '''roomTypeId''' – идентификатор категории номера | ||
+ | *** '''roomTypeName''' – название категории номера | ||
+ | *** '''htPlaceId''' – идентификатор типа размещения | ||
+ | *** '''htPlaceName''' – название типа размещения | ||
+ | *** '''mealId''' – идентификатор питания | ||
+ | *** '''mealName''' – название питания | ||
+ | *** '''checkIn''' – дата заезда в отель | ||
+ | *** '''checkOut''' – дата выезда из отеля | ||
+ | *** '''CheckInTime''' – время заезда в отель | ||
+ | *** '''CheckOutTime''' – время выезда из отеля | ||
+ | *** '''latitude''' – GPS координаты: географическая широта | ||
+ | *** '''longitude''' – GPS координаты: географическая долгота | ||
+ | *** '''htNights''' – количество ночей в отеле | ||
+ | *** '''hotelIsInStop''' – наличие мест в отеле, допустимы значения: 0 – есть места, 1 – нет мест, 2 – запрос | ||
+ | *** '''isGDS''' – информация о том, локальный отель или из GDS системы: 0 – локальный отель, 1 – отель из GDS. | ||
+ | *** '''hotelScheme''' – объект схемы отеля | ||
+ | **** '''templateId''' – идентификатор шаблона услуги | ||
+ | **** '''durationInNight''' – продолжительность отеля в ночах | ||
+ | **** '''code''' – ключ отеля | ||
+ | **** '''packetKey''' – ключ пакета | ||
+ | **** '''partnerKey''' – ключ партнера | ||
+ | **** '''gdsProviderId''' – ключ провайдера из внешней системы | ||
+ | **** '''totalTourDuration''' – общая продолжительность тура в днях | ||
+ | ** '''services''' – массив услуг, которые входят в тур (заполняется по настройке '''showServiceDescription''' в конфигурационном файле ''TourSearchOwin'') | ||
+ | *** '''ServiceType''' – класс услуги | ||
+ | *** '''Code''' – код (ключ) услуги | ||
+ | *** '''SubCode1''' – доп. описание 1 услуги | ||
+ | *** '''SubCode2''' – доп. описание 2 услуги | ||
+ | *** '''PacketId''' – ключ пакета цены услуги | ||
+ | *** '''PartnerId''' – ключ партнера цены услуги (заполняется по настройке '''showServicePartner''' в конфигурационном файле ''TourSearchOwin'') | ||
+ | *** '''CountryId''' – ключ страны услуги | ||
+ | *** '''CityId''' – ключ города услуги | ||
+ | *** '''DateBegin''' – дата предоставления услуги в формате dd.MM.yyyy (пример: 01.08.2020) | ||
+ | *** '''DateEnd''' – дата окончания услуги в формате dd.MM.yyyy (пример: 01.08.2020) | ||
+ | *** '''TimeBegin''' – время начала услуги в формате hh:mm (пример: 06:00), обрабатывается только для авиаперелетов и автобусных переездов | ||
+ | *** '''TimeEnd''' – время окончания услуги в формате hh:mm (пример: 22:00), обрабатывается только для авиаперелетов и автобусных переездов | ||
+ | *** '''Day''' – день предоставления услуги | ||
+ | *** '''DurationInNight''' – продолжительность услуги в ночах | ||
+ | *** '''GDSProviderId''' – ключ внешнего провайдера услуги (GDS) | ||
+ | *** '''Name''' – название услуги | ||
+ | *** '''Price''' – нетто стоимость услуги (заполняется по настройке '''showServiceNetto''' в конфигурационном файле ''TourSearchOwin'') | ||
+ | *** '''Cost''' – брутто стоимость услуги (заполняется по настройке '''showServiceBrutto''' в конфигурационном файле ''TourSearchOwin'') | ||
+ | *** '''Availability''' – результат проверки квоты по услуге: 0 – нет мест, 1 – есть места, 2 – запрос | ||
+ | *** '''Tariffs''' – поле ''cs_trfid'' из таблицы ''tbl_costs''. В ответе должны быть через запятую уникальные id этих тарифов, исходя из цен, по которым считалось | ||
+ | ** '''nodeId''' – уникальный идентификатор узла в кластере балансировки нагрузки [[Мастер-Тур(15):Балансировщик нагрузки HaProxy|HaProxy]] | ||
+ | |||
+ | <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> | ||
+ | Вызов метода GetToursAllPrices | ||
+ | <syntaxhighlight lang="java" enclose="div"> | ||
+ | http://localhost:9000/TourSearchOwin/searchApi?action=GetToursAllPricesPansion&count=20&countryId=90&departCityId=1 | ||
+ | &dateFrom=10.12.2024&dateTo=10.12.2024&ticketsIncluded=0&adults=2&kids=0&nightsMin=7&nightsMax=7¤cyId=1 | ||
+ | |||
+ | </syntaxhighlight> | ||
+ | Возвращаемый результат метода GetToursAllPricesPansion (в формате JSON) | ||
+ | <syntaxhighlight lang="java" enclose="div"> | ||
+ | { | ||
+ | { | ||
+ | "version": "1.08", | ||
+ | "tours": [ | ||
+ | { | ||
+ | "offerId": 101, | ||
+ | "tourId": 100011396, | ||
+ | "tourName": "AustriaNEMOALLTEST", | ||
+ | "countryId": 90, | ||
+ | "countryName": "Австрия", | ||
+ | "resortId": 35, | ||
+ | "resortName": "Вена", | ||
+ | "areaId": 1, | ||
+ | "areaName": "Карентия", | ||
+ | "hotelId": 12610, | ||
+ | "hotelName": "Отель для удаления 56", | ||
+ | "hotelUrl": null, | ||
+ | "hotelCategoryId": 668, | ||
+ | "hotelCategoryName": "1*", | ||
+ | "roomId": 132, | ||
+ | "roomName": "DBL+EXB", | ||
+ | "roomTypeId": 26, | ||
+ | "roomTypeName": "Colonial Wings room", | ||
+ | "htPlaceId": 1238, | ||
+ | "htPlaceName": "2 ADL", | ||
+ | "mealId": 46, | ||
+ | "mealName": "RO2", | ||
+ | "tourDate": "10.12.2024", | ||
+ | "tourEndDate": "17.12.2024", | ||
+ | "nights": 8, | ||
+ | "price": 27.0, | ||
+ | "currencyId": 1, | ||
+ | "currencyName": "USD", | ||
+ | "hotelIsInStop": 2, | ||
+ | "ticketsIncluded": 1, | ||
+ | "hasEconomTicketsDpt": 0, | ||
+ | "hasEconomTicketsRtn": 2, | ||
+ | "hasBusinessTicketsDpt": 2, | ||
+ | "hasBusinessTicketsRtn": 0, | ||
+ | "hasAnotherEconomTicketsDpt": 0, | ||
+ | "hasAnotherEconomTicketsRtn": 0, | ||
+ | "hasAnotherBusinessTicketsDpt": 0, | ||
+ | "hasAnotherBusinessTicketsRtn": 0, | ||
+ | "hasGDSFlight": 2, | ||
+ | "hasGDSHotel": 1, | ||
+ | "tourUrl": "http://localhost/TourSearchClient/Basket?departureCities=1&destination=1_90&tour=100011396&date=10.12.24&duration=7&hotelScheme=2_6_12610_779_12685_0_8&adultCount=2&hotelQuota=7&aviaQuota=7&busTransferQuota=7&serviceDescriptions=1_0_1_1_1043_67_1_90_35_1037_12792_1_1,2_0_0_3_12610_66717_46_90_35_779_12685_2_6,3_1_1_1_1076_89_35_460_1_1037_12792_8_0¤cy=USD", | ||
+ | "spoUrl": null, | ||
+ | "fewPlacesInHotel": null, | ||
+ | "fewTicketsDptY": null, | ||
+ | "fewTicketsRtnY": null, | ||
+ | "fewTicketsDptB": null, | ||
+ | "fewTicketsRtnB": null, | ||
+ | "flags": 0, | ||
+ | "description": "6 н., Вена, Отель для удаления 56, Colonial Wings room, RO2", | ||
+ | "receivingParty": "", | ||
+ | "earlyBookingValidTill": "", | ||
+ | "TourTypes": [ | ||
+ | { | ||
+ | "Key": 2, | ||
+ | "Value": "Стандартный тур" | ||
+ | } | ||
+ | ], | ||
+ | "hotelScheme": { | ||
+ | "templateId": 2, | ||
+ | "durationInNight": 6, | ||
+ | "code": 12610, | ||
+ | "packetKey": 779, | ||
+ | "partnerKey": 12685, | ||
+ | "gdsProviderId": null, | ||
+ | "totalTourDuration": 8 | ||
+ | }, | ||
+ | "hotels": [ | ||
+ | { | ||
+ | "countryId": 90, | ||
+ | "countryName": "Австрия", | ||
+ | "resortId": 35, | ||
+ | "resortName": "Вена", | ||
+ | "areaId": 1, | ||
+ | "areaName": "Карентия", | ||
+ | "hotelId": 12610, | ||
+ | "hotelName": "Отель для удаления 56", | ||
+ | "hotelUrl": null, | ||
+ | "hotelCategoryId": 668, | ||
+ | "hotelCategoryName": "1*", | ||
+ | "roomId": 132, | ||
+ | "roomName": "DBL+EXB", | ||
+ | "roomTypeId": 26, | ||
+ | "roomTypeName": "Colonial Wings room", | ||
+ | "htPlaceId": 1238, | ||
+ | "htPlaceName": "2 ADL", | ||
+ | "mealId": 46, | ||
+ | "mealName": "RO2", | ||
+ | "checkIn": "11.12.2024", | ||
+ | "checkOut": "17.12.2024", | ||
+ | "checkInTime": "14:00", | ||
+ | "checkOutTime": "8:00", | ||
+ | "latitude": "4.123840°", | ||
+ | "longitude": "36.300000°", | ||
+ | "htNights": 6, | ||
+ | "hotelIsInStop": 2, | ||
+ | "isGDS": 0, | ||
+ | "hotelScheme": { | ||
+ | "templateId": 2, | ||
+ | "durationInNight": 6, | ||
+ | "code": 12610, | ||
+ | "packetKey": 779, | ||
+ | "partnerKey": 12685, | ||
+ | "gdsProviderId": null, | ||
+ | "totalTourDuration": 8 | ||
+ | } | ||
+ | } | ||
+ | ], | ||
+ | "services": [ | ||
+ | { | ||
+ | "ServiceType": 1, | ||
+ | "Code": 1043, | ||
+ | "SubCode1": 67, | ||
+ | "SubCode2": 1, | ||
+ | "PacketId": 1037, | ||
+ | "PartnerId": null, | ||
+ | "CountryId": 90, | ||
+ | "CityId": 35, | ||
+ | "DateBegin": "10.12.2024", | ||
+ | "DateEnd": "11.12.2024", | ||
+ | "TimeBegin": "16:00", | ||
+ | "TimeEnd": "6:00", | ||
+ | "Day": 1, | ||
+ | "DurationInNight": 0, | ||
+ | "GDSProviderId": 82, | ||
+ | "Name": "А_П::Москва/Вена/SU2354, SVO4-VIE1, 16:00-06:00/C Бизнес класс", | ||
+ | "Price": null, | ||
+ | "Cost": null, | ||
+ | "Availability": 2, | ||
+ | "Tariffs": [ | ||
+ | 0 | ||
+ | ] | ||
+ | }, | ||
+ | { | ||
+ | "ServiceType": 3, | ||
+ | "Code": 12610, | ||
+ | "SubCode1": 66717, | ||
+ | "SubCode2": 46, | ||
+ | "PacketId": 779, | ||
+ | "PartnerId": null, | ||
+ | "CountryId": 90, | ||
+ | "CityId": 35, | ||
+ | "DateBegin": "11.12.2024", | ||
+ | "DateEnd": "17.12.2024", | ||
+ | "TimeBegin": null, | ||
+ | "TimeEnd": null, | ||
+ | "Day": 2, | ||
+ | "DurationInNight": 6, | ||
+ | "GDSProviderId": null, | ||
+ | "Name": "HOTEL::Вена/Отель для удаления 56-1*,6 [nights]/DBL+EXB(Colonial Wings room),2 ADL/RO2 RO2", | ||
+ | "Price": null, | ||
+ | "Cost": null, | ||
+ | "Availability": 2, | ||
+ | "Tariffs": [ | ||
+ | 1 | ||
+ | ] | ||
+ | }, | ||
+ | { | ||
+ | "ServiceType": 1, | ||
+ | "Code": 1076, | ||
+ | "SubCode1": 89, | ||
+ | "SubCode2": 35, | ||
+ | "PacketId": 1037, | ||
+ | "PartnerId": null, | ||
+ | "CountryId": 460, | ||
+ | "CityId": 1, | ||
+ | "DateBegin": "17.12.2024", | ||
+ | "DateEnd": "17.12.2024", | ||
+ | "TimeBegin": "17:00", | ||
+ | "TimeEnd": "21:00", | ||
+ | "Day": 8, | ||
+ | "DurationInNight": 0, | ||
+ | "GDSProviderId": 82, | ||
+ | "Name": "А_П::Вена/Москва/SU2355, VIE1-SVO4, 17:00-21:00/Y Basic (ручная кладь 20х30х40)", | ||
+ | "Price": null, | ||
+ | "Cost": null, | ||
+ | "Availability": 2, | ||
+ | "Tariffs": [ | ||
+ | 0 | ||
+ | ] | ||
+ | } | ||
+ | ] | ||
+ | }, | ||
+ | { | ||
+ | "offerId": 102, | ||
+ | "tourId": 100006755, | ||
+ | "tourName": "Общая проверка системы (М_2)", | ||
+ | "countryId": 90, | ||
+ | "countryName": "Австрия", | ||
+ | "resortId": 35, | ||
+ | "resortName": "Вена", | ||
+ | "areaId": -1, | ||
+ | "areaName": null, | ||
+ | "hotelId": 8661, | ||
+ | "hotelName": "Continental5 Gardırop veya dolap, El dezenfektanı, Çay / Kah", | ||
+ | "hotelUrl": "https://yandex.ruGardırop veya ", | ||
+ | "hotelCategoryId": 64, | ||
+ | "hotelCategoryName": "3*", | ||
+ | "roomId": 141, | ||
+ | "roomName": "2AD", | ||
+ | "roomTypeId": 1939, | ||
+ | "roomTypeName": "1 bedroom Jacuzzi Suite", | ||
+ | "htPlaceId": 1238, | ||
+ | "htPlaceName": "2 ADL", | ||
+ | "mealId": 63, | ||
+ | "mealName": "HH для удаления3", | ||
+ | "tourDate": "10.12.2024", | ||
+ | "tourEndDate": "17.12.2024", | ||
+ | "nights": 8, | ||
+ | "price": 110.0, | ||
+ | "currencyId": 1, | ||
+ | "currencyName": "USD", | ||
+ | "hotelIsInStop": 2, | ||
+ | "ticketsIncluded": 1, | ||
+ | "hasEconomTicketsDpt": 2, | ||
+ | "hasEconomTicketsRtn": 2, | ||
+ | "hasBusinessTicketsDpt": 0, | ||
+ | "hasBusinessTicketsRtn": 0, | ||
+ | "hasAnotherEconomTicketsDpt": 2, | ||
+ | "hasAnotherEconomTicketsRtn": 2, | ||
+ | "hasAnotherBusinessTicketsDpt": 0, | ||
+ | "hasAnotherBusinessTicketsRtn": 0, | ||
+ | "hasGDSFlight": 1, | ||
+ | "hasGDSHotel": 1, | ||
+ | "tourUrl": "http://localhost/TourSearchClient/Basket?departureCities=1&destination=1_90&tour=100006755&date=10.12.24&duration=7&hotelScheme=1_6_8661_779_12667_0_8&adultCount=2&hotelQuota=7&aviaQuota=7&busTransferQuota=7&serviceDescriptions=3_17_17_1_1397_89_1_90_35_779_10760_1_0,18_0_0_2_1137_30_0_90_275_779_11246_1_0,1_0_0_3_8661_47289_63_90_35_779_12667_1_6,4_5_4_1_1059_285_35_460_1_779_10760_7_1¤cy=USD", | ||
+ | "spoUrl": "www.megatec.ru", | ||
+ | "fewPlacesInHotel": null, | ||
+ | "fewTicketsDptY": null, | ||
+ | "fewTicketsRtnY": null, | ||
+ | "fewTicketsDptB": null, | ||
+ | "fewTicketsRtnB": null, | ||
+ | "flags": 0, | ||
+ | "description": "6 н., Вена, Continental5 Gardırop veya dolap, El dezenfektanı, Çay / Kah, 1 bedroom Jacuzzi Suite, HH3", | ||
+ | "receivingParty": "", | ||
+ | "earlyBookingValidTill": "", | ||
+ | "TourTypes": [ | ||
+ | { | ||
+ | "Key": 2, | ||
+ | "Value": "Стандартный тур" | ||
+ | } | ||
+ | ], | ||
+ | "hotelScheme": { | ||
+ | "templateId": 1, | ||
+ | "durationInNight": 6, | ||
+ | "code": 8661, | ||
+ | "packetKey": 779, | ||
+ | "partnerKey": 12667, | ||
+ | "gdsProviderId": null, | ||
+ | "totalTourDuration": 8 | ||
+ | }, | ||
+ | "hotels": [ | ||
+ | { | ||
+ | "countryId": 90, | ||
+ | "countryName": "Австрия", | ||
+ | "resortId": 35, | ||
+ | "resortName": "Вена", | ||
+ | "areaId": -1, | ||
+ | "areaName": null, | ||
+ | "hotelId": 8661, | ||
+ | "hotelName": "Continental5 Gardırop veya dolap, El dezenfektanı, Çay / Kah", | ||
+ | "hotelUrl": "https://yandex.ruGardırop veya ", | ||
+ | "hotelCategoryId": 64, | ||
+ | "hotelCategoryName": "3*", | ||
+ | "roomId": 141, | ||
+ | "roomName": "2AD", | ||
+ | "roomTypeId": 1939, | ||
+ | "roomTypeName": "1 bedroom Jacuzzi Suite", | ||
+ | "htPlaceId": 1238, | ||
+ | "htPlaceName": "2 ADL", | ||
+ | "mealId": 63, | ||
+ | "mealName": "HH для удаления3", | ||
+ | "checkIn": "10.12.2024", | ||
+ | "checkOut": "16.12.2024", | ||
+ | "checkInTime": null, | ||
+ | "checkOutTime": null, | ||
+ | "latitude": "48.074409°", | ||
+ | "longitude": "15.971374°", | ||
+ | "htNights": 6, | ||
+ | "hotelIsInStop": 2, | ||
+ | "isGDS": 0, | ||
+ | "hotelScheme": { | ||
+ | "templateId": 1, | ||
+ | "durationInNight": 6, | ||
+ | "code": 8661, | ||
+ | "packetKey": 779, | ||
+ | "partnerKey": 12667, | ||
+ | "gdsProviderId": null, | ||
+ | "totalTourDuration": 8 | ||
+ | } | ||
+ | } | ||
+ | ], | ||
+ | "services": [ | ||
+ | { | ||
+ | "ServiceType": 1, | ||
+ | "Code": 1397, | ||
+ | "SubCode1": 89, | ||
+ | "SubCode2": 1, | ||
+ | "PacketId": 779, | ||
+ | "PartnerId": null, | ||
+ | "CountryId": 90, | ||
+ | "CityId": 35, | ||
+ | "DateBegin": "10.12.2024", | ||
+ | "DateEnd": "10.12.2024", | ||
+ | "TimeBegin": "1:35", | ||
+ | "TimeEnd": "2:40", | ||
+ | "Day": 1, | ||
+ | "DurationInNight": 0, | ||
+ | "GDSProviderId": null, | ||
+ | "Name": "А_П::Москва/Вена/AT234, DME-VIE1, 01:35-02:40/Y Basic (ручная кладь 20х30х40)", | ||
+ | "Price": null, | ||
+ | "Cost": null, | ||
+ | "Availability": 2, | ||
+ | "Tariffs": [ | ||
+ | 0 | ||
+ | ] | ||
+ | }, | ||
+ | { | ||
+ | "ServiceType": 2, | ||
+ | "Code": 1137, | ||
+ | "SubCode1": 30, | ||
+ | "SubCode2": 0, | ||
+ | "PacketId": 779, | ||
+ | "PartnerId": null, | ||
+ | "CountryId": 90, | ||
+ | "CityId": 275, | ||
+ | "DateBegin": "10.12.2024", | ||
+ | "DateEnd": "10.12.2024", | ||
+ | "TimeBegin": null, | ||
+ | "TimeEnd": null, | ||
+ | "Day": 1, | ||
+ | "DurationInNight": 0, | ||
+ | "GDSProviderId": null, | ||
+ | "Name": "Трансфер::Арльберг/Копия\r ТРАНСФЕР_12 (Аэропорт не выбран - отель не выбран)/Coach 14 чел.", | ||
+ | "Price": null, | ||
+ | "Cost": null, | ||
+ | "Availability": 1, | ||
+ | "Tariffs": null | ||
+ | }, | ||
+ | { | ||
+ | "ServiceType": 3, | ||
+ | "Code": 8661, | ||
+ | "SubCode1": 47289, | ||
+ | "SubCode2": 63, | ||
+ | "PacketId": 779, | ||
+ | "PartnerId": null, | ||
+ | "CountryId": 90, | ||
+ | "CityId": 35, | ||
+ | "DateBegin": "10.12.2024", | ||
+ | "DateEnd": "16.12.2024", | ||
+ | "TimeBegin": null, | ||
+ | "TimeEnd": null, | ||
+ | "Day": 1, | ||
+ | "DurationInNight": 6, | ||
+ | "GDSProviderId": null, | ||
+ | "Name": "HOTEL::Вена/Continental5 Gardırop veya dolap, El dezenfektanı, Çay / Kah-3*,6 [nights]/2AD(1 bedroom Jacuzzi Suite),2 ADL/HH3 HH для удаления3", | ||
+ | "Price": null, | ||
+ | "Cost": null, | ||
+ | "Availability": 2, | ||
+ | "Tariffs": [ | ||
+ | 0 | ||
+ | ] | ||
+ | }, | ||
+ | { | ||
+ | "ServiceType": 1, | ||
+ | "Code": 1059, | ||
+ | "SubCode1": 285, | ||
+ | "SubCode2": 35, | ||
+ | "PacketId": 779, | ||
+ | "PartnerId": null, | ||
+ | "CountryId": 460, | ||
+ | "CityId": 1, | ||
+ | "DateBegin": "16.12.2024", | ||
+ | "DateEnd": "17.12.2024", | ||
+ | "TimeBegin": "20:00", | ||
+ | "TimeEnd": "2:00", | ||
+ | "Day": 7, | ||
+ | "DurationInNight": 0, | ||
+ | "GDSProviderId": null, | ||
+ | "Name": "А_П::Вена/Москва/AT333, VIE1-DME, 20:00-02:00/DAF Бизнес класс", | ||
+ | "Price": null, | ||
+ | "Cost": null, | ||
+ | "Availability": 2, | ||
+ | "Tariffs": [ | ||
+ | 0 | ||
+ | ] | ||
+ | } | ||
+ | ] | ||
+ | }, | ||
+ | "nodeId": 1 | ||
} | } | ||
</syntaxhighlight> | </syntaxhighlight> | ||
Строка 1307: | Строка 2408: | ||
** '''offerId *''' – уникальный идентификатор ранее найденного предложения. | ** '''offerId *''' – уникальный идентификатор ранее найденного предложения. | ||
** '''currencyId *''' – валюта, в которой рассчитывается цена и доплаты. | ** '''currencyId *''' – валюта, в которой рассчитывается цена и доплаты. | ||
+ | ** '''nodeId''' – уникальный идентификатор узла в кластере балансировки нагрузки [[Мастер-Тур(15):Балансировщик нагрузки HaProxy|HaProxy]] | ||
+ | Значение nodeid берется из ответов gettours и gettourallprices | ||
+ | Значение nodeid для каждого запроса методов gettours и gettourallprices берется из конфига службы поиска (если не указан, то берется предопределенное значение 2147483647). Полученное значение необходимо сопоставлять для каждого offerid. | ||
* Возвращаемый результат ( * – обязательный): | * Возвращаемый результат ( * – обязательный): | ||
** '''price *''' – актуализированная цена тура в валюте, которая была указана во входном параметре '''currencyId'''. | ** '''price *''' – актуализированная цена тура в валюте, которая была указана во входном параметре '''currencyId'''. | ||
** '''ticketsIsIncluded *''' – включена ли стоимость билетов в стоимость тура, допустимы значения: 0 – не включена (тур только отель), 1 – включена (пакетный тур). | ** '''ticketsIsIncluded *''' – включена ли стоимость билетов в стоимость тура, допустимы значения: 0 – не включена (тур только отель), 1 – включена (пакетный тур). | ||
** '''hotelIsInStop''' – наличие мест в отеле, допустимы значения: 0 – есть места, 1 – нет мест, 2 – запрос. | ** '''hotelIsInStop''' – наличие мест в отеле, допустимы значения: 0 – есть места, 1 – нет мест, 2 – запрос. | ||
− | ** '''hasEconomTicketsDpt *''' – наличие билетов эконом класса | + | ** '''hasEconomTicketsDpt''' – наличие билетов эконом класса из рассчитанной цены, допустимы значения: 0 – нет мест, 1 есть места, 2 – запрос. При значении атрибута '''ticketsIncluded''' = 0 значение данного параметра будет проигнорировано. |
− | ** '''hasEconomTicketsRtn *''' – наличие обратных билетов эконом класса, допустимы значения: 0 – нет мест, 1 есть места, 2 – запрос. При значении атрибута '''ticketsIncluded''' = 0 значение данного параметра будет проигнорировано. | + | ** '''hasAnotherEconomTicketsDpt''' – наличие билетов эконом класса из групп перелетов, допустимы значения: 0 – нет мест, 1 есть места, 2 – запрос. При значении атрибута '''ticketsIncluded''' = 0 значение данного параметра будет проигнорировано. Группы перелетов задаются в настройке [[Мастер-Тур(15):Установка#Установка службы поиска|flightTariffGroups]]. |
− | ** '''hasBusinessTicketsDpt *''' – наличие билетов бизнес класса | + | ** '''hasEconomTicketsRtn''' – наличие обратных билетов эконом класса из рассчитанной цены, допустимы значения: 0 – нет мест, 1 есть места, 2 – запрос. При значении атрибута '''ticketsIncluded''' = 0 значение данного параметра будет проигнорировано. |
− | ** '''hasBusinessTicketsRtn *''' – наличие обратных билетов бизнес класса, допустимы значения: 0 – нет мест, 1 есть места, 2 – запрос. При значении атрибута '''ticketsIncluded''' = 0 значение данного параметра будет проигнорировано. | + | ** '''hasAnotherEconomTicketsRtn''' – наличие обратных билетов эконом класса из групп перелетов, допустимы значения: 0 – нет мест, 1 есть места, 2 – запрос. При значении атрибута '''ticketsIncluded''' = 0 значение данного параметра будет проигнорировано. Группы перелетов задаются в настройке [[Мастер-Тур(15):Установка#Установка службы поиска|flightTariffGroups]]. |
+ | ** '''hasBusinessTicketsDpt''' – наличие билетов бизнес класса из рассчитанной цены, допустимы значения: 0 – нет мест, 1 есть места, 2 – запрос. При значении атрибута '''ticketsIncluded''' = 0 значение данного параметра будет проигнорировано. | ||
+ | ** '''hasAnotherBusinessTicketsDpt''' – наличие билетов бизнес класса из групп перелетов, допустимы значения: 0 – нет мест, 1 есть места, 2 – запрос. При значении атрибута '''ticketsIncluded''' = 0 значение данного параметра будет проигнорировано. Группы перелетов задаются в настройке [[Мастер-Тур(15):Установка#Установка службы поиска|flightTariffGroups]]. | ||
+ | ** '''hasBusinessTicketsRtn''' – наличие обратных билетов бизнес класса из рассчитанной цены, допустимы значения: 0 – нет мест, 1 есть места, 2 – запрос. При значении атрибута '''ticketsIncluded''' = 0 значение данного параметра будет проигнорировано. | ||
+ | ** '''hasAnotherBusinessTicketsRtn''' – наличие обратных билетов бизнес класса из групп перелетов, допустимы значения: 0 – нет мест, 1 есть места, 2 – запрос. При значении атрибута '''ticketsIncluded''' = 0 значение данного параметра будет проигнорировано. Группы перелетов задаются в настройке [[Мастер-Тур(15):Установка#Установка службы поиска|flightTariffGroups]]. | ||
** '''fewPlacesInHotel''' – числовое значение мест в отеле. По умолчанию поле возвращается с пустым значением. Если удовлетворяются условия, заданные в настройке "Мало", но не включена настройка "Отображать числовое значение оставшихся мест" в панели администрирования, то возвращается значение «-1». Если удовлетворяются условия, заданные в настройке "Мало" и включена настройка "Отображать числовое значение оставшихся мест", то возвращается числовое значение того количества мест, которое осталось. | ** '''fewPlacesInHotel''' – числовое значение мест в отеле. По умолчанию поле возвращается с пустым значением. Если удовлетворяются условия, заданные в настройке "Мало", но не включена настройка "Отображать числовое значение оставшихся мест" в панели администрирования, то возвращается значение «-1». Если удовлетворяются условия, заданные в настройке "Мало" и включена настройка "Отображать числовое значение оставшихся мест", то возвращается числовое значение того количества мест, которое осталось. | ||
** '''fewEconomTicketsDpt''' – числовое значение мест прямого перелета эконом класса. По умолчанию поле возвращается с пустым значением. Если удовлетворяются условия, заданные в настройке "Мало", но не включена настройка "Отображать числовое значение оставшихся мест" в панели администрирования, то возвращается значение «-1». Если удовлетворяются условия, заданные в настройке "Мало" и включена настройка "Отображать числовое значение оставшихся мест", то возвращается числовое значение того количества мест, которое осталось. | ** '''fewEconomTicketsDpt''' – числовое значение мест прямого перелета эконом класса. По умолчанию поле возвращается с пустым значением. Если удовлетворяются условия, заданные в настройке "Мало", но не включена настройка "Отображать числовое значение оставшихся мест" в панели администрирования, то возвращается значение «-1». Если удовлетворяются условия, заданные в настройке "Мало" и включена настройка "Отображать числовое значение оставшихся мест", то возвращается числовое значение того количества мест, которое осталось. | ||
Строка 1351: | Строка 2459: | ||
*** '''flightEndDateTime''' – Дата и время прилета в формате dd.MM.yyyy HH:mm (пример: 31.12.2016 14:30). Применяется только для услуг типа: '''DptTransport''', '''RtnTransport''', '''MidDptTransport''', '''MidRtnTransport'''. | *** '''flightEndDateTime''' – Дата и время прилета в формате dd.MM.yyyy HH:mm (пример: 31.12.2016 14:30). Применяется только для услуг типа: '''DptTransport''', '''RtnTransport''', '''MidDptTransport''', '''MidRtnTransport'''. | ||
*** '''flightAircraft''' – тип самолета. Применяется только для услуг типа: '''DptTransport''', '''RtnTransport''', '''MidDptTransport''', '''MidRtnTransport'''. | *** '''flightAircraft''' – тип самолета. Применяется только для услуг типа: '''DptTransport''', '''RtnTransport''', '''MidDptTransport''', '''MidRtnTransport'''. | ||
+ | *** '''isGDS''' – информация о том, локальный отель или из GDS системы: 0 – локальный отель, 1 – отель из GDS. Начиная с релиза 15.5. | ||
+ | *** '''cancelationPolicy''' – информация о правилах аннуляции из GDS систем. Начиная с релиза 15.5. | ||
+ | **** '''Date''' – дата наступления штрафа | ||
+ | **** '''Amount''' – величина штрафа | ||
+ | **** '''Currency''' – валюта штрафа | ||
+ | **** '''Info''' – информация по штрафу | ||
+ | *** '''bookingAdditionalInfo''' – информация об отеле из GDS систем. Начиная с релиза 15.5. | ||
+ | **** '''DateFrom''' – дата действия предложения с | ||
+ | **** '''DateTo''' – дата действия предложения по | ||
+ | **** '''Message''' – информация | ||
+ | Начиная с релиза 15.8 был добавлен блок '''flightGDSRequest''', возвращающий данные по внешним перелетам. Если в туре используется перелет из GDS, то ответ из секции '''flightGDSRequest''' метода API [[Мастер-Тур(15):API для отдачи цен в поисковые системы#Актуализация тура (ActualizeTour)|ActualizeTour]] передается в метод [[Мастер-Тур(15):API для разработки онлайн поиска и бронирования#Поиск рейсов из внешней системы (GetGDSFlights)|GetGDSFlights]]. Далее для получения цены выполняем методы [[Мастер-Тур(15):API для разработки онлайн поиска и бронирования#Выгрузка информации от внешнего поставщика по перелету (RebuildFlights)|RebuidFlights]] и [[Мастер-Тур(15):API для разработки онлайн поиска и бронирования#Расчет путевки (CalculateReservation)|CalculateReservation]]. <br /> | ||
+ | ** '''flightGDSRequest''' – общий блок информации о внешних перелетах | ||
+ | *** '''flightsSource''' – блок, который возвращает информацию по перелетам | ||
+ | **** '''flightSettings''' – информация о шаблоне услуги авиаперелета | ||
+ | ***** '''templateId''' – идентификатор шаблона услуги | ||
+ | ***** '''patternId''' – идентификатор паттерна услуги (внутренняя информация из программы туров) | ||
+ | ***** '''serviceId''' – идентификатор класса услуги (внутренняя информация из программы туров) | ||
+ | **** '''service''' – информация об услуге авиаперелета | ||
+ | ***** '''ServiceType''' – тип услуги | ||
+ | ***** '''Code''' – ключ услуги | ||
+ | ***** '''SubCode1''' – [[#Приложение 1: параметры услуги (ServiceType, Code, SubCode1, SubCode2)|доп. описание 1]] | ||
+ | ***** '''SubCode2''' – [[#Приложение 1: параметры услуги (ServiceType, Code, SubCode1, SubCode2)|доп. описание 2]] | ||
+ | ***** '''CountryId''' – страна услуги | ||
+ | ***** '''CityId''' – город услуги | ||
+ | ***** '''PacketId''' – пакет услуги | ||
+ | ***** '''PartnerId''' – партнер услуги | ||
+ | ***** '''Day''' – день предоставления услуги | ||
+ | ***** '''DurationInNight''' – продолжительность услуги в ночах | ||
+ | **** '''price''' – стоимость перелета | ||
+ | **** '''quotaInfo''' – объект информация по квотам | ||
+ | ***** '''status''' – статус по квотам (есть места / нет мест / под запрос) | ||
+ | ***** '''freePlaces''' – количество свободных мест, если удовлетворяются условия, заданные в настройке "Мало" и включена настройка "Отображать числовое значение оставшихся мест". Иначе возвращается 0. Если в данном параметре 0, то руководствоваться следует значением, полученном в параметре '''PlacesStatus'''. | ||
+ | ***** '''isFewPlaces''' – выполнены ли условия, заданные в настройке "Мало": '''true''' – если заданы условия количества мест "Мало" и данные условия выполнены, '''false''' – если не заданы условия количества мест "Мало" или они заданы, но не выполнены. | ||
+ | **** '''flightDateTimeLimitationInterval''' – | ||
+ | ***** '''startLimitation''' – начало тайм-лимита | ||
+ | ***** '''finishLimitation''' – объект тайм-лимита | ||
+ | ****** '''dateTimeString''' – дата окончания тайм-лимита | ||
+ | ****** '''serviceType''' – тип услуги | ||
+ | ****** '''serviceCode''' – код услуги | ||
+ | **** '''flightSourceMode''' – тип перелета (1 – локальный, 2 – из внешний системы) | ||
+ | **** '''passengers''' – информация о пассажирах | ||
+ | ***** '''IsMain''' – главный турист | ||
+ | ***** '''Number''' – порядковый номер туриста | ||
+ | ***** '''AgeType''' – тип туриста (0 – взрослый, 1 – ребенок, 2 – инфант) | ||
+ | ***** '''MaleFemaleSex''' – пол (0 – мужской, 1 – женский) | ||
+ | ***** '''FirstName''' – имя (лат) | ||
+ | ***** '''LastName''' – фамилия (лат) | ||
+ | ***** '''Patronymic''' – отчество (лат) | ||
+ | ***** '''FirstNameRus''' – имя (рус) | ||
+ | ***** '''LastNameRus''' – фамилия (рус) | ||
+ | ***** '''PatronymicRus''' – отчество (рус) | ||
+ | ***** '''InternationalPassportSeries''' – серия загранпаспорта | ||
+ | ***** '''InternationalPassportNumber''' – номер загранпаспорта | ||
+ | ***** '''InternationalPassportDateOfIssue''' – дата выдачи загранпаспорта (YYYY-MM-DDThh:mm:ssz) | ||
+ | ***** '''InternationalPassportDateOfIssueString''' – дата выдачи загранпаспорта в строке (DD.MM.YYYY) | ||
+ | ***** '''InternationalPassportDateOfExpiry''' – дата окончания действия загранпаспорта (YYYY-MM-DDThh:mm:ssz) | ||
+ | ***** '''InternationalPassportDateOfExpiryString''' – дата окончания действия загранпаспорта в строке (DD.MM.YYYY) | ||
+ | ***** '''internationalPassportByWhom''' – кем выдан загранпаспорт | ||
+ | ***** '''PassportSeries''' – серия паспорта | ||
+ | ***** '''PassportNumber''' – номер паспорта | ||
+ | ***** '''PassportDateOfIssue''' – дата выдачи паспорта (YYYY-MM-DDThh:mm:ssz) | ||
+ | ***** '''PassportDateOfIssueString''' – дата выдачи паспорта в строке (DD.MM.YYYY) | ||
+ | ***** '''PassportByWhom''' – кем выдан паспорт | ||
+ | ***** '''Citizenship''' – название страны | ||
+ | ***** '''Phone''' – телефон | ||
+ | ***** '''Email''' – e-mail | ||
+ | ***** '''BirthDay''' – дата рождения (YYYY-MM-DDThh:mm:ssz) | ||
+ | ***** '''BirthDayString''' – дата рождения в строковом формате (DD.MM.YYYY) | ||
+ | ***** '''BirthPlace''' – место рождения | ||
+ | ***** '''CitizenID''' – гражданство | ||
+ | ***** '''Age''' – количество полных лет на момент окончания тура | ||
+ | **** '''tourDate''' – дата тура | ||
+ | **** '''tourCurrency''' – валюта тура | ||
+ | **** '''tourId''' – ключ программы тура | ||
+ | **** '''filterTariff''' – информация о тарифах | ||
+ | **** '''filterDeptime''' – информация о времени вылета | ||
+ | **** '''isCommission''' – признак комиссионной цены | ||
+ | **** '''baseFlightsParams''' – параметра авиаперелета | ||
+ | ***** '''CityArrival''' – город прибытия | ||
+ | ***** '''FlightCode''' – код авиаперелета | ||
+ | ***** '''TariffKey''' – ключ тарифа | ||
+ | ***** '''PartnerId''' – ключ партнера | ||
+ | **** '''isUpdated''' – информация об обновлении перелета | ||
+ | **** '''key''' – ключ запроса | ||
+ | **** '''tourDurationByDays''' – продолжительность перелета | ||
+ | **** '''langueCode''' – локализация | ||
+ | |||
+ | Начиная с релиза 15.9 был добавлен блок '''servicesCalculateReservations''' (регулируется настройкой '''showServiceDescriptionForActualizeTour''' в конфигурационном файле TourSearchOwin), возвращающий детальную информацию об услугах в туре, идентичную методу [[Мастер-Тур(15):API для разработки онлайн поиска и бронирования#Выгрузка первоначального варианта в корзину для бронирования (Tour)|Tour]] или [[Мастер-Тур(15):API для разработки онлайн поиска и бронирования#Поиск туров онлайн (TourForWeb)|Simple]].<br /> | ||
+ | ** '''showServiceDescriptionForActualizeTour''' – общий блок информации об услугах в туре | ||
+ | *** '''{}''' – блок, который возвращает информацию по услугам | ||
+ | **** '''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''' – время прилета | ||
+ | **** '''TotalTimeOfFlight''' – полное время перелета | ||
+ | **** '''FlightDetails''' – детали авиаперелета | ||
+ | ***** '''Tariff''' – информация о тарифе перелета | ||
+ | ****** '''Key''' – идентификатор | ||
+ | ****** '''Code''' – код тарифа | ||
+ | ****** '''Name''' – наименование тарифа | ||
+ | ***** '''IsCommission''' – признак, комиссионная ли услуга | ||
+ | ***** '''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: параметры услуги (ServiceType, Code, SubCode1, SubCode2)|доп. описания 1]] | ||
+ | **** '''IsSubCode2''' – признак наличия [[#Приложение 1: параметры услуги (ServiceType, Code, SubCode1, SubCode2)|доп. описания 2]] | ||
+ | **** '''IsPartnerBasedOn''' – признак услуга с приоритетным подбором поставщика | ||
+ | **** '''Day''' – день предоставления услуги | ||
+ | **** '''DurationInNight''' – продолжительность услуги в ночах | ||
+ | **** '''BeginDateTime''' – дата предоставления услуги | ||
+ | **** '''EndDateTime''' – дата окончания услуги | ||
+ | **** '''IsHooded''' – признак скрытая услуга | ||
+ | **** '''IsDeleted''' – признак удаляемая услуга | ||
+ | **** '''IsNotCalculate''' – признак не рассчитываемая услуга | ||
+ | **** '''PacketId''' – ключ пакета | ||
+ | **** '''Index''' – порядковый номер услуги | ||
+ | |||
+ | **** '''Hotel''' – отель | ||
+ | ***** '''Key''' – ключ отеля | ||
+ | ***** '''Value''' – наименование отеля | ||
+ | **** '''City''' – город | ||
+ | ***** '''Key''' – ключ города | ||
+ | ***** '''Value''' – наименование города | ||
+ | **** '''Stars''' – категория отеля | ||
+ | ***** '''Key''' – ключ категории отеля | ||
+ | ***** '''Value''' – наименование категории отеля | ||
+ | **** '''StarsGlobalCode''' – глобальный код категории отеля | ||
+ | ***** '''Key''' – глобальный ключ категории отеля | ||
+ | ***** '''Value''' – наименование категории отеля | ||
+ | **** '''Resort''' – курорт | ||
+ | ***** '''Key''' – ключ курорта | ||
+ | ***** '''Value''' – наименование курорта | ||
+ | **** '''ImageURL''' – ссылка на лого отеля | ||
+ | **** '''Http''' – ссылка на сайт отеля | ||
+ | **** '''Description''' – описание | ||
+ | **** '''Latitude''' – GPS координаты: географическая широта | ||
+ | **** '''Longitude''' – GPS координаты: географическая долгота | ||
+ | **** '''Country''' – страна | ||
+ | ***** '''Key''' – ключ страны | ||
+ | ***** '''Value''' – наименование страны | ||
+ | **** '''HotelDetails''' – массив данных отель | ||
+ | ***** '''HotelRoom''' – категория номера | ||
+ | ***** '''Room''' – номер | ||
+ | ****** '''Key''' – ключ номера | ||
+ | ****** '''Value''' – наименование номера | ||
+ | ***** '''RoomCategory''' – тип номера | ||
+ | ****** '''Key''' – ключ типа номера | ||
+ | ****** '''Value''' – наименование типа номера | ||
+ | ***** '''AccomodationType''' – тип размещения | ||
+ | ****** '''Key''' – ключ типа размещения | ||
+ | ****** '''Value''' – наименование типа размещения | ||
+ | ****** '''AdultCount''' – количество взрослых | ||
+ | ****** '''ChildCount''' – количество детей | ||
+ | ***** '''Pansion''' – тип питания | ||
+ | ****** '''Key''' – ключ типа питания | ||
+ | ****** '''Value''' – наименование типа питания | ||
+ | ***** '''PansionGlobalCode''' – глобальный код типа питания | ||
+ | ****** '''Key''' – ключ типа питания | ||
+ | ****** '''Value''' – наименование типа питания | ||
+ | ***** '''RemoteId''' – не используется | ||
+ | ***** '''Cost''' – разница в стоимости с самым дешевым вариантом | ||
+ | ***** '''QuotaStatus''' – информация о квоте | ||
+ | ****** '''PlacesStatus''' – статус по квотам (есть места-1 / нет мест-2 / под запрос-4) | ||
+ | ****** '''FreePlaces''' – количество свободных мест, если удовлетворяются условия, заданные в настройке "Мало" и включена настройка "Отображать числовое значение оставшихся мест". Иначе возвращается 0. Если в данном параметре 0, то руководствоваться следует значением, полученном в параметре '''PlacesStatus'''. | ||
+ | ****** '''IsFewPlaces''' – выполнены ли условия, заданные в настройке "Мало": '''true''' – если заданы условия количества мест "Мало" и данные условия выполнены, '''false''' – если не заданы условия количества мест "Мало" или они заданы, но не выполнены. | ||
+ | ***** '''PartnerId''' – ключ партнера | ||
+ | ***** '''ByPax''' – цена за человека (true/false) | ||
+ | ***** '''Partner''' – информация о партнере | ||
+ | ****** '''Key''' – идентификатор | ||
+ | ****** '''Value''' – название | ||
+ | **** '''HotelTypes''' – признаки отелей в дополнительных фильтрах | ||
+ | ***** '''Key''' – ключ | ||
+ | ***** '''Value''' – значение | ||
+ | **** '''RemoteId''' – не используется | ||
+ | **** '''COAndSpecialsInfo''' – формирует, фильтрует и выдаёт списки применённых акций и ценовых блоков | ||
+ | ***** '''AppliedCostOffersKeys''' – коллекция идентификаторов всех применённых ценовых блоков к одной цене | ||
+ | ***** '''AppliedSpeciasInfo''' – коллекция всех применённых акций к одной цене, содержит информацию об условиях, с которыми применилась каждая акция | ||
+ | **** '''Id''' – идентификатор базового шаблона услуги (внутренняя информация из программы туров) | ||
+ | **** '''SvKey''' – ключ типа услуги | ||
+ | **** '''IsSubCode1''' – признак наличия [[#Приложение 1: параметры услуги (ServiceType, Code, SubCode1, SubCode2)|доп. описания 1]] | ||
+ | **** '''IsSubCode2''' – признак наличия [[#Приложение 1: параметры услуги (ServiceType, Code, SubCode1, SubCode2)|доп. описания 2]] | ||
+ | **** '''IsPartnerBasedOn''' – признак услуга с приоритетным подбором поставщика | ||
+ | **** '''Day''' – день предоставления услуги | ||
+ | **** '''DurationInNight''' – продолжительность услуги в ночах | ||
+ | **** '''BeginDateTime''' – дата предоставления услуги | ||
+ | **** '''EndDateTime''' – дата окончания услуги | ||
+ | **** '''IsHooded''' – признак скрытая услуга | ||
+ | **** '''IsDeleted''' – признак удаляемая услуга | ||
+ | **** '''IsNotCalculate''' – признак не рассчитываемая услуга | ||
+ | **** '''PacketId''' – ключ пакета | ||
+ | **** '''Index''' – порядковый номер услуги | ||
<div class="toccolours mw-collapsible mw-collapsed" style="width:900px">Пример | <div class="toccolours mw-collapsible mw-collapsed" style="width:900px">Пример | ||
Строка 1362: | Строка 2700: | ||
<syntaxhighlight lang="java" enclose="div"> | <syntaxhighlight lang="java" enclose="div"> | ||
{ | { | ||
− | + | "version": "1.08", | |
− | + | "actualizedTour": { | |
− | + | "price": 201, | |
− | + | "ticketsIsIncluded": 1, | |
− | + | "hotelIsInStop": 2, | |
− | + | "hasEconomTicketsDpt": 0, | |
− | + | "hasEconomTicketsRtn": 2, | |
− | + | "hasBusinessTicketsDpt": 2, | |
− | + | "hasBusinessTicketsRtn": 0, | |
− | + | "hasAnotherEconomTicketsDpt": 0, | |
− | + | "hasAnotherEconomTicketsRtn": 0, | |
− | + | "hasAnotherBusinessTicketsDpt": 0, | |
− | + | "hasAnotherBusinessTicketsRtn": 2, | |
− | + | "fewPlacesInHotel": null, | |
− | + | "fewEconomTicketsDpt": null, | |
− | &adultCount=2&hotelQuota=7&aviaQuota=7&serviceDescriptions= | + | "fewEconomTicketsRtn": null, |
− | + | "fewBusinessTicketsDpt": null, | |
− | + | "fewBusinessTicketsRtn": null, | |
− | + | "tourUrl": "http://localhost/TourSearchClient/Basket?departureCities=1&destination=1_90&tour=100011349&date=01.11.22&duration=8&hotelScheme=3_7_178_779_12667_0_8&adultCount=2&hotelQuota=7&aviaQuota=7&busTransferQuota=7&serviceDescriptions=1_0_0_1_1448_67_1_90_35_1037_12792_1_0,3_0_0_3_178_13125_4_90_35_779_12667_1_7,2_1_0_1_1076_89_35_460_1_1037_12792_8_0¤cy=USD", | |
− | + | "services": [{ | |
− | + | "id": 0, | |
− | + | "type": "DptTransport", | |
− | + | "name": "А_П::Москва/Вена/3G000, DME-VIE1, 10:00-13:00/C Бизнес класс", | |
− | + | "isIncluded": 1, | |
− | + | "description": "", | |
− | + | "surcharge": 0, | |
− | + | "flightCompatibleIds": "2", | |
− | + | "flightClass": "BUSINESS", | |
− | + | "flightAvailability": 2, | |
− | + | "flightPlacesCount": -1, | |
− | + | "flightAirportFrom": "DME", | |
− | + | "flightAirportTo": "VIE1", | |
− | + | "flightNum": "3G 000", | |
− | + | "flightAirline": "3G", | |
− | + | "flightStartDateTime": "01.11.2022 15:00", | |
− | + | "flightEndDateTime": "01.11.2022 18:00", | |
− | + | "flightAircraft": "757", | |
− | + | "isGDS": 1, | |
− | + | "cancelationPolicy": null, | |
− | + | "bookingAdditionalInfo": null | |
− | + | }, { | |
− | + | "id": 1, | |
− | + | "type": "HotelInfo", | |
− | + | "name": "HOTEL::Вена/Ananas-5+++*,7 [nights]/Double(D Suite),2Ad/BB2 Завтрак", | |
− | + | "isIncluded": 1, | |
− | + | "description": "", | |
− | + | "surcharge": 0, | |
− | + | "flightCompatibleIds": null, | |
− | + | "flightClass": null, | |
− | + | "flightAvailability": -1, | |
− | + | "flightPlacesCount": -1, | |
− | + | "flightAirportFrom": null, | |
− | + | "flightAirportTo": null, | |
− | + | "flightNum": " ", | |
− | + | "flightAirline": null, | |
− | + | "flightStartDateTime": null, | |
− | + | "flightEndDateTime": null, | |
− | + | "flightAircraft": null, | |
− | + | "isGDS": 0, | |
− | + | "cancelationPolicy": null, | |
− | + | "bookingAdditionalInfo": null | |
− | + | }, { | |
− | + | "id": 2, | |
− | + | "type": "RtnTransport", | |
− | + | "name": "А_П::Вена/Москва/SU2355, VIE1-SVO4, 00:10-04:50/Y Экономический класс", | |
− | + | "isIncluded": 1, | |
− | + | "description": "", | |
− | + | "surcharge": 0, | |
− | + | "flightCompatibleIds": "0", | |
− | + | "flightClass": "ECONOM", | |
− | + | "flightAvailability": 2, | |
− | + | "flightPlacesCount": -1, | |
− | " | + | "flightAirportFrom": "VIE1", |
− | " | + | "flightAirportTo": "SVO4", |
− | + | "flightNum": "SU 2355", | |
− | + | "flightAirline": "SU", | |
− | + | "flightStartDateTime": "08.11.2022 00:10", | |
+ | "flightEndDateTime": "08.11.2022 04:50", | ||
+ | "flightAircraft": "321", | ||
+ | "isGDS": 1, | ||
+ | "cancelationPolicy": null, | ||
+ | "bookingAdditionalInfo": null | ||
+ | } | ||
+ | ], | ||
+ | "flightGDSRequest": { | ||
+ | "flightsSource": [{ | ||
+ | "flightSettings": { | ||
+ | "templateId": 1, | ||
+ | "patternId": 0, | ||
+ | "serviceId": 0 | ||
+ | }, | ||
+ | "service": { | ||
+ | "serviceType": 1, | ||
+ | "code": 1448, | ||
+ | "subCode1": 67, | ||
+ | "subCode2": 1, | ||
+ | "countryId": 90, | ||
+ | "cityId": 35, | ||
+ | "packetId": 1037, | ||
+ | "partnerId": 12792, | ||
+ | "day": 1, | ||
+ | "durationInNight": 0 | ||
+ | }, | ||
+ | "price": 40, | ||
+ | "quotaInfo": { | ||
+ | "status": 4, | ||
+ | "freePlaces": 0, | ||
+ | "isFewPlaces": false | ||
+ | }, | ||
+ | "flightDateTimeLimitationInterval": { | ||
+ | "startLimitation": { | ||
+ | "dateTimeString": "2022-11-01T15:00:00", | ||
+ | "serviceType": 1, | ||
+ | "serviceCode": 1448 | ||
+ | }, | ||
+ | "finishLimitation": { | ||
+ | "dateTimeString": "2022-11-01T18:00:00", | ||
+ | "serviceType": 1, | ||
+ | "serviceCode": 1448 | ||
+ | } | ||
+ | }, | ||
+ | "flightSourceMode": 2 | ||
+ | }, { | ||
+ | "flightSettings": { | ||
+ | "templateId": 2, | ||
+ | "patternId": 1, | ||
+ | "serviceId": 0 | ||
+ | }, | ||
+ | "service": { | ||
+ | "serviceType": 1, | ||
+ | "code": 1076, | ||
+ | "subCode1": 89, | ||
+ | "subCode2": 35, | ||
+ | "countryId": 460, | ||
+ | "cityId": 1, | ||
+ | "packetId": 1037, | ||
+ | "partnerId": 12792, | ||
+ | "day": 8, | ||
+ | "durationInNight": 0 | ||
+ | }, | ||
+ | "price": 20, | ||
+ | "quotaInfo": { | ||
+ | "status": 4, | ||
+ | "freePlaces": 0, | ||
+ | "isFewPlaces": false | ||
+ | }, | ||
+ | "flightDateTimeLimitationInterval": { | ||
+ | "startLimitation": { | ||
+ | "dateTimeString": "2022-11-08T00:10:00", | ||
+ | "serviceType": 1, | ||
+ | "serviceCode": 1076 | ||
+ | }, | ||
+ | "finishLimitation": { | ||
+ | "dateTimeString": "2022-11-08T04:50:00", | ||
+ | "serviceType": 1, | ||
+ | "serviceCode": 1076 | ||
+ | } | ||
+ | }, | ||
+ | "flightSourceMode": 2 | ||
+ | } | ||
+ | ], | ||
+ | "passengers": [{ | ||
+ | "IsMain": true, | ||
+ | "Number": 1, | ||
+ | "AgeType": 0, | ||
+ | "MaleFemaleSex": 0, | ||
+ | "FirstName": "", | ||
+ | "LastName": "", | ||
+ | "Patronymic": "", | ||
+ | "FirstNameRus": "", | ||
+ | "LastNameRus": "", | ||
+ | "PatronymicRus": "", | ||
+ | "InternationalPassportSeries": "", | ||
+ | "InternationalPassportNumber": "", | ||
+ | "InternationalPassportDateOfIssue": "", | ||
+ | "InternationalPassportDateOfIssueString": "", | ||
+ | "InternationalPassportDateOfExpiry": "", | ||
+ | "InternationalPassportDateOfExpiryString": "", | ||
+ | "internationalPassportByWhom": "", | ||
+ | "PassportSeries": "", | ||
+ | "PassportNumber": "", | ||
+ | "PassportDateOfIssue": "", | ||
+ | "PassportDateOfIssueString": "", | ||
+ | "PassportByWhom": "", | ||
+ | "Citizenship": "", | ||
+ | "Phone": "", | ||
+ | "Email": "", | ||
+ | "BirthDay": "", | ||
+ | "BirthDayString": "", | ||
+ | "BirthPlace": "", | ||
+ | "CitizenID": "", | ||
+ | "Age": 18 | ||
+ | }, { | ||
+ | "IsMain": false, | ||
+ | "Number": 2, | ||
+ | "AgeType": 0, | ||
+ | "MaleFemaleSex": 0, | ||
+ | "FirstName": "", | ||
+ | "LastName": "", | ||
+ | "Patronymic": "", | ||
+ | "FirstNameRus": "", | ||
+ | "LastNameRus": "", | ||
+ | "PatronymicRus": "", | ||
+ | "InternationalPassportSeries": "", | ||
+ | "InternationalPassportNumber": "", | ||
+ | "InternationalPassportDateOfIssue": "", | ||
+ | "InternationalPassportDateOfIssueString": "", | ||
+ | "InternationalPassportDateOfExpiry": "", | ||
+ | "InternationalPassportDateOfExpiryString": "", | ||
+ | "internationalPassportByWhom": "", | ||
+ | "PassportSeries": "", | ||
+ | "PassportNumber": "", | ||
+ | "PassportDateOfIssue": "", | ||
+ | "PassportDateOfIssueString": "", | ||
+ | "PassportByWhom": "", | ||
+ | "Citizenship": "", | ||
+ | "Phone": "", | ||
+ | "Email": "", | ||
+ | "BirthDay": "", | ||
+ | "BirthDayString": "", | ||
+ | "BirthPlace": "", | ||
+ | "CitizenID": "", | ||
+ | "Age": 18 | ||
+ | } | ||
+ | ], | ||
+ | "tourDate": "2022-11-01T00:00:00", | ||
+ | "tourCurrency": "$", | ||
+ | "tourId": 100011349, | ||
+ | "filterTariff": null, | ||
+ | "filterDeptime": [ | ||
+ | "all" | ||
+ | ], | ||
+ | "isCommission": true, | ||
+ | "baseFlightsParams": [{ | ||
+ | "CityArrival": 35, | ||
+ | "FlightCode": 1448, | ||
+ | "TariffKey": 67, | ||
+ | "PartnerId": 12792 | ||
+ | }, { | ||
+ | "CityArrival": 1, | ||
+ | "FlightCode": 1076, | ||
+ | "TariffKey": 89, | ||
+ | "PartnerId": 12792 | ||
+ | } | ||
+ | ], | ||
+ | "isUpdated": false, | ||
+ | "key": 0, | ||
+ | "tourDurationByDays": 8, | ||
+ | "langueCode": "ru", | ||
+ | "isCanary": false | ||
+ | } | ||
+ | } | ||
} | } | ||
</syntaxhighlight> | </syntaxhighlight> | ||
Строка 1444: | Строка 2957: | ||
</div></div><br /> | </div></div><br /> | ||
− | == | + | ==Пример работы с методами== |
− | + | Для примера вызываем метод GetToursAllPrices со следующими параметрами:</br> | |
− | + | [[Файл: Ea_492.png|900px]]</br> | |
− | + | Результат работы метода: | |
− | + | Выдано 5 вариантов, в соответствии с отправленным в запросе параметром count=5</br> | |
− | + | [[Файл: Ea_493.png|900px]]</br> | |
− | + | Внутри каждого результата имеется подробная информация о туре (страна, город, отель, описание и т.д.). На основе этих данных, мы уже можем вызвать «переход в корзину». </br> | |
− | + | Выбираем понравившийся нам вариант и далее формируем запрос вида (все необходимые данные мы возьмем из выбранного нами варианта):</br> | |
− | + | http://localhost:9000/TourSearchOwin/Tour?DepartureCityKeys=1&DestinationType=1&DestinationKey=90&Dates=24.03.24&Durations=6&AdultCount=2&CurrencyName=%24&HotelQuota=7&AviaQuota=7&BusTransferQuota=7&HotelScheme=%5B%7B%22TemplateId%22%3A%221%22%2C%22DurationInNight%22%3A%225%22%2C%22Code%22%3A%22112322%22%2C%22PacketKey%22%3A%22779%22%2C%22PartnerKey%22%3A%2212667%22%2C%22GDSProviderId%22%3A%220%22%2C%22TotalTourDuration%22%3A%227%22%7D%5D&TourKey=100011540&TourDuration=6&PageNumber=1&PageSize=20&IsFromBasket=true&isFillSecondaryFilters=false&RemoteHotelMode=1</br> | |
− | + | [[Файл: Ea_494.png|900px]]</br> | |
− | + | А результатом работы будет список рассчитанных вариантов тура (варианты зависят от маршрутных услуг).</br> | |
− | + | Далее, мы выбираем понравившийся нам результат. И готовимся формировать запрос CalculateReservation - это POST метод, который передает объект.</br> | |
− | + | http://localhost:9000/TourSearchOwin/CalculateReservation</br> | |
− | + | Данные для формирования CalculateReservation берем из предыдущего запроса:</br> | |
− | + | <syntaxhighlight lang="java" enclose="div"> | |
− | + | "tourProgramId": 100011540, | |
− | + | "beginDate": "2024-03-24T00:00:00", | |
− | + | "duration": 7, | |
− | + | "currency": "$", | |
− | + | "initialPrice": { | |
− | + | "price": 80, | |
− | + | "currency": "$" }, | |
− | + | </syntaxhighlight> | |
− | + | </TD></TR></TABLE> | |
− | + | </div></div><br /> | |
− | + | Это данные туриста, эти данные заполняются на форме. Сейчас здесь данные по умолчанию (форма туристы не заполнена).</br> | |
− | + | <syntaxhighlight lang="java" enclose="div"> | |
− | + | "tourists": [ | |
− | + | { | |
− | + | "IsMain": true, | |
− | + | "Number": 1, | |
− | + | "AgeType": 0, | |
− | + | "MaleFemaleSex": 0, | |
− | + | "FirstName": "", | |
− | <div | + | "LastName": "", |
− | + | "Patronymic": "", | |
− | + | "EnableSmsNotifications": null, | |
+ | "Howdidyouhear": "", | ||
+ | "Residenceregion": "", | ||
+ | "FirstNameRus": "", | ||
+ | "LastNameRus": "", | ||
+ | "PatronymicRus": "", | ||
+ | "InternationalPassportSeries": "", | ||
+ | "InternationalPassportNumber": "", | ||
+ | "InternationalPassportDateOfIssue": "", | ||
+ | "InternationalPassportDateOfIssueString": "", | ||
+ | "InternationalPassportDateOfExpiry": "", | ||
+ | "InternationalPassportDateOfExpiryString": "", | ||
+ | "internationalPassportByWhom": "", | ||
+ | "PassportSeries": "", | ||
+ | "PassportNumber": "", | ||
+ | "PassportDateOfIssue": "", | ||
+ | "PassportDateOfIssueString": "", | ||
+ | "PassportByWhom": "", | ||
+ | "Citizenship": "", | ||
+ | "Phone": "", | ||
+ | "Email": "", | ||
+ | "BirthDay": "", | ||
+ | "BirthDayString": "", | ||
+ | "BirthPlace": "", | ||
+ | "CitizenID": "", | ||
+ | "Age": 19 | ||
+ | }, | ||
+ | { | ||
+ | "IsMain": false, | ||
+ | "Number": 2, | ||
+ | "AgeType": 0, | ||
+ | "MaleFemaleSex": 0, | ||
+ | "FirstName": "", | ||
+ | "LastName": "", | ||
+ | "Patronymic": "", | ||
+ | "EnableSmsNotifications": null, | ||
+ | "Howdidyouhear": "", | ||
+ | "Residenceregion": "", | ||
+ | "FirstNameRus": "", | ||
+ | "LastNameRus": "", | ||
+ | "PatronymicRus": "", | ||
+ | "InternationalPassportSeries": "", | ||
+ | "InternationalPassportNumber": "", | ||
+ | "InternationalPassportDateOfIssue": "", | ||
+ | "InternationalPassportDateOfIssueString": "", | ||
+ | "InternationalPassportDateOfExpiry": "", | ||
+ | "InternationalPassportDateOfExpiryString": "", | ||
+ | "internationalPassportByWhom": "", | ||
+ | "PassportSeries": "", | ||
+ | "PassportNumber": "", | ||
+ | "PassportDateOfIssue": "", | ||
+ | "PassportDateOfIssueString": "", | ||
+ | "PassportByWhom": "", | ||
+ | "Citizenship": "", | ||
+ | "Phone": "", | ||
+ | "Email": "", | ||
+ | "BirthDay": "", | ||
+ | "BirthDayString": "", | ||
+ | "BirthPlace": "", | ||
+ | "CitizenID": "", | ||
+ | "Age": 19 | ||
+ | } | ||
+ | ], | ||
+ | </syntaxhighlight> | ||
+ | </TD></TR></TABLE> | ||
+ | </div></div><br /> | ||
+ | Далее заполняем услуги. Также берем из предыдущего запроса из секции Services. | ||
+ | <syntaxhighlight lang="java" enclose="div"> | ||
+ | "FlightSetting": { | ||
+ | "ServiceId": 3, | ||
+ | "PatternId": 17, | ||
+ | "FlightId": 17 | ||
+ | }, | ||
+ | "IsHooded": false, | ||
+ | "IsDeleted": false, | ||
+ | "IsNotCalculate": false, | ||
+ | </syntaxhighlight> | ||
+ | </TD></TR></TABLE> | ||
+ | </div></div><br /> | ||
+ | Благодаря этим параметрам мы можем определять значение Attributes и Type: | ||
+ | IsHooded - это isInvisible | ||
+ | isRemovable - это IsDeleted | ||
+ | isNotCalculated - это IsNotCalculate | ||
+ | Формируем следующее тело запроса: | ||
<syntaxhighlight lang="java" enclose="div"> | <syntaxhighlight lang="java" enclose="div"> | ||
− | + | { | |
+ | "tourProgramId": 100011540, | ||
+ | "beginDate": "2024-03-24T00:00:00", | ||
+ | "duration": 7, | ||
+ | "currency": "$", | ||
+ | "initialPrice": { | ||
+ | "price": 80, | ||
+ | "currency": "$" | ||
+ | }, | ||
+ | "services": [ | ||
+ | { | ||
+ | "Service": { | ||
+ | "ServiceType": 3, | ||
+ | "Code": 112322, | ||
+ | "SubCode1": 1082739, | ||
+ | "SubCode2": 39, | ||
+ | "Packet": 779, | ||
+ | "Partner": 12667, | ||
+ | "Day": 1, | ||
+ | "DurationInNight": 5, | ||
+ | "City": 35, | ||
+ | "Country": 90, | ||
+ | "Attributes": 0, | ||
+ | "IsRemovable": false, | ||
+ | "Type": 1, | ||
+ | "IsHooded": false, | ||
+ | "IsNotCalculated": false, | ||
+ | "BeginDateTimeString": "2024-03-24T17:00:00", | ||
+ | "EndDateTimeString": "2024-03-29T17:00:00", | ||
+ | "TemplateId": 1, | ||
+ | "Cost": 0, | ||
+ | "ByPax": false, | ||
+ | "QuotaStatus": { | ||
+ | "PlacesStatus": 4, | ||
+ | "FreePlaces": 0, | ||
+ | "IsFewPlaces": false | ||
+ | }, | ||
+ | "Index": 1, | ||
+ | "IsRoute": true, | ||
+ | "ServiceTemplateIndex": 1, | ||
+ | "RemoteId": null, | ||
+ | "IsCommission": true, | ||
+ | "BaseFlightsParams": [ | ||
+ | { | ||
+ | "CityArrival": 35, | ||
+ | "FlightCode": 773, | ||
+ | "TariffKey": 67, | ||
+ | "PartnerId": 10760 | ||
+ | }, | ||
+ | { | ||
+ | "CityArrival": 1, | ||
+ | "FlightCode": 1059, | ||
+ | "TariffKey": 89, | ||
+ | "PartnerId": 10760 | ||
+ | } | ||
+ | ] | ||
+ | }, | ||
+ | "TouristNumbersList": [ | ||
+ | 1, | ||
+ | 2 | ||
+ | ] | ||
+ | }, | ||
+ | { | ||
+ | "Service": { | ||
+ | "ServiceType": 1, | ||
+ | "Code": 773, | ||
+ | "SubCode1": 67, | ||
+ | "SubCode2": 1, | ||
+ | "Packet": 779, | ||
+ | "Partner": 10760, | ||
+ | "Day": 1, | ||
+ | "DurationInNight": 0, | ||
+ | "City": 35, | ||
+ | "Country": 90, | ||
+ | "Attributes": 0, | ||
+ | "IsRemovable": false, | ||
+ | "Type": 1, | ||
+ | "IsHooded": false, | ||
+ | "IsNotCalculated": false, | ||
+ | "BeginDateTimeString": "2024-03-24T16:00:00", | ||
+ | "EndDateTimeString": "2024-03-24T17:00:00", | ||
+ | "TemplateId": 3, | ||
+ | "Cost": 0, | ||
+ | "ByPax": true, | ||
+ | "QuotaStatus": { | ||
+ | "PlacesStatus": 4, | ||
+ | "FreePlaces": 0, | ||
+ | "IsFewPlaces": false | ||
+ | }, | ||
+ | "Index": 0, | ||
+ | "IsRoute": true, | ||
+ | "ServiceTemplateIndex": 0, | ||
+ | "IsCommission": true, | ||
+ | "BaseFlightsParams": [ | ||
+ | { | ||
+ | "CityArrival": 35, | ||
+ | "FlightCode": 773, | ||
+ | "TariffKey": 67, | ||
+ | "PartnerId": 10760 | ||
+ | }, | ||
+ | { | ||
+ | "CityArrival": 1, | ||
+ | "FlightCode": 1059, | ||
+ | "TariffKey": 89, | ||
+ | "PartnerId": 10760 | ||
+ | } | ||
+ | ] | ||
+ | }, | ||
+ | "TouristNumbersList": [ | ||
+ | 1, | ||
+ | 2 | ||
+ | ] | ||
+ | }, | ||
+ | { | ||
+ | "Service": { | ||
+ | "ServiceType": 1, | ||
+ | "Code": 1059, | ||
+ | "SubCode1": 89, | ||
+ | "SubCode2": 35, | ||
+ | "Packet": 779, | ||
+ | "Partner": 10760, | ||
+ | "Day": 6, | ||
+ | "DurationInNight": 1, | ||
+ | "City": 1, | ||
+ | "Country": 460, | ||
+ | "Attributes": 0, | ||
+ | "IsRemovable": false, | ||
+ | "Type": 1, | ||
+ | "IsHooded": false, | ||
+ | "IsNotCalculated": false, | ||
+ | "BeginDateTimeString": "2024-03-29T20:00:00", | ||
+ | "EndDateTimeString": "2024-03-30T02:00:00", | ||
+ | "TemplateId": 4, | ||
+ | "Cost": 0, | ||
+ | "ByPax": true, | ||
+ | "QuotaStatus": { | ||
+ | "PlacesStatus": 4, | ||
+ | "FreePlaces": 0, | ||
+ | "IsFewPlaces": false | ||
+ | }, | ||
+ | "Index": 2, | ||
+ | "IsRoute": true, | ||
+ | "ServiceTemplateIndex": 2, | ||
+ | "IsCommission": true, | ||
+ | "BaseFlightsParams": [ | ||
+ | { | ||
+ | "CityArrival": 35, | ||
+ | "FlightCode": 773, | ||
+ | "TariffKey": 67, | ||
+ | "PartnerId": 10760 | ||
+ | }, | ||
+ | { | ||
+ | "CityArrival": 1, | ||
+ | "FlightCode": 1059, | ||
+ | "TariffKey": 89, | ||
+ | "PartnerId": 10760 | ||
+ | } | ||
+ | ] | ||
+ | }, | ||
+ | "TouristNumbersList": [ | ||
+ | 1, | ||
+ | 2 | ||
+ | ] | ||
+ | } | ||
+ | ], | ||
+ | "tourists": [ | ||
+ | { | ||
+ | "IsMain": true, | ||
+ | "Number": 1, | ||
+ | "AgeType": 0, | ||
+ | "MaleFemaleSex": 0, | ||
+ | "FirstName": "", | ||
+ | "LastName": "", | ||
+ | "Patronymic": "", | ||
+ | "EnableSmsNotifications": null, | ||
+ | "Howdidyouhear": "", | ||
+ | "Residenceregion": "", | ||
+ | "FirstNameRus": "", | ||
+ | "LastNameRus": "", | ||
+ | "PatronymicRus": "", | ||
+ | "InternationalPassportSeries": "", | ||
+ | "InternationalPassportNumber": "", | ||
+ | "InternationalPassportDateOfIssue": "", | ||
+ | "InternationalPassportDateOfIssueString": "", | ||
+ | "InternationalPassportDateOfExpiry": "", | ||
+ | "InternationalPassportDateOfExpiryString": "", | ||
+ | "internationalPassportByWhom": "", | ||
+ | "PassportSeries": "", | ||
+ | "PassportNumber": "", | ||
+ | "PassportDateOfIssue": "", | ||
+ | "PassportDateOfIssueString": "", | ||
+ | "PassportByWhom": "", | ||
+ | "Citizenship": "", | ||
+ | "Phone": "", | ||
+ | "Email": "", | ||
+ | "BirthDay": "", | ||
+ | "BirthDayString": "", | ||
+ | "BirthPlace": "", | ||
+ | "CitizenID": "", | ||
+ | "Age": 19 | ||
+ | }, | ||
+ | { | ||
+ | "IsMain": false, | ||
+ | "Number": 2, | ||
+ | "AgeType": 0, | ||
+ | "MaleFemaleSex": 0, | ||
+ | "FirstName": "", | ||
+ | "LastName": "", | ||
+ | "Patronymic": "", | ||
+ | "EnableSmsNotifications": null, | ||
+ | "Howdidyouhear": "", | ||
+ | "Residenceregion": "", | ||
+ | "FirstNameRus": "", | ||
+ | "LastNameRus": "", | ||
+ | "PatronymicRus": "", | ||
+ | "InternationalPassportSeries": "", | ||
+ | "InternationalPassportNumber": "", | ||
+ | "InternationalPassportDateOfIssue": "", | ||
+ | "InternationalPassportDateOfIssueString": "", | ||
+ | "InternationalPassportDateOfExpiry": "", | ||
+ | "InternationalPassportDateOfExpiryString": "", | ||
+ | "internationalPassportByWhom": "", | ||
+ | "PassportSeries": "", | ||
+ | "PassportNumber": "", | ||
+ | "PassportDateOfIssue": "", | ||
+ | "PassportDateOfIssueString": "", | ||
+ | "PassportByWhom": "", | ||
+ | "Citizenship": "", | ||
+ | "Phone": "", | ||
+ | "Email": "", | ||
+ | "BirthDay": "", | ||
+ | "BirthDayString": "", | ||
+ | "BirthPlace": "", | ||
+ | "CitizenID": "", | ||
+ | "Age": 19 | ||
+ | } | ||
+ | ], | ||
+ | "Day": "день", | ||
+ | "Day2": "дня", | ||
+ | "Days": "дней", | ||
+ | "Night": "ночь", | ||
+ | "Night2": "ночи", | ||
+ | "Nights": "ночей", | ||
+ | "adultsCountOverServiceLimit": "Количество взрослых туристов превышает лимит услуги", | ||
+ | "at": "на", | ||
+ | "incorrectChildrenInf": "Возраст детей не соответствует допустимому в выбранном варианте размещения (см. Услуги: Проживание)", | ||
+ | "languageCode": "ru" | ||
+ | } | ||
</syntaxhighlight> | </syntaxhighlight> | ||
− | + | </TD></TR></TABLE> | |
+ | </div></div><br /> | ||
+ | |||
+ | Формируется такой результат работы метода: | ||
<syntaxhighlight lang="java" enclose="div"> | <syntaxhighlight lang="java" enclose="div"> | ||
{ | { | ||
− | + | "IsValid": true, | |
− | + | "ErrorMessage": "", | |
− | + | "CalculatedReservation": { | |
− | + | "TourKey": 100011540, | |
− | + | "BeginDate": "2024-03-24T00:00:00", | |
− | + | "Duration": 7, | |
− | + | "Currency": "$", | |
− | + | "CalculatedServicesPrice": 86.0, | |
− | + | "ChangedPrice": 0.0, | |
+ | "Price": 86.0, | ||
+ | "TotalPrice": 86.0, | ||
+ | "IsDiscountIsPercent": true, | ||
+ | "NationalChangedPrice": 0.0, | ||
+ | "NationalTotalDiscount": 0.0, | ||
+ | "NationalTotalPrice": 7856.3923999999999999999999971, | ||
+ | "NatinoalCalculatedServicesPrice": 7856.3923999999999999999999971, | ||
+ | "NationalPrice": 7856.3923999999999999999999971, | ||
+ | "Discount": 0.0, | ||
+ | "TotalDiscount": 0.0, | ||
+ | "ServiceTourists": [ | ||
{ | { | ||
− | + | "ServiceType": 1, | |
− | + | "Day": 1, | |
− | + | "DurationInNight": 0, | |
− | + | "Time": "16:00:00", | |
− | + | "Name": "А_П::Москва/Вена/AT111, DME-VIE1, 16:00-17:00/C Бизнес класс", | |
− | + | "TouristCount": 2, | |
+ | "Attributes": 0, | ||
+ | "Type": 1, | ||
+ | "Brutto": 0.39, | ||
+ | "NationalBrutto": 35.627825999999999999999999987, | ||
+ | "TotalBrutto": 0.39, | ||
+ | "CancellationPolicy": null, | ||
+ | "BookingAdditionalInfo": null, | ||
+ | "AppliedCOInfo": [ | ||
+ | { | ||
+ | "IdCostOffer": 41966, | ||
+ | "InfoText": null | ||
+ | } | ||
+ | ], | ||
+ | "AppliedSpecials": null, | ||
+ | "AppldCostOffers": null, | ||
+ | "QuotaPlaces": { | ||
+ | "PlacesStatus": 4, | ||
+ | "FreePlaces": 0, | ||
+ | "TotalPlaces": 0 | ||
+ | }, | ||
+ | "TimeLimit": null, | ||
+ | "BookHash": null | ||
+ | }, | ||
{ | { | ||
− | + | "ServiceType": 3, | |
− | + | "Day": 1, | |
− | + | "DurationInNight": 5, | |
− | + | "Time": "17:00:00", | |
− | + | "Name": "HOTEL::Вена/Resort&Spa-5*,5 ночей/2 ADL(\"Капитанский\"1),2 ADL/ПР По программе", | |
− | + | "TouristCount": 2, | |
+ | "Attributes": 0, | ||
+ | "Type": 1, | ||
+ | "Brutto": 55.0, | ||
+ | "NationalBrutto": 5024.4369999999999999999999982, | ||
+ | "TotalBrutto": 55.0, | ||
+ | "CancellationPolicy": null, | ||
+ | "BookingAdditionalInfo": null, | ||
+ | "AppliedCOInfo": [ | ||
+ | { | ||
+ | "IdCostOffer": 41729, | ||
+ | "InfoText": null | ||
+ | } | ||
+ | ], | ||
+ | "AppliedSpecials": null, | ||
+ | "AppldCostOffers": null, | ||
+ | "QuotaPlaces": { | ||
+ | "PlacesStatus": 4, | ||
+ | "FreePlaces": 0, | ||
+ | "TotalPlaces": 0 | ||
+ | }, | ||
+ | "TimeLimit": null, | ||
+ | "BookHash": null | ||
+ | }, | ||
{ | { | ||
− | + | "ServiceType": 1, | |
− | + | "Day": 6, | |
− | + | "DurationInNight": 1, | |
− | + | "Time": "20:00:00", | |
− | + | "Name": "А_П::Вена/Москва/AT333, VIE1-DME, 20:00-02:00/Y Экономический класс", | |
− | + | "TouristCount": 2, | |
− | + | "Attributes": 0, | |
− | + | "Type": 1, | |
− | + | "Brutto": 30.0, | |
− | + | "NationalBrutto": 2740.601999999999999999999999, | |
− | + | "TotalBrutto": 30.0, | |
− | + | "CancellationPolicy": null, | |
− | + | "BookingAdditionalInfo": null, | |
− | + | "AppliedCOInfo": [ | |
− | + | { | |
− | + | "IdCostOffer": 12371, | |
− | + | "InfoText": null | |
− | + | } | |
+ | ], | ||
+ | "AppliedSpecials": null, | ||
+ | "AppldCostOffers": null, | ||
+ | "QuotaPlaces": { | ||
+ | "PlacesStatus": 4, | ||
+ | "FreePlaces": 0, | ||
+ | "TotalPlaces": 0 | ||
+ | }, | ||
+ | "TimeLimit": null, | ||
+ | "BookHash": null | ||
+ | } | ||
+ | ] | ||
+ | }, | ||
+ | "TourName": "Общая проверка системы_зелсофт", | ||
+ | "BookingConditions": "<p><strong>Условия бронирования</strong></p>\n<p>Сразу же после получения Вашей заявки и обсуждения всех деталей, мы вышлем Вам счет-фактуру на безвозвратный депозит. После получения депозита в размере 50-100 евро (в зависимости от стоимости тура) на человека, Вы получите Тур Ваучер, подтверждающий все детали и условия поездки в Армению</p>\n<p><strong>Условия оплаты</strong></p>\n<p>После бронирования тура необходимо внести безвозвратный депозит в размере 50-100 евро, что обеспечит нашим координаторам возможность начать организацию поездки (бронирование гостиницы, питание, транспорт и т.п.). При покупки тура с авиабилетом, предоплата составит 80% от стоимости всего тура.</p>\n<p>Оставшуюся сумму Вы можете выплатить после Вашего прибытия в страну.</p>\n<p>Мы оставляем за собой право отменить бронирование, если платежи не будут произведены в установленные сроки.</p>\n<p><strong>Форма оплаты</strong></p>\n<p>Предоплату можно внести одним из следующих способов:</p>\n<ul>\n<li>Банковский перевод</li>\n<li>Кредитная карта (при оплате посредством кредитной карты, сервис взимает 3% от общей суммы)</li>\n</ul>\n<p>Окончательный платеж может быть осуществлен следующими способами:</p>\n<ul>\n<li>Оплата наличными (при оплате наличными Вы получаете скидку в размере 2% от общей суммы)</li>\n<li>Кредитная карта (при оплате посредством кредитной карты, сервис взимает 3% от общей суммы)</li>\n</ul>\n<p> </p>\n<p><strong>Условия аннуляции тура </strong></p>\n<p>Если Вы или один из членов Вашей группы желает отменить тур, сообщите об этом нашей компании, как можно скорее в письменной форме. Пожалуйста, обратите внимание, что в данном случае предоплата (200 евро) не подлежит возмещению, но Вы сможете использовать ее в течении всего года и заказать другой тур. В этом случае наша фирма будет вынуждена взять с Вас дополнительные 100 евро для повторного бронирования отеля.</p>", | ||
+ | "EndDate": "2024-03-30T00:00:00", | ||
+ | "DurationInNights": 5, | ||
+ | "NationalCurrency": "рб", | ||
+ | "NationalRate": { | ||
+ | "Id": 14, | ||
+ | "Code": "рб", | ||
+ | "IsoCode": "RUB", | ||
+ | "Symbol": "₽" | ||
+ | }, | ||
+ | "Rate": { | ||
+ | "Id": 1, | ||
+ | "Code": "$", | ||
+ | "IsoCode": "USD", | ||
+ | "Symbol": "$" | ||
+ | }, | ||
+ | "TimeLimit": null, | ||
+ | "TariffDescription": { | ||
+ | "flightId": null, | ||
+ | "universalParametrsSequence": null, | ||
+ | "price": 0.0, | ||
+ | "deltaPrice": 0.0, | ||
+ | "segments": null | ||
+ | }, | ||
+ | "Baggage": "", | ||
+ | "CarryOnBaggage": "", | ||
+ | "HasRealCourses": true | ||
+ | } | ||
+ | |||
+ | </syntaxhighlight> | ||
+ | </TD></TR></TABLE> | ||
+ | </div></div><br /> | ||
+ | Далее формируем запрос метода CreateReservation.</br> | ||
+ | Вызываем http://localhost:9000/TourSearchOwin/CreateReservation/1 </br> | ||
+ | С телом запроса, которое мы построим из предыдущего результат + данные о туристе.</br> | ||
+ | <syntaxhighlight lang="java" enclose="div"> | ||
+ | { | ||
+ | "TourProgramId": 100011540, | ||
+ | "BeginDate": "2024-03-24T00:00:00", | ||
+ | "Duration": 7, | ||
+ | "Currency": "$", | ||
+ | "Services": [ | ||
+ | { | ||
+ | "Service": { | ||
+ | "ServiceType": 3, | ||
+ | "Code": 112322, | ||
+ | "SubCode1": 1082739, | ||
+ | "SubCode2": 39, | ||
+ | "Packet": 779, | ||
+ | "Partner": 12667, | ||
+ | "Day": 1, | ||
+ | "DurationInNight": 5, | ||
+ | "City": 35, | ||
+ | "Country": 90, | ||
+ | "Attributes": 0, | ||
+ | "IsRemovable": false, | ||
+ | "Type": 1, | ||
+ | "IsHooded": false, | ||
+ | "IsNotCalculated": false, | ||
+ | "BeginDateTimeString": "2024-03-24T17:00:00", | ||
+ | "EndDateTimeString": "2024-03-29T17:00:00", | ||
+ | "TemplateId": 1, | ||
+ | "Cost": 0, | ||
+ | "ByPax": false, | ||
+ | "QuotaStatus": { | ||
+ | "PlacesStatus": 4, | ||
+ | "FreePlaces": 0, | ||
+ | "IsFewPlaces": false | ||
+ | }, | ||
+ | "Index": 1, | ||
+ | "IsRoute": true, | ||
+ | "ServiceTemplateIndex": 1, | ||
+ | "RemoteId": null, | ||
+ | "IsCommission": true, | ||
+ | "BaseFlightsParams": [ | ||
+ | { | ||
+ | "CityArrival": 35, | ||
+ | "FlightCode": 773, | ||
+ | "TariffKey": 67, | ||
+ | "PartnerId": 10760 | ||
+ | }, | ||
+ | { | ||
+ | "CityArrival": 1, | ||
+ | "FlightCode": 1059, | ||
+ | "TariffKey": 89, | ||
+ | "PartnerId": 10760 | ||
+ | } | ||
+ | ] | ||
+ | }, | ||
+ | "TouristNumbersList": [ | ||
+ | 1, | ||
+ | 2 | ||
+ | ] | ||
+ | }, | ||
+ | { | ||
+ | "Service": { | ||
+ | "ServiceType": 1, | ||
+ | "Code": 773, | ||
+ | "SubCode1": 67, | ||
+ | "SubCode2": 1, | ||
+ | "Packet": 779, | ||
+ | "Partner": 10760, | ||
+ | "Day": 1, | ||
+ | "DurationInNight": 0, | ||
+ | "City": 35, | ||
+ | "Country": 90, | ||
+ | "Attributes": 0, | ||
+ | "IsRemovable": false, | ||
+ | "Type": 1, | ||
+ | "IsHooded": false, | ||
+ | "IsNotCalculated": false, | ||
+ | "BeginDateTimeString": "2024-03-24T16:00:00", | ||
+ | "EndDateTimeString": "2024-03-24T17:00:00", | ||
+ | "TemplateId": 3, | ||
+ | "Cost": 0, | ||
+ | "ByPax": true, | ||
+ | "QuotaStatus": { | ||
+ | "PlacesStatus": 4, | ||
+ | "FreePlaces": 0, | ||
+ | "IsFewPlaces": false | ||
+ | }, | ||
+ | "Index": 0, | ||
+ | "IsRoute": true, | ||
+ | "ServiceTemplateIndex": 0, | ||
+ | "IsCommission": true, | ||
+ | "BaseFlightsParams": [ | ||
+ | { | ||
+ | "CityArrival": 35, | ||
+ | "FlightCode": 773, | ||
+ | "TariffKey": 67, | ||
+ | "PartnerId": 10760 | ||
+ | }, | ||
+ | { | ||
+ | "CityArrival": 1, | ||
+ | "FlightCode": 1059, | ||
+ | "TariffKey": 89, | ||
+ | "PartnerId": 10760 | ||
+ | } | ||
+ | ] | ||
+ | }, | ||
+ | "TouristNumbersList": [ | ||
+ | 1, | ||
+ | 2 | ||
+ | ] | ||
+ | }, | ||
+ | { | ||
+ | "Service": { | ||
+ | "ServiceType": 1, | ||
+ | "Code": 1059, | ||
+ | "SubCode1": 89, | ||
+ | "SubCode2": 35, | ||
+ | "Packet": 779, | ||
+ | "Partner": 10760, | ||
+ | "Day": 6, | ||
+ | "DurationInNight": 1, | ||
+ | "City": 1, | ||
+ | "Country": 460, | ||
+ | "Attributes": 0, | ||
+ | "IsRemovable": false, | ||
+ | "Type": 1, | ||
+ | "IsHooded": false, | ||
+ | "IsNotCalculated": false, | ||
+ | "BeginDateTimeString": "2024-03-29T20:00:00", | ||
+ | "EndDateTimeString": "2024-03-30T02:00:00", | ||
+ | "TemplateId": 4, | ||
+ | "Cost": 0, | ||
+ | "ByPax": true, | ||
+ | "QuotaStatus": { | ||
+ | "PlacesStatus": 4, | ||
+ | "FreePlaces": 0, | ||
+ | "IsFewPlaces": false | ||
+ | }, | ||
+ | "Index": 2, | ||
+ | "IsRoute": true, | ||
+ | "ServiceTemplateIndex": 2, | ||
+ | "IsCommission": true, | ||
+ | "BaseFlightsParams": [ | ||
+ | { | ||
+ | "CityArrival": 35, | ||
+ | "FlightCode": 773, | ||
+ | "TariffKey": 67, | ||
+ | "PartnerId": 10760 | ||
+ | }, | ||
+ | { | ||
+ | "CityArrival": 1, | ||
+ | "FlightCode": 1059, | ||
+ | "TariffKey": 89, | ||
+ | "PartnerId": 10760 | ||
+ | } | ||
+ | ] | ||
+ | }, | ||
+ | "TouristNumbersList": [ | ||
+ | 1, | ||
+ | 2 | ||
+ | ] | ||
+ | } | ||
+ | ], | ||
+ | "Tourists": [ | ||
+ | { | ||
+ | "IsMain": true, | ||
+ | "Number": 1, | ||
+ | "AgeType": 0, | ||
+ | "MaleFemaleSex": 0, | ||
+ | "FirstName": "DJON", | ||
+ | "LastName": "SNOW", | ||
+ | "Patronymic": "", | ||
+ | "EnableSmsNotifications": true, | ||
+ | "Howdidyouhear": "Магия", | ||
+ | "Residenceregion": "Волгоград", | ||
+ | "FirstNameRus": "", | ||
+ | "LastNameRus": "", | ||
+ | "PatronymicRus": "", | ||
+ | "InternationalPassportSeries": "", | ||
+ | "InternationalPassportNumber": "", | ||
+ | "InternationalPassportDateOfIssue": "", | ||
+ | "InternationalPassportDateOfIssueString": "", | ||
+ | "InternationalPassportDateOfExpiry": "", | ||
+ | "InternationalPassportDateOfExpiryString": "", | ||
+ | "internationalPassportByWhom": "", | ||
+ | "PassportSeries": "", | ||
+ | "PassportNumber": "", | ||
+ | "PassportDateOfIssue": "", | ||
+ | "PassportDateOfIssueString": "", | ||
+ | "PassportByWhom": "", | ||
+ | "Citizenship": "Россия", | ||
+ | "Phone": "", | ||
+ | "Email": "", | ||
+ | "BirthDay": "1994-05-29T20:00:00.000Z", | ||
+ | "BirthDayString": "30.05.1994", | ||
+ | "BirthPlace": "", | ||
+ | "CitizenID": "", | ||
+ | "Age": 29 | ||
+ | }, | ||
+ | { | ||
+ | "IsMain": false, | ||
+ | "Number": 2, | ||
+ | "AgeType": 0, | ||
+ | "MaleFemaleSex": 0, | ||
+ | "FirstName": "DJON", | ||
+ | "LastName": "SNOW", | ||
+ | "Patronymic": "", | ||
+ | "EnableSmsNotifications": true, | ||
+ | "Howdidyouhear": "Магия", | ||
+ | "Residenceregion": "Волгоград", | ||
+ | "FirstNameRus": "", | ||
+ | "LastNameRus": "", | ||
+ | "PatronymicRus": "", | ||
+ | "InternationalPassportSeries": "", | ||
+ | "InternationalPassportNumber": "", | ||
+ | "InternationalPassportDateOfIssue": "", | ||
+ | "InternationalPassportDateOfIssueString": "", | ||
+ | "InternationalPassportDateOfExpiry": "", | ||
+ | "InternationalPassportDateOfExpiryString": "", | ||
+ | "internationalPassportByWhom": "", | ||
+ | "PassportSeries": "", | ||
+ | "PassportNumber": "", | ||
+ | "PassportDateOfIssue": "", | ||
+ | "PassportDateOfIssueString": "", | ||
+ | "PassportByWhom": "", | ||
+ | "Citizenship": "Россия", | ||
+ | "Phone": "", | ||
+ | "Email": "", | ||
+ | "BirthDay": "1994-05-29T20:00:00.000Z", | ||
+ | "BirthDayString": "30.05.1994", | ||
+ | "BirthPlace": "", | ||
+ | "CitizenID": "", | ||
+ | "Age": 29 | ||
+ | } | ||
+ | ], | ||
+ | "TechnicalProblemsDuringUpdateFlights": false, | ||
+ | "TimeLimit": null, | ||
+ | "DogovorComment": "", | ||
+ | "BranchId": 12850, | ||
+ | "OwnerId": 0, | ||
+ | "Day": "день", | ||
+ | "Day2": "дня", | ||
+ | "Days": "дней", | ||
+ | "Night": "ночь", | ||
+ | "Night2": "ночи", | ||
+ | "Nights": "ночей", | ||
+ | "adultsCountOverServiceLimit": "Количество взрослых туристов превышает лимит услуги", | ||
+ | "incorrectChildrenInf": "Возраст детей не соответствует допустимому в выбранном варианте размещения (см. Услуги: Проживание)", | ||
+ | "BookingHash": null | ||
} | } | ||
</syntaxhighlight> | </syntaxhighlight> | ||
</TD></TR></TABLE> | </TD></TR></TABLE> | ||
</div></div><br /> | </div></div><br /> | ||
+ | Результатом работы метода будет код путевки и ссылка для перехода в личный кабинет MasterWeb.</br> | ||
+ | [[Файл: Ea_495.png|600px]]</br> | ||
+ | |||
+ | ==Приложения== | ||
+ | |||
+ | ===Приложение 1: параметры услуги (ServiceType, Code, SubCode1, SubCode2)=== | ||
+ | |||
+ | Параметры ''ServiceType'' – это ключ типа услуги, ''Сode'' – ключ услуги, ''SubCode1'' и ''SubCode2'', возвращаемые при API-запросах – это параметры дополнительных описаний двух типов, индивидуальных для каждой услуги. | ||
+ | |||
+ | {| border="1" cellpadding="8" style="background-color:#F9F9F9; border:#AAAAAA; border-collapse:collapse" width="1500px" | ||
+ | |||
+ | |- style="background-color:#F2F2F2" | ||
+ | |||
+ | ! width="9%" | Ключ типа услуги (ServiceType) | ||
+ | ! width="13%" | Наименование типа услуги | ||
+ | ! width="13%" | Ключ услуги (Code) | ||
+ | ! width="13%" | Доп. описание 1 (SubCode1) | ||
+ | ! width="13%" | Таблица БД со значениями SubCode1 | ||
+ | ! width="13%" | Доп. описание 2 (SubCode2) | ||
+ | ! width="13%" | Таблица БД со значениями SubCode2 | ||
+ | |||
+ | |- style="vertical-align:text-top" | ||
+ | |||
+ | | 1 | ||
+ | | Авиаперелет | ||
+ | | индивидуальный ключ услуги | ||
+ | | Тариф | ||
+ | | AirService | ||
+ | | отсутствует | ||
+ | | отсутствует | ||
+ | |||
+ | |- style="vertical-align:text-top" | ||
+ | |||
+ | | 2 | ||
+ | | Трансфер | ||
+ | | индивидуальный ключ услуги | ||
+ | | Вид транспорта | ||
+ | | Transport | ||
+ | | отсутствует | ||
+ | | отсутствует | ||
+ | |||
+ | |- style="vertical-align:text-top" | ||
+ | |||
+ | | 3 | ||
+ | | Отель/Круиз | ||
+ | | индивидуальный ключ услуги | ||
+ | | Вид проживания (Тип номера + Категория номера + Тип размещения) | ||
+ | | HotelRooms (Rooms + RoomCategory + Accmdmentype) | ||
+ | | Тип питания | ||
+ | | Pansion | ||
+ | |||
+ | |- style="vertical-align:text-top" | ||
+ | |||
+ | | 4 | ||
+ | | Экскурсия | ||
+ | | индивидуальный ключ услуги | ||
+ | | Вид транспорта | ||
+ | | Transport | ||
+ | | отсутствует | ||
+ | | отсутствует | ||
+ | |||
+ | |- style="vertical-align:text-top" | ||
+ | |||
+ | | 5 | ||
+ | | Виза | ||
+ | | индивидуальный ключ услуги | ||
+ | | отсутствует | ||
+ | | отсутствует | ||
+ | | отсутствует | ||
+ | | отсутствует | ||
+ | |||
+ | |- style="vertical-align:text-top" | ||
+ | |||
+ | | 6 | ||
+ | | Страховка | ||
+ | | индивидуальный ключ услуги | ||
+ | | Доп. описание 1 | ||
+ | | AddDescript1 | ||
+ | | Доп. описание 2 | ||
+ | | AddDescript2 | ||
+ | |||
+ | |- style="vertical-align:text-top" | ||
+ | |||
+ | | 8 | ||
+ | | Доп услуга в отеле/круизе | ||
+ | | индивидуальный ключ услуги | ||
+ | | Вид проживания (Тип номера + Категория номера + Тип размещения) | ||
+ | | HotelRooms (Rooms + RoomCategory + Accmdmentype) | ||
+ | | Доп. описание 2 | ||
+ | | AddDescript2 | ||
+ | |||
+ | |- style="vertical-align:text-top" | ||
+ | |||
+ | | 14 | ||
+ | | Автобусный переезд | ||
+ | | индивидуальный ключ услуги | ||
+ | | Место посадки | ||
+ | | BusTransferPoints | ||
+ | | Вид транспорта | ||
+ | | Transport | ||
+ | |||
+ | |- style="vertical-align:text-top" | ||
+ | |||
+ | | 99 | ||
+ | | Любая пользовательская услуга | ||
+ | | индивидуальный ключ услуги | ||
+ | | Доп. описание 1 | ||
+ | | AddDescript1 | ||
+ | | Доп. описание 2 | ||
+ | | AddDescript2 | ||
+ | |} | ||
[[Category:Мастер-Тур(15)]] | [[Category:Мастер-Тур(15)]] |
Текущая версия на 16:22, 29 ноября 2024
Версия статьи от 29-11-2024.
Поддерживаемые версии ПК «Мастер-Тур»: |
Содержание
- 1 Введение
- 2 Установка
- 3 Загрузка справочников
- 3.1 Выгрузка списка стран (GetCountries)
- 3.2 Выгрузка списка городов вылета (GetDepartCities)
- 3.3 Выгрузка списка городов (GetResorts)
- 3.4 Выгрузка типов тура (GetTourTypes) начиная с релиза 15.4
- 3.5 Выгрузка актуальных дат заездов (GetDates) начиная с релиза 15.4
- 3.6 Выгрузка актуальных продолжительностей (GetDurations) начиная с релиза 15.4
- 3.7 Выгрузка программ туров (GetTourPrograms) начиная с релиза 15.4
- 3.8 Выгрузка списка курортов (GetAreas) начиная с релиза 15.3
- 3.9 Выгрузка списка категорий отелей (GetHotelCategories)
- 3.10 Выгрузка списка отелей (GetHotels)
- 3.11 Выгрузка описания и изображений отеля (GetHotelInfo) начиная с релиза 15.5
- 3.12 Выгрузка списка типов номеров (GetRooms) начиная с релиза 15.3
- 3.13 Выгрузка списка типов номеров (GetRoomTypes) начиная с релиза 15.3
- 3.14 Выгрузка списка типов размещения (GetHtPlaces) начиная с релиза 15.3
- 3.15 Выгрузка видов питания (GetMeals)
- 3.16 Выгрузка списка валют (GetCurrencies)
- 3.17 Выгрузка курсов валют (GetCurrencyRates)
- 4 Поиск туров (GetTours)
- 5 Поиск всех цен по туру (GetToursAllPrices) начиная с релиза 15.3
- 6 Поиск минимальных цен по каждому варианту питания (GetToursAllPricesPansion) начиная с релиза 15.9
- 7 Актуализация тура (ActualizeTour)
- 8 Пример работы с методами
- 9 Приложения
Введение
Данный web-сервис разработан для отдачи цен во внешние поисковые системы и выполняет следующие задачи:
- выгружает справочники (города вылета, страны, города, отели и т.д.)
- осуществляет поиск цен с указанныеми параметрами
- актуализирует выбранный вариант тура по его идентификатору
Выдача результатов осуществляется в формате JSON
Установка
Для работы с web-сервисом необходимо на отдающей стороне установить службу поиска.
После установки web-сервис будет доступен по адресу http://значение настройки "serviceAddress" в TourSearchOwin/searchApi?action="название метода" (пример: http://localhost:9000/TourSearchOwin/searchApi?action=GetCountries)
Для поддержки систем с большой нагрузкой можно использовать сторонние "балансировщики нагрузки". Пример настройки балансировщика HaProxy.
Загрузка справочников
Выгрузка списка стран (GetCountries)
Метод производит выгрузку всех направлений туроператора.
- Формат запроса:
- ?action=GetCountries
- Принимаемые параметры:
- id – идентификатор страны (опциональный, передача в запрос нескольких id не обрабатывается, в этом случае возвращаются все результаты. Если указан, то запрашивается только одна запись)
- Возвращаемый результат:
- id – идентификатор страны
- name – название страны (рус)
- lname – название страны (анг)
Вызов метода GetCountries http://localhost:9000/TourSearchOwin/searchApi?action=GetCountries
Возвращаемый результат метода GetCountries (в формате JSON) {
"version": "1.08",
"countries": [
{
"id": 97,
"name": "Тунис",
"lname": "Tunisia"
},
{
"id": 90,
"name": "Австрия",
"lname": "Австрия"
},
{
"id": 30,
"name": "Франция",
"lname": "France"
}
]
}
|
Выгрузка списка городов вылета (GetDepartCities)
Метод производит выгрузку всех доступных городов вылета, а также содержит данные о том, какие направления доступны из каждого города вылета.
- Формат запроса:
- ?action=GetDepartCities
- Принимаемые параметры:
- id – идентификатор города вылета (опциональный, передача в запрос нескольких id не обрабатывается, в этом случае возвращаются все результаты. Если указан, то запрашивается только одна запись)
- Возвращаемый результат:
- id – идентификатор города
- name – название города (рус)
- lname – название города (анг)
- countriesTo – идентификаторы стран, которые присутствуют в данном городе вылета
- countryId – идентификатор страны города вылета
- countryName – название страны города вылета
- countryCode – код страны города вылета
Вызов метода GetDepartCities http://localhost:9000/TourSearchOwin/searchApi?action=GetDepartCities
Возвращаемый результат метода GetDepartCities (в формате JSON) {
"version": "1.08",
"departCities": [
{
"id": -1,
"name": "Без перелета",
"lname": "No flights",
"countriesTo": [
97,
90
],
"countryId": -1,
"countryName": "",
"countryCode": ""
},
{
"id": 1,
"name": "Москва",
"lname": "Moscow",
"countriesTo": [
90,
30
],
"countryId": 460,
"countryName": "Россия",
"countryCode": "RUS"
}
]
}
|
Выгрузка списка городов (GetResorts)
Метод возвращает список всех доступных городов.
- Формат запроса:
- ?action=GetResorts
- Принимаемые параметры:
- id – идентификатор города (опциональный, передача в запрос нескольких id не обрабатывается, в этом случае возвращаются все результаты. Если указан, то запрашивается только одна запись)
- Возвращаемый результат:
- id – идентификатор города
- name – название города (рус)
- lname – название города (анг)
- countryId – идентификатор страны, в котором расположен город
Вызов метода GetResorts http://localhost:9000/TourSearchOwin/searchApi?action=GetResorts
Возвращаемый результат метода GetResorts (в формате JSON) {
"version": "1.08",
"resorts": [
{
"id": 1,
"name": "Каринтия",
"lname": "Carinthia",
"countryId": 90
},
{
"id": 42,
"name": "Хаммамед",
"lname": "Hammamet",
"countryId": 97
},
{
"id": 40,
"name": "Сусс",
"lname": "Sousse",
"countryId": 97
}
]
}
|
Выгрузка типов тура (GetTourTypes) начиная с релиза 15.4
Метод возвращает список типов туров по определенному городу отправления, стране и городу прибытия.
- Формат запроса:
- ?action=GetTourTypes
- Принимаемые параметры:
- id – идентификатор типа тура (опциональный, передача в запрос нескольких id не обрабатывается, в этом случае возвращаются все результаты. Если указан, то запрашивается только одна запись)
- Либо
- departureCityIds * – идентификатор города(ов) отправления (из метода GetDepartCities)
- countryId * – идентификатор страны прибытия (из метода GetCountries)
- resortIds * – идентификатор города(ов) прибытия (из метода GetResorts), при значении -1 будут переданы все города в рамках данной страны
- Возвращаемый результат:
- id – идентификатор типа тура
- name – название типа тура
Вызов метода GetTourTypes http://localhost:9000/TourSearchOwin/searchApi?action=GetTourTypes&departureCityIds=1&countryId=90&resortIds=-1
Возвращаемый результат метода GetTourTypes (в формате JSON) {
"version": "1.08",
"TourTypes": [
{
"id": 1,
"name": "Стандартный тур"
},
{
"id": 5,
"name": "Экскурсионный тур",
"lname": "Hammamet"
},
{
"id": 40,
"name": "Пляжный отдых"
}
]
}
|
Выгрузка актуальных дат заездов (GetDates) начиная с релиза 15.4
Метод возвращает список доступных дат заездов для поискового запроса
- Формат запроса:
- ?action=GetDates
- Принимаемые параметры:
- departureCityIds * – идентификатор города(ов) отправления (из метода GetDepartCities)
- countryId * – идентификатор страны прибытия (из метода GetCountries)
- resortIds * – идентификатор города(ов) прибытия (из метода GetResorts), при значении -1 будут переданы все города в рамках данной страны
- tourTypeIds * – идентификатор типа(ов) тура (из метода GetTourTypes), при значении -1 будут переданы все типы тура в рамках данной страны
- Возвращаемый результат:
- массив актуальных дат заезда в формате dd.MM.yyyy
Вызов метода GetDates http://localhost:9000/TourSearchOwin/searchApi?action=GetDates&departureCityIds=1&countryId=90&resortIds=-1&tourTypeIds=22
Возвращаемый результат метода GetDates (в формате JSON) {
"version": "1.08",
"dates": [
"01.08.2019",
"02.08.2019",
"03.08.2019",
"04.08.2019",
"05.08.2019",
"06.08.2019",
"07.08.2019",
"08.08.2019",
"09.08.2019",
"10.08.2019"
]
}
|
Выгрузка актуальных продолжительностей (GetDurations) начиная с релиза 15.4
Метод возвращает список доступных продолжительностей для поискового запроса
- Формат запроса:
- ?action=GetDurations
- Принимаемые параметры:
- departureCityIds * – идентификатор города(ов) отправления (из метода GetDepartCities)
- countryId * – идентификатор страны прибытия (из метода GetCountries)
- resortIds * – идентификатор города(ов) прибытия (из метода GetResorts), при значении -1 будут переданы все города в рамках данной страны
- tourTypeIds * – идентификатор типа(ов) тура (из метода GetTourTypes), при значении -1 будут переданы все типы тура в рамках данной страны
- tourDates * – массив дат заездов в формате dd.MM.yyyy (из метода GetDates)
- Возвращаемый результат:
- durations – массив актуальных продолжительностей (в днях)
- durationType – тип продолжительности: 0 – в днях тура, 1 – в ночах тура, 2 – в ночах проживания в отеле.
Вызов метода GetDurations http://localhost:9000/TourSearchOwin/searchApi?action=GetDurations&departureCityIds=1&countryId=90&resortIds=-1&tourTypeIds=22&tourDates=22.05.2019,28.05.2019
Возвращаемый результат метода GetDurations (в формате JSON) {
"version": "1.08",
"durations": [
8,
9,
10,
11,
12,
13,
14
],
"durationType": 0
}
|
Выгрузка программ туров (GetTourPrograms) начиная с релиза 15.4
Метод возвращает список актуальных для поиска программ туров
- Формат запроса:
- ?action=GetTourPrograms
- Принимаемые параметры:
- id * – идентификатор программы тура (обязательный, передача в запрос нескольких id не обрабатывается, в этом случае возвращается ошибка. Если указан, то запрашивается только одна запись)
- Либо
- departureCityIds * – идентификатор города(ов) отправления (из метода GetDepartCities)
- countryId * – идентификатор страны прибытия (из метода GetCountries)
- resortIds * – идентификатор города(ов) прибытия (из метода GetResorts), при значении -1 передается город отправления "Без перелета"
- tourTypeIds * – идентификатор типа(ов) тура (из метода GetTourTypes), при значении -1 будут переданы все типы тура в рамках данной страны
- fromDateTime – дата (в формате dd.MM.yyyy HH:mm:ss), начиная с которой будут выгружаться изменения (то есть будут получены только те доступные программы туров, которые изменялись, начиная с указанной даты)
- Возвращаемый результат:
- id – ключ программы туров
- name – название программы туров
- updateDate – дата последнего изменения программы туров (или связанных с ней компонентов)
- beginDate – дата начала заездов по программе туров (в формате dd.MM.yyyy)
- endDate – дата окончания заездов по программе туров (в формате dd.MM.yyyy)
- tourTypeIds – типы туров для данной программы туров
- routes – массив возможных маршрутов в данной программе туров
- departureCountryKey – страна начала поездки (для каждой страны начала поездки в одной программе тура будет отдельный маршрут)
- departureCityKey – город начала поездки (для каждого города начала поездки в одной программе тура будет отдельный маршрут)
- destinationCountryKeys – страны по туру (если в туре несколько услуг класса отель и они в разных странах, то будут возвращаться все страны отелей)
- destinationCityKeys – города по туру (если в туре отели в нескольких городах, то будут возвращаться все города отелей)
Вызов метода GetTourPrograms http://localhost:9000/TourSearchOwin/searchApi?action=GetTourPrograms&departureCityIds=1&countryId=90&resortIds=-1&tourTypeIds=22&fromDateTime=22.05.2019 12:00:00
Возвращаемый результат метода GetTourPrograms (в формате JSON) {
"version": "1.08",
"TourPrograms": [{
"id": 100004493,
"name": "Автобусный тур",
"updateDate": "2019-05-20T17:17:02.087",
"beginDate": "01.06.2019",
"endDate": "01.08.2019",
"tourTypeIds": [2,
22],
"routes": [{
"departureCountryId": 460,
"departureCityId": 1,
"destinationCountryIds": [90],
"destinationCityIds": [35]
}]
},
{
"id": 100005542,
"name": "Общая проверка системы",
"updateDate": "2019-05-15T15:54:10.81",
"beginDate": "01.03.2018",
"endDate": "15.08.2019",
"tourTypeIds": [22],
"routes": [{
"departureCountryId": 460,
"departureCityId": 1,
"destinationCountryIds": [90],
"destinationCityIds": [35,
440,
562]
}]
}]
}
|
Выгрузка списка курортов (GetAreas) начиная с релиза 15.3
Метод возвращает список всех доступных курортов.
- Формат запроса:
- ?action=GetAreas
- Принимаемые параметры:
- id – идентификатор курорта (опциональный, передача в запрос нескольких id не обрабатывается, в этом случае возвращаются все результаты. Если указан, то запрашивается только одна запись)
- Возвращаемый результат:
- id – идентификатор курорта
- name – название курорта (рус)
- lname – название курорта (анг)
- countryId – идентификатор страны, в котором расположен курорт
Вызов метода GetAreas http://localhost:9000/TourSearchOwin/searchApi?action=GetAreas
Возвращаемый результат метода GetAreas (в формате JSON) {
"version": "1.08",
"areas": [
{
"id": 232,
"name": "Малина",
"lname": "Малина",
"countryId": 90
},
{
"id": 233,
"name": "Облако",
"lname": "Облако",
"countryId": 90
},
{
"id": 1,
"name": "Каринтия",
"lname": "en_Каринтия",
"countryId": 90
},
{
"id": -1,
"name": "Без курорта",
"lname": "",
"countryId": -1
}
]
}
|
Выгрузка списка категорий отелей (GetHotelCategories)
Метод возвращает список категорий отелей (примеры: 3*, 4*, Apts и т.д.).
- Формат запроса:
- ?action=GetHotelCategories
- Принимаемые параметры:
- id – идентификатор категории отеля (опциональный, передача в запрос нескольких id не обрабатывается, в этом случае возвращаются все результаты. Если указан, то запрашивается только одна запись)
- Возвращаемый результат:
- id – идентификатор категории отеля
- name – название категории отеля
- globalCode – глобальный код категории отеля
Вызов метода GetHotelCategories http://localhost:9000/TourSearchOwin/searchApi?action=GetHotelCategories
Возвращаемый результат метода GetHotelCategories (в формате JSON) {
"version": "1.08",
"hotelCategories": [
{
"id": 59,
"name": "5*"
"globalCode": "5*"
},
{
"id": 58,
"name": "4*"
"globalCode": null
},
{
"id": 57,
"name": "3*"
"globalCode": null
}
]
}
|
Выгрузка списка отелей (GetHotels)
Метод возвращает список всех доступных отелей, на которые есть актуальные цены.
- Формат запроса:
- ?action=GetHotels
- Принимаемые параметры:
- id – идентификатор отеля (опциональный, передача в запрос нескольких id не обрабатывается, в этом случае возвращаются все результаты. Если указан, то запрашивается только одна запись)
- Возвращаемый результат:
- id – идентификатор отеля
- name – название отеля
- hotelCategoryId – идентификатор категории отеля
- hotelCategoryName – название категории отеля
- resortId – идентификатор города, в котором расположен отель
- resortName – название города, в котором расположен отель
- areaId – идентификатор курорта, в котором расположен отель
- areaName – название курорта, в котором расположен отель
- address – адрес отеля
- phone – телефон отеля
- email – e-mail отеля
- fax – факс отеля
- http – адрес в интернете отеля
- latitude – GPS координаты: географическая широта (обрабатывается с релиза 15.6)
- longitude – GPS координаты: географическая долгота (обрабатывается с релиза 15.6)
- timeFrom – заезд в отель (обрабатывается с релиза 15.7)
- timeTo – выезд из отеля (обрабатывается с релиза 15.7)
- countryId – идентификатор страны, в которой расположен отель (обрабатывается с релиза 15.9)
- countryName – название страны, в которой расположен отель (обрабатывается с релиза 15.9)
Вызов метода GetHotels http://localhost:9000/TourSearchOwin/searchApi?action=GetHotels
Возвращаемый результат метода GetHotels (в формате JSON) {
"version": "1.08",
"hotels": [
{
"id": 112830,
"name": "0012",
"hotelCategoryId": 964,
"hotelCategoryName": "!!",
"resortId": 1464,
"resortName": "Адлер",
"areaId": 1187,
"areaName": "Amur Oblast",
"address": "",
"phone": "",
"email": "",
"fax": "",
"http": null,
"latitude": "",
"longitude": "",
"timeFrom": "",
"timeTo": "",
"countryId": 460,
"countryName": "Россия"
},
{
"id": 111884,
"name": "111",
"hotelCategoryId": 964,
"hotelCategoryName": "!!",
"resortId": 35,
"resortName": "Вена",
"areaId": -1,
"areaName": "Без курорта",
"address": "",
"phone": null,
"email": "",
"fax": null,
"http": null,
"latitude": null,
"longitude": null,
"timeFrom": "",
"timeTo": "",
"countryId": 90,
"countryName": "Австрия"
},
{
"id": 112827,
"name": "11111",
"hotelCategoryId": 964,
"hotelCategoryName": "!!",
"resortId": 1313,
"resortName": "Kazan",
"areaId": -1,
"areaName": "Без курорта",
"address": "",
"phone": "",
"email": "",
"fax": "",
"http": null,
"latitude": "",
"longitude": "",
"timeFrom": "",
"timeTo": "",
"countryId": 6259,
"countryName": "Russia"
},
{
"id": 12303,
"name": "4 Barcelona",
"hotelCategoryId": 964,
"hotelCategoryName": "!!",
"resortId": 19,
"resortName": "Барселона",
"areaId": -1,
"areaName": "Без курорта",
"address": null,
"phone": null,
"email": null,
"fax": null,
"http": null,
"latitude": null,
"longitude": null,
"timeFrom": "",
"timeTo": "",
"countryId": 84,
"countryName": "Испания"
}
]
}
|
Выгрузка описания и изображений отеля (GetHotelInfo) начиная с релиза 15.5
Метод возвращает описания и изображения запрашиваемого отеля.
- Формат запроса:
- ?action=GetHotelInfo
- Принимаемые параметры:
- hotelKey * – идентификатор отеля
- needImages – возвращать ли изображения отеля в ответе: 0 – не возвращать, 1 – возвращать.
- imageSize – варианты размера возвращаемых изображений. Обрабатывается только если передан параметр needImages = 1 и в этом случае является обязательным параметром. Возможные значения: 0 – small, 1 – medium, 2 – big.
- Возвращаемый результат:
- Images – массив изображений отеля
- Key – ключ изображения
- Description – описание изображения отеля
- Priority – приоритет изображения
- Image – изображение в byte array
- Country – страна отеля
- City – город отеля
- Name – название отеля
- HotelCategoryName – название категории отеля
- Address – адрес отеля
- Phone – телефон отеля
- Email – e-mail отеля
- Http – адрес в интернете отеля
- Description – описание
- InfrastructureHotel – инфраструктура отеля
- RecreationSport – развлечение и спорт
- Beach – пляж
- Healing – лечение
- Excursion – экскурсии
- AdditionalService – дополнительные услуги
- ForChildren – для детей
- AddCost – доплаты
- checkInTime – время заезда в отель (обрабатывается с релиза 15.6)
- checkOutTime – время выезда из отеля (обрабатывается с релиза 15.6)
- latitude – GPS координаты: географическая широта (обрабатывается с релиза 15.6)
- longitude – GPS координаты: географическая долгота (обрабатывается с релиза 15.6)
- Images – массив изображений отеля
Вызов метода GetHotelInfo http://localhost:9000/TourSearchOwin/searchApi?action=GetHotelInfo&hotelKey=8659&needImages=1&imageSize=2
Возвращаемый результат метода GetHotelInfo (в формате JSON) {
"version": "1.08",
"hotelInfoAndPhoto": {
"Images": [
{
"Key": 2618,
"Description": "Общий вид отеля",
"Priority": 1,
"Image": "iVBORw0KGgoAAAANSUhEUgAAARUAAAC0CAYAAAC62bgdSR0IArs4c6QAAAARnQU1BAA....."
},
{
"Key": 2786,
"Description": "Вид на бассейн",
"Priority": 2,
"Image": "/9j/4AAQSkZJRgABAQEBLAEsAAD/2wBDAAgGBgcGBQgHBwcJCQgKDBQNDAsLDBkSEw.....="
}
],
"Country": "Австрия",
"City": "Вена",
"Name": "ContinentalSun",
"HotelCategoryName": "HV",
"Address": "Ул. Пушкина, 100, Вена, Австрия",
"Phone": "+79991234567",
"Email": "sun@sun.com",
"Http": "www.sun.ru",
"Description": "<p>Описание<\/p>",
"InfrastructureHotel": "<p>Инфраструктура отеля<\/p>",
"RecreationSport": "<p>Развлечение и спорт<\/p>",
"Beach": "<p>Пляж<\/p>",
"Healing": "<p>Лечение<\/p>",
"Excursion": "<p>Экскурсии<\/p>",
"AdditionalService": "<p>Дополнительные услуги<\/p>",
"ForChildren": "<p>Для детей<\/p>",
"AddCost": "<p>Доплата<\/p>",
"checkInTime": null,
"checkOutTime": null,
"latitude": null,
"longitude": null
}
}
|
Выгрузка списка типов номеров (GetRooms) начиная с релиза 15.3
Метод возвращает список всех доступных типов номеров, на которые есть актуальные цены.
- Формат запроса:
- ?action=GetRooms
- Принимаемые параметры:
- id – идентификатор типа номера (опциональный, передача в запрос нескольких id не обрабатывается, в этом случае возвращаются все результаты. Если указан, то запрашивается только одна запись)
- Возвращаемый результат:
- id – идентификатор типа номера
- code – код типа номера
- name – название типа номера
- mainplaces – количество основных мест
- extraplaces – количество дополнительных мест
Вызов метода GetRooms http://localhost:9000/TourSearchOwin/searchApi?action=GetRooms
Возвращаемый результат метода GetRooms (в формате JSON) {
"version": "1.08",
"rooms": [
{
"id": 129,
"code": "DBL",
"name": "DBL",
"mainplaces": 2,
"extraplaces": 1
},
{
"id": 175,
"code": "DBL+CHD",
"name": "DBL+CHD",
"mainplaces": null,
"extraplaces": null
},
{
"id": 132,
"code": "DBL+EXB",
"name": "DBL+EXB",
"mainplaces": 2,
"extraplaces": 4
},
{
"id": 2,
"code": "Double1",
"name": "Double2",
"mainplaces": 2,
"extraplaces": 3
},
{
"id": 133,
"code": "SNGL",
"name": "SNGL",
"mainplaces": null,
"extraplaces": null
},
{
"id": 54,
"code": "SNGL+2 Child ",
"name": "Sngl+2 Child",
"mainplaces": 1,
"extraplaces": 0
},
{
"id": 173,
"code": "TPL",
"name": "TPL",
"mainplaces": null,
"extraplaces": null
}
]
}
|
Выгрузка списка типов номеров (GetRoomTypes) начиная с релиза 15.3
Метод возвращает список всех доступных категорий номеров, на которые есть актуальные цены.
- Формат запроса:
- ?action=GetRoomTypes
- Принимаемые параметры:
- id – идентификатор категории номера (опциональный, передача в запрос нескольких id не обрабатывается, в этом случае возвращаются все результаты. Если указан, то запрашивается только одна запись)
- Возвращаемый результат:
- id – идентификатор категории номера
- code – код категории номера
- name – название категории номера
Вызов метода GetRoomTypes http://localhost:9000/TourSearchOwin/searchApi?action=GetRoomTypes
Возвращаемый результат метода GetRoomTypes (в формате JSON) {
"version": "1.08",
"roomTypes": [
{
"id": 4129,
"code": "Cottage Premier Deluxe",
"name": "Cottage Premier Deluxe"
},
{
"id": 39,
"code": "Deluxe",
"name": "Deluxe"
},
{
"id": 2711,
"code": "Luxe",
"name": "Luxe"
},
{
"id": 4470,
"code": "Standard Room",
"name": "Standard Room"
}
]
}
|
Выгрузка списка типов размещения (GetHtPlaces) начиная с релиза 15.3
Метод возвращает список всех доступных типов размещений, на которые есть актуальные цены.
- Формат запроса:
- ?action=GetHtPlaces
- Принимаемые параметры:
- id – идентификатор типа размещения (опциональный, передача в запрос нескольких id не обрабатывается, в этом случае возвращаются все результаты. Если указан, то запрашивается только одна запись)
- Возвращаемый результат:
- id – идентификатор типа размещения
- code – код типа размещения
- name – название типа размещения
- adultmainplaces – количество основных мест для взрослых
- adultextraplaces – количество дополнительных мест для взрослых
- childtmainplaces – количество основных мест для детей
- childextraplaces – количество дополнительных мест для детей
- mainplaces – общее количество основных мест для взрослых и детей
- extraplaces – общее количество дополнительных мест для взрослых и детей
- childAges – коллекция возможных возрастов детей в размещении (указывается полный возраст, то есть 12 – это 12,99). Не поддерживается начиная с релиза 15.9, рекомендуется использовать childAgesMain и childAgesExtra.
- from – нижняя граница возраста первого ребенка
- to – верхняя граница возраста первого ребенка
- from – нижняя граница возраста второго ребенка
- to – верхняя граница возраста второго ребенка
- childAgesMain – коллекция возможных возрастов детей в размещении на основных местах (указывается полный возраст, то есть 12 – это 12,99)
- AgeFrom – нижняя граница возраста первого ребенка
- AgeTo – верхняя граница возраста первого ребенка
- AgeFrom – нижняя граница возраста второго ребенка
- AgeTo – верхняя граница возраста второго ребенка
- childAgesExtra – коллекция возможных возрастов детей в размещении на дополнительных местах (указывается полный возраст, то есть 12 - это 12,99)
- AgeFrom – нижняя граница возраста первого ребенка
- AgeTo – верхняя граница возраста первого ребенка
- AgeFrom – нижняя граница возраста второго ребенка
- AgeTo – верхняя граница возраста второго ребенка
Вызов метода GetHtPlaces http://localhost:9000/TourSearchOwin/searchApi?action=GetHtPlaces
Возвращаемый результат метода GetHtPlaces (в формате JSON) {
"version": "1.08",
"hotelPlaces": [
{
"id": 1235,
"code": "1 взр, 1 реб. на осн. месте (3-6), 1 реб. на доп. месте (6-12), 1 реб. без места (0-3)",
"name": "1 взр, 1 реб. на осн. месте (3-6), 1 реб. на доп. месте (6-12), 1 реб. без места (0-3)",
"adultmainplaces": 2,
"adultextraplaces": 0,
"childtmainplaces": 1,
"childextraplaces": 2,
"mainplaces": 3,
"extraplaces": 2,
"childAges": [
{
"from": null,
"to": null
},
{
"from": null,
"to": null
}
],
"childAgesMain": [
{
"AgeFrom": "3",
"AgeTo": "6"
}
],
"childAgesExtra": [
{
"AgeFrom": "6",
"AgeTo": "12"
},
{
"AgeFrom": "0",
"AgeTo": "3"
}
]
},
{
"id": 1575,
"code": "1 взр. + 1 реб. ( 5)",
"name": "1 взр. + 1 реб. ( 5)",
"adultmainplaces": 1,
"adultextraplaces": 0,
"childtmainplaces": 0,
"childextraplaces": 1,
"mainplaces": 1,
"extraplaces": 1,
"childAges": [
{
"from": 5,
"to": 5
},
{
"from": null,
"to": null
}
],
"childAgesMain": [],
"childAgesExtra": [
{
"AgeFrom": "5",
"AgeTo": "5"
}
]
},
{
"id": 1582,
"code": "1 взр. + 1 реб. ( 7)",
"name": "1 взр. + 1 реб. ( 7)",
"adultmainplaces": 1,
"adultextraplaces": 0,
"childtmainplaces": 0,
"childextraplaces": 1,
"mainplaces": 1,
"extraplaces": 1,
"childAges": [
{
"from": 7,
"to": 7
},
{
"from": null,
"to": null
}
],
"childAgesMain": [],
"childAgesExtra": [
{
"AgeFrom": "7",
"AgeTo": "7"
}
]
},
{
"id": 2006,
"code": "1 взр. + 1 реб. (5)",
"name": "1 взр. + 1 реб. (5)",
"adultmainplaces": 1,
"adultextraplaces": 0,
"childtmainplaces": 0,
"childextraplaces": 1,
"mainplaces": 1,
"extraplaces": 1,
"childAges": [
{
"from": null,
"to": null
},
{
"from": null,
"to": null
}
],
"childAgesMain": [],
"childAgesExtra": [
{
"AgeFrom": "5",
"AgeTo": "5"
}
]
}
]
}
|
Выгрузка видов питания (GetMeals)
Метод возвращает список видов питания (примеры: HB, BB, без питания и т.д.).
- Формат запроса:
- ?action=GetMeals
- Принимаемые параметры:
- id – идентификатор типа питания (опциональный, передача в запрос нескольких id не обрабатывается, в этом случае возвращаются все результаты. Если указан, то запрашивается только одна запись)
- Возвращаемый результат:
- id – идентификатор типа питания
- name – название типа питания
- code – код типа питания
- globalCode – глобальный код типа питания
Вызов метода GetMeals http://localhost:9000/TourSearchOwin/searchApi?action=GetMeals
Возвращаемый результат метода GetMeals (в формате JSON) {
"version": "1.08",
"meals": [
{
"id": 1,
"name": "Пансион"
"code": "HB",
"globalCode": "HB"
},
{
"id": 2,
"name": "Полупансион"
"code": "FB",
"globalCode": null
},
{
"id": 4,
"name": "Завтрак буфет"
"code": "BB",
"globalCode": null
},
{
"id": 11,
"name": "Шведский стол"
"code": "UAI",
"globalCode": "AI"
}
]
}
|
Выгрузка списка валют (GetCurrencies)
Метод возвращает список используемых валют.
- Формат запроса:
- ?action=GetCurrencies
- Принимаемые параметры:
- id – идентификатор валюты (опциональный, передача в запрос нескольких id не обрабатывается, в этом случае возвращаются все результаты. Если указан, то запрашивается только одна запись)
- Возвращаемый результат:
- id – идентификатор валюты
- name – название валюты
Вызов метода GetCurrencies http://localhost:9000/TourSearchOwin/searchApi?action=GetCurrencies
Возвращаемый результат метода GetCurrencies (в формате JSON) {
"version": "1.08",
"currencies": [
{
"id": 1,
"name": "USD"
},
{
"id": 2,
"name": "EUR"
},
{
"id": 3,
"name": "RUR"
},
{
"id": 9,
"name": "UAH"
}
]
}
|
Выгрузка курсов валют (GetCurrencyRates)
Метод возвращает список курсов валют, актуальных на дату запроса. Курсы отображаются только для тех валют, которые отмечены в справочнике признаком Отображать в онлайне
- Формат запроса:
- ?action=GetCurrencyRates
- Принимаемые параметры:
- dateFrom – начальная дата, от которой вывести список курсов валют, в формате DD.MM.YYYY, не обязательный параметр
- dateTo – конечная дата, до которой вывести список курсов валют, в формате DD.MM.YYYY, не обязательный параметр
- Возвращаемый результат:
- baseCurrencyId – идентификатор национальной валюты, либо произвольной валюты, указанной в настройке basketCurrency в конфигурационном файле (обрабатывается с релиза 15.6)
- currencyId – идентификатор валюты, курс которой приводится
- rate – курс валюты (отношение currencyId к baseCurrencyId)
- date – дата, на которую был зарегистрирован выводимый курс валюты
Вызов метода GetCurrencyRates http://localhost:9000/TourSearchOwin/searchApi?action=GetCurrencyRates&dateFrom=18.09.2024&dateTo=19.09.2024
Возвращаемый результат метода GetCurrencyRates (в формате JSON) {
"version": "1.08",
"currencyRates": [
{
"BaseCurrencyId": 14,
"CurrencyId": 1,
"Rate": 91.429200,
"Date": "18.09.2024"
},
{
"BaseCurrencyId": 14,
"CurrencyId": 2,
"Rate": 101.505700,
"Date": "18.09.2024"
},
{
"BaseCurrencyId": 14,
"CurrencyId": 1,
"Rate": 91.671200,
"Date": "19.09.2024"
},
{
"BaseCurrencyId": 14,
"CurrencyId": 2,
"Rate": 102.039000,
"Date": "19.09.2024"
}
]
}
|
Поиск туров (GetTours)
Метод поиска туров использует множество параметров для поиска и фильтрации туров. Метод возвращает наиболее дешевые предложения, найденные по предоставленным параметрам и сгруппированные по отелям (без учета группировки по турам) в порядке возрастания цены. Количество туров в выдаче регулируется параметром count.
- Формат запроса:
- ?action=GetTours&count=int&countryId=int&departCityId=int&dateFrom=date&dateTo=date&adults=int&kids=int&nightsMin=int&nightsMax=int¤cyId=int
- Принимаемые параметры ( * – обязательный):
- count * – максимальное количество предложений в выдаче.
- countryId * – идентификатор страны.
- departCityId * – идентификатор города вылета.
- dateFrom * – начальная дата в диапазоне дат вылета в формате dd.MM.yyyy (пример: 31.12.2016).
- dateTo * – конечная дата в диапазоне дат вылета в формате dd.MM.yyyy (пример: 31.12.2016).
- adults * – количество взрослых.
- kids * – количество детей.
- kidsAges – количество полных лет каждому ребенку, передается в виде строки, перечисление через запятую (пример: 3,6).
- nightsMin * – минимальное количество дней в туре (всегда запрашиваются дни тура, независимо он настройки осуществления поиска: в днях тура/в ночах тура/в ночах проживания в отеле).
- nightsMax * – максимальное количество дней в туре (всегда запрашиваются дни тура, независимо он настройки осуществления поиска: в днях тура/в ночах тура/в ночах проживания в отеле).
- resorts – идентификаторы городов, перечисление через запятую.
- areas – идентификаторы курортов, перечисление через запятую.
- tourTypeIds – идентификаторы типов тура, перечисление через запятую (начиная с релиза 15.4).
- tourProgramIds – идентификаторы программ туров, перечисление через запятую (начиная с релиза 15.4).
- hotelCategories – идентификаторы категорий отелей, перечисление через запятую.
- hotels – идентификаторы отелей, перечисление через запятую.
- meals – идентификаторы видов питания, перечисление через запятую.
- currencyId * – валюта, в которой будут выданы цены, а также валюта для входящих параметров priceMin и priceMax (если они есть).
- priceMin – Цена тура от.
- priceMax – Цена тура до.
- hotelIsNotInStop – при значении 1 в результатах не должно быть отелей в стопе (отели со статусом «под запрос» допустимы). При значении 0 в результат должны попадать как отели в стопе, так и отели с наличием мест и с местами по запросу.
- ticketsIncluded * – при значении 1 в результатах должны быть только туры с включенной стоимостью перелета («только отель» недопустимы). При значении 0 в результат должны попадать как туры без перелета, так и туры с перелетом.
- hasTickets – при значении 1 в результатах должны быть туры только с реальным наличием билетов в перелете (не должно быть туров со стопом на перелете, перелеты со статусом «под запрос» недопустимы). При значении 0 в результат должны попадать как туры без билетов на рейс, так и туры с наличием билетов и с билетами по запросу.
- hasQuotas – при значении 1 в результатах должны быть туры только с реальным наличием мест во всех квотируемых услугах (не должно быть туров с услугами со стопом или со статусом «под запрос»). При значении 0 в результат должны попадать как туры с услугами на стопе, так и туры с наличием мест по квотам и с местами по запросу.
- excludeUsualTours – при значении 1 из результатов должны быть исключены туры, являющиеся обычными турами (не являющиеся многоотельными). При значении 0 или отсутствии данного параметра такие туры должны быть включены в результат.
- excludeCombined – при значении 1 из результатов должны быть исключены туры, являющиеся многоотельными. При значении 0 или отсутствии данного параметра такие туры должны быть включены в результат.
- showToursWithoutHotels – при значении 1 в результатах поиска вместе с обычными турами должны подбираться туры без проживания (без услуги отель в составе тура). При значении 0 или отсутствии данного параметра такие туры должны быть исключены из результата поиска. Параметр обрабатывается, начиная с релиза 15.2.
- hasGDSFlight – подбирать туры с GDS перелетами. Параметр обрабатывается, начиная с релиза 15.5.
- 0 – подбирать любые туры, вне зависимости от того, есть в них GDS перелеты или нет (значение по умолчанию)
- 1 – подбирать туры только с локальными перелетами
- 2 – подбирать туры только с обязательными GDS перелетами
- 3 – подбирать туры только с необязательными GDS перелетами
- 4 – подбирать туры, в которых в одном направлении присутствует обязательный GDS перелет, а в другом направлении есть обязательный и необязательный GDS перелет (на двух вкладках в программе туров)
- hasGDSHotel – подбирать туры с GDS отелями. Параметр обрабатывается, начиная с релиза 15.5.
- 0 – подбирать любые туры, вне зависимости от того, есть в них GDS отели или нет (значение по умолчанию)
- 1 – подбирать туры только с локальными отелями
- 2 – подбирать туры только с GDS отелями
- Возвращаемый результат:
- offerId – уникальный идентификатор предложения, по которому в дальнейшем можно провести актуализацию тура.
- tourId – идентификатор программы тура.
- tourName – название программы тура.
- countryId – идентификатор страны.
- countryName – название страны.
- resortId – идентификатор города, в котором расположен отель.
- resortName – название города, в котором расположен отель.
- areaId – идентификатор курорта, в котором расположен отель.
- areaName – название курорта, в котором расположен отель.
- hotelId – идентификатор отеля.
- hotelName – название отеля.
- hotelUrl – ссылка на страницу с описанием отеля.
- hotelCategoryId – идентификатор категории отеля.
- hotelCategoryName – название категории отеля.
- roomId – идентификатор типа номера.
- roomName – название типа номера.
- roomTypeId – идентификатор категории номера.
- roomTypeName – название категории номера (примеры: standard, deluxe, family, deluxe super ocean view).
- htPlaceId – идентификатор типа размещения.
- htPlaceName – название типа размещения в номере (примеры: 2 ADL + 1 CH (2-12), 2 ADL + INF).
- mealId – идентификатор вида питания.
- mealName – название питания.
- tourDate – дата начала тура в формате dd.MM.yyyy (пример: 31.12.2016).
- tourEndDate – дата окончания тура (дата прилета) в формате dd.MM.yyyy (пример: 31.12.2016).
- nights – продолжительность тура в днях (всегда возвращается продолжительность тура в днях, независимо он настройки осуществления поиска: в днях тура/в ночах тура/в ночах проживания в отеле).
- price – цена тура в валюте, которая была указана во входном параметре currencyId.
- currencyId – идентификатор валюты.
- currencyName – ISO код валюты.
- hotelIsInStop – наличие мест в отеле, допустимы значения: 0 – есть места, 1 – нет мест, 2 – запрос.
- ticketsIncluded – включена ли стоимость билетов в стоимость тура, допустимы значения: 0 – не включена (тур только отель), 1 – включена (пакетный тур).
- hasEconomTicketsDpt – наличие билетов эконом класса из рассчитанной цены, допустимы значения: 0 – нет мест, 1 есть места, 2 – запрос. При значении атрибута ticketsIncluded = 0 значение данного параметра будет проигнорировано.
- hasAnotherEconomTicketsDpt – наличие билетов эконом класса из групп перелетов, допустимы значения: 0 – нет мест, 1 есть места, 2 – запрос. При значении атрибута ticketsIncluded = 0 значение данного параметра будет проигнорировано. Группы перелетов задаются в настройке flightTariffGroups.
- hasEconomTicketsRtn – наличие обратных билетов эконом класса из рассчитанной цены, допустимы значения: 0 – нет мест, 1 есть места, 2 – запрос. При значении атрибута ticketsIncluded = 0 значение данного параметра будет проигнорировано.
- hasAnotherEconomTicketsRtn – наличие обратных билетов эконом класса из групп перелетов, допустимы значения: 0 – нет мест, 1 есть места, 2 – запрос. При значении атрибута ticketsIncluded = 0 значение данного параметра будет проигнорировано. Группы перелетов задаются в настройке flightTariffGroups.
- hasBusinessTicketsDpt – наличие билетов бизнес класса из рассчитанной цены, допустимы значения: 0 – нет мест, 1 есть места, 2 – запрос. При значении атрибута ticketsIncluded = 0 значение данного параметра будет проигнорировано.
- hasAnotherBusinessTicketsDpt – наличие билетов бизнес класса из групп перелетов, допустимы значения: 0 – нет мест, 1 есть места, 2 – запрос. При значении атрибута ticketsIncluded = 0 значение данного параметра будет проигнорировано. Группы перелетов задаются в настройке flightTariffGroups.
- hasBusinessTicketsRtn – наличие обратных билетов бизнес класса из рассчитанной цены, допустимы значения: 0 – нет мест, 1 есть места, 2 – запрос. При значении атрибута ticketsIncluded = 0 значение данного параметра будет проигнорировано.
- hasAnotherBusinessTicketsRtn – наличие обратных билетов бизнес класса из групп перелетов, допустимы значения: 0 – нет мест, 1 есть места, 2 – запрос. При значении атрибута ticketsIncluded = 0 значение данного параметра будет проигнорировано. Группы перелетов задаются в настройке flightTariffGroups.
- hasGDSFlight – информация о GDS перелетах в туре: 1 – все перелеты локальные, 2 – хотя бы один перелет из GDS и его выбор обязателен, 3 – хотя бы один перелет из GDS и его выбор необязателен и нет обязательных перелетов из GDS. Начиная с релиза 15.5.
Если в туре используется перелет из GDS и мы получили в параметре hasGDSFlight 2 или 3, то для расчета стоимости перелетов после вызова GetTours необходимо вызвать ActualizeTour, а затем последовательно вызвать методы для получения цены регулярного перелета GetGDSFlights, RebuidFlights и CalculateReservation.
- hasGDSHotel – информация о GDS отелях в туре: 1 – локальный отель, 2 – хотя бы один отель из GDS. Начиная с релиза 15.5.
- tourUrl – ссылка на корзину (при переходе по которой можно забронировать тур), формируется сервисом ПК "Мастер-тур".
- spoUrl – ссылка на описание тура (указывается в программе тура).
- fewPlacesInHotel – числовое значение мест в отеле. По умолчанию поле возвращается с пустым значением. Если удовлетворяются условия, заданные в настройке "Мало", но не включена настройка "Отображать числовое значение оставшихся мест" в панели администрирования, то возвращается значение «-1». Если удовлетворяются условия, заданные в настройке "Мало" и включена настройка "Отображать числовое значение оставшихся мест", то возвращается числовое значение того количества мест, которое осталось.
- fewTicketsDptY – числовое значение мест прямого перелета эконом класса. По умолчанию поле возвращается с пустым значением. Если удовлетворяются условия, заданные в настройке "Мало", но не включена настройка "Отображать числовое значение оставшихся мест" в панели администрирования, то возвращается значение «-1». Если удовлетворяются условия, заданные в настройке "Мало" и включена настройка "Отображать числовое значение оставшихся мест", то возвращается числовое значение того количества мест, которое осталось.
- fewTicketsRtnY – числовое значение мест обратного перелета эконом класса. По умолчанию поле возвращается с пустым значением. Если удовлетворяются условия, заданные в настройке "Мало", но не включена настройка "Отображать числовое значение оставшихся мест" в панели администрирования, то возвращается значение «-1». Если удовлетворяются условия, заданные в настройке "Мало" и включена настройка "Отображать числовое значение оставшихся мест", то возвращается числовое значение того количества мест, которое осталось.
- fewTicketsDptB – числовое значение мест прямого перелета бизнес класса. По умолчанию поле возвращается с пустым значением. Если удовлетворяются условия, заданные в настройке "Мало", но не включена настройка "Отображать числовое значение оставшихся мест" в панели администрирования, то возвращается значение «-1». Если удовлетворяются условия, заданные в настройке "Мало" и включена настройка "Отображать числовое значение оставшихся мест", то возвращается числовое значение того количества мест, которое осталось.
- fewTicketsRtnB – числовое значение мест обратного перелета бизнес класса. По умолчанию поле возвращается с пустым значением. Если удовлетворяются условия, заданные в настройке "Мало", но не включена настройка "Отображать числовое значение оставшихся мест" в панели администрирования, то возвращается значение «-1». Если удовлетворяются условия, заданные в настройке "Мало" и включена настройка "Отображать числовое значение оставшихся мест", то возвращается числовое значение того количества мест, которое осталось.
- flags – если тур многоотельный, возвращается код 1024. Во всех остальных случаях возвращается 0.
- description – указывается информация о проживании. Если тур многоотельный, то указывается информация обо всех отелях в туре (пример: 1 н., Resort1, Hotel1, Standard, BB; 3 н., Resort2, Hotel2, Standard, BB; 2 н., Resort3, Hotel3, Standard, BB).
- receivingParty – параметр не обрабатывается.
- earlyBookingValidTill – параметр не обрабатывается.
- TourTypes – массив типов тура, привязанных к программе тура.
- Key – идентификатор типа тура.
- Value – название типа тура.
- hotelScheme – объект схемы отеля (для многоотельных туров - объект схемы первого отеля).
- templateId – идентификатор шаблона услуги.
- durationInNight – продолжительность отеля в ночах.
- code – ключ отеля.
- packetKey – ключ пакета.
- partnerKey – ключ партнера.
- gdsProviderId – ключ провайдера из внешней системы.
- totalTourDuration – общая продолжительность тура в днях.
- hotels – массив отелей, который соответствует количеству отелей в туре. Каждая запись массива содержит в себе информацию по одному отелю. Для многоотельных туров выводятся по порядку проживания в отелях.
- countryId – идентификатор страны
- countryName – название страны
- resortId – идентификатор города, в котором расположен отель
- resortName – название города, в котором расположен отель
- areaId – идентификатор курорта, в котором расположен отель
- areaName – название курорта, в котором расположен отель
- hotelId – идентификатор отеля
- hotelName – название отеля
- hotelUrl – ссылка на страницу с описанием отеля
- hotelCategoryId – идентификатор категории отеля
- hotelCategoryName – название категории отеля
- roomId – идентификатор типа номера
- roomName – название типа номера
- roomTypeId – идентификатор категории номера
- roomTypeName – название категории номера
- htPlaceId – идентификатор типа размещения
- htPlaceName – название типа размещения
- mealId – идентификатор питания
- mealName – название питания
- checkIn – дата заезда в отель
- checkOut – дата выезда из отеля
- checkInTime – время заезда в отель (обрабатывается с релиза 15.6)
- checkOutTime – время выезда из отеля (обрабатывается с релиза 15.6)
- latitude – GPS координаты: географическая широта (обрабатывается с релиза 15.6)
- longitude – GPS координаты: географическая долгота (обрабатывается с релиза 15.6)
- htNights – количество ночей в отеле
- hotelIsInStop – наличие мест в отеле, допустимы значения: 0 – есть места, 1 – нет мест, 2 – запрос
- isGDS – информация о том, локальный отель или из GDS системы: 0 – локальный отель, 1 – отель из GDS. Начиная с релиза 15.5.
- hotelScheme – объект схемы отеля
- templateId – идентификатор шаблона услуги
- durationInNight – продолжительность отеля в ночах
- code – ключ отеля
- packetKey – ключ пакета
- partnerKey – ключ партнера
- gdsProviderId – ключ провайдера из внешней системы
- totalTourDuration – общая продолжительность тура в днях
- services – массив услуг, которые входят в тур (заполняется по настройке showServiceDescription в конфигурационном файле TourSearchOwin, обрабатывается с релиза 15.6)
- ServiceType – класс услуги
- Code – код (ключ) услуги
- SubCode1 – доп. описание 1 услуги
- SubCode2 – доп. описание 2 услуги
- PacketId – ключ пакета цены услуги
- PartnerId – ключ партнера цены услуги (заполняется по настройке showServicePartner в конфигурационном файле TourSearchOwin, обрабатывается с релиза 15.6)
- CountryId – ключ страны услуги
- CityId – ключ города услуги
- DateBegin – дата предоставления услуги в формате dd.MM.yyyy (пример: 01.08.2020)
- DateEnd – дата окончания услуги в формате dd.MM.yyyy (пример: 01.08.2020)
- TimeBegin – время начала услуги в формате hh:mm (пример: 06:00), обрабатывается только для авиаперелетов и автобусных переездов
- TimeEnd – время окончания услуги в формате hh:mm (пример: 22:00), обрабатывается только для авиаперелетов и автобусных переездов
- Day – день предоставления услуги
- DurationInNight – продолжительность услуги в ночах
- GDSProviderId – ключ внешнего провайдера услуги (GDS)
- Name – название услуги
- Price – нетто стоимость услуги (заполняется по настройке showServiceNetto в конфигурационном файле TourSearchOwin, обрабатывается с релиза 15.6)
- Cost – брутто стоимость услуги (заполняется по настройке showServiceBrutto в конфигурационном файле TourSearchOwin, обрабатывается с релиза 15.6)
- Availability – результат проверки квоты по услуге: 0 – нет мест, 1 – есть места, 2 – запрос
- Tariffs – поле cs_trfid из таблицы tbl_costs. В ответе должны быть через запятую уникальные id этих тарифов, исходя из цен, по которым считалось
- nodeId – уникальный идентификатор узла в кластере балансировки нагрузки HaProxy
Вызов метода GetTours http://localhost:9000/TourSearchOwin/searchApi?action=GetTours&count=20&countryId=90&departCityId=1
&dateFrom=10.10.2018&dateTo=10.10.2018&ticketsIncluded=0&adults=2&kids=0&nightsMin=7&nightsMax=7¤cyId=1
Возвращаемый результат метода GetTours (в формате JSON) {
"version": "1.08",
"tours": [{
"offerId": 45,
"tourId": 100000004,
"tourName": "Общая проверка системы",
"countryId": 90,
"countryName": "Австрия",
"resortId": 35,
"resortName": "Вена",
"areaId": 1,
"areaName": "Каринтия",
"hotelId": 705,
"hotelName": "Continental",
"hotelUrl": "www.tophotels.com/NewHotel",
"hotelCategoryId": 70,
"hotelCategoryName": "Condotel",
"roomId": 165,
"roomName": "DBL",
"roomTypeId": 1939,
"roomTypeName": "Sea View",
"htPlaceId": 1238,
"htPlaceName": "2 ADL",
"mealId": 62,
"mealName": "BB",
"tourDate": "10.11.2018",
"tourEndDate": "21.11.2018",
"nights": 12,
"price": 15,
"currencyId": 1,
"currencyName": "$",
"hotelIsInStop": 2,
"ticketsIncluded": 1,
"hasEconomTicketsDpt": 2,
"hasEconomTicketsRtn": 2,
"hasBusinessTicketsDpt": 2,
"hasBusinessTicketsRtn": 2,
"tourUrl": "http://localhost/TourSearchClient/Basket?departureCities=1&destination=1_22&tour=161&date=10.08.16&duration=8&hotelScheme=1_7_3239_221_10760_98
&adultCount=2&hotelQuota=7&aviaQuota=7&serviceDescriptions=2_1_586_89_1_22_33_221_10760_1_0,
1_3_3239_1148_38_22_33_221_10760_1_7,3_1_587_89_33_460_1_221_10760_8_0¤cy=USD",
"hasGDSFlight ": 0,
"hasGDSHotel ": 0,
"spoUrl": "www.megatec.ru",
"fewPlacesInHotel": null,
"fewTicketsDptY": null,
"fewTicketsRtnY": null,
"fewTicketsDptB": null,
"fewTicketsRtnB": null,
"flags": 0,
"description": "10 н., Вена, Continental, 1 bedroom Sea View, BB",
"receivingParty": "",
"earlyBookingValidTill": "",
"TourTypes": [{
"Key": 2,
"Value": "Стандартный тур"
}],
"hotelScheme": {
"templateId": 1,
"durationInNight": 10,
"code": 705,
"packetKey": 779,
"partnerKey": 12667,
"gdsProviderId" 98,
"totalTourDuration" 11
}
"hotels": [{
"countryId": 90,
"countryName": "Австрия",
"resortId": 35,
"resortName": "Вена",
"areaId": 1,
"areaName": "Каринтия",
"hotelId": 705,
"hotelName": "Continental",
"hotelUrl": "www.tophotels.com/NewHotel",
"hotelCategoryId": 70,
"hotelCategoryName": "Condotel",
"roomId": 165,
"roomName": "DBL",
"roomTypeId": 1939,
"roomTypeName": "Sea View",
"htPlaceId": 1238,
"htPlaceName": "2 ADL",
"mealId": 62,
"mealName": "BB",
"checkIn": "2018-11-10T00:00:00",
"checkOut": "2018-11-16T00:00:00",
"checkInTime": null,
"checkOutTime": null,
"latitude": null,
"longitude": null,
"htNights": 6,
"hotelIsInStop": 2,
"isGDS": 0,
"hotelScheme": {
"templateId": 4,
"durationInNight": 6,
"code": 705,
"packetKey": 1083,
"partnerKey": 12695,
"gdsProviderId": 98,
"totalTourDuration": 7
}
},
{
"countryId": 90,
"countryName": "Австрия",
"resortId": 35,
"resortName": "Вена",
"areaId": 1,
"areaName": "Каринтия",
"hotelId": 178,
"hotelName": "Ananas",
"hotelUrl": "www.tophotels.com/NewHotelAnanas",
"hotelCategoryId": 63,
"hotelCategoryName": "5+",
"roomId": 165,
"roomName": "DBL",
"roomTypeId": 1939,
"roomTypeName": "Sea View",
"htPlaceId": 1238,
"htPlaceName": "2 ADL",
"mealId": 62,
"mealName": "BB",
"checkIn": "2018-11-16T00:00:00",
"checkOut": "2018-11-20T00:00:00",
"checkInTime": null,
"checkOutTime": null,
"latitude": null,
"longitude": null,
"htNights": 4,
"hotelIsInStop": 2,
"isGDS": 0,
"hotelScheme": {
"templateId": 3,
"durationInNight": 4,
"code": 178,
"packetKey": 1085,
"partnerKey": 12796,
"gdsProviderId" 98,
"totalTourDuration" 5
}
}]
},
"nodeId": 1
}
|
Поиск всех цен по туру (GetToursAllPrices) начиная с релиза 15.3
Метод поиска туров использует множество параметров для поиска и фильтрации туров. Метод возвращает цены, не сгруппированные по отелям. Количество туров в выдаче регулируется параметром count.
Существует возможность ограничить количество цен, отдаваемых методом GetToursAllPrices. Регулируется настройкой getToursAllPricesMaxCostCount.
- Формат запроса:
- ?action=GetToursAllPrices&count=int&countryId=int&departCityId=int&dateFrom=date&dateTo=date&adults=int&kids=int&nightsMin=int&nightsMax=int¤cyId=int
- Принимаемые параметры ( * – обязательный):
- offerId – уникальный идентификатор ранее найденного предложения. В случае, если данный параметр задан, все остальные параметры не обязательны и не принимаются в расчет, метод возвращает одну запись.
- count * – максимальное количество предложений в выдаче.
- countryId * – идентификатор страны.
- departCityId * – идентификатор города вылета.
- dateFrom * – начальная дата в диапазоне дат вылета в формате dd.MM.yyyy (пример: 31.12.2018).
- dateTo * – конечная дата в диапазоне дат вылета в формате dd.MM.yyyy (пример: 31.12.2018).
- adults * – количество взрослых.
- kids * – количество детей.
- kidsAges – количество полных лет каждому ребенку, передается в виде строки, перечисление через запятую (пример: 3,6).
- nightsMin * – минимальное количество дней в туре (всегда запрашиваются дни тура, независимо он настройки осуществления поиска: в днях тура/в ночах тура/в ночах проживания в отеле).
- nightsMax * – максимальное количество дней в туре (всегда запрашиваются дни тура, независимо он настройки осуществления поиска: в днях тура/в ночах тура/в ночах проживания в отеле).
- resorts – идентификаторы городов, перечисление через запятую.
- areas – идентификаторы курортов, перечисление через запятую.
- tourTypeIds – идентификаторы типов тура, перечисление через запятую (начиная с релиза 15.4).
- tourProgramIds – идентификаторы программ туров, перечисление через запятую (начиная с релиза 15.4).
- hotelCategories – идентификаторы категорий отелей, перечисление через запятую.
- hotels – идентификаторы отелей, перечисление через запятую.
- meals – идентификаторы видов питания, перечисление через запятую.
- currencyId * – валюта, в которой будут выданы цены, а также валюта для входящих параметров priceMin и priceMax (если они есть).
- priceMin – Цена тура от.
- priceMax – Цена тура до.
- hotelIsNotInStop – при значении 1 в результатах не должно быть отелей в стопе (отели со статусом «под запрос» допустимы). При значении 0 в результат должны попадать как отели в стопе, так и отели с наличием мест и с местами по запросу.
- ticketsIncluded * – при значении 1 в результатах должны быть только туры с включенной стоимостью перелета («только отель» недопустимы). При значении 0 в результат должны попадать как туры без перелета, так и туры с перелетом.
- hasTickets – при значении 1 в результатах должны быть туры только с реальным наличием билетов в перелете (не должно быть туров со стопом на перелете, перелеты со статусом «под запрос» недопустимы). При значении 0 в результат должны попадать как туры без билетов на рейс, так и туры с наличием билетов и с билетами по запросу.
- hasQuotas – при значении 1 в результатах должны быть туры только с реальным наличием мест во всех квотируемых услугах (не должно быть туров с услугами со стопом или со статусом «под запрос»). При значении 0 в результат должны попадать как туры с услугами на стопе, так и туры с наличием мест по квотам и с местами по запросу.
- excludeUsualTours – при значении 1 из результатов должны быть исключены туры, являющиеся обычными турами (не являющиеся многоотельными). При значении 0 или отсутствии данного параметра такие туры должны быть включены в результат.
- excludeCombined – при значении 1 из результатов должны быть исключены туры, являющиеся многоотельными. При значении 0 или отсутствии данного параметра такие туры должны быть включены в результат.
- hasGDSFlight – подбирать туры с GDS перелетами. Параметр обрабатывается, начиная с релиза 15.5.
- 0 – подбирать любые туры, вне зависимости от того, есть в них GDS перелеты или нет (значение по умолчанию)
- 1 – подбирать туры только с локальными перелетами
- 2 – подбирать туры только с обязательными GDS перелетами
- 3 – подбирать туры только с необязательными GDS перелетами
- 4 – подбирать туры, в которых в одном направлении присутствует обязательный GDS перелет, а в другом направлении есть обязательный и необязательный GDS перелет (на двух вкладках в программе туров)
- hasGDSHotel – подбирать туры с GDS отелями. Параметр обрабатывается, начиная с релиза 15.5.
- 0 – подбирать любые туры, вне зависимости от того, есть в них GDS отели или нет (значение по умолчанию)
- 1 – подбирать туры только с локальными отелями
- 2 – подбирать туры только с GDS отелями
- showToursWithoutHotels – при значении 1 в результатах поиска вместе с обычными турами должны подбираться туры без проживания (без услуги отель в составе тура). При значении 0 или отсутствии данного параметра такие туры должны быть исключены из результата поиска. Параметр обрабатывается, начиная с релиза 15.2.
- Sort – сортировка результатов. Возможно использование нескольких параметров через запятую. Если параметр не указан, то по умолчанию сортировка производится по возрастанию цены. Возможные значения:
- ByPrice – сортировка по цене по возрастанию.
- ByPrice_desc – сортировка по цене по убыванию.
- ByStartDate – сортировка по дате начала тура по возрастанию.
- ByStartDate_desc – сортировка по дате начала тура по убыванию.
- ByEndDate – сортировка по дате окончания тура по возрастанию.
- ByEndDate_desc – сортировка по дате окончания тура по убыванию.
- ByDuration – сортировка по продолжительности тура по возрастанию.
- ByDuration_desc – сортировка по продолжительности тура по убыванию.
- ByHotel – сортировка по названию отеля (для многоотельных туров сортировка по названию первого отеля).
- ByHotel_desc – сортировка по названию отеля в обратном порядке (для многоотельных туров сортировка по названию первого отеля в обратном порядке).
- ByHotelCategory – сортировка по названию категории отеля (для многоотельных туров сортировка по названию категории первого отеля).
- ByHotelCategory_desc – сортировка по названию категории отеля в обратном порядке (для многоотельных туров сортировка по названию категории первого отеля в обратном порядке).
- ByMeal – сортировка по названию питания (для многоотельных туров сортировка по названию питания первого отеля).
- ByMeal_desc – сортировка по названию питания в обратном порядке (для многоотельных туров сортировка по названию питания в обратном порядке первого отеля).
- ByResort – сортировка по названию курорта (для многоотельных туров сортировка по названию курорта первого отеля).
- ByResort_desc – сортировка по названию курорта в обратном порядке (для многоотельных туров сортировка по названию курорта в обратном порядке первого отеля).
- ByCity – сортировка по названию города (для многоотельных туров сортировка по названию города первого отеля).
- ByCity_desc – сортировка по названию города в обратном порядке (для многоотельных туров сортировка по названию города в обратном порядке первого отеля).
- ByTour – сортировка по названию программы тура.
- ByTour_desc – сортировка по названию программы тура в обратном порядке.
- PageNumber – порядковый номер страницы. Если задан парамер PageNumber, то использование параметра PageSize становится обязательным.
- PageSize – количество результатов на странице. Если задан парамер PageSize, то использование параметра PageNumber становится обязательным.
- Возвращаемый результат:
- offerId – уникальный идентификатор предложения, по которому в дальнейшем можно провести актуализацию тура.
- tourId – идентификатор программы тура.
- tourName – название программы тура.
- countryId – идентификатор страны.
- countryName – название страны.
- resortId – идентификатор города, в котором расположен отель.
- resortName – название города, в котором расположен отель.
- areaId – идентификатор курорта, в котором расположен отель.
- areaName – название курорта, в котором расположен отель.
- hotelId – идентификатор отеля.
- hotelName – название отеля.
- hotelUrl – ссылка на страницу с описанием отеля.
- hotelCategoryId – идентификатор категории отеля.
- hotelCategoryName – название категории отеля.
- roomId – идентификатор типа номера.
- roomName – название типа номера.
- roomTypeId – идентификатор категории номера.
- roomTypeName – название категории номера (примеры: standard, deluxe, family, deluxe super ocean view).
- htPlaceId – идентификатор типа размещения.
- htPlaceName – название типа размещения в номере (примеры: 2 ADL + 1 CH (2-12), 2 ADL + INF).
- mealId – идентификатор вида питания.
- mealName – название питания.
- tourDate – дата начала тура в формате dd.MM.yyyy (пример: 31.12.2016).
- tourEndDate – дата окончания тура (дата прилета) в формате dd.MM.yyyy (пример: 31.12.2016).
- nights – продолжительность тура в днях (всегда возвращается продолжительность тура в днях, независимо он настройки осуществления поиска: в днях тура/в ночах тура/в ночах проживания в отеле).
- price – цена тура в валюте, которая была указана во входном параметре currencyId.
- currencyId – идентификатор валюты.
- currencyName – ISO код валюты.
- hotelIsInStop – наличие мест в отеле, допустимы значения: 0 – есть места, 1 – нет мест, 2 – запрос.
- ticketsIncluded – включена ли стоимость билетов в стоимость тура, допустимы значения: 0 – не включена (тур только отель), 1 – включена (пакетный тур).
- hasEconomTicketsDpt – наличие билетов эконом класса из рассчитанной цены, допустимы значения: 0 – нет мест, 1 есть места, 2 – запрос. При значении атрибута ticketsIncluded = 0 значение данного параметра будет проигнорировано.
- hasAnotherEconomTicketsDpt – наличие билетов эконом класса из групп перелетов, допустимы значения: 0 – нет мест, 1 есть места, 2 – запрос. При значении атрибута ticketsIncluded = 0 значение данного параметра будет проигнорировано. Группы перелетов задаются в настройке flightTariffGroups.
- hasEconomTicketsRtn – наличие обратных билетов эконом класса из рассчитанной цены, допустимы значения: 0 – нет мест, 1 есть места, 2 – запрос. При значении атрибута ticketsIncluded = 0 значение данного параметра будет проигнорировано.
- hasAnotherEconomTicketsRtn – наличие обратных билетов эконом класса из групп перелетов, допустимы значения: 0 – нет мест, 1 есть места, 2 – запрос. При значении атрибута ticketsIncluded = 0 значение данного параметра будет проигнорировано. Группы перелетов задаются в настройке flightTariffGroups.
- hasBusinessTicketsDpt – наличие билетов бизнес класса из рассчитанной цены, допустимы значения: 0 – нет мест, 1 есть места, 2 – запрос. При значении атрибута ticketsIncluded = 0 значение данного параметра будет проигнорировано.
- hasAnotherBusinessTicketsDpt – наличие билетов бизнес класса из групп перелетов, допустимы значения: 0 – нет мест, 1 есть места, 2 – запрос. При значении атрибута ticketsIncluded = 0 значение данного параметра будет проигнорировано. Группы перелетов задаются в настройке flightTariffGroups.
- hasBusinessTicketsRtn – наличие обратных билетов бизнес класса из рассчитанной цены, допустимы значения: 0 – нет мест, 1 есть места, 2 – запрос. При значении атрибута ticketsIncluded = 0 значение данного параметра будет проигнорировано.
- hasAnotherBusinessTicketsRtn – наличие обратных билетов бизнес класса из групп перелетов, допустимы значения: 0 – нет мест, 1 есть места, 2 – запрос. При значении атрибута ticketsIncluded = 0 значение данного параметра будет проигнорировано. Группы перелетов задаются в настройке flightTariffGroups.
- hasGDSFlight – информация о GDS перелетах в туре: 1 – все перелеты локальные, 2 – хотя бы один перелет из GDS и его выбор обязателен, 3 – хотя бы один перелет из GDS и его выбор необязателен и нет обязательных перелетов из GDS. Начиная с релиза 15.5.
- hasGDSHotel – информация о GDS отелях в туре: 1 – локальный отель, 2 – хотя бы один отель из GDS. Начиная с релиза 15.5.
- tourUrl – ссылка на корзину (при переходе по которой можно забронировать тур).
- spoUrl – ссылка на описание тура (указывается в программе тура).
- fewPlacesInHotel – числовое значение мест в отеле. По умолчанию поле возвращается с пустым значением. Если удовлетворяются условия, заданные в настройке "Мало", но не включена настройка "Отображать числовое значение оставшихся мест" в панели администрирования, то возвращается значение «-1». Если удовлетворяются условия, заданные в настройке "Мало" и включена настройка "Отображать числовое значение оставшихся мест", то возвращается числовое значение того количества мест, которое осталось.
- fewTicketsDptY – числовое значение мест прямого перелета эконом класса. По умолчанию поле возвращается с пустым значением. Если удовлетворяются условия, заданные в настройке "Мало", но не включена настройка "Отображать числовое значение оставшихся мест" в панели администрирования, то возвращается значение «-1». Если удовлетворяются условия, заданные в настройке "Мало" и включена настройка "Отображать числовое значение оставшихся мест", то возвращается числовое значение того количества мест, которое осталось.
- fewTicketsRtnY – числовое значение мест обратного перелета эконом класса. По умолчанию поле возвращается с пустым значением. Если удовлетворяются условия, заданные в настройке "Мало", но не включена настройка "Отображать числовое значение оставшихся мест" в панели администрирования, то возвращается значение «-1». Если удовлетворяются условия, заданные в настройке "Мало" и включена настройка "Отображать числовое значение оставшихся мест", то возвращается числовое значение того количества мест, которое осталось.
- fewTicketsDptB – числовое значение мест прямого перелета бизнес класса. По умолчанию поле возвращается с пустым значением. Если удовлетворяются условия, заданные в настройке "Мало", но не включена настройка "Отображать числовое значение оставшихся мест" в панели администрирования, то возвращается значение «-1». Если удовлетворяются условия, заданные в настройке "Мало" и включена настройка "Отображать числовое значение оставшихся мест", то возвращается числовое значение того количества мест, которое осталось.
- fewTicketsRtnB – числовое значение мест обратного перелета бизнес класса. По умолчанию поле возвращается с пустым значением. Если удовлетворяются условия, заданные в настройке "Мало", но не включена настройка "Отображать числовое значение оставшихся мест" в панели администрирования, то возвращается значение «-1». Если удовлетворяются условия, заданные в настройке "Мало" и включена настройка "Отображать числовое значение оставшихся мест", то возвращается числовое значение того количества мест, которое осталось.
- flags – если тур многоотельный, возвращается код 1024. Во всех остальных случаях возвращается 0.
- description – указывается информация о проживании. Если тур многоотельный, то указывается информация обо всех отелях в туре (пример: 1 н., Resort1, Hotel1, Standard, BB; 3 н., Resort2, Hotel2, Standard, BB; 2 н., Resort3, Hotel3, Standard, BB).
- receivingParty – параметр не обрабатывается.
- earlyBookingValidTill – параметр не обрабатывается.
- TourTypes – массив типов тура, привязанных к программе тура.
- Key – идентификатор типа тура.
- Value – название типа тура.
- hotelScheme – объект схемы отеля (для многоотельных туров - объект схемы первого отеля).
- templateId – идентификатор шаблона услуги.
- durationInNight – продолжительность отеля в ночах.
- code – ключ отеля.
- packetKey – ключ пакета.
- partnerKey – ключ партнера.
- gdsProviderId – ключ провайдера из внешней системы.
- totalTourDuration – общая продолжительность тура в днях.
- hotels – массив отелей, который соответствует количеству отелей туре. Каждая запись массива содержит в себе информацию по одному отелю. Для многоотельных туров выводятся по порядку проживания в отелях.
- countryId – идентификатор страны
- countryName – название страны
- resortId – идентификатор города, в котором расположен отель
- resortName – название города, в котором расположен отель
- areaId – идентификатор курорта, в котором расположен отель
- areaName – название курорта, в котором расположен отель
- hotelId – идентификатор отеля
- hotelName – название отеля
- hotelUrl – ссылка на страницу с описанием отеля
- hotelCategoryId – идентификатор категории отеля
- hotelCategoryName – название категории отеля
- roomId – идентификатор типа номера
- roomName – название типа номера
- roomTypeId – идентификатор категории номера
- roomTypeName – название категории номера
- htPlaceId – идентификатор типа размещения
- htPlaceName – название типа размещения
- mealId – идентификатор питания
- mealName – название питания
- checkIn – дата заезда в отель
- checkOut – дата выезда из отеля
- CheckInTime – время заезда в отель (обрабатывается с релиза 15.6)
- CheckOutTime – время выезда из отеля (обрабатывается с релиза 15.6)
- latitude – GPS координаты: географическая широта (обрабатывается с релиза 15.6)
- longitude – GPS координаты: географическая долгота (обрабатывается с релиза 15.6)
- htNights – количество ночей в отеле
- hotelIsInStop – наличие мест в отеле, допустимы значения: 0 – есть места, 1 – нет мест, 2 – запрос
- isGDS – информация о том, локальный отель или из GDS системы: 0 – локальный отель, 1 – отель из GDS. Начиная с релиза 15.5.
- hotelScheme – объект схемы отеля
- templateId – идентификатор шаблона услуги
- durationInNight – продолжительность отеля в ночах
- code – ключ отеля
- packetKey – ключ пакета
- partnerKey – ключ партнера
- gdsProviderId – ключ провайдера из внешней системы
- totalTourDuration – общая продолжительность тура в днях
- services – массив услуг, которые входят в тур (заполняется по настройке showServiceDescription в конфигурационном файле TourSearchOwin, обрабатывается с релиза 15.6)
- ServiceType – класс услуги
- Code – код (ключ) услуги
- SubCode1 – доп. описание 1 услуги
- SubCode2 – доп. описание 2 услуги
- PacketId – ключ пакета цены услуги
- PartnerId – ключ партнера цены услуги (заполняется по настройке showServicePartner в конфигурационном файле TourSearchOwin, обрабатывается с релиза 15.6)
- CountryId – ключ страны услуги
- CityId – ключ города услуги
- DateBegin – дата предоставления услуги в формате dd.MM.yyyy (пример: 01.08.2020)
- DateEnd – дата окончания услуги в формате dd.MM.yyyy (пример: 01.08.2020)
- TimeBegin – время начала услуги в формате hh:mm (пример: 06:00), обрабатывается только для авиаперелетов и автобусных переездов
- TimeEnd – время окончания услуги в формате hh:mm (пример: 22:00), обрабатывается только для авиаперелетов и автобусных переездов
- Day – день предоставления услуги
- DurationInNight – продолжительность услуги в ночах
- GDSProviderId – ключ внешнего провайдера услуги (GDS)
- Name – название услуги
- Price – нетто стоимость услуги (заполняется по настройке showServiceNetto в конфигурационном файле TourSearchOwin, обрабатывается с релиза 15.6)
- Cost – брутто стоимость услуги (заполняется по настройке showServiceBrutto в конфигурационном файле TourSearchOwin, обрабатывается с релиза 15.6)
- Availability – результат проверки квоты по услуге: 0 – нет мест, 1 – есть места, 2 – запрос
- Tariffs – поле cs_trfid из таблицы tbl_costs. В ответе должны быть через запятую уникальные id этих тарифов, исходя из цен, по которым считалось
- nodeId – уникальный идентификатор узла в кластере балансировки нагрузки HaProxy
Вызов метода GetToursAllPrices http://localhost:9000/TourSearchOwin/searchApi?action=GetToursAllPrices&count=20&countryId=90&departCityId=1
&dateFrom=10.10.2018&dateTo=10.10.2018&ticketsIncluded=0&adults=2&kids=0&nightsMin=7&nightsMax=7¤cyId=1
&Sort=ByStartDate
Возвращаемый результат метода GetToursAllPrices (в формате JSON) {
"version": "1.08",
"tours": [{
"offerId": 45,
"tourId": 100000004,
"tourName": "Общая проверка системы",
"countryId": 90,
"countryName": "Австрия",
"resortId": 35,
"resortName": "Вена",
"areaId": 1,
"areaName": "Каринтия",
"hotelId": 705,
"hotelName": "Continental",
"hotelUrl": "www.tophotels.com/NewHotel",
"hotelCategoryId": 70,
"hotelCategoryName": "Condotel",
"roomId": 165,
"roomName": "DBL",
"roomTypeId": 1939,
"roomTypeName": "Sea View",
"htPlaceId": 1238,
"htPlaceName": "2 ADL",
"mealId": 62,
"mealName": "BB",
"tourDate": "10.11.2018",
"tourEndDate": "21.11.2018",
"nights": 12,
"price": 15,
"currencyId": 1,
"currencyName": "$",
"hotelIsInStop": 2,
"ticketsIncluded": 1,
"hasEconomTicketsDpt": 2,
"hasEconomTicketsRtn": 2,
"hasBusinessTicketsDpt": 2,
"hasBusinessTicketsRtn": 2,
"tourUrl": "http://localhost/TourSearchClient/Basket?departureCities=1&destination=1_22&tour=161&date=10.08.16&duration=8&hotelScheme=1_7_3239_221_10760_0
&adultCount=2&hotelQuota=7&aviaQuota=7&serviceDescriptions=2_1_586_89_1_22_33_221_10760_1_0,
1_3_3239_1148_38_22_33_221_10760_1_7,3_1_587_89_33_460_1_221_10760_8_0¤cy=USD",
"hasGDSFlight ": 0,
"hasGDSHotel ": 0,
"spoUrl": "www.megatec.ru",
"fewPlacesInHotel": null,
"fewTicketsDptY": null,
"fewTicketsRtnY": null,
"fewTicketsDptB": null,
"fewTicketsRtnB": null,
"flags": 0,
"description": "10 н., Вена, Continental, 1 bedroom Sea View, BB",
"receivingParty": "",
"earlyBookingValidTill": "",
"TourTypes": [{
"Key": 2,
"Value": "Стандартный тур"
}],
"hotelScheme": {
"templateId": 1,
"durationInNight": 10,
"code": 705,
"packetKey": 779,
"partnerKey": 12667,
"gdsProviderId": 0,
"totalTourDuration": 11
}
"hotels": [{
"countryId": 90,
"countryName": "Австрия",
"resortId": 35,
"resortName": "Вена",
"areaId": 1,
"areaName": "Каринтия",
"hotelId": 705,
"hotelName": "Continental",
"hotelUrl": "www.tophotels.com/NewHotel",
"hotelCategoryId": 70,
"hotelCategoryName": "Condotel",
"roomId": 165,
"roomName": "DBL",
"roomTypeId": 1939,
"roomTypeName": "Sea View",
"htPlaceId": 1238,
"htPlaceName": "2 ADL",
"mealId": 62,
"mealName": "BB",
"checkIn": "2018-11-10T00:00:00",
"checkOut": "2018-11-16T00:00:00",
"checkInTime": null,
"checkOutTime": null,
"latitude": null,
"longitude": null,
"htNights": 6,
"hotelIsInStop": 2,
"isGDS": 0,
"hotelScheme": {
"templateId": 4,
"durationInNight": 6,
"code": 705,
"packetKey": 1083,
"partnerKey": 12695,
"gdsProviderId" 0,
"totalTourDuration": 7
}
},
{
"countryId": 90,
"countryName": "Австрия",
"resortId": 35,
"resortName": "Вена",
"areaId": 1,
"areaName": "Каринтия",
"hotelId": 178,
"hotelName": "Ananas",
"hotelUrl": "www.tophotels.com/NewHotelAnanas",
"hotelCategoryId": 63,
"hotelCategoryName": "5+",
"roomId": 165,
"roomName": "DBL",
"roomTypeId": 1939,
"roomTypeName": "Sea View",
"htPlaceId": 1238,
"htPlaceName": "2 ADL",
"mealId": 62,
"mealName": "BB",
"checkIn": "2018-11-16T00:00:00",
"checkOut": "2018-11-20T00:00:00",
"checkInTime": null,
"checkOutTime": null,
"latitude": null,
"longitude": null,
"htNights": 4,
"hotelIsInStop": 2,
"isGDS": 0,
"hotelScheme": {
"templateId": 3,
"durationInNight": 4,
"code": 178,
"packetKey": 1085,
"partnerKey": 12796,
"gdsProviderId" 0,
"totalTourDuration": 5
}
}]
},
"nodeId": 1
}
|
Поиск минимальных цен по каждому варианту питания (GetToursAllPricesPansion) начиная с релиза 15.9
Метод поиска туров использует множество параметров для поиска и фильтрации туров. Метод возвращает минимальные цены по каждому варианту питания, сгруппированные по отелям. Количество туров в выдаче регулируется параметром count.
- Формат запроса:
- ?action=GetToursAllPricesPansion&count=int&countryId=int&departCityId=int&dateFrom=date&dateTo=date&adults=int&kids=int&nightsMin=int&nightsMax=int¤cyId=int
- Принимаемые параметры ( * – обязательный):
- count * – максимальное количество предложений в выдаче.
- countryId * – идентификатор страны.
- departCityId * – идентификатор города вылета.
- dateFrom * – начальная дата в диапазоне дат вылета в формате dd.MM.yyyy (пример: 31.12.2024).
- dateTo * – конечная дата в диапазоне дат вылета в формате dd.MM.yyyy (пример: 31.12.2024).
- adults * – количество взрослых.
- kids * – количество детей.
- kidsAges – количество полных лет каждому ребенку, передается в виде строки, перечисление через запятую (пример: 3,6).
- nightsMin * – минимальное количество дней в туре (всегда запрашиваются дни тура, независимо от настройки осуществления поиска: в днях тура/в ночах тура/в ночах проживания в отеле).
- nightsMax * – максимальное количество дней в туре (всегда запрашиваются дни тура, независимо от настройки осуществления поиска: в днях тура/в ночах тура/в ночах проживания в отеле).
- resorts – идентификаторы городов, перечисление через запятую.
- areas – идентификаторы курортов, перечисление через запятую.
- tourTypeIds – идентификаторы типов тура, перечисление через запятую.
- tourProgramIds – идентификаторы программ туров, перечисление через запятую.
- hotelCategories – идентификаторы категорий отелей, перечисление через запятую.
- hotels – идентификаторы отелей, перечисление через запятую.
- meals – идентификаторы видов питания, перечисление через запятую.
- currencyId * – валюта, в которой будут выданы цены, а также валюта для входящих параметров priceMin и priceMax (если они есть).
- priceMin – Цена тура от.
- priceMax – Цена тура до.
- hotelIsNotInStop – при значении 1 в результатах не должно быть отелей в стопе (отели со статусом «под запрос» допустимы). При значении 0 в результат должны попадать как отели в стопе, так и отели с наличием мест и с местами по запросу.
- ticketsIncluded * – при значении 1 в результатах должны быть только туры с включенной стоимостью перелета («только отель» недопустимы). При значении 0 в результат должны попадать как туры без перелета, так и туры с перелетом.
- hasTickets – при значении 1 в результатах должны быть туры только с реальным наличием билетов в перелете (не должно быть туров со стопом на перелете, перелеты со статусом «под запрос» недопустимы). При значении 0 в результат должны попадать как туры без билетов на рейс, так и туры с наличием билетов и с билетами по запросу.
- hasQuotas – при значении 1 в результатах должны быть туры только с реальным наличием мест во всех квотируемых услугах (не должно быть туров с услугами со стопом или со статусом «под запрос»). При значении 0 в результат должны попадать как туры с услугами на стопе, так и туры с наличием мест по квотам и с местами по запросу.
- excludeUsualTours – при значении 1 из результатов должны быть исключены туры, являющиеся обычными турами (не являющиеся многоотельными). При значении 0 или отсутствии данного параметра такие туры должны быть включены в результат.
- excludeCombined – при значении 1 из результатов должны быть исключены туры, являющиеся многоотельными. При значении 0 или отсутствии данного параметра такие туры должны быть включены в результат.
- hasGDSFlight – подбирать туры с GDS перелетами.
- 0 – подбирать любые туры, вне зависимости от того, есть в них GDS перелеты или нет (значение по умолчанию)
- 1 – подбирать туры только с локальными перелетами
- 2 – подбирать туры только с обязательными GDS перелетами
- 3 – подбирать туры только с необязательными GDS перелетами
- 4 – подбирать туры, в которых в одном направлении присутствует обязательный GDS перелет, а в другом направлении есть обязательный и необязательный GDS перелет (на двух вкладках в программе туров)
- hasGDSHotel – подбирать туры с GDS отелями.
- 0 – подбирать любые туры, вне зависимости от того, есть в них GDS отели или нет (значение по умолчанию)
- 1 – подбирать туры только с локальными отелями
- 2 – подбирать туры только с GDS отелями
- Возвращаемый результат:
- offerId – уникальный идентификатор предложения, по которому в дальнейшем можно провести актуализацию тура.
- tourId – идентификатор программы тура.
- tourName – название программы тура.
- countryId – идентификатор страны.
- countryName – название страны.
- resortId – идентификатор города, в котором расположен отель.
- resortName – название города, в котором расположен отель.
- areaId – идентификатор курорта, в котором расположен отель.
- areaName – название курорта, в котором расположен отель.
- hotelId – идентификатор отеля.
- hotelName – название отеля.
- hotelUrl – ссылка на страницу с описанием отеля.
- hotelCategoryId – идентификатор категории отеля.
- hotelCategoryName – название категории отеля.
- roomId – идентификатор типа номера.
- roomName – название типа номера.
- roomTypeId – идентификатор категории номера.
- roomTypeName – название категории номера (примеры: standard, deluxe, family, deluxe super ocean view).
- htPlaceId – идентификатор типа размещения.
- htPlaceName – название типа размещения в номере (примеры: 2 ADL + 1 CH (2-12), 2 ADL + INF).
- mealId – идентификатор вида питания.
- mealName – название питания.
- tourDate – дата начала тура в формате dd.MM.yyyy (пример: 30.12.2024).
- tourEndDate – дата окончания тура (дата прилета) в формате dd.MM.yyyy (пример: 31.12.2024).
- nights – продолжительность тура в днях (всегда возвращается продолжительность тура в днях, независимо от настройки осуществления поиска: в днях тура/в ночах тура/в ночах проживания в отеле).
- price – цена тура в валюте, которая была указана во входном параметре currencyId.
- currencyId – идентификатор валюты.
- currencyName – ISO код валюты.
- hotelIsInStop – наличие мест в отеле, допустимы значения: 0 – есть места, 1 – нет мест, 2 – запрос.
- ticketsIncluded – включена ли стоимость билетов в стоимость тура, допустимы значения: 0 – не включена (тур только отель), 1 – включена (пакетный тур).
- hasEconomTicketsDpt – наличие билетов эконом класса из рассчитанной цены, допустимы значения: 0 – нет мест, 1 есть места, 2 – запрос. При значении атрибута ticketsIncluded = 0 значение данного параметра будет проигнорировано.
- hasEconomTicketsRtn – наличие обратных билетов эконом класса из рассчитанной цены, допустимы значения: 0 – нет мест, 1 есть места, 2 – запрос. При значении атрибута ticketsIncluded = 0 значение данного параметра будет проигнорировано.
- hasBusinessTicketsDpt – наличие билетов бизнес класса из рассчитанной цены, допустимы значения: 0 – нет мест, 1 есть места, 2 – запрос. При значении атрибута ticketsIncluded = 0 значение данного параметра будет проигнорировано.
- hasBusinessTicketsRtn – наличие обратных билетов бизнес класса из рассчитанной цены, допустимы значения: 0 – нет мест, 1 есть места, 2 – запрос. При значении атрибута ticketsIncluded = 0 значение данного параметра будет проигнорировано.
- hasAnotherEconomTicketsDpt – наличие билетов эконом класса из групп перелетов, допустимы значения: 0 – нет мест, 1 есть места, 2 – запрос. При значении атрибута ticketsIncluded = 0 значение данного параметра будет проигнорировано. Группы перелетов задаются в настройке flightTariffGroups.
- hasAnotherEconomTicketsRtn – наличие обратных билетов эконом класса из групп перелетов, допустимы значения: 0 – нет мест, 1 есть места, 2 – запрос. При значении атрибута ticketsIncluded = 0 значение данного параметра будет проигнорировано. Группы перелетов задаются в настройке flightTariffGroups.
- hasAnotherBusinessTicketsDpt – наличие билетов бизнес класса из групп перелетов, допустимы значения: 0 – нет мест, 1 есть места, 2 – запрос. При значении атрибута ticketsIncluded = 0 значение данного параметра будет проигнорировано. Группы перелетов задаются в настройке flightTariffGroups.
- hasAnotherBusinessTicketsRtn – наличие обратных билетов бизнес класса из групп перелетов, допустимы значения: 0 – нет мест, 1 есть места, 2 – запрос. При значении атрибута ticketsIncluded = 0 значение данного параметра будет проигнорировано. Группы перелетов задаются в настройке flightTariffGroups.
- hasGDSFlight – информация о GDS перелетах в туре: 1 – все перелеты локальные, 2 – хотя бы один перелет из GDS и его выбор обязателен, 3 – хотя бы один перелет из GDS и его выбор необязателен и нет обязательных перелетов из GDS.
- hasGDSHotel – информация о GDS отелях в туре: 1 – локальный отель, 2 – хотя бы один отель из GDS.
- tourUrl – ссылка на корзину (при переходе по которой можно забронировать тур).
- spoUrl – ссылка на описание тура (указывается в программе тура).
- fewPlacesInHotel – числовое значение мест в отеле. По умолчанию поле возвращается с пустым значением. Если удовлетворяются условия, заданные в настройке "Мало", но не включена настройка "Отображать числовое значение оставшихся мест" в панели администрирования, то возвращается значение «-1». Если удовлетворяются условия, заданные в настройке "Мало" и включена настройка "Отображать числовое значение оставшихся мест", то возвращается числовое значение того количества мест, которое осталось.
- fewTicketsDptY – числовое значение мест прямого перелета эконом класса. По умолчанию поле возвращается с пустым значением. Если удовлетворяются условия, заданные в настройке "Мало", но не включена настройка "Отображать числовое значение оставшихся мест" в панели администрирования, то возвращается значение «-1». Если удовлетворяются условия, заданные в настройке "Мало" и включена настройка "Отображать числовое значение оставшихся мест", то возвращается числовое значение того количества мест, которое осталось.
- fewTicketsRtnY – числовое значение мест обратного перелета эконом класса. По умолчанию поле возвращается с пустым значением. Если удовлетворяются условия, заданные в настройке "Мало", но не включена настройка "Отображать числовое значение оставшихся мест" в панели администрирования, то возвращается значение «-1». Если удовлетворяются условия, заданные в настройке "Мало" и включена настройка "Отображать числовое значение оставшихся мест", то возвращается числовое значение того количества мест, которое осталось.
- fewTicketsDptB – числовое значение мест прямого перелета бизнес класса. По умолчанию поле возвращается с пустым значением. Если удовлетворяются условия, заданные в настройке "Мало", но не включена настройка "Отображать числовое значение оставшихся мест" в панели администрирования, то возвращается значение «-1». Если удовлетворяются условия, заданные в настройке "Мало" и включена настройка "Отображать числовое значение оставшихся мест", то возвращается числовое значение того количества мест, которое осталось.
- fewTicketsRtnB – числовое значение мест обратного перелета бизнес класса. По умолчанию поле возвращается с пустым значением. Если удовлетворяются условия, заданные в настройке "Мало", но не включена настройка "Отображать числовое значение оставшихся мест" в панели администрирования, то возвращается значение «-1». Если удовлетворяются условия, заданные в настройке "Мало" и включена настройка "Отображать числовое значение оставшихся мест", то возвращается числовое значение того количества мест, которое осталось.
- flags – если тур многоотельный, возвращается код 1024. Во всех остальных случаях возвращается 0.
- description – указывается информация о проживании. Если тур многоотельный, то указывается информация обо всех отелях в туре (пример: 1 н., Resort1, Hotel1, Standard, BB; 3 н., Resort2, Hotel2, Standard, BB; 2 н., Resort3, Hotel3, Standard, BB).
- receivingParty – параметр не обрабатывается.
- earlyBookingValidTill – параметр не обрабатывается.
- TourTypes – массив типов тура, привязанных к программе тура.
- Key – идентификатор типа тура.
- Value – название типа тура.
- hotelScheme – объект схемы отеля (для многоотельных туров - объект схемы первого отеля).
- templateId – идентификатор шаблона услуги.
- durationInNight – продолжительность отеля в ночах.
- code – ключ отеля.
- packetKey – ключ пакета.
- partnerKey – ключ партнера.
- gdsProviderId – ключ провайдера из внешней системы.
- totalTourDuration – общая продолжительность тура в днях.
- hotels – массив отелей, который соответствует количеству отелей туре. Каждая запись массива содержит в себе информацию по одному отелю. Для многоотельных туров выводятся по порядку проживания в отелях.
- countryId – идентификатор страны
- countryName – название страны
- resortId – идентификатор города, в котором расположен отель
- resortName – название города, в котором расположен отель
- areaId – идентификатор курорта, в котором расположен отель
- areaName – название курорта, в котором расположен отель
- hotelId – идентификатор отеля
- hotelName – название отеля
- hotelUrl – ссылка на страницу с описанием отеля
- hotelCategoryId – идентификатор категории отеля
- hotelCategoryName – название категории отеля
- roomId – идентификатор типа номера
- roomName – название типа номера
- roomTypeId – идентификатор категории номера
- roomTypeName – название категории номера
- htPlaceId – идентификатор типа размещения
- htPlaceName – название типа размещения
- mealId – идентификатор питания
- mealName – название питания
- checkIn – дата заезда в отель
- checkOut – дата выезда из отеля
- CheckInTime – время заезда в отель
- CheckOutTime – время выезда из отеля
- latitude – GPS координаты: географическая широта
- longitude – GPS координаты: географическая долгота
- htNights – количество ночей в отеле
- hotelIsInStop – наличие мест в отеле, допустимы значения: 0 – есть места, 1 – нет мест, 2 – запрос
- isGDS – информация о том, локальный отель или из GDS системы: 0 – локальный отель, 1 – отель из GDS.
- hotelScheme – объект схемы отеля
- templateId – идентификатор шаблона услуги
- durationInNight – продолжительность отеля в ночах
- code – ключ отеля
- packetKey – ключ пакета
- partnerKey – ключ партнера
- gdsProviderId – ключ провайдера из внешней системы
- totalTourDuration – общая продолжительность тура в днях
- services – массив услуг, которые входят в тур (заполняется по настройке showServiceDescription в конфигурационном файле TourSearchOwin)
- ServiceType – класс услуги
- Code – код (ключ) услуги
- SubCode1 – доп. описание 1 услуги
- SubCode2 – доп. описание 2 услуги
- PacketId – ключ пакета цены услуги
- PartnerId – ключ партнера цены услуги (заполняется по настройке showServicePartner в конфигурационном файле TourSearchOwin)
- CountryId – ключ страны услуги
- CityId – ключ города услуги
- DateBegin – дата предоставления услуги в формате dd.MM.yyyy (пример: 01.08.2020)
- DateEnd – дата окончания услуги в формате dd.MM.yyyy (пример: 01.08.2020)
- TimeBegin – время начала услуги в формате hh:mm (пример: 06:00), обрабатывается только для авиаперелетов и автобусных переездов
- TimeEnd – время окончания услуги в формате hh:mm (пример: 22:00), обрабатывается только для авиаперелетов и автобусных переездов
- Day – день предоставления услуги
- DurationInNight – продолжительность услуги в ночах
- GDSProviderId – ключ внешнего провайдера услуги (GDS)
- Name – название услуги
- Price – нетто стоимость услуги (заполняется по настройке showServiceNetto в конфигурационном файле TourSearchOwin)
- Cost – брутто стоимость услуги (заполняется по настройке showServiceBrutto в конфигурационном файле TourSearchOwin)
- Availability – результат проверки квоты по услуге: 0 – нет мест, 1 – есть места, 2 – запрос
- Tariffs – поле cs_trfid из таблицы tbl_costs. В ответе должны быть через запятую уникальные id этих тарифов, исходя из цен, по которым считалось
- nodeId – уникальный идентификатор узла в кластере балансировки нагрузки HaProxy
Вызов метода GetToursAllPrices http://localhost:9000/TourSearchOwin/searchApi?action=GetToursAllPricesPansion&count=20&countryId=90&departCityId=1
&dateFrom=10.12.2024&dateTo=10.12.2024&ticketsIncluded=0&adults=2&kids=0&nightsMin=7&nightsMax=7¤cyId=1
Возвращаемый результат метода GetToursAllPricesPansion (в формате JSON) {
{
"version": "1.08",
"tours": [
{
"offerId": 101,
"tourId": 100011396,
"tourName": "AustriaNEMOALLTEST",
"countryId": 90,
"countryName": "Австрия",
"resortId": 35,
"resortName": "Вена",
"areaId": 1,
"areaName": "Карентия",
"hotelId": 12610,
"hotelName": "Отель для удаления 56",
"hotelUrl": null,
"hotelCategoryId": 668,
"hotelCategoryName": "1*",
"roomId": 132,
"roomName": "DBL+EXB",
"roomTypeId": 26,
"roomTypeName": "Colonial Wings room",
"htPlaceId": 1238,
"htPlaceName": "2 ADL",
"mealId": 46,
"mealName": "RO2",
"tourDate": "10.12.2024",
"tourEndDate": "17.12.2024",
"nights": 8,
"price": 27.0,
"currencyId": 1,
"currencyName": "USD",
"hotelIsInStop": 2,
"ticketsIncluded": 1,
"hasEconomTicketsDpt": 0,
"hasEconomTicketsRtn": 2,
"hasBusinessTicketsDpt": 2,
"hasBusinessTicketsRtn": 0,
"hasAnotherEconomTicketsDpt": 0,
"hasAnotherEconomTicketsRtn": 0,
"hasAnotherBusinessTicketsDpt": 0,
"hasAnotherBusinessTicketsRtn": 0,
"hasGDSFlight": 2,
"hasGDSHotel": 1,
"tourUrl": "http://localhost/TourSearchClient/Basket?departureCities=1&destination=1_90&tour=100011396&date=10.12.24&duration=7&hotelScheme=2_6_12610_779_12685_0_8&adultCount=2&hotelQuota=7&aviaQuota=7&busTransferQuota=7&serviceDescriptions=1_0_1_1_1043_67_1_90_35_1037_12792_1_1,2_0_0_3_12610_66717_46_90_35_779_12685_2_6,3_1_1_1_1076_89_35_460_1_1037_12792_8_0¤cy=USD",
"spoUrl": null,
"fewPlacesInHotel": null,
"fewTicketsDptY": null,
"fewTicketsRtnY": null,
"fewTicketsDptB": null,
"fewTicketsRtnB": null,
"flags": 0,
"description": "6 н., Вена, Отель для удаления 56, Colonial Wings room, RO2",
"receivingParty": "",
"earlyBookingValidTill": "",
"TourTypes": [
{
"Key": 2,
"Value": "Стандартный тур"
}
],
"hotelScheme": {
"templateId": 2,
"durationInNight": 6,
"code": 12610,
"packetKey": 779,
"partnerKey": 12685,
"gdsProviderId": null,
"totalTourDuration": 8
},
"hotels": [
{
"countryId": 90,
"countryName": "Австрия",
"resortId": 35,
"resortName": "Вена",
"areaId": 1,
"areaName": "Карентия",
"hotelId": 12610,
"hotelName": "Отель для удаления 56",
"hotelUrl": null,
"hotelCategoryId": 668,
"hotelCategoryName": "1*",
"roomId": 132,
"roomName": "DBL+EXB",
"roomTypeId": 26,
"roomTypeName": "Colonial Wings room",
"htPlaceId": 1238,
"htPlaceName": "2 ADL",
"mealId": 46,
"mealName": "RO2",
"checkIn": "11.12.2024",
"checkOut": "17.12.2024",
"checkInTime": "14:00",
"checkOutTime": "8:00",
"latitude": "4.123840°",
"longitude": "36.300000°",
"htNights": 6,
"hotelIsInStop": 2,
"isGDS": 0,
"hotelScheme": {
"templateId": 2,
"durationInNight": 6,
"code": 12610,
"packetKey": 779,
"partnerKey": 12685,
"gdsProviderId": null,
"totalTourDuration": 8
}
}
],
"services": [
{
"ServiceType": 1,
"Code": 1043,
"SubCode1": 67,
"SubCode2": 1,
"PacketId": 1037,
"PartnerId": null,
"CountryId": 90,
"CityId": 35,
"DateBegin": "10.12.2024",
"DateEnd": "11.12.2024",
"TimeBegin": "16:00",
"TimeEnd": "6:00",
"Day": 1,
"DurationInNight": 0,
"GDSProviderId": 82,
"Name": "А_П::Москва/Вена/SU2354, SVO4-VIE1, 16:00-06:00/C Бизнес класс",
"Price": null,
"Cost": null,
"Availability": 2,
"Tariffs": [
0
]
},
{
"ServiceType": 3,
"Code": 12610,
"SubCode1": 66717,
"SubCode2": 46,
"PacketId": 779,
"PartnerId": null,
"CountryId": 90,
"CityId": 35,
"DateBegin": "11.12.2024",
"DateEnd": "17.12.2024",
"TimeBegin": null,
"TimeEnd": null,
"Day": 2,
"DurationInNight": 6,
"GDSProviderId": null,
"Name": "HOTEL::Вена/Отель для удаления 56-1*,6 [nights]/DBL+EXB(Colonial Wings room),2 ADL/RO2 RO2",
"Price": null,
"Cost": null,
"Availability": 2,
"Tariffs": [
1
]
},
{
"ServiceType": 1,
"Code": 1076,
"SubCode1": 89,
"SubCode2": 35,
"PacketId": 1037,
"PartnerId": null,
"CountryId": 460,
"CityId": 1,
"DateBegin": "17.12.2024",
"DateEnd": "17.12.2024",
"TimeBegin": "17:00",
"TimeEnd": "21:00",
"Day": 8,
"DurationInNight": 0,
"GDSProviderId": 82,
"Name": "А_П::Вена/Москва/SU2355, VIE1-SVO4, 17:00-21:00/Y Basic (ручная кладь 20х30х40)",
"Price": null,
"Cost": null,
"Availability": 2,
"Tariffs": [
0
]
}
]
},
{
"offerId": 102,
"tourId": 100006755,
"tourName": "Общая проверка системы (М_2)",
"countryId": 90,
"countryName": "Австрия",
"resortId": 35,
"resortName": "Вена",
"areaId": -1,
"areaName": null,
"hotelId": 8661,
"hotelName": "Continental5 Gardırop veya dolap, El dezenfektanı, Çay / Kah",
"hotelUrl": "https://yandex.ruGardırop veya ",
"hotelCategoryId": 64,
"hotelCategoryName": "3*",
"roomId": 141,
"roomName": "2AD",
"roomTypeId": 1939,
"roomTypeName": "1 bedroom Jacuzzi Suite",
"htPlaceId": 1238,
"htPlaceName": "2 ADL",
"mealId": 63,
"mealName": "HH для удаления3",
"tourDate": "10.12.2024",
"tourEndDate": "17.12.2024",
"nights": 8,
"price": 110.0,
"currencyId": 1,
"currencyName": "USD",
"hotelIsInStop": 2,
"ticketsIncluded": 1,
"hasEconomTicketsDpt": 2,
"hasEconomTicketsRtn": 2,
"hasBusinessTicketsDpt": 0,
"hasBusinessTicketsRtn": 0,
"hasAnotherEconomTicketsDpt": 2,
"hasAnotherEconomTicketsRtn": 2,
"hasAnotherBusinessTicketsDpt": 0,
"hasAnotherBusinessTicketsRtn": 0,
"hasGDSFlight": 1,
"hasGDSHotel": 1,
"tourUrl": "http://localhost/TourSearchClient/Basket?departureCities=1&destination=1_90&tour=100006755&date=10.12.24&duration=7&hotelScheme=1_6_8661_779_12667_0_8&adultCount=2&hotelQuota=7&aviaQuota=7&busTransferQuota=7&serviceDescriptions=3_17_17_1_1397_89_1_90_35_779_10760_1_0,18_0_0_2_1137_30_0_90_275_779_11246_1_0,1_0_0_3_8661_47289_63_90_35_779_12667_1_6,4_5_4_1_1059_285_35_460_1_779_10760_7_1¤cy=USD",
"spoUrl": "www.megatec.ru",
"fewPlacesInHotel": null,
"fewTicketsDptY": null,
"fewTicketsRtnY": null,
"fewTicketsDptB": null,
"fewTicketsRtnB": null,
"flags": 0,
"description": "6 н., Вена, Continental5 Gardırop veya dolap, El dezenfektanı, Çay / Kah, 1 bedroom Jacuzzi Suite, HH3",
"receivingParty": "",
"earlyBookingValidTill": "",
"TourTypes": [
{
"Key": 2,
"Value": "Стандартный тур"
}
],
"hotelScheme": {
"templateId": 1,
"durationInNight": 6,
"code": 8661,
"packetKey": 779,
"partnerKey": 12667,
"gdsProviderId": null,
"totalTourDuration": 8
},
"hotels": [
{
"countryId": 90,
"countryName": "Австрия",
"resortId": 35,
"resortName": "Вена",
"areaId": -1,
"areaName": null,
"hotelId": 8661,
"hotelName": "Continental5 Gardırop veya dolap, El dezenfektanı, Çay / Kah",
"hotelUrl": "https://yandex.ruGardırop veya ",
"hotelCategoryId": 64,
"hotelCategoryName": "3*",
"roomId": 141,
"roomName": "2AD",
"roomTypeId": 1939,
"roomTypeName": "1 bedroom Jacuzzi Suite",
"htPlaceId": 1238,
"htPlaceName": "2 ADL",
"mealId": 63,
"mealName": "HH для удаления3",
"checkIn": "10.12.2024",
"checkOut": "16.12.2024",
"checkInTime": null,
"checkOutTime": null,
"latitude": "48.074409°",
"longitude": "15.971374°",
"htNights": 6,
"hotelIsInStop": 2,
"isGDS": 0,
"hotelScheme": {
"templateId": 1,
"durationInNight": 6,
"code": 8661,
"packetKey": 779,
"partnerKey": 12667,
"gdsProviderId": null,
"totalTourDuration": 8
}
}
],
"services": [
{
"ServiceType": 1,
"Code": 1397,
"SubCode1": 89,
"SubCode2": 1,
"PacketId": 779,
"PartnerId": null,
"CountryId": 90,
"CityId": 35,
"DateBegin": "10.12.2024",
"DateEnd": "10.12.2024",
"TimeBegin": "1:35",
"TimeEnd": "2:40",
"Day": 1,
"DurationInNight": 0,
"GDSProviderId": null,
"Name": "А_П::Москва/Вена/AT234, DME-VIE1, 01:35-02:40/Y Basic (ручная кладь 20х30х40)",
"Price": null,
"Cost": null,
"Availability": 2,
"Tariffs": [
0
]
},
{
"ServiceType": 2,
"Code": 1137,
"SubCode1": 30,
"SubCode2": 0,
"PacketId": 779,
"PartnerId": null,
"CountryId": 90,
"CityId": 275,
"DateBegin": "10.12.2024",
"DateEnd": "10.12.2024",
"TimeBegin": null,
"TimeEnd": null,
"Day": 1,
"DurationInNight": 0,
"GDSProviderId": null,
"Name": "Трансфер::Арльберг/Копия\r ТРАНСФЕР_12 (Аэропорт не выбран - отель не выбран)/Coach 14 чел.",
"Price": null,
"Cost": null,
"Availability": 1,
"Tariffs": null
},
{
"ServiceType": 3,
"Code": 8661,
"SubCode1": 47289,
"SubCode2": 63,
"PacketId": 779,
"PartnerId": null,
"CountryId": 90,
"CityId": 35,
"DateBegin": "10.12.2024",
"DateEnd": "16.12.2024",
"TimeBegin": null,
"TimeEnd": null,
"Day": 1,
"DurationInNight": 6,
"GDSProviderId": null,
"Name": "HOTEL::Вена/Continental5 Gardırop veya dolap, El dezenfektanı, Çay / Kah-3*,6 [nights]/2AD(1 bedroom Jacuzzi Suite),2 ADL/HH3 HH для удаления3",
"Price": null,
"Cost": null,
"Availability": 2,
"Tariffs": [
0
]
},
{
"ServiceType": 1,
"Code": 1059,
"SubCode1": 285,
"SubCode2": 35,
"PacketId": 779,
"PartnerId": null,
"CountryId": 460,
"CityId": 1,
"DateBegin": "16.12.2024",
"DateEnd": "17.12.2024",
"TimeBegin": "20:00",
"TimeEnd": "2:00",
"Day": 7,
"DurationInNight": 0,
"GDSProviderId": null,
"Name": "А_П::Вена/Москва/AT333, VIE1-DME, 20:00-02:00/DAF Бизнес класс",
"Price": null,
"Cost": null,
"Availability": 2,
"Tariffs": [
0
]
}
]
},
"nodeId": 1
}
|
Актуализация тура (ActualizeTour)
Метод служит для получения окончательной цены тура (со всеми обязательными доплатами и сборами), списка включенных в стоимость тура услуг, а также вариантов перелета, возможных дополнительных услуг и доплат по ним. Метод должен возвращать цену самой дешевой конфигурации запрашиваемого предложения. Для корректной работы метода необходимо, чтобы offerId был уникален для предложений с разным составом группы туристов, даже в случае если все прочие параметры предложений совпадают.
- Формат запроса:
- ?action=ActualizeTour
- Принимаемые параметры ( * – обязательный):
- offerId * – уникальный идентификатор ранее найденного предложения.
- currencyId * – валюта, в которой рассчитывается цена и доплаты.
- nodeId – уникальный идентификатор узла в кластере балансировки нагрузки HaProxy
Значение nodeid берется из ответов gettours и gettourallprices Значение nodeid для каждого запроса методов gettours и gettourallprices берется из конфига службы поиска (если не указан, то берется предопределенное значение 2147483647). Полученное значение необходимо сопоставлять для каждого offerid.
- Возвращаемый результат ( * – обязательный):
- price * – актуализированная цена тура в валюте, которая была указана во входном параметре currencyId.
- ticketsIsIncluded * – включена ли стоимость билетов в стоимость тура, допустимы значения: 0 – не включена (тур только отель), 1 – включена (пакетный тур).
- hotelIsInStop – наличие мест в отеле, допустимы значения: 0 – есть места, 1 – нет мест, 2 – запрос.
- hasEconomTicketsDpt – наличие билетов эконом класса из рассчитанной цены, допустимы значения: 0 – нет мест, 1 есть места, 2 – запрос. При значении атрибута ticketsIncluded = 0 значение данного параметра будет проигнорировано.
- hasAnotherEconomTicketsDpt – наличие билетов эконом класса из групп перелетов, допустимы значения: 0 – нет мест, 1 есть места, 2 – запрос. При значении атрибута ticketsIncluded = 0 значение данного параметра будет проигнорировано. Группы перелетов задаются в настройке flightTariffGroups.
- hasEconomTicketsRtn – наличие обратных билетов эконом класса из рассчитанной цены, допустимы значения: 0 – нет мест, 1 есть места, 2 – запрос. При значении атрибута ticketsIncluded = 0 значение данного параметра будет проигнорировано.
- hasAnotherEconomTicketsRtn – наличие обратных билетов эконом класса из групп перелетов, допустимы значения: 0 – нет мест, 1 есть места, 2 – запрос. При значении атрибута ticketsIncluded = 0 значение данного параметра будет проигнорировано. Группы перелетов задаются в настройке flightTariffGroups.
- hasBusinessTicketsDpt – наличие билетов бизнес класса из рассчитанной цены, допустимы значения: 0 – нет мест, 1 есть места, 2 – запрос. При значении атрибута ticketsIncluded = 0 значение данного параметра будет проигнорировано.
- hasAnotherBusinessTicketsDpt – наличие билетов бизнес класса из групп перелетов, допустимы значения: 0 – нет мест, 1 есть места, 2 – запрос. При значении атрибута ticketsIncluded = 0 значение данного параметра будет проигнорировано. Группы перелетов задаются в настройке flightTariffGroups.
- hasBusinessTicketsRtn – наличие обратных билетов бизнес класса из рассчитанной цены, допустимы значения: 0 – нет мест, 1 есть места, 2 – запрос. При значении атрибута ticketsIncluded = 0 значение данного параметра будет проигнорировано.
- hasAnotherBusinessTicketsRtn – наличие обратных билетов бизнес класса из групп перелетов, допустимы значения: 0 – нет мест, 1 есть места, 2 – запрос. При значении атрибута ticketsIncluded = 0 значение данного параметра будет проигнорировано. Группы перелетов задаются в настройке flightTariffGroups.
- fewPlacesInHotel – числовое значение мест в отеле. По умолчанию поле возвращается с пустым значением. Если удовлетворяются условия, заданные в настройке "Мало", но не включена настройка "Отображать числовое значение оставшихся мест" в панели администрирования, то возвращается значение «-1». Если удовлетворяются условия, заданные в настройке "Мало" и включена настройка "Отображать числовое значение оставшихся мест", то возвращается числовое значение того количества мест, которое осталось.
- fewEconomTicketsDpt – числовое значение мест прямого перелета эконом класса. По умолчанию поле возвращается с пустым значением. Если удовлетворяются условия, заданные в настройке "Мало", но не включена настройка "Отображать числовое значение оставшихся мест" в панели администрирования, то возвращается значение «-1». Если удовлетворяются условия, заданные в настройке "Мало" и включена настройка "Отображать числовое значение оставшихся мест", то возвращается числовое значение того количества мест, которое осталось.
- fewEconomTicketsRtn – числовое значение мест обратного перелета эконом класса. По умолчанию поле возвращается с пустым значением. Если удовлетворяются условия, заданные в настройке "Мало", но не включена настройка "Отображать числовое значение оставшихся мест" в панели администрирования, то возвращается значение «-1». Если удовлетворяются условия, заданные в настройке "Мало" и включена настройка "Отображать числовое значение оставшихся мест", то возвращается числовое значение того количества мест, которое осталось.
- fewBusinessTicketsDpt – числовое значение мест прямого перелета бизнес класса. По умолчанию поле возвращается с пустым значением. Если удовлетворяются условия, заданные в настройке "Мало", но не включена настройка "Отображать числовое значение оставшихся мест" в панели администрирования, то возвращается значение «-1». Если удовлетворяются условия, заданные в настройке "Мало" и включена настройка "Отображать числовое значение оставшихся мест", то возвращается числовое значение того количества мест, которое осталось.
- fewBusinessTicketsRtn – числовое значение мест обратного перелета бизнес класса. По умолчанию поле возвращается с пустым значением. Если удовлетворяются условия, заданные в настройке "Мало", но не включена настройка "Отображать числовое значение оставшихся мест" в панели администрирования, то возвращается значение «-1». Если удовлетворяются условия, заданные в настройке "Мало" и включена настройка "Отображать числовое значение оставшихся мест", то возвращается числовое значение того количества мест, которое осталось.
- tourUrl – ссылка на корзину (при переходе по которой можно забронировать тур).
- services – список услуг, которые могут быть в туре
- id * – идентификатор услуги, уникальный в рамках данного предложения.
- type * – Тип услуги. Может принимать одно из следующих значений:
- HotelInfo – отель
- Insurance – страховка
- DptTransport – перелет туда
- RtnTransport – перелет обратно
- MidDptTransport – промежуточный перелет туда (при пересадке)
- MidRtnTransport – промежуточный перелет обратно (при пересадке)
- AdditionalService – дополнительная услуга
- Transfer – трансфер
- Excursion – экскурсия
- Visa – виза
- name * – наименование услуги
- isIncluded * – включена ли данная услуга в стоимость текущей конфигурации тура, допустимы значения: 0 – не включена, 1 – включена.
- description – описание услуги в произвольной форме (не обрабатывается).
- surcharge – стоимость услуги.
- flightCompatibleIds – совместимые перелеты. Идентификаторы услуг перелетов, представленных в секции services, которые могут применяться совместно с текущей услугой перелета. Для перелета туда заполняется id перелетов обратно и наоборот. Применяется и является обязательным только для услуг типа: DptTransport, RtnTransport, MidDptTransport, MidRtnTransport.
- flightClass – класс перелета. Группы перелетов для классов задаются в настройке flightTariffGroups. Применяется и является обязательным только для услуг типа: DptTransport, RtnTransport, MidDptTransport, MidRtnTransport. Может принимать одно из следующих значений:
- ECONOM – эконом
- BUSINESS – бизнес
- flightAvailability – наличие билетов, допустимы значения: 0 – нет мест, 1 есть места, 2 – запрос. Применяется и является обязательным только для услуг типа: DptTransport, RtnTransport, MidDptTransport, MidRtnTransport.
- flightPlacesCount – параметр не обрабатывается, всегда возвращается -1.
- flightAirportFrom – код аэропорта вылета. Применяется и является обязательным только для услуг типа: DptTransport, RtnTransport, MidDptTransport, MidRtnTransport.
- flightAirportTo – код аэропорта прилета. Применяется и является обязательным только для услуг типа: DptTransport, RtnTransport, MidDptTransport, MidRtnTransport.
- flightNum – код авиакомпании и номер рейса. Применяется и является обязательным только для услуг типа: DptTransport, RtnTransport.
- flightAirline – код авиакомпании. Применяется только для услуг типа: DptTransport, RtnTransport, MidDptTransport, MidRtnTransport.
- flightStartDateTime – Дата и время вылета в формате dd.MM.yyyy HH:mm (пример: 31.12.2016 14:30). Применяется только для услуг типа: DptTransport, RtnTransport, MidDptTransport, MidRtnTransport.
- flightEndDateTime – Дата и время прилета в формате dd.MM.yyyy HH:mm (пример: 31.12.2016 14:30). Применяется только для услуг типа: DptTransport, RtnTransport, MidDptTransport, MidRtnTransport.
- flightAircraft – тип самолета. Применяется только для услуг типа: DptTransport, RtnTransport, MidDptTransport, MidRtnTransport.
- isGDS – информация о том, локальный отель или из GDS системы: 0 – локальный отель, 1 – отель из GDS. Начиная с релиза 15.5.
- cancelationPolicy – информация о правилах аннуляции из GDS систем. Начиная с релиза 15.5.
- Date – дата наступления штрафа
- Amount – величина штрафа
- Currency – валюта штрафа
- Info – информация по штрафу
- bookingAdditionalInfo – информация об отеле из GDS систем. Начиная с релиза 15.5.
- DateFrom – дата действия предложения с
- DateTo – дата действия предложения по
- Message – информация
Начиная с релиза 15.8 был добавлен блок flightGDSRequest, возвращающий данные по внешним перелетам. Если в туре используется перелет из GDS, то ответ из секции flightGDSRequest метода API ActualizeTour передается в метод GetGDSFlights. Далее для получения цены выполняем методы RebuidFlights и CalculateReservation.
- flightGDSRequest – общий блок информации о внешних перелетах
- flightsSource – блок, который возвращает информацию по перелетам
- flightSettings – информация о шаблоне услуги авиаперелета
- templateId – идентификатор шаблона услуги
- patternId – идентификатор паттерна услуги (внутренняя информация из программы туров)
- serviceId – идентификатор класса услуги (внутренняя информация из программы туров)
- service – информация об услуге авиаперелета
- ServiceType – тип услуги
- Code – ключ услуги
- SubCode1 – доп. описание 1
- SubCode2 – доп. описание 2
- CountryId – страна услуги
- CityId – город услуги
- PacketId – пакет услуги
- PartnerId – партнер услуги
- Day – день предоставления услуги
- DurationInNight – продолжительность услуги в ночах
- price – стоимость перелета
- quotaInfo – объект информация по квотам
- status – статус по квотам (есть места / нет мест / под запрос)
- freePlaces – количество свободных мест, если удовлетворяются условия, заданные в настройке "Мало" и включена настройка "Отображать числовое значение оставшихся мест". Иначе возвращается 0. Если в данном параметре 0, то руководствоваться следует значением, полученном в параметре PlacesStatus.
- isFewPlaces – выполнены ли условия, заданные в настройке "Мало": true – если заданы условия количества мест "Мало" и данные условия выполнены, false – если не заданы условия количества мест "Мало" или они заданы, но не выполнены.
- flightDateTimeLimitationInterval –
- startLimitation – начало тайм-лимита
- finishLimitation – объект тайм-лимита
- dateTimeString – дата окончания тайм-лимита
- serviceType – тип услуги
- serviceCode – код услуги
- flightSourceMode – тип перелета (1 – локальный, 2 – из внешний системы)
- passengers – информация о пассажирах
- IsMain – главный турист
- Number – порядковый номер туриста
- AgeType – тип туриста (0 – взрослый, 1 – ребенок, 2 – инфант)
- MaleFemaleSex – пол (0 – мужской, 1 – женский)
- FirstName – имя (лат)
- LastName – фамилия (лат)
- Patronymic – отчество (лат)
- FirstNameRus – имя (рус)
- LastNameRus – фамилия (рус)
- PatronymicRus – отчество (рус)
- InternationalPassportSeries – серия загранпаспорта
- InternationalPassportNumber – номер загранпаспорта
- InternationalPassportDateOfIssue – дата выдачи загранпаспорта (YYYY-MM-DDThh:mm:ssz)
- InternationalPassportDateOfIssueString – дата выдачи загранпаспорта в строке (DD.MM.YYYY)
- InternationalPassportDateOfExpiry – дата окончания действия загранпаспорта (YYYY-MM-DDThh:mm:ssz)
- InternationalPassportDateOfExpiryString – дата окончания действия загранпаспорта в строке (DD.MM.YYYY)
- internationalPassportByWhom – кем выдан загранпаспорт
- PassportSeries – серия паспорта
- PassportNumber – номер паспорта
- PassportDateOfIssue – дата выдачи паспорта (YYYY-MM-DDThh:mm:ssz)
- PassportDateOfIssueString – дата выдачи паспорта в строке (DD.MM.YYYY)
- PassportByWhom – кем выдан паспорт
- Citizenship – название страны
- Phone – телефон
- Email – e-mail
- BirthDay – дата рождения (YYYY-MM-DDThh:mm:ssz)
- BirthDayString – дата рождения в строковом формате (DD.MM.YYYY)
- BirthPlace – место рождения
- CitizenID – гражданство
- Age – количество полных лет на момент окончания тура
- tourDate – дата тура
- tourCurrency – валюта тура
- tourId – ключ программы тура
- filterTariff – информация о тарифах
- filterDeptime – информация о времени вылета
- isCommission – признак комиссионной цены
- baseFlightsParams – параметра авиаперелета
- CityArrival – город прибытия
- FlightCode – код авиаперелета
- TariffKey – ключ тарифа
- PartnerId – ключ партнера
- isUpdated – информация об обновлении перелета
- key – ключ запроса
- tourDurationByDays – продолжительность перелета
- langueCode – локализация
- flightSettings – информация о шаблоне услуги авиаперелета
- flightsSource – блок, который возвращает информацию по перелетам
- flightGDSRequest – общий блок информации о внешних перелетах
Начиная с релиза 15.9 был добавлен блок servicesCalculateReservations (регулируется настройкой showServiceDescriptionForActualizeTour в конфигурационном файле TourSearchOwin), возвращающий детальную информацию об услугах в туре, идентичную методу Tour или Simple.
- showServiceDescriptionForActualizeTour – общий блок информации об услугах в туре
- {} – блок, который возвращает информацию по услугам
- 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 – время прилета
- TotalTimeOfFlight – полное время перелета
- FlightDetails – детали авиаперелета
- Tariff – информация о тарифе перелета
- Key – идентификатор
- Code – код тарифа
- Name – наименование тарифа
- IsCommission – признак, комиссионная ли услуга
- Cost – разница в стоимости с самым дешевым вариантом
- QuotaStatus – информация о квоте
- PlacesStatus – статус по квотам (есть места / нет мест / под запрос)
- FreePlaces – количество свободных мест, если удовлетворяются условия, заданные в настройке "Мало" и включена настройка "Отображать числовое значение оставшихся мест". Иначе возвращается 0. Если в данном параметре 0, то руководствоваться следует значением, полученном в параметре PlacesStatus.
- IsFewPlaces – выполнены ли условия, заданные в настройке "Мало": true – если заданы условия количества мест "Мало" и данные условия выполнены, false – если не заданы условия количества мест "Мало" или они заданы, но не выполнены.
- PartnerId – ключ партнера
- ByPax – цена за человека (true/false)
- Partner – информация о партнере
- Key – идентификатор
- Value – наименование
- Tariff – информация о тарифе перелета
- FlightSetting – информация о шаблоне услуги авиаперелета
- ServiceId – идентификатор класса услуги (внутренняя информация из программы туров)
- PatternId – идентификатор паттерна услуги (внутренняя информация из программы туров)
- FlightId – идентификатор внешнего перелета
- FlightSourceMode – локальный или внешний перелет (внутренняя информация из программы туров)
- Id – идентификатор базового шаблона услуги (внутренняя информация из программы туров)
- SvKey – ключ типа услуги
- IsSubCode1 – признак наличия доп. описания 1
- IsSubCode2 – признак наличия доп. описания 2
- IsPartnerBasedOn – признак услуга с приоритетным подбором поставщика
- Day – день предоставления услуги
- DurationInNight – продолжительность услуги в ночах
- BeginDateTime – дата предоставления услуги
- EndDateTime – дата окончания услуги
- IsHooded – признак скрытая услуга
- IsDeleted – признак удаляемая услуга
- IsNotCalculate – признак не рассчитываемая услуга
- PacketId – ключ пакета
- Index – порядковый номер услуги
- DepartureCity – город отправления
- {} – блок, который возвращает информацию по услугам
- showServiceDescriptionForActualizeTour – общий блок информации об услугах в туре
- Hotel – отель
- Key – ключ отеля
- Value – наименование отеля
- City – город
- Key – ключ города
- Value – наименование города
- Stars – категория отеля
- Key – ключ категории отеля
- Value – наименование категории отеля
- StarsGlobalCode – глобальный код категории отеля
- Key – глобальный ключ категории отеля
- Value – наименование категории отеля
- Resort – курорт
- Key – ключ курорта
- Value – наименование курорта
- ImageURL – ссылка на лого отеля
- Http – ссылка на сайт отеля
- Description – описание
- Latitude – GPS координаты: географическая широта
- Longitude – GPS координаты: географическая долгота
- Country – страна
- Key – ключ страны
- Value – наименование страны
- HotelDetails – массив данных отель
- HotelRoom – категория номера
- Room – номер
- Key – ключ номера
- Value – наименование номера
- RoomCategory – тип номера
- Key – ключ типа номера
- Value – наименование типа номера
- AccomodationType – тип размещения
- Key – ключ типа размещения
- Value – наименование типа размещения
- AdultCount – количество взрослых
- ChildCount – количество детей
- Pansion – тип питания
- Key – ключ типа питания
- Value – наименование типа питания
- PansionGlobalCode – глобальный код типа питания
- Key – ключ типа питания
- Value – наименование типа питания
- RemoteId – не используется
- Cost – разница в стоимости с самым дешевым вариантом
- QuotaStatus – информация о квоте
- PlacesStatus – статус по квотам (есть места-1 / нет мест-2 / под запрос-4)
- FreePlaces – количество свободных мест, если удовлетворяются условия, заданные в настройке "Мало" и включена настройка "Отображать числовое значение оставшихся мест". Иначе возвращается 0. Если в данном параметре 0, то руководствоваться следует значением, полученном в параметре PlacesStatus.
- IsFewPlaces – выполнены ли условия, заданные в настройке "Мало": true – если заданы условия количества мест "Мало" и данные условия выполнены, false – если не заданы условия количества мест "Мало" или они заданы, но не выполнены.
- PartnerId – ключ партнера
- ByPax – цена за человека (true/false)
- Partner – информация о партнере
- Key – идентификатор
- Value – название
- HotelTypes – признаки отелей в дополнительных фильтрах
- Key – ключ
- Value – значение
- RemoteId – не используется
- COAndSpecialsInfo – формирует, фильтрует и выдаёт списки применённых акций и ценовых блоков
- AppliedCostOffersKeys – коллекция идентификаторов всех применённых ценовых блоков к одной цене
- AppliedSpeciasInfo – коллекция всех применённых акций к одной цене, содержит информацию об условиях, с которыми применилась каждая акция
- Id – идентификатор базового шаблона услуги (внутренняя информация из программы туров)
- SvKey – ключ типа услуги
- IsSubCode1 – признак наличия доп. описания 1
- IsSubCode2 – признак наличия доп. описания 2
- IsPartnerBasedOn – признак услуга с приоритетным подбором поставщика
- Day – день предоставления услуги
- DurationInNight – продолжительность услуги в ночах
- BeginDateTime – дата предоставления услуги
- EndDateTime – дата окончания услуги
- IsHooded – признак скрытая услуга
- IsDeleted – признак удаляемая услуга
- IsNotCalculate – признак не рассчитываемая услуга
- PacketId – ключ пакета
- Index – порядковый номер услуги
- Hotel – отель
Вызов метода ActualizeTour http://localhost:9000/TourSearchOwin/searchApi?action=ActualizeTour&offerID=256¤cyId=1
Возвращаемый результат метода ActualizeTour (в формате JSON) {
"version": "1.08",
"actualizedTour": {
"price": 201,
"ticketsIsIncluded": 1,
"hotelIsInStop": 2,
"hasEconomTicketsDpt": 0,
"hasEconomTicketsRtn": 2,
"hasBusinessTicketsDpt": 2,
"hasBusinessTicketsRtn": 0,
"hasAnotherEconomTicketsDpt": 0,
"hasAnotherEconomTicketsRtn": 0,
"hasAnotherBusinessTicketsDpt": 0,
"hasAnotherBusinessTicketsRtn": 2,
"fewPlacesInHotel": null,
"fewEconomTicketsDpt": null,
"fewEconomTicketsRtn": null,
"fewBusinessTicketsDpt": null,
"fewBusinessTicketsRtn": null,
"tourUrl": "http://localhost/TourSearchClient/Basket?departureCities=1&destination=1_90&tour=100011349&date=01.11.22&duration=8&hotelScheme=3_7_178_779_12667_0_8&adultCount=2&hotelQuota=7&aviaQuota=7&busTransferQuota=7&serviceDescriptions=1_0_0_1_1448_67_1_90_35_1037_12792_1_0,3_0_0_3_178_13125_4_90_35_779_12667_1_7,2_1_0_1_1076_89_35_460_1_1037_12792_8_0¤cy=USD",
"services": [{
"id": 0,
"type": "DptTransport",
"name": "А_П::Москва/Вена/3G000, DME-VIE1, 10:00-13:00/C Бизнес класс",
"isIncluded": 1,
"description": "",
"surcharge": 0,
"flightCompatibleIds": "2",
"flightClass": "BUSINESS",
"flightAvailability": 2,
"flightPlacesCount": -1,
"flightAirportFrom": "DME",
"flightAirportTo": "VIE1",
"flightNum": "3G 000",
"flightAirline": "3G",
"flightStartDateTime": "01.11.2022 15:00",
"flightEndDateTime": "01.11.2022 18:00",
"flightAircraft": "757",
"isGDS": 1,
"cancelationPolicy": null,
"bookingAdditionalInfo": null
}, {
"id": 1,
"type": "HotelInfo",
"name": "HOTEL::Вена/Ananas-5+++*,7 [nights]/Double(D Suite),2Ad/BB2 Завтрак",
"isIncluded": 1,
"description": "",
"surcharge": 0,
"flightCompatibleIds": null,
"flightClass": null,
"flightAvailability": -1,
"flightPlacesCount": -1,
"flightAirportFrom": null,
"flightAirportTo": null,
"flightNum": " ",
"flightAirline": null,
"flightStartDateTime": null,
"flightEndDateTime": null,
"flightAircraft": null,
"isGDS": 0,
"cancelationPolicy": null,
"bookingAdditionalInfo": null
}, {
"id": 2,
"type": "RtnTransport",
"name": "А_П::Вена/Москва/SU2355, VIE1-SVO4, 00:10-04:50/Y Экономический класс",
"isIncluded": 1,
"description": "",
"surcharge": 0,
"flightCompatibleIds": "0",
"flightClass": "ECONOM",
"flightAvailability": 2,
"flightPlacesCount": -1,
"flightAirportFrom": "VIE1",
"flightAirportTo": "SVO4",
"flightNum": "SU 2355",
"flightAirline": "SU",
"flightStartDateTime": "08.11.2022 00:10",
"flightEndDateTime": "08.11.2022 04:50",
"flightAircraft": "321",
"isGDS": 1,
"cancelationPolicy": null,
"bookingAdditionalInfo": null
}
],
"flightGDSRequest": {
"flightsSource": [{
"flightSettings": {
"templateId": 1,
"patternId": 0,
"serviceId": 0
},
"service": {
"serviceType": 1,
"code": 1448,
"subCode1": 67,
"subCode2": 1,
"countryId": 90,
"cityId": 35,
"packetId": 1037,
"partnerId": 12792,
"day": 1,
"durationInNight": 0
},
"price": 40,
"quotaInfo": {
"status": 4,
"freePlaces": 0,
"isFewPlaces": false
},
"flightDateTimeLimitationInterval": {
"startLimitation": {
"dateTimeString": "2022-11-01T15:00:00",
"serviceType": 1,
"serviceCode": 1448
},
"finishLimitation": {
"dateTimeString": "2022-11-01T18:00:00",
"serviceType": 1,
"serviceCode": 1448
}
},
"flightSourceMode": 2
}, {
"flightSettings": {
"templateId": 2,
"patternId": 1,
"serviceId": 0
},
"service": {
"serviceType": 1,
"code": 1076,
"subCode1": 89,
"subCode2": 35,
"countryId": 460,
"cityId": 1,
"packetId": 1037,
"partnerId": 12792,
"day": 8,
"durationInNight": 0
},
"price": 20,
"quotaInfo": {
"status": 4,
"freePlaces": 0,
"isFewPlaces": false
},
"flightDateTimeLimitationInterval": {
"startLimitation": {
"dateTimeString": "2022-11-08T00:10:00",
"serviceType": 1,
"serviceCode": 1076
},
"finishLimitation": {
"dateTimeString": "2022-11-08T04:50:00",
"serviceType": 1,
"serviceCode": 1076
}
},
"flightSourceMode": 2
}
],
"passengers": [{
"IsMain": true,
"Number": 1,
"AgeType": 0,
"MaleFemaleSex": 0,
"FirstName": "",
"LastName": "",
"Patronymic": "",
"FirstNameRus": "",
"LastNameRus": "",
"PatronymicRus": "",
"InternationalPassportSeries": "",
"InternationalPassportNumber": "",
"InternationalPassportDateOfIssue": "",
"InternationalPassportDateOfIssueString": "",
"InternationalPassportDateOfExpiry": "",
"InternationalPassportDateOfExpiryString": "",
"internationalPassportByWhom": "",
"PassportSeries": "",
"PassportNumber": "",
"PassportDateOfIssue": "",
"PassportDateOfIssueString": "",
"PassportByWhom": "",
"Citizenship": "",
"Phone": "",
"Email": "",
"BirthDay": "",
"BirthDayString": "",
"BirthPlace": "",
"CitizenID": "",
"Age": 18
}, {
"IsMain": false,
"Number": 2,
"AgeType": 0,
"MaleFemaleSex": 0,
"FirstName": "",
"LastName": "",
"Patronymic": "",
"FirstNameRus": "",
"LastNameRus": "",
"PatronymicRus": "",
"InternationalPassportSeries": "",
"InternationalPassportNumber": "",
"InternationalPassportDateOfIssue": "",
"InternationalPassportDateOfIssueString": "",
"InternationalPassportDateOfExpiry": "",
"InternationalPassportDateOfExpiryString": "",
"internationalPassportByWhom": "",
"PassportSeries": "",
"PassportNumber": "",
"PassportDateOfIssue": "",
"PassportDateOfIssueString": "",
"PassportByWhom": "",
"Citizenship": "",
"Phone": "",
"Email": "",
"BirthDay": "",
"BirthDayString": "",
"BirthPlace": "",
"CitizenID": "",
"Age": 18
}
],
"tourDate": "2022-11-01T00:00:00",
"tourCurrency": "$",
"tourId": 100011349,
"filterTariff": null,
"filterDeptime": [
"all"
],
"isCommission": true,
"baseFlightsParams": [{
"CityArrival": 35,
"FlightCode": 1448,
"TariffKey": 67,
"PartnerId": 12792
}, {
"CityArrival": 1,
"FlightCode": 1076,
"TariffKey": 89,
"PartnerId": 12792
}
],
"isUpdated": false,
"key": 0,
"tourDurationByDays": 8,
"langueCode": "ru",
"isCanary": false
}
}
}
|
Пример работы с методами
Для примера вызываем метод GetToursAllPrices со следующими параметрами:
Результат работы метода:
Выдано 5 вариантов, в соответствии с отправленным в запросе параметром count=5
Внутри каждого результата имеется подробная информация о туре (страна, город, отель, описание и т.д.). На основе этих данных, мы уже можем вызвать «переход в корзину».
Выбираем понравившийся нам вариант и далее формируем запрос вида (все необходимые данные мы возьмем из выбранного нами варианта):
http://localhost:9000/TourSearchOwin/Tour?DepartureCityKeys=1&DestinationType=1&DestinationKey=90&Dates=24.03.24&Durations=6&AdultCount=2&CurrencyName=%24&HotelQuota=7&AviaQuota=7&BusTransferQuota=7&HotelScheme=%5B%7B%22TemplateId%22%3A%221%22%2C%22DurationInNight%22%3A%225%22%2C%22Code%22%3A%22112322%22%2C%22PacketKey%22%3A%22779%22%2C%22PartnerKey%22%3A%2212667%22%2C%22GDSProviderId%22%3A%220%22%2C%22TotalTourDuration%22%3A%227%22%7D%5D&TourKey=100011540&TourDuration=6&PageNumber=1&PageSize=20&IsFromBasket=true&isFillSecondaryFilters=false&RemoteHotelMode=1
А результатом работы будет список рассчитанных вариантов тура (варианты зависят от маршрутных услуг).
Далее, мы выбираем понравившийся нам результат. И готовимся формировать запрос CalculateReservation - это POST метод, который передает объект.
http://localhost:9000/TourSearchOwin/CalculateReservation
Данные для формирования CalculateReservation берем из предыдущего запроса:
"tourProgramId": 100011540,
"beginDate": "2024-03-24T00:00:00",
"duration": 7,
"currency": "$",
"initialPrice": {
"price": 80,
"currency": "$" },
Это данные туриста, эти данные заполняются на форме. Сейчас здесь данные по умолчанию (форма туристы не заполнена).
"tourists": [
{
"IsMain": true,
"Number": 1,
"AgeType": 0,
"MaleFemaleSex": 0,
"FirstName": "",
"LastName": "",
"Patronymic": "",
"EnableSmsNotifications": null,
"Howdidyouhear": "",
"Residenceregion": "",
"FirstNameRus": "",
"LastNameRus": "",
"PatronymicRus": "",
"InternationalPassportSeries": "",
"InternationalPassportNumber": "",
"InternationalPassportDateOfIssue": "",
"InternationalPassportDateOfIssueString": "",
"InternationalPassportDateOfExpiry": "",
"InternationalPassportDateOfExpiryString": "",
"internationalPassportByWhom": "",
"PassportSeries": "",
"PassportNumber": "",
"PassportDateOfIssue": "",
"PassportDateOfIssueString": "",
"PassportByWhom": "",
"Citizenship": "",
"Phone": "",
"Email": "",
"BirthDay": "",
"BirthDayString": "",
"BirthPlace": "",
"CitizenID": "",
"Age": 19
},
{
"IsMain": false,
"Number": 2,
"AgeType": 0,
"MaleFemaleSex": 0,
"FirstName": "",
"LastName": "",
"Patronymic": "",
"EnableSmsNotifications": null,
"Howdidyouhear": "",
"Residenceregion": "",
"FirstNameRus": "",
"LastNameRus": "",
"PatronymicRus": "",
"InternationalPassportSeries": "",
"InternationalPassportNumber": "",
"InternationalPassportDateOfIssue": "",
"InternationalPassportDateOfIssueString": "",
"InternationalPassportDateOfExpiry": "",
"InternationalPassportDateOfExpiryString": "",
"internationalPassportByWhom": "",
"PassportSeries": "",
"PassportNumber": "",
"PassportDateOfIssue": "",
"PassportDateOfIssueString": "",
"PassportByWhom": "",
"Citizenship": "",
"Phone": "",
"Email": "",
"BirthDay": "",
"BirthDayString": "",
"BirthPlace": "",
"CitizenID": "",
"Age": 19
}
],
Далее заполняем услуги. Также берем из предыдущего запроса из секции Services.
"FlightSetting": {
"ServiceId": 3,
"PatternId": 17,
"FlightId": 17
},
"IsHooded": false,
"IsDeleted": false,
"IsNotCalculate": false,
Благодаря этим параметрам мы можем определять значение Attributes и Type: IsHooded - это isInvisible isRemovable - это IsDeleted isNotCalculated - это IsNotCalculate Формируем следующее тело запроса:
{
"tourProgramId": 100011540,
"beginDate": "2024-03-24T00:00:00",
"duration": 7,
"currency": "$",
"initialPrice": {
"price": 80,
"currency": "$"
},
"services": [
{
"Service": {
"ServiceType": 3,
"Code": 112322,
"SubCode1": 1082739,
"SubCode2": 39,
"Packet": 779,
"Partner": 12667,
"Day": 1,
"DurationInNight": 5,
"City": 35,
"Country": 90,
"Attributes": 0,
"IsRemovable": false,
"Type": 1,
"IsHooded": false,
"IsNotCalculated": false,
"BeginDateTimeString": "2024-03-24T17:00:00",
"EndDateTimeString": "2024-03-29T17:00:00",
"TemplateId": 1,
"Cost": 0,
"ByPax": false,
"QuotaStatus": {
"PlacesStatus": 4,
"FreePlaces": 0,
"IsFewPlaces": false
},
"Index": 1,
"IsRoute": true,
"ServiceTemplateIndex": 1,
"RemoteId": null,
"IsCommission": true,
"BaseFlightsParams": [
{
"CityArrival": 35,
"FlightCode": 773,
"TariffKey": 67,
"PartnerId": 10760
},
{
"CityArrival": 1,
"FlightCode": 1059,
"TariffKey": 89,
"PartnerId": 10760
}
]
},
"TouristNumbersList": [
1,
2
]
},
{
"Service": {
"ServiceType": 1,
"Code": 773,
"SubCode1": 67,
"SubCode2": 1,
"Packet": 779,
"Partner": 10760,
"Day": 1,
"DurationInNight": 0,
"City": 35,
"Country": 90,
"Attributes": 0,
"IsRemovable": false,
"Type": 1,
"IsHooded": false,
"IsNotCalculated": false,
"BeginDateTimeString": "2024-03-24T16:00:00",
"EndDateTimeString": "2024-03-24T17:00:00",
"TemplateId": 3,
"Cost": 0,
"ByPax": true,
"QuotaStatus": {
"PlacesStatus": 4,
"FreePlaces": 0,
"IsFewPlaces": false
},
"Index": 0,
"IsRoute": true,
"ServiceTemplateIndex": 0,
"IsCommission": true,
"BaseFlightsParams": [
{
"CityArrival": 35,
"FlightCode": 773,
"TariffKey": 67,
"PartnerId": 10760
},
{
"CityArrival": 1,
"FlightCode": 1059,
"TariffKey": 89,
"PartnerId": 10760
}
]
},
"TouristNumbersList": [
1,
2
]
},
{
"Service": {
"ServiceType": 1,
"Code": 1059,
"SubCode1": 89,
"SubCode2": 35,
"Packet": 779,
"Partner": 10760,
"Day": 6,
"DurationInNight": 1,
"City": 1,
"Country": 460,
"Attributes": 0,
"IsRemovable": false,
"Type": 1,
"IsHooded": false,
"IsNotCalculated": false,
"BeginDateTimeString": "2024-03-29T20:00:00",
"EndDateTimeString": "2024-03-30T02:00:00",
"TemplateId": 4,
"Cost": 0,
"ByPax": true,
"QuotaStatus": {
"PlacesStatus": 4,
"FreePlaces": 0,
"IsFewPlaces": false
},
"Index": 2,
"IsRoute": true,
"ServiceTemplateIndex": 2,
"IsCommission": true,
"BaseFlightsParams": [
{
"CityArrival": 35,
"FlightCode": 773,
"TariffKey": 67,
"PartnerId": 10760
},
{
"CityArrival": 1,
"FlightCode": 1059,
"TariffKey": 89,
"PartnerId": 10760
}
]
},
"TouristNumbersList": [
1,
2
]
}
],
"tourists": [
{
"IsMain": true,
"Number": 1,
"AgeType": 0,
"MaleFemaleSex": 0,
"FirstName": "",
"LastName": "",
"Patronymic": "",
"EnableSmsNotifications": null,
"Howdidyouhear": "",
"Residenceregion": "",
"FirstNameRus": "",
"LastNameRus": "",
"PatronymicRus": "",
"InternationalPassportSeries": "",
"InternationalPassportNumber": "",
"InternationalPassportDateOfIssue": "",
"InternationalPassportDateOfIssueString": "",
"InternationalPassportDateOfExpiry": "",
"InternationalPassportDateOfExpiryString": "",
"internationalPassportByWhom": "",
"PassportSeries": "",
"PassportNumber": "",
"PassportDateOfIssue": "",
"PassportDateOfIssueString": "",
"PassportByWhom": "",
"Citizenship": "",
"Phone": "",
"Email": "",
"BirthDay": "",
"BirthDayString": "",
"BirthPlace": "",
"CitizenID": "",
"Age": 19
},
{
"IsMain": false,
"Number": 2,
"AgeType": 0,
"MaleFemaleSex": 0,
"FirstName": "",
"LastName": "",
"Patronymic": "",
"EnableSmsNotifications": null,
"Howdidyouhear": "",
"Residenceregion": "",
"FirstNameRus": "",
"LastNameRus": "",
"PatronymicRus": "",
"InternationalPassportSeries": "",
"InternationalPassportNumber": "",
"InternationalPassportDateOfIssue": "",
"InternationalPassportDateOfIssueString": "",
"InternationalPassportDateOfExpiry": "",
"InternationalPassportDateOfExpiryString": "",
"internationalPassportByWhom": "",
"PassportSeries": "",
"PassportNumber": "",
"PassportDateOfIssue": "",
"PassportDateOfIssueString": "",
"PassportByWhom": "",
"Citizenship": "",
"Phone": "",
"Email": "",
"BirthDay": "",
"BirthDayString": "",
"BirthPlace": "",
"CitizenID": "",
"Age": 19
}
],
"Day": "день",
"Day2": "дня",
"Days": "дней",
"Night": "ночь",
"Night2": "ночи",
"Nights": "ночей",
"adultsCountOverServiceLimit": "Количество взрослых туристов превышает лимит услуги",
"at": "на",
"incorrectChildrenInf": "Возраст детей не соответствует допустимому в выбранном варианте размещения (см. Услуги: Проживание)",
"languageCode": "ru"
}
Формируется такой результат работы метода:
{
"IsValid": true,
"ErrorMessage": "",
"CalculatedReservation": {
"TourKey": 100011540,
"BeginDate": "2024-03-24T00:00:00",
"Duration": 7,
"Currency": "$",
"CalculatedServicesPrice": 86.0,
"ChangedPrice": 0.0,
"Price": 86.0,
"TotalPrice": 86.0,
"IsDiscountIsPercent": true,
"NationalChangedPrice": 0.0,
"NationalTotalDiscount": 0.0,
"NationalTotalPrice": 7856.3923999999999999999999971,
"NatinoalCalculatedServicesPrice": 7856.3923999999999999999999971,
"NationalPrice": 7856.3923999999999999999999971,
"Discount": 0.0,
"TotalDiscount": 0.0,
"ServiceTourists": [
{
"ServiceType": 1,
"Day": 1,
"DurationInNight": 0,
"Time": "16:00:00",
"Name": "А_П::Москва/Вена/AT111, DME-VIE1, 16:00-17:00/C Бизнес класс",
"TouristCount": 2,
"Attributes": 0,
"Type": 1,
"Brutto": 0.39,
"NationalBrutto": 35.627825999999999999999999987,
"TotalBrutto": 0.39,
"CancellationPolicy": null,
"BookingAdditionalInfo": null,
"AppliedCOInfo": [
{
"IdCostOffer": 41966,
"InfoText": null
}
],
"AppliedSpecials": null,
"AppldCostOffers": null,
"QuotaPlaces": {
"PlacesStatus": 4,
"FreePlaces": 0,
"TotalPlaces": 0
},
"TimeLimit": null,
"BookHash": null
},
{
"ServiceType": 3,
"Day": 1,
"DurationInNight": 5,
"Time": "17:00:00",
"Name": "HOTEL::Вена/Resort&Spa-5*,5 ночей/2 ADL(\"Капитанский\"1),2 ADL/ПР По программе",
"TouristCount": 2,
"Attributes": 0,
"Type": 1,
"Brutto": 55.0,
"NationalBrutto": 5024.4369999999999999999999982,
"TotalBrutto": 55.0,
"CancellationPolicy": null,
"BookingAdditionalInfo": null,
"AppliedCOInfo": [
{
"IdCostOffer": 41729,
"InfoText": null
}
],
"AppliedSpecials": null,
"AppldCostOffers": null,
"QuotaPlaces": {
"PlacesStatus": 4,
"FreePlaces": 0,
"TotalPlaces": 0
},
"TimeLimit": null,
"BookHash": null
},
{
"ServiceType": 1,
"Day": 6,
"DurationInNight": 1,
"Time": "20:00:00",
"Name": "А_П::Вена/Москва/AT333, VIE1-DME, 20:00-02:00/Y Экономический класс",
"TouristCount": 2,
"Attributes": 0,
"Type": 1,
"Brutto": 30.0,
"NationalBrutto": 2740.601999999999999999999999,
"TotalBrutto": 30.0,
"CancellationPolicy": null,
"BookingAdditionalInfo": null,
"AppliedCOInfo": [
{
"IdCostOffer": 12371,
"InfoText": null
}
],
"AppliedSpecials": null,
"AppldCostOffers": null,
"QuotaPlaces": {
"PlacesStatus": 4,
"FreePlaces": 0,
"TotalPlaces": 0
},
"TimeLimit": null,
"BookHash": null
}
]
},
"TourName": "Общая проверка системы_зелсофт",
"BookingConditions": "<p><strong>Условия бронирования</strong></p>\n<p>Сразу же после получения Вашей заявки и обсуждения всех деталей, мы вышлем Вам счет-фактуру на безвозвратный депозит. После получения депозита в размере 50-100 евро (в зависимости от стоимости тура) на человека, Вы получите Тур Ваучер, подтверждающий все детали и условия поездки в Армению</p>\n<p><strong>Условия оплаты</strong></p>\n<p>После бронирования тура необходимо внести безвозвратный депозит в размере 50-100 евро, что обеспечит нашим координаторам возможность начать организацию поездки (бронирование гостиницы, питание, транспорт и т.п.). При покупки тура с авиабилетом, предоплата составит 80% от стоимости всего тура.</p>\n<p>Оставшуюся сумму Вы можете выплатить после Вашего прибытия в страну.</p>\n<p>Мы оставляем за собой право отменить бронирование, если платежи не будут произведены в установленные сроки.</p>\n<p><strong>Форма оплаты</strong></p>\n<p>Предоплату можно внести одним из следующих способов:</p>\n<ul>\n<li>Банковский перевод</li>\n<li>Кредитная карта (при оплате посредством кредитной карты, сервис взимает 3% от общей суммы)</li>\n</ul>\n<p>Окончательный платеж может быть осуществлен следующими способами:</p>\n<ul>\n<li>Оплата наличными (при оплате наличными Вы получаете скидку в размере 2% от общей суммы)</li>\n<li>Кредитная карта (при оплате посредством кредитной карты, сервис взимает 3% от общей суммы)</li>\n</ul>\n<p> </p>\n<p><strong>Условия аннуляции тура </strong></p>\n<p>Если Вы или один из членов Вашей группы желает отменить тур, сообщите об этом нашей компании, как можно скорее в письменной форме. Пожалуйста, обратите внимание, что в данном случае предоплата (200 евро) не подлежит возмещению, но Вы сможете использовать ее в течении всего года и заказать другой тур. В этом случае наша фирма будет вынуждена взять с Вас дополнительные 100 евро для повторного бронирования отеля.</p>",
"EndDate": "2024-03-30T00:00:00",
"DurationInNights": 5,
"NationalCurrency": "рб",
"NationalRate": {
"Id": 14,
"Code": "рб",
"IsoCode": "RUB",
"Symbol": "₽"
},
"Rate": {
"Id": 1,
"Code": "$",
"IsoCode": "USD",
"Symbol": "$"
},
"TimeLimit": null,
"TariffDescription": {
"flightId": null,
"universalParametrsSequence": null,
"price": 0.0,
"deltaPrice": 0.0,
"segments": null
},
"Baggage": "",
"CarryOnBaggage": "",
"HasRealCourses": true
}
Далее формируем запрос метода CreateReservation.
Вызываем http://localhost:9000/TourSearchOwin/CreateReservation/1
С телом запроса, которое мы построим из предыдущего результат + данные о туристе.
{
"TourProgramId": 100011540,
"BeginDate": "2024-03-24T00:00:00",
"Duration": 7,
"Currency": "$",
"Services": [
{
"Service": {
"ServiceType": 3,
"Code": 112322,
"SubCode1": 1082739,
"SubCode2": 39,
"Packet": 779,
"Partner": 12667,
"Day": 1,
"DurationInNight": 5,
"City": 35,
"Country": 90,
"Attributes": 0,
"IsRemovable": false,
"Type": 1,
"IsHooded": false,
"IsNotCalculated": false,
"BeginDateTimeString": "2024-03-24T17:00:00",
"EndDateTimeString": "2024-03-29T17:00:00",
"TemplateId": 1,
"Cost": 0,
"ByPax": false,
"QuotaStatus": {
"PlacesStatus": 4,
"FreePlaces": 0,
"IsFewPlaces": false
},
"Index": 1,
"IsRoute": true,
"ServiceTemplateIndex": 1,
"RemoteId": null,
"IsCommission": true,
"BaseFlightsParams": [
{
"CityArrival": 35,
"FlightCode": 773,
"TariffKey": 67,
"PartnerId": 10760
},
{
"CityArrival": 1,
"FlightCode": 1059,
"TariffKey": 89,
"PartnerId": 10760
}
]
},
"TouristNumbersList": [
1,
2
]
},
{
"Service": {
"ServiceType": 1,
"Code": 773,
"SubCode1": 67,
"SubCode2": 1,
"Packet": 779,
"Partner": 10760,
"Day": 1,
"DurationInNight": 0,
"City": 35,
"Country": 90,
"Attributes": 0,
"IsRemovable": false,
"Type": 1,
"IsHooded": false,
"IsNotCalculated": false,
"BeginDateTimeString": "2024-03-24T16:00:00",
"EndDateTimeString": "2024-03-24T17:00:00",
"TemplateId": 3,
"Cost": 0,
"ByPax": true,
"QuotaStatus": {
"PlacesStatus": 4,
"FreePlaces": 0,
"IsFewPlaces": false
},
"Index": 0,
"IsRoute": true,
"ServiceTemplateIndex": 0,
"IsCommission": true,
"BaseFlightsParams": [
{
"CityArrival": 35,
"FlightCode": 773,
"TariffKey": 67,
"PartnerId": 10760
},
{
"CityArrival": 1,
"FlightCode": 1059,
"TariffKey": 89,
"PartnerId": 10760
}
]
},
"TouristNumbersList": [
1,
2
]
},
{
"Service": {
"ServiceType": 1,
"Code": 1059,
"SubCode1": 89,
"SubCode2": 35,
"Packet": 779,
"Partner": 10760,
"Day": 6,
"DurationInNight": 1,
"City": 1,
"Country": 460,
"Attributes": 0,
"IsRemovable": false,
"Type": 1,
"IsHooded": false,
"IsNotCalculated": false,
"BeginDateTimeString": "2024-03-29T20:00:00",
"EndDateTimeString": "2024-03-30T02:00:00",
"TemplateId": 4,
"Cost": 0,
"ByPax": true,
"QuotaStatus": {
"PlacesStatus": 4,
"FreePlaces": 0,
"IsFewPlaces": false
},
"Index": 2,
"IsRoute": true,
"ServiceTemplateIndex": 2,
"IsCommission": true,
"BaseFlightsParams": [
{
"CityArrival": 35,
"FlightCode": 773,
"TariffKey": 67,
"PartnerId": 10760
},
{
"CityArrival": 1,
"FlightCode": 1059,
"TariffKey": 89,
"PartnerId": 10760
}
]
},
"TouristNumbersList": [
1,
2
]
}
],
"Tourists": [
{
"IsMain": true,
"Number": 1,
"AgeType": 0,
"MaleFemaleSex": 0,
"FirstName": "DJON",
"LastName": "SNOW",
"Patronymic": "",
"EnableSmsNotifications": true,
"Howdidyouhear": "Магия",
"Residenceregion": "Волгоград",
"FirstNameRus": "",
"LastNameRus": "",
"PatronymicRus": "",
"InternationalPassportSeries": "",
"InternationalPassportNumber": "",
"InternationalPassportDateOfIssue": "",
"InternationalPassportDateOfIssueString": "",
"InternationalPassportDateOfExpiry": "",
"InternationalPassportDateOfExpiryString": "",
"internationalPassportByWhom": "",
"PassportSeries": "",
"PassportNumber": "",
"PassportDateOfIssue": "",
"PassportDateOfIssueString": "",
"PassportByWhom": "",
"Citizenship": "Россия",
"Phone": "",
"Email": "",
"BirthDay": "1994-05-29T20:00:00.000Z",
"BirthDayString": "30.05.1994",
"BirthPlace": "",
"CitizenID": "",
"Age": 29
},
{
"IsMain": false,
"Number": 2,
"AgeType": 0,
"MaleFemaleSex": 0,
"FirstName": "DJON",
"LastName": "SNOW",
"Patronymic": "",
"EnableSmsNotifications": true,
"Howdidyouhear": "Магия",
"Residenceregion": "Волгоград",
"FirstNameRus": "",
"LastNameRus": "",
"PatronymicRus": "",
"InternationalPassportSeries": "",
"InternationalPassportNumber": "",
"InternationalPassportDateOfIssue": "",
"InternationalPassportDateOfIssueString": "",
"InternationalPassportDateOfExpiry": "",
"InternationalPassportDateOfExpiryString": "",
"internationalPassportByWhom": "",
"PassportSeries": "",
"PassportNumber": "",
"PassportDateOfIssue": "",
"PassportDateOfIssueString": "",
"PassportByWhom": "",
"Citizenship": "Россия",
"Phone": "",
"Email": "",
"BirthDay": "1994-05-29T20:00:00.000Z",
"BirthDayString": "30.05.1994",
"BirthPlace": "",
"CitizenID": "",
"Age": 29
}
],
"TechnicalProblemsDuringUpdateFlights": false,
"TimeLimit": null,
"DogovorComment": "",
"BranchId": 12850,
"OwnerId": 0,
"Day": "день",
"Day2": "дня",
"Days": "дней",
"Night": "ночь",
"Night2": "ночи",
"Nights": "ночей",
"adultsCountOverServiceLimit": "Количество взрослых туристов превышает лимит услуги",
"incorrectChildrenInf": "Возраст детей не соответствует допустимому в выбранном варианте размещения (см. Услуги: Проживание)",
"BookingHash": null
}
Результатом работы метода будет код путевки и ссылка для перехода в личный кабинет MasterWeb.
Приложения
Приложение 1: параметры услуги (ServiceType, Code, SubCode1, SubCode2)
Параметры ServiceType – это ключ типа услуги, Сode – ключ услуги, SubCode1 и SubCode2, возвращаемые при API-запросах – это параметры дополнительных описаний двух типов, индивидуальных для каждой услуги.
Ключ типа услуги (ServiceType) | Наименование типа услуги | Ключ услуги (Code) | Доп. описание 1 (SubCode1) | Таблица БД со значениями SubCode1 | Доп. описание 2 (SubCode2) | Таблица БД со значениями SubCode2 |
---|---|---|---|---|---|---|
1 | Авиаперелет | индивидуальный ключ услуги | Тариф | AirService | отсутствует | отсутствует |
2 | Трансфер | индивидуальный ключ услуги | Вид транспорта | Transport | отсутствует | отсутствует |
3 | Отель/Круиз | индивидуальный ключ услуги | Вид проживания (Тип номера + Категория номера + Тип размещения) | HotelRooms (Rooms + RoomCategory + Accmdmentype) | Тип питания | Pansion |
4 | Экскурсия | индивидуальный ключ услуги | Вид транспорта | Transport | отсутствует | отсутствует |
5 | Виза | индивидуальный ключ услуги | отсутствует | отсутствует | отсутствует | отсутствует |
6 | Страховка | индивидуальный ключ услуги | Доп. описание 1 | AddDescript1 | Доп. описание 2 | AddDescript2 |
8 | Доп услуга в отеле/круизе | индивидуальный ключ услуги | Вид проживания (Тип номера + Категория номера + Тип размещения) | HotelRooms (Rooms + RoomCategory + Accmdmentype) | Доп. описание 2 | AddDescript2 |
14 | Автобусный переезд | индивидуальный ключ услуги | Место посадки | BusTransferPoints | Вид транспорта | Transport |
99 | Любая пользовательская услуга | индивидуальный ключ услуги | Доп. описание 1 | AddDescript1 | Доп. описание 2 | AddDescript2 |