Мастер-Тур(15):API для разработки онлайн поиска и бронирования
Статья находится на стадии разработки.
Версия статьи от 22-02-2018.
Поддерживаемые версии ПК «Мастер-Тур»: |
Содержание
- 1 Введение
- 2 Установка
- 3 Список методов
- 3.1 Выгрузка настроек службы поиска (Settings)
- 3.2 Выгрузка списка валют (Currency)
- 3.3 Выгрузка квотируемых услуг системы (QuotedServices)
- 3.4 Выгрузка городов отправления (departureCities)
- 3.5 Выгрузка списка стран (Destination)
- 3.6 Выгрузка списка городов (ActualizeCities)
- 3.7 Выгрузка типов туров (ActualizeTourType)
- 3.8 Выгрузка актуальных дат заездов (TourDate)
- 3.9 Выгрузка актуальных продолжительностей (Duration)
- 3.10 Поиск туров (Tour)
- 4 Загрузка справочников
- 5 Поиск туров (GetTours)
- 6 Актуализация тура (ActualizeTour)
- 7 Проверка туриста (checkTourist)
Введение
Данный web-сервис разработан для разработки собственного сайта туроператору на основе API.
Установка
Для работы с web-сервисом необходимо установить службу поиска.
После установки web-сервис будет доступен по адресу http://значение настройки "serviceAddress" в TourSearchOwin/"название метода" (пример: http://localhost:9000/TourSearchOwin/Settings)
Список методов
Выгрузка настроек службы поиска (Settings)
Метод производит выгрузку настроек службы поиска.
- Формат запроса:
- .../TourSearchOwin/Settings?
- Принимаемые параметры:
- нет принимаемых параметров
- Возвращаемый результат:
- ChildAgesSetting – регулируется настройкой максимальный возраст ребенка (массив возрастов, при которых турист будет считаться ребенком
- DurationSetting – регулируется настройкой максимальная продолжительность тура (массив продолжительностей, доступных в фильтрах для поиска)
- RoundServiceSetting – признак округления цены (количество знаков после запятой)
- CacheReady – статус готовности службы поиска к работе (true/false)
- EnableFiterTree – устаревшая настройка, будет убрана (по умолчанию всегда false)
- EnableActualFilters – включены ли актуальные фильтры (true/false)
- CorrectLicense – проверка лицензии (true/false)
- CorrectLicenseMessage – сообщение, если проверка лицензии не прошла
- IsCorrectUser – проверка наличия пользователя в таблице Userlist, под которым запущена служба поиска (true/false)
- IsShowCitizenAuthTourist – настройка запрашивать гражданство при регистрации частного лица (true/false)
- IsShowFewCountPlaces – настройка отображения числового значения оставшихся мест, когда достигнуто значение «Мало» (true/false)
- IsShowBusTransferPlaces – использовать фильтр наличие мест на автобусный переезд в поиске (true/false)
- UseBusSeatChecks – план рассадки автобусного переезда (0 – не отображать, 1 – отображать без проверки, 2 – отображать с проверкой)
- UseTransferSeatChecks – план рассадки трансфера (0 – не отображать, 1 – отображать без проверки, 2 – отображать с проверкой)
- IsShowFiltersByCity – отображать фильтр по городам на главной странице поиска (true/false)
- CheckRealCourses – включена ли проверка курсов реальных валют при поиске (true/false)
- CommonImagesFolderPath – путь к папке для хранения изображений
- UseApplyFiltersButton – отображать кнопку «Применить фильтры» (true/false)
- AutoSearchFiltersTimeout – задержка между выбором дополнительных фильтров и выводом результатов (в секундах)
- UseFastSearchAlgoritm – использовать быстрый алгоритм поиска (true/false)
- MaxSearchDatesCountClient – максимальное количество дат, которое будет обрабатываться в клиенте поиска
- MaxDurationsCountClient – максимальное количество продолжительностей, которое будет обрабатываться в клиенте поиска
Вызов метода Settings http://localhost:9000/TourSearchOwin/Settings
Возвращаемый результат метода Settings (в формате JSON) {
"ChildAgesSetting": [
1,
2,
3,
4,
5,
6,
7,
8,
9,
10,
11,
12,
13,
14,
15,
16
],
"DurationSetting": [
1,
2,
3,
4,
5,
6,
7,
8,
9,
10,
11,
12,
13,
14,
15,
16,
17,
18,
19,
20
],
"RoundServiceSetting": 2,
"CacheReady": true,
"EnableFiterTree": false,
"EnableActualFilters": true,
"CorrectLicense": true,
"CorrectLicenseMessage": "0deb1f882da1ec6301c961780507a180",
"IsCorrectUser": true,
"IsShowCitizenAuthTourist": true,
"IsShowFewCountPlaces": true,
"IsShowBusTransferPlaces": true,
"UseBusSeatChecks": 1,
"UseTransferSeatChecks": 2,
"IsShowFiltersByCity": true,
"CheckRealCourses": true,
"CommonImagesFolderPath": "\\\\server\\Icons",
"UseApplyFiltersButton": false,
"AutoSearchFiltersTimeout": 1,
"UseFastSearchAlgoritm": true,
"MaxSearchDatesCountClient": 10,
"MaxDurationsCountClient": 14
}
|
Выгрузка списка валют (Currency)
Метод возвращает список используемых валют.
- Формат запроса:
- .../TourSearchOwin/Currency
- Принимаемые параметры:
- нет принимаемых параметров
- Возвращаемый результат:
- Code – код валюты
- Name – наименование валюты
- IsMain – признак валюты «Главная»
- IsNational – признак валюты «Национальная»
- IsoCode – ISO код валюты
- Key – идентификатор валюты
- IsShowInSearch – признак показывать ли валюту в поиске
Вызов метода Currency http://localhost:9000/TourSearchOwin/Currency
Возвращаемый результат метода Currency (в формате JSON) [
{
"Code": "EU",
"Name": "Euro",
"IsMain": false,
"IsNational": false,
"IsoCode": "EUR",
"Key": 2,
"IsShowInSearch": true
},
{
"Code": "рб",
"Name": "Рубль",
"IsMain": false,
"IsNational": true,
"IsoCode": "RUR",
"Key": 14,
"IsShowInSearch": true
},
{
"Code": "$",
"Name": "US Dollar",
"IsMain": true,
"IsNational": false,
"IsoCode": "USD",
"Key": 1,
"IsShowInSearch": true
}
]
|
Выгрузка квотируемых услуг системы (QuotedServices)
Метод производит выгрузку услуг с признаком «Квотируемая»
- Формат запроса:
- .../TourSearchOwin/QuotedServices
- Принимаемые параметры:
- нет принимаемых параметров
- Возвращаемый результат:
- Key – идентификатор услуги
- Code – код услуги
- Name – наименование услуги (русский)
- NameLat – наименование услуги (английский)
- IsDuration – наличие продолжительности у услуги
- IsCity – наличие города у услуги
- IsSubCode1 – признак наличия SubCode1 у услуги (вид проживания у отеля, тариф у авиаперелета)
- IsSubCode2 – признак наличия SubCode2 у услуги (тип питания у отеля)
- Quoted – признак квотируемости услуги
- CheckGeoPoint – наличие геоточек у услуги
- IsRoute – признак маршрутной услуги
- LittlePercent – число в %, при которых будет считаться количество мест «Мало»
- LittlePlace – число, при котором будет считаться количество мест «Мало»
- LittleAnd – признак наличия мест «Мало» – будем ли учитывать количество мест вместе с процентным соотношением между общим и оставшимся количеством мест
- IsPartnerBasedOn – признак сопоставления партнера услуги в зависимости от отеля
- Control – идентификатор статуса услуги
Вызов метода QuotedServices http://localhost:9000/TourSearchOwin/QuotedServices
Возвращаемый результат метода QuotedServices (в формате JSON) [
{
"Key": 1,
"Code": "А_П",
"Name": "Авиаперелет",
"NameLat": "Flight",
"IsDuration": false,
"IsCity": true,
"IsSubCode1": true,
"IsSubCode2": false,
"Quoted": true,
"CheckGeoPoint": true,
"IsRoute": true,
"LittlePercent": null,
"LittlePlace": 10,
"LittleAnd": true,
"IsPartnerBasedOn": false,
"Control": 1
},
{
"Key": 3,
"Code": "HOTEL",
"Name": "Отель/Круиз",
"NameLat": "Hotel/Cruise",
"IsDuration": true,
"IsCity": true,
"IsSubCode1": true,
"IsSubCode2": true,
"Quoted": true,
"CheckGeoPoint": true,
"IsRoute": true,
"LittlePercent": 99,
"LittlePlace": 5,
"LittleAnd": false,
"IsPartnerBasedOn": false,
"Control": 1
}
]
|
Выгрузка городов отправления (departureCities)
Метод производит выгрузку всех доступных городов отправления для поискового запроса.
- Формат запроса:
- .../TourSearchOwin/departureCities?
- Принимаемые параметры:
- нет принимаемых параметров
- Возвращаемый результат:
- Key – идентификатор города
- Name – название города
Вызов метода departureCities http://localhost:9000/TourSearchOwin/departureCities
Возвращаемый результат метода departureCities (в формате JSON) [
{
"Key": -1,
"Name": "Без перелета"
},
{
"Key": 312,
"Name": "Астрахань"
},
{
"Key": 1,
"Name": "Москва"
}
]
|
Выгрузка списка стран (Destination)
Метод производит выгрузку всех доступных направлений туроператора.
- Формат запроса:
- .../TourSearchOwin/Destination?
- Принимаемые параметры ( * – обязательный):
- pageNumber – номер страницы ???
- term * – фильтрация результатов по контекстному поиску (по умолчанию параметр пустой)
- showAll – ??? (true/false)
- departureCities * – идентификатор города отправления (из контроллера .../TourSearchOwin/departureCities?)
- Возвращаемый результат:
- Name – название страны
- Key – идентификатор страны
- DestinationType – ??? (всегда возвращается в JSON = 1, в xml = country)
Вызов метода Destination http://localhost:9000/TourSearchOwin/Destination?pageNumber=1&term=&showAll=false&departureCities=1
Возвращаемый результат метода Destination (в формате JSON) [
{
"Name": "Болгария",
"Key": 359,
"DestinationType": 1
},
{
"Name": "Индия",
"Key": 26,
"DestinationType": 1
},
{
"Name": "Финляндия",
"Key": 64,
"DestinationType": 1
}
]
|
Выгрузка списка городов (ActualizeCities)
Метод возвращает список всех доступных городов по определенному городу отправления и стране прибытия.
- Формат запроса:
- .../TourSearchOwin/ActualizeCities?
- Принимаемые параметры ( * – обязательный):
- cityKeys * – идентификатор города отправления (полученный из метода .../TourSearchOwin/departureCities?)
- Key * – идентификатор страны прибытия (полученный из метода .../TourSearchOwin/Destination?)
- Name * – название страны прибытия (полученный из метода .../TourSearchOwin/Destination?)
- term * – фильтрация результатов по контекстному поиску (по умолчанию параметр пустой)
- Возвращаемый результат:
- Key – идентификатор города
- Name – название города
Вызов метода ActualizeCities http://localhost:9000/TourSearchOwin/ActualizeCities?cityKeys=1&Key=90&Name=Австрия&term=
Возвращаемый результат метода ActualizeCities (в формате JSON) [
{
"Key": -1,
"Name": "Все"
},
{
"Key": 35,
"Name": "Вена"
},
{
"Key": 440,
"Name": "Зельден"
}
]
|
Выгрузка типов туров (ActualizeTourType)
Метод возвращает список типов туров по определенному городу отправления, стране и городу прибытия.
- Формат запроса:
- .../TourSearchOwin/ActualizeTourType?
- Принимаемые параметры ( * – обязательный):
- departureCityKeys * – идентификатор города отправления (полученный из метода .../TourSearchOwin/departureCities?)
- Key * – идентификатор страны прибытия (полученный из метода .../TourSearchOwin/Destination?)
- Name * – название страны прибытия (полученный из метода .../TourSearchOwin/Destination?)
- Type * – ??? (по умолчанию всегда 1)
- destinationCity * – идентификатор города прибытия (полученный из метода .../TourSearchOwin/ActualizeCities?), по умолчанию передается -1, то есть все города в рамках данной страны
- term * – фильтрация результатов по контекстному поиску (по умолчанию параметр пустой)
- Возвращаемый результат:
- Key – идентификатор типа тура
- Name – название типа тура
- ParentId – идентификатор группы, к которой относится данный типа тура (если тип тура не относится к группе, то возвращается null)
Вызов метода ActualizeTourType http://localhost:9000/TourSearchOwin/ActualizeTourType?departureCityKeys=1&Key=90&Name=Австрия&Type=1&destinationCity=-1&terms=
Возвращаемый результат метода ActualizeTourType (в формате JSON) [
{
"Key": -1,
"Name": "Все",
"ParentId": null
},
{
"Key": 2,
"Name": "Стандартный тур",
"ParentId": null
},
{
"Key": 16,
"Name": "Экскурсионный тур",
"ParentId": 35
}
]
|
Выгрузка актуальных дат заездов (TourDate)
Метод производит выгрузку доступных дат заездов для поискового запроса.
- Формат запроса:
- .../TourSearchOwin/TourDate?
- Принимаемые параметры ( * – обязательный):
- departureCity * – идентификатор города отправления (полученный из метода .../TourSearchOwin/departureCities?)
- destinationCity * – идентификатор города прибытия (полученный из метода .../TourSearchOwin/ActualizeCities?), по умолчанию передается -1, то есть все города в рамках данной страны
- Key * – идентификатор страны прибытия (полученный из метода .../TourSearchOwin/Destination?)
- Name * – название страны прибытия (полученный из метода .../TourSearchOwin/Destination?)
- Type * – ??? (по умолчанию всегда 1)
- tourTypes * – идентификатор типа тура (полученный из метода .../TourSearchOwin/ActualizeTourType?), по умолчанию передается -1, то есть все типы тура в рамках данной страны
- term * – фильтрация результатов по контекстному поиску (по умолчанию параметр пустой)
- Возвращаемый результат:
- массив дат
Вызов метода TourDate http://localhost:9000/TourSearchOwin/TourDate?departureCity=1&destinationCity=-1&Key=90&Name=Австрия&Type=1&tourTypes=-1&term=
Возвращаемый результат метода TourDate (в формате JSON) [
"21.02.2018",
"22.02.2018",
"23.02.2018",
"24.02.2018",
"25.02.2018",
"26.02.2018",
"27.02.2018",
"28.02.2018"
]
|
Выгрузка актуальных продолжительностей (Duration)
Метод производит выгрузку доступных продолжительностей для поискового запроса.
- Формат запроса:
- .../TourSearchOwin/Duration?
- Принимаемые параметры ( * – обязательный):
- departureCity * – идентификатор города отправления (полученный из метода .../TourSearchOwin/departureCities?)
- destinationCity * – идентификатор города прибытия (полученный из метода .../TourSearchOwin/ActualizeCities?), по умолчанию передается -1, то есть все города в рамках данной страны
- Key * – идентификатор страны прибытия (полученный из метода .../TourSearchOwin/Destination?)
- Name * – название страны прибытия (полученный из метода .../TourSearchOwin/Destination?)
- Type * – ??? (по умолчанию всегда 1)
- tourDate * – дата(ы) заезда (полученные из метода .../TourSearchOwin/TourDate?)
- tourTypes * – идентификатор типа тура (полученный из метода .../TourSearchOwin/ActualizeTourType?), по умолчанию передается -1, то есть все типы тура в рамках данной страны
- term * – фильтрация результатов по контекстному поиску (по умолчанию параметр пустой)
- Возвращаемый результат:
- массив продолжительностей
Вызов метода Duration http://localhost:9000/TourSearchOwin/Duration?departureCity=1&destinationCity=-1&Key=90&Name=Австрия&Type=1&tourDate=25.02.2018,26.02.2018&tourTypes=-1&term=
Возвращаемый результат метода Duration (в формате JSON) [
7,
8,
10,
12,
15,
18
]
|
Поиск туров (Tour)
Метод поиска туров использует множество параметров для поиска и фильтрации туров. Метод возвращает наиболее дешевые предложения, найденные по предоставленным параметрам и сгруппированные по отелям в порядке возрастания цены.
- Формат запроса:
- .../TourSearchOwin/Tour?
- Принимаемые параметры ( * – обязательный):
- DepartureCityKeys * – идентификатор города отправления (полученный из метода .../TourSearchOwin/departureCities?)
- Dates * – ??? как передать 2 даты? дата(ы) заезда (полученные из метода .../TourSearchOwin/TourDate?)
- Durations * – ??? как передать 2 продолжительности? продолжительности тура в днях (полученные из метода .../TourSearchOwin/Duration?)
- PageNumber * – ??? (возвращается 1)
- PageSize * – количество возвращаемых результатов на одной странице (возвращается 20)
- HotelScheme – ??? (пустой по умолчанию)
- TourKey – ??? (пустой по умолчанию)
- TourDuration – ? (пустой по умолчанию)
- isFromBasket – происходит ли обращение из корзины или из поиска туров (true/false)
- isFillSecondaryFilters – ??? (true/false)
- DestinationType – ??? (1)
- DestinationKey – идентификатор страны прибытия (полученный из метода .../TourSearchOwin/Destination?)
- AdultCount – количество взрослых
- ChildAges – возраст детей ??? (описать, как будут передаваться двое детей)
- CurrencyName – код валюты
- AviaQuota – информация о квотах на авиаперелет (5) ??? расписать что означает каждый из цифр
- HotelQuota – информация о квотах на отель (5) ??? расписать что означает каждый из цифр
- BusTransferQuota – информация о квотах на автобусный переезд (5) ??? расписать что означает каждый из цифр
- MinPrice – минимальная цена ??? (NaN)
- TourType – идентификатор типа тура (полученный из метода .../TourSearchOwin/ActualizeTourType?), по умолчанию передается -1, то есть все типы тура в рамках данной страны. Возможна множественная передача параметров.
- CityIds – идентификатор города прибытия (полученный из метода .../TourSearchOwin/ActualizeCities?), по умолчанию передается -1, то есть все города в рамках данной страны. Возможна множественная передача параметров.
- TimeDepartureFrom – время отправления с (всегда возвращается 00:00)
- TimeDepartureTo – время отправления по (всегда возвращается 23:59)
- TimeArrivalFrom – время прибытия с (всегда возвращается 00:00)
- TimeArrivalTo – время прибытия по (всегда возвращается 23:59)
- ArrivalFlightNoTransfer – ??? уточнить что означает
- DepartureFlightNoTransfer – ??? уточнить что означает
- wrongLicenseFileUpperTitle – ??? для локализации (убрать)
- Возвращаемый результат:
- CheckMessages – информация о том, произошла ли ошибка при поиске (null)
- Message – сообщение об ошибке
- Key – код ошибки
- Value – сообщение об ошибке
- Result – результаты поиска
- Key – идентификатов программы тура
- Name – название программы тура
- TourUrl – ссылка на программу тура
- BookingConditions – условия бронирования программы туров
- StartDate – дата начала тура
- Duration – продолжительность тура (в днях)
- DurationInNight – продолжительность проживания (в ночах)
- Types – ??? возможно идентификатор типа туров
- Cost – цена тура
- Rate – код валюты тура
- CityDepature – город отправления
- Key – идентификатор города отправления
- Value – название города отправления
- CountryId – ??? предположительно страна тура, но почему отображается ключ 0?
- Services – услуги в туре
- DepartureCity – город отправления
- Key – идентификатор города отправления
- Value – название города отправления
- DepartureCountry –
- Key –
- Value –
- ArrivalCity –
- Key –
- Value –
- ArrivalCountry –
- Key –
- Value –
- DepartureAirport –
- Key –
- Value –
- ArrivalAirport –
- Key –
- Value –
- Airline –
- Key –
- Value –
- Aircraft –
- Key –
- Value –
- Flight –
- Key –
- Value –
- DepartureTime –
- ArrivalTime –
- EndDateTime –
- FlightDetails –
- Tariff –
- Key –
- Code –
- Name –
- Cost –
- QuotaStatus –
- PlacesStatus –
- FreePlaces –
- TotalPlaces –
- PartnerId –
- ByPax –
- Partner –
- Key –
- Value –
- Tariff –
- FlightSetting –
- ServiceId –
- PatternId –
- FlightId –
- FlightSourceMode –
- Id –
- SvKey –
- IsSubCode1 –
- IsSubCode2 –
- IsPartnerBasedOn –
- Day –
- DurationInNight –
- BeginDateTime –
- IsHooded –
- IsDeleted –
- IsNotCalculate –
- PacketId –
- Index –
- DepartureCity – город отправления
- ' –
- ' –
- ' –
- ' –
"CountryId": 0, "Services": [
"BeginDateTime": "2018-02-25T10:00:00", "IsHooded": false, "IsDeleted": false, "IsNotCalculate": false, "PacketId": 779, "Index": 0 }, { "Hotel": { "Key": 709, "Value": "Am Brilliantengrund" }, "City": { "Key": 35, "Value": "Вена" }, "Stars": { "Key": -1, "Value": null }, "Resort": { "Key": -1, "Value": null }, "ImageURL": "", "Http": null, "Description": "", "Country": { "Key": 90, "Value": "Австрия" }, "HotelDetails": [ { "HotelRoom": 46463, "Room": { "Key": 129, "Value": "DBL" }, "RoomCategory": { "Key": 3493, "Value": "Cosy" }, "AccomodationType": { "Key": 1256, "Value": "2+1_K", "AdultCount": 2, "ChildCount": 1 }, "Pansion": { "Key": 4, "Value": "Завтрак" }, "Cost": 58.22, "QuotaStatus": { "PlacesStatus": 4, "FreePlaces": 0, "TotalPlaces": 0 }, "PartnerId": 12667, "ByPax": false, "Partner": { "Key": 12667, "Value": "Партнер-покупатель1" } }], "HotelTypes": [ { "Key": 5, "Value": "Рекомендуемые" }], "Id": 1, "SvKey": 3, "IsSubCode1": true, "IsSubCode2": true, "IsPartnerBasedOn": false, "Day": 1, "DurationInNight": 9, "BeginDateTime": "2018-02-25T12:00:00", "EndDateTime": "2018-03-06T12:00:00", "IsHooded": false, "IsDeleted": false, "IsNotCalculate": false, "PacketId": 779, "Index": 1 }, { "DepartureCity": { "Key": 35, "Value": "Вена" }, "DepartureCountry": { "Key": 90, "Value": "Австрия" }, "ArrivalCity": { "Key": 1, "Value": "Москва" }, "ArrivalCountry": { "Key": 460, "Value": "Россия" }, "DepartureAirport": { "Key": "VIE1", "Value": "Vena1" }, "ArrivalAirport": { "Key": "DME", "Value": "Домодедово" }, "Airline": { "Key": "7U", "Value": "Авиаэнерго" }, "Aircraft": { "Key": "727", "Value": "Boeing" }, "Flight": { "Key": 774, "Value": "222" }, "DepartureTime": "00:00:00", "ArrivalTime": "00:00:00", "EndDateTime": "2018-03-06T00:00:00", "FlightDetails": [ { "Tariff": { "Key": 89, "Code": "Y", "Name": "Экономический класс" }, "Cost": 0, "QuotaStatus": { "PlacesStatus": 4, "FreePlaces": 0, "TotalPlaces": 0 }, "PartnerId": 10760, "ByPax": true, "Partner": { "Key": 0, "Value": null } }], "FlightSetting": { "ServiceId": 4, "PatternId": 5, "FlightId": 4 }, "FlightSourceMode": 1, "Id": 4, "SvKey": 1, "IsSubCode1": true, "IsSubCode2": false, "IsPartnerBasedOn": false, "Day": 10, "DurationInNight": 0, "BeginDateTime": "2018-03-06T00:00:00", "IsHooded": false, "IsDeleted": false, "IsNotCalculate": false, "PacketId": 779, "Index": 4 } ], "NotRouteServices": [ [ { "ServiceName": "страховка", "City": null, "Country": 6245, "Code": { "Key": 297, "Value": "Страховка от несчастного случая" }, "ByScheduler": false, "Details": [ { "SubCode1": { "Key": 18, "Value": "2" }, "SubCode2": { "Key": null, "Value": "" }, "Date": null, "IsShowTransportPlan": true, "Cost": 970.4, "QuotaStatus": { "PlacesStatus": 1, "FreePlaces": 0, "TotalPlaces": 0 }, "PartnerId": 12668, "ByPax": true, "Partner": { "Key": 0, "Value": null } }], "ParentId": null, "PartnerBasedOnServiceTemplateId": null, "Id": 10, "SvKey": 6, "IsSubCode1": true, "IsSubCode2": true, "IsPartnerBasedOn": false, "Day": 1, "DurationInNight": 9, "BeginDateTime": "2018-02-25T00:00:00", "EndDateTime": "2018-03-06T00:00:00", "IsHooded": false, "IsDeleted": true, "IsNotCalculate": true, "PacketId": 882, "Index": 2 }], [ { "ServiceName": "экскурсия", "City": { "Key": 1046, "Value": "Санто-Доминго" }, "Country": 6245, "Code": { "Key": 743, "Value": "4" }, "ByScheduler": false, "Details": [ { "SubCode1": { "Key": 37, "Value": "Мини-автобус 10 чел." }, "SubCode2": { "Key": null, "Value": "" }, "Date": null, "IsShowTransportPlan": false, "Cost": 84.91, "QuotaStatus": { "PlacesStatus": 1, "FreePlaces": 0, "TotalPlaces": 0 }, "PartnerId": 12667, "ByPax": true, "Partner": { "Key": 0, "Value": null } }], "ParentId": null, "PartnerBasedOnServiceTemplateId": null, "Id": 7, "SvKey": 4, "IsSubCode1": true, "IsSubCode2": false, "IsPartnerBasedOn": true, "Day": 1, "DurationInNight": 0, "BeginDateTime": "2018-02-25T00:00:00", "EndDateTime": "2018-02-26T00:00:00", "IsHooded": false, "IsDeleted": true, "IsNotCalculate": true, "PacketId": 779, "Index": 3 }] ], "MinCostServicesComposition": [ { "Key": { "TemplateId": 3, "PatternId": 13, "SettingId": 13 }, "Value": { "Cost": 240, "ServiceType": 1, "Code": 882, "SubCode1": 89, "SubCode2": 1, "PacketId": 779, "PartnerId": 12668, "CountryId": 90, "CityId": 35, "Day": 1, "DurationInNight": 0 } }, { "Key": { "TemplateId": 1, "PatternId": 0, "SettingId": 0 }, "Value": { "Cost": 58.22, "ServiceType": 3, "Code": 709, "SubCode1": 46463, "SubCode2": 4, "PacketId": 779, "PartnerId": 12667, "CountryId": 90, "CityId": 35, "Day": 1, "DurationInNight": 9 } }, { "Key": { "TemplateId": 4, "PatternId": 5, "SettingId": 4 }, "Value": { "Cost": 0, "ServiceType": 1, "Code": 774, "SubCode1": 89, "SubCode2": 35, "PacketId": 779, "PartnerId": 10760, "CountryId": 460, "CityId": 1, "Day": 10, "DurationInNight": 0 } } ], "FlightWeight": 2, "LinkingFlightsRules": { "notCombineDifferentAirlineRule": { "airlines": ["AY2"], "flightSettings": [], "enabled": true }, "checkPlusMinus1CharterRule": { "FlightSettingPairs": [], "enabled": false }, "notCombineDifferentTariffGroupRule": { "FlightSettings": [], "enabled": true }, "notCombineDifferentPartnerRule": { "FlightSettings": [], "enabled": false }, "departureCityEqualsArrivalCityRule": { "FlightSettingPairs": [], "enabled": false }, "combineOnlySpecificChartersRule": { "settings": [], "enabled": false } }, "RouteSubVariants": [] }], "SecondaryFiltersResult": { "TourTypes": [ { "Id": 2, "Name": "Стандартный тур", "ParentId": null, "Type": "TourType" }], "TourPrograms": [ { "Key": 100003381, "Name": " Автобусный тур (новые проверки)_2", "TourUrl": "www.megatec.ru",
"BookingConditions": "
Условия бронирования<\/strong><\/p>\n
Сразу же после получения Вашей заявки и обсуждения всех деталей, мы вышлем Вам счет-фактуру на безвозвратный депозит. После получения депозита в размере 50-100 евро (в зависимости от стоимости тура) на человека, Вы получите Тур Ваучер, подтверждающий все детали и условия поездки в Армению.<\/p>\n
Условия оплаты<\/strong><\/p>\n
После бронирования тура необходимо внести безвозвратный депозит в размере 50-100 евро, что обеспечит нашим координаторам возможность начать организацию поездки (бронирование гостиницы, питание, транспорт и т.п.). При покупки тура с авиабилетом, предоплата составит 80% от стоимости всего тура.<\/p>\n
Оставшуюся сумму Вы можете выплатить после Вашего прибытия в страну.<\/p>\n
Мы оставляем за собой право отменить бронирование, если платежи не будут произведены в установленные сроки.<\/p>\n
Форма оплаты<\/strong><\/p>\n
Предоплату можно внести одним из следующих способов:<\/p>\n
- \n
- Банковский перевод<\/li>\n
- Кредитная карта (при оплате посредством кредитной карты, сервис взимает 3% от общей суммы)<\/li>\n<\/ul>\n
Окончательный платеж может быть осуществлен следующими способами:<\/p>\n
- \n
- Оплата наличными (при оплате наличными Вы получаете скидку в размере 2% от общей суммы)<\/li>\n
- Кредитная карта (при оплате посредством кредитной карты, сервис взимает 3% от общей суммы)<\/li>\n<\/ul>\n
<\/p>\n
Условия аннуляции тура <\/strong><\/p>\n
Если Вы или один из членов Вашей группы желает отменить тур, сообщите об этом нашей компании, как можно скорее в письменной форме. Пожалуйста, обратите внимание, что в данном случае предоплата (200 евро) не подлежит возмещению, но Вы сможете использовать ее в течении всего года и заказать другой тур. В этом случае наша фирма будет вынуждена взять с Вас дополнительные 100 евро для повторного бронирования отеля.<\/p>", "IsLandOnly": false, "IsRestrictMultiHotels": false, "IsHotelTemplates": true, "IsRouteServices": true, "MultiHotelDelta": 0, "Rate": "EU", "DateStart": "2018-02-01T00:00:00Z", "DateEnd": "2018-02-26T00:00:00Z", "Status": { "Key": 3, "Value": "Доступен для продажи" }, "Templates": [ {"$id": "1"}, {"$id": "2"} ], "Types": [ { "Id": 2, "Name": "Стандартный тур", "ParentId": null, "Type": "TourType" }], "LinkingFlightsRules": { "notCombineDifferentAirlineRule": { "airlines": [], "flightSettings": [], "enabled": false }, "checkPlusMinus1CharterRule": { "FlightSettingPairs": [], "enabled": false }, "notCombineDifferentTariffGroupRule": { "FlightSettings": [], "enabled": true }, "notCombineDifferentPartnerRule": { "FlightSettings": [], "enabled": false }, "departureCityEqualsArrivalCityRule": { "FlightSettingPairs": [], "enabled": false }, "combineOnlySpecificChartersRule": { "settings": [], "enabled": false } }, "XmlSettings": "<TourProgram xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"><Key>0<\/Key><TourSettingsViewModel><TourName> Автобусный тур (новые проверки)_2<\/TourName><TourUrl>www.megatec.ru<\/TourUrl><BookingConditions><p><strong>Условия бронирования</strong></p>\r\n<p>Сразу же после получения Вашей заявки и обсуждения всех деталей, мы вышлем Вам счет-фактуру на безвозвратный депозит. После получения депозита в размере 50-100 евро (в зависимости от стоимости тура) на человека, Вы получите Тур Ваучер, подтверждающий все детали и условия поездки в Армению.</p>\r\n<p><strong>Условия оплаты</strong></p>\r\n<p>После бронирования тура необходимо внести безвозвратный депозит в размере 50-100 евро, что обеспечит нашим координаторам возможность начать организацию поездки (бронирование гостиницы, питание, транспорт и т.п.). При покупки тура с авиабилетом, предоплата составит 80% от стоимости всего тура.</p>\r\n<p>Оставшуюся сумму Вы можете выплатить после Вашего прибытия в страну.</p>\r\n<p>Мы оставляем за собой право отменить бронирование, если платежи не будут произведены в установленные сроки.</p>\r\n<p><strong>Форма оплаты</strong></p>\r\n<p>Предоплату можно внести одним из следующих способов:</p>\r\n<ul>\r\n<li>Банковский перевод</li>\r\n<li>Кредитная карта (при оплате посредством кредитной карты, сервис взимает 3% от общей суммы)</li>\r\n</ul>\r\n<p>Окончательный платеж может быть осуществлен следующими способами:</p>\r\n<ul>\r\n<li>Оплата наличными (при оплате наличными Вы получаете скидку в размере 2% от общей суммы)</li>\r\n<li>Кредитная карта (при оплате посредством кредитной карты, сервис взимает 3% от общей суммы)</li>\r\n</ul>\r\n<p> </p>\r\n<p><strong>Условия аннуляции тура </strong></p>\r\n<p>Если Вы или один из членов Вашей группы желает отменить тур, сообщите об этом нашей компании, как можно скорее в письменной форме. Пожалуйста, обратите внимание, что в данном случае предоплата (200 евро) не подлежит возмещению, но Вы сможете использовать ее в течении всего года и заказать другой тур. В этом случае наша фирма будет вынуждена взять с Вас дополнительные 100 евро для повторного бронирования отеля.</p><\/BookingConditions><ManagerKey>127<\/ManagerKey><TourTypes><int>2<\/int><\/TourTypes><DateBegin>2018-02-01T00:00:00Z<\/DateBegin><DateEnd>2018-02-26T00:00:00Z<\/DateEnd><IsLandOnly>false<\/IsLandOnly><IsRestrictMultiHotels>false<\/IsRestrictMultiHotels><MultiHotelDelta>0<\/MultiHotelDelta><Rate>EU<\/Rate><IsAction>false<\/IsAction><TourLeadDepartment>0<\/TourLeadDepartment><DepartureCities><int>1<\/int><int>312<\/int><int>259<\/int><int>1082<\/int><int>1099<\/int><\/DepartureCities><DepartureCountries><int>460<\/int><\/DepartureCountries><\/TourSettingsViewModel><TourConsistencyViewModel><ArrivalCities><int>35<\/int><\/ArrivalCities><Countries><int>90<\/int><\/Countries><ServiceTemplates><ServiceTemplate><Id>8<\/Id><SvKey>14<\/SvKey><BusTransferData><SelectedPacket><Key>779<\/Key><Value>Общая проверка системы__<\/Value><\/SelectedPacket><SelectedPartners><IntStringElement><Key>12664<\/Key><Value>Новый Путь<\/Value><\/IntStringElement><IntStringElement><Key>12662<\/Key><Value>Bonsai Co.Ltd<\/Value><\/IntStringElement><\/SelectedPartners><PartnersShowAll>false<\/PartnersShowAll><SelectedCountriesFrom><IntStringElement><Key>460<\/Key><Value>Россия<\/Value><\/IntStringElement><\/SelectedCountriesFrom><CountriesFromShowAll>false<\/CountriesFromShowAll><SelectedCitiesFrom><IntStringElement><Key>1<\/Key><Value>Москва<\/Value><\/IntStringElement><\/SelectedCitiesFrom><CitiesFromShowAll>false<\/CitiesFromShowAll><SelectedCountriesTo><IntStringElement><Key>90<\/Key><Value>Австрия<\/Value><\/IntStringElement><\/SelectedCountriesTo><CountriesToShowAll>false<\/CountriesToShowAll><SelectedCitiesTo><IntStringElement><Key>275<\/Key><Value>Арльберг<\/Value><\/IntStringElement><\/SelectedCitiesTo><CitiesToShowAll>false<\/CitiesToShowAll><SelectedCodes><IntStringElement><Key>1127<\/Key><Value>Переезд 2_ 16:54-18:24 (+3)<\/Value><\/IntStringElement><IntStringElement><Key>1133<\/Key><Value>Переезд 4 (+2)<\/Value><\/IntStringElement><\/SelectedCodes><CodesShowAll>false<\/CodesShowAll><SelectedSubcodes1 /><Subcodes1ShowAll>false<\/Subcodes1ShowAll><SelectedSubcodes2 /><Subcodes2ShowAll>false<\/Subcodes2ShowAll><DepartureTimeFrom>00:00<\/DepartureTimeFrom><DepartureTimeTo>23:59<\/DepartureTimeTo><ArrivalTimeFrom>00:00<\/ArrivalTimeFrom><ArrivalTimeTo>23:59<\/ArrivalTimeTo><\/BusTransferData><IsHooded>false<\/IsHooded><IsDeleted>false<\/IsDeleted><IsNotCalculate>false<\/IsNotCalculate><IdParent xsi:nil=\"true\" /><IsCity>1<\/IsCity><IsRoute>1<\/IsRoute><IsPartnerBasedOn>0<\/IsPartnerBasedOn><\/ServiceTemplate><ServiceTemplate><Id>1<\/Id><SvKey>3<\/SvKey><HotelData><HotelGroupId>23<\/HotelGroupId><HotelGroups><HotelGroup><Id>22<\/Id><Name>Проживание_0<\/Name><Hotel><SelectedTourDuration><unsignedByte>7<\/unsignedByte><unsignedByte>8<\/unsignedByte><\/SelectedTourDuration><SelectedPacket><Key>779<\/Key><Value>Общая проверка системы<\/Value><\/SelectedPacket><SelectedCountryByHotel><Key>90<\/Key><Value>Австрия<\/Value><\/SelectedCountryByHotel><CountriesByHotelShowAll>false<\/CountriesByHotelShowAll><SelectedPartners><IntStringElement><Key>12667<\/Key><Value>Партнер-покупатель1<\/Value><\/IntStringElement><\/SelectedPartners><PartnersShowAll>false<\/PartnersShowAll><SelectedCitiesByHotel><SelectedCitiesByHotel><Key>35<\/Key><Value>Вена<\/Value><\/SelectedCitiesByHotel><\/SelectedCitiesByHotel><CitiesByHotelShowAll>false<\/CitiesByHotelShowAll><FilteredAddedHotels><HotelDetail><HotelId>178<\/HotelId><PartnerId>12667<\/PartnerId><CountryId>0<\/CountryId><CityId>35<\/CityId><ResortId xsi:nil=\"true\" /><\/HotelDetail><\/FilteredAddedHotels><AllHotelInPacket>false<\/AllHotelInPacket><\/Hotel><Description>Австрия \\ Вена \\ <\/Description><\/HotelGroup><\/HotelGroups><\/HotelData><IsHooded>false<\/IsHooded><IsDeleted>false<\/IsDeleted><IsNotCalculate>false<\/IsNotCalculate><IdParent xsi:nil=\"true\" /><IsCity>1<\/IsCity><IsRoute>1<\/IsRoute><IsPartnerBasedOn>0<\/IsPartnerBasedOn><\/ServiceTemplate><\/ServiceTemplates><ServiceTemplateId>15<\/ServiceTemplateId><\/TourConsistencyViewModel><MenuViewModel><Status><Key>ForSale<\/Key><Value>Доступен для продажи<\/Value><\/Status><\/MenuViewModel><LinkingFlightsRulesViewModel><NotCombineDifferentAirlineRule><Enabled>false<\/Enabled><Airlines /><FlightSettings /><\/NotCombineDifferentAirlineRule><CheckPlusMinus1CharterRule><Enabled>false<\/Enabled><\/CheckPlusMinus1CharterRule><NotCombineDifferentTariffGroupRule><Enabled>true<\/Enabled><\/NotCombineDifferentTariffGroupRule><NotCombineDifferentPartnerRule><Enabled>false<\/Enabled><\/NotCombineDifferentPartnerRule><DepartureCityEqualsArrivalCityRule><Enabled>false<\/Enabled><\/DepartureCityEqualsArrivalCityRule><CombineOnlySpecificChartersRule><Enabled>false<\/Enabled><Settings /><\/CombineOnlySpecificChartersRule><\/LinkingFlightsRulesViewModel><\/TourProgram>", "Type": "TourProgram" }], "TourDurations": [10], "TourDates": ["2018-02-25T00:00:00"], "HotelCities": [ { "key": 35, "Country": { "key": 90, "name": "Австрия", "Code": "AUS", "CitizenName": "Австрия", "CitizenNameLat": "AUSTRIA", "PassportMinDurCheckFrom": 0, "CheckINN": false, "PassportMinDur": null, "INNName": "ИНН", "Web": 1, "WebImage": "/pics/animate/austria.gif", "WebHTTP": "", "AnkLang": 0, "Type": "Country" }, "name": "Вена", "Code": "VIE", "Web": 0, "RSKey": 0, "WebImage": null, "IsDeparture": 1, "Type": "City" }], "HotelResorts": [ { "Key": -1, "CountryKey": 0, "Name": "Не указан", "NameLat": null, "Type": "Resort" }], "HotelCategories": [ { "Key": 56, "Name": "2*", "PrintNumber": 2, "Type": "HotelCatigory" }], "Hotels": [ { "Key": 178, "Country": { "key": 90, "name": "Австрия", "Code": "AUS", "CitizenName": "Австрия", "CitizenNameLat": "AUSTRIA", "PassportMinDurCheckFrom": 0, "CheckINN": false, "PassportMinDur": null, "INNName": "ИНН", "Web": 1, "WebImage": "/pics/animate/austria.gif", "WebHTTP": "", "AnkLang": 0, "Type": "Country" }, "City": { "key": 35, "Country": { "key": 90, "name": "Австрия", "Code": "AUS", "CitizenName": "Австрия", "CitizenNameLat": "AUSTRIA", "PassportMinDurCheckFrom": 0, "CheckINN": false, "PassportMinDur": null, "INNName": "ИНН", "Web": 1, "WebImage": "/pics/animate/austria.gif", "WebHTTP": "", "AnkLang": 0, "Type": "Country" }, "name": "Вена", "Code": "VIE", "Web": 0, "RSKey": 0, "WebImage": null, "IsDeparture": 1, "Type": "City" }, "Resort": null, "Name": "Ananas", "Category": { "Key": 56, "Name": "2*", "PrintNumber": 2, "Type": "HotelCatigory" }, "TimeFrom": "1900-01-01T11:00:00", "TimeTo": "1900-01-01T12:00:00", "HTTP": "http://booking.panteon.ru/TourPrograms/Home/Tour/?tourKey=100000007", "Stars": "2*", "TimeIsEmpty": false, "NameLat": "Ananas", "Address": null, "IsCruise": 0, "Phone": "(+43/1) 546200", "Code": null, "Type": "Hotel" }], "Pansions": [ { "Key": 4, "Code": "BB2", "Name": "Завтрак", "NameLat": null, "Type": "Pansion" }, { "Key": 2, "Code": "HB", "Name": "Полупансион", "NameLat": null, "Type": "Pansion" } ], "Airlines": [], "FlightTariffs": [], "DepartureCities": [ { "key": -1, "Country": null, "name": "Без перелета", "Code": null, "Web": null, "RSKey": null, "WebImage": null, "IsDeparture": null, "Type": "City" }], "DepartureAirports": [], "ArrivalCities": [], "ArrivalAirports": [], "HotelTypes": [ { "key": 93, "name": "Best choice", "Type": "HotelType" }, { "key": 166, "name": "Майские праздники", "Type": "HotelType" }, { "key": 94, "name": "Молодежный отдых", "Type": "HotelType" }, { "key": 5, "name": "Рекомендуемые", "Type": "HotelType" }, { "key": 201, "name": "222", "Type": "HotelType" }, { "key": 206, "name": "Нпа новый улучшенный", "Type": "HotelType" }, { "key": 200, "name": "Новый который лучший", "Type": "HotelType" }, { "key": 177, "name": "Хитрый отель: работает как хочет", "Type": "HotelType" } ] } } http://dev1-22:9000/TourSearchOwin/Tour?DepartureCityKeys=312&Dates=25.02.2018&Dates=26.02.2018&Durations=9&Durations=10&PageNumber=1&PageSize=20&HotelScheme=&TourKey=&TourDuration=&isFromBasket=false&isFillSecondaryFilters=true&DestinationType=1&DestinationKey=90&AdultCount=2&ChildAges=2&ChildAges=4&CurrencyName=EU&AviaQuota=5&HotelQuota=5&BusTransferQuota=5&MinPrice=NaN&TourType=-1&CityIds=-1&TimeDepartureFrom=00%3A00&TimeDepartureTo=23%3A59&TimeArrivalFrom=00%3A00&TimeArrivalTo=23%3A59&ArrivalFlightNoTransfer=false&DepartureFlightNoTransfer=false http://dev1-22:9000/TourSearchOwin/Tour?DepartureCityKeys=312&Dates=25.02.2018&Dates=26.02.2018&Durations=9&Durations=10&PageNumber=1&PageSize=20&HotelScheme=&TourKey=&TourDuration=&isFromBasket=false&isFillSecondaryFilters=true&DestinationType=1&DestinationKey=90&AdultCount=2&ChildAges=2&ChildAges=4&CurrencyName=EU&AviaQuota=5&HotelQuota=5&BusTransferQuota=5&MinPrice=NaN&TourType=-1&CityIds=-1&TimeDepartureFrom=00%3A00&TimeDepartureTo=23%3A59&TimeArrivalFrom=00%3A00&TimeArrivalTo=23%3A59&ArrivalFlightNoTransfer=false&DepartureFlightNoTransfer=false&wrongLicenseFileUpperTitle=%D0%9D%D0%B5%D0%BA%D0%BE%D1%80%D1%80%D0%B5%D0%BA%D1%82%D0%BD%D1%8B%D0%B9+%D1%84%D0%B0%D0%B9%D0%BB+%D0%BB%D0%B8%D1%86%D0%B5%D0%BD%D0%B7%D0%B8%D0%B8.&_=1519198071922
ПримерВызов метода Duration
http://localhost:9000/TourSearchOwin/Duration?departureCity=1&destinationCity=-1&Key=90&Name=Австрия&Type=1&tourDate=25.02.2018,26.02.2018&tourTypes=-1&term=
Возвращаемый результат метода Duration (в формате JSON)
[ 7, 8, 10, 12, 15, 18 ]
Загрузка справочников
Выгрузка списка категорий отелей (GetHotelCategories)
Метод возвращает список категорий отелей (примеры: 3*, 4*, Apts и т.д.).
- Формат запроса:
- ?action=GetHotelCategories
- Принимаемые параметры:
- id – идентификатор категории отеля (опциональный, передача в запрос нескольких id не обрабатывается, в этом случае возвращаются все результаты. Если указан, то запрашивается только одна запись)
- Возвращаемый результат:
- id – идентификатор категории отеля
- name – название категории отеля
ПримерВызов метода GetHotelCategories
http://localhost:9000/TourSearchOwin/searchApi?action=GetHotelCategories
Возвращаемый результат метода GetHotelCategories (в формате JSON)
{ "version": "1.0", "hotelCategories": [ { "id": 59, "name": "5*" }, { "id": 58, "name": "4*" }, { "id": 57, "name": "3*" } ] }
Выгрузка списка отелей (GetHotels)
Метод возвращает список всех доступных отелей, на которые есть актуальные цены.
- Формат запроса:
- ?action=GetHotels
- Принимаемые параметры:
- id – идентификатор отеля (опциональный, передача в запрос нескольких id не обрабатывается, в этом случае возвращаются все результаты. Если указан, то запрашивается только одна запись)
- Возвращаемый результат:
- id – идентификатор отеля
- name – название отеля
- hotelCategoryId – идентификатор категории отеля
- resortId – идентификатор города, в котором расположен отель
ПримерВызов метода GetHotels
http://localhost:9000/TourSearchOwin/searchApi?action=GetHotels
Возвращаемый результат метода GetHotels (в формате JSON)
{ "version": "1.0", "hotels": [ { "id": 672, "name": "'Opal", "hotelCategoryId": 59, "resortId": 0 }, { "id": 106, "name": "OPERA LAFAYETTE", "hotelCategoryId": 23, "resortId": 42 }, { "id": 683, "name": "Altstadt Vienna", "hotelCategoryId": 23, "resortId": 0 }, { "id": 702, "name": "Albatros", "hotelCategoryId": 57, "resortId": 0 }, { "id": 709, "name": "Am Brilliantengrund", "hotelCategoryId": 23, "resortId": 40 }, { "id": 2362, "name": "Gastehaus Franz Riml", "hotelCategoryId": 58, "resortId": 0 } ] }
Поиск туров (GetTours)
Метод поиска туров использует множество параметров для поиска и фильтрации туров. Метод возвращает наиболее дешевые предложения, найденные по предоставленным параметрам и сгруппированные по отелям в порядке возрастания цены. Количество туров в выдаче регулируется параметром count.
- Формат запроса:
- ?action=GetTours&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.2016).
- dateTo * – конечная дата в диапазоне дат вылета в формате dd.MM.yyyy (пример: 31.12.2016).
- adults * – количество взрослых.
- kids * – количество детей.
- kidsAges – количество полных лет каждому ребёнку, передается в виде строки, перечисление через запятую (пример: 3,6).
- nightsMin * – минимальное количество дней в туре.
- nightsMax * – максимальное количество дней в туре.
- resorts – идентификаторы городов, перечисление через запятую.
- hotelCategories – идентификаторы категорий отелей, перечисление через запятую.
- hotels – идентификаторы отелей, перечисление через запятую.
- meals – идентификаторы видов питания, перечисление через запятую.
- currencyId * – валюта, в которой будут выданы цены, а также валюта для входящих параметров priceMin и priceMax (если они есть).
- priceMin – Цена тура от.
- priceMax – Цена тура до.
- hotelIsNotInStop – при значении 1 в результатах не должно быть отелей в стопе (отели со статусом «под запрос» допустимы). При значении 0 в результат должны попадать как отели в стопе, так и отели с наличием мест и с местами по запросу.
- ticketsIncluded * – при значении 1 в результатах должны быть только туры с включенной стоимостью перелета («только отель» недопустимы). При значении 0 в результат должны попадать как туры без перелета, так и туры с перелетом.
- hasTickets – при значении 1 в результатах должны быть туры только с реальным наличием билетов в перелете (не должно быть туров со стопом на перелете, перелеты со статусом «под запрос» недопустимы). При значении 0 в результат должны попадать как туры без билетов на рейс, так и туры с наличием билетов и с билетами по запросу.
- excludeUsualTours – при значении 1 из результатов должны быть исключены туры, являющиеся обычными турами (не являющиеся многоотельными). При значении 0 или отсутствии данного параметра такие туры должны быть включены в результат.
- excludeCombined – при значении 1 из результатов должны быть исключены туры, являющиеся многоотельными. При значении 0 или отсутствии данного параметра такие туры должны быть включены в результат.
- showToursWithoutHotels – при значении 1 в результатах поиска вместе с обычными турами должны подбираться туры без проживания (без услуги отель в составе тура). При значении 0 или отсутствии данного параметра такие туры должны быть исключены из результата поиска. Параметр обрабатывается, начиная с релиза 15.2.
- Возвращаемый результат ( * – обязательный):
- offerId * – уникальный идентификатор предложения, по которому в дальнейшем можно провести актуализацию тура.
- tourName * – название программы тура.
- hotelId * – идентификатор отеля.
- hotelUrl – ссылка на страницу с описанием отеля.
- resortId * – идентификатор города, в котором расположен отель.
- hotelCategoryId * – идентификатор категории отеля.
- mealId * – идентификатор вида питания.
- htPlaceName * – название типа размещения в номере (примеры: 2 ADL + 1 CH (2-12), 2 ADL + INF).
- roomTypeName – название категории номера (примеры: standard, deluxe, family, deluxe super ocean view).
- tourDate * – дата начала тура в формате dd.MM.yyyy (пример: 31.12.2016).
- tourEndDate – дата окончания тура (дата прилета) в формате dd.MM.yyyy (пример: 31.12.2016).
- nights * – продолжительность тура в днях.
- price * – цена тура в валюте, которая была указана во входном параметре currencyId.
- hotelIsInStop * – наличие мест в отеле, допустимы значения: 0 – есть места, 1 – нет мест, 2 – запрос.
- ticketsIncluded * – включена ли стоимость билетов в стоимость тура, допустимы значения: 0 – не включена (тур только отель), 1 – включена (пакетный тур).
- hasEconomTicketsDpt * – наличие билетов эконом класса на место отдыха, допустимы значения: 0 – нет мест, 1 есть места, 2 – запрос. При значении атрибута ticketsIncluded = 0 значение данного параметра будет проигнорировано. Группы перелетов задаются в настройке flightTariffGroups.
- hasEconomTicketsRtn * – наличие обратных билетов эконом класса, допустимы значения: 0 – нет мест, 1 есть места, 2 – запрос. При значении атрибута ticketsIncluded = 0 значение данного параметра будет проигнорировано. Группы перелетов задаются в настройке flightTariffGroups.
- hasBusinessTicketsDpt * – наличие билетов бизнес класса на место отдыха, допустимы значения: 0 – нет мест, 1 есть места, 2 – запрос. При значении атрибута ticketsIncluded = 0 значение данного параметра будет проигнорировано. Группы перелетов задаются в настройке flightTariffGroups.
- hasBusinessTicketsRtn * – наличие обратных билетов бизнес класса, допустимы значения: 0 – нет мест, 1 есть места, 2 – запрос. При значении атрибута ticketsIncluded = 0 значение данного параметра будет проигнорировано. Группы перелетов задаются в настройке flightTariffGroups.
- 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 – параметр не обрабатывается.
ПримерВызов метода GetTours
http://localhost:9000/TourSearchOwin/searchApi?action=GetTours&count=20&countryId=22&departCityId=1 &dateFrom=10.08.2016&dateTo=10.08.2016&ticketsIncluded=0&adults=2&kids=0&nightsMin=7&nightsMax=7¤cyId=1
Возвращаемый результат метода GetTours (в формате JSON)
{ "version": "1.0", "tours": [ { "offerId": 256, "tourName": "Тур в Португалии_авиа", "hotelId": 3239, "hotelUrl": "www.tophotels.com/NapHotel", "resortId": 45, "hotelCategoryId": 64, "mealId": 38, "htPlaceName": "2 Adult", "roomTypeName": "Sea View", "tourDate": "10.08.2016", "tourEndDate": "17.08.2016", "nights": 7, "price": 1036, "hotelIsInStop": 2, "ticketsIncluded": 1, "hasEconomTicketsDpt": 1, "hasEconomTicketsRtn": 2, "hasBusinessTicketsDpt": 0, "hasBusinessTicketsRtn": 1, "tourUrl": "http://localhost/TourSearchClient/Basket?departureCities=1&destination=1_22&tour=161&date=10.08.16&duration=8&hotelScheme=1_7_3239_221_10760 &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", "fewPlacesInHotel": 5, "fewTicketsDptY": 8, "fewTicketsRtnY": 8, "fewTicketsDptB": null, "fewTicketsRtnB": null, "spoUrl": "wiki.megatec.ru", "flags": 0, "description": "5 н., Порту, 3* Paradisos, Standart, BB", "receivingParty": "", "earlyBookingValidTill": "" }] }
Актуализация тура (ActualizeTour)
Метод служит для получения окончательной цены тура (со всеми обязательными доплатами и сборами), списка включенных в стоимость тура услуг, а также вариантов перелета, возможных дополнительных услуг и доплат по ним. Метод должен возвращать цену самой дешевой конфигурации запрашиваемого предложения. Для корректной работы метода необходимо, чтобы offerId был уникален для предложений с разным составом группы туристов, даже в случае если все прочие параметры предложений совпадают.
- Формат запроса:
- ?action=ActualizeTour
- Принимаемые параметры ( * – обязательный):
- offerId * – уникальный идентификатор ранее найденного предложения.
- currencyId * – валюта, в которой рассчитывается цена и доплаты.
- Возвращаемый результат ( * – обязательный):
- price * – актуализированная цена тура в валюте, которая была указана во входном параметре currencyId.
- ticketsIsIncluded * – включена ли стоимость билетов в стоимость тура, допустимы значения: 0 – не включена (тур только отель), 1 – включена (пакетный тур).
- hotelIsInStop – наличие мест в отеле, допустимы значения: 0 – есть места, 1 – нет мест, 2 – запрос.
- hasEconomTicketsDpt * – наличие билетов эконом класса на место отдыха, допустимы значения: 0 – нет мест, 1 есть места, 2 – запрос. При значении атрибута ticketsIncluded = 0 значение данного параметра будет проигнорировано.
- hasEconomTicketsRtn * – наличие обратных билетов эконом класса, допустимы значения: 0 – нет мест, 1 есть места, 2 – запрос. При значении атрибута ticketsIncluded = 0 значение данного параметра будет проигнорировано.
- hasBusinessTicketsDpt * – наличие билетов бизнес класса на место отдыха, допустимы значения: 0 – нет мест, 1 есть места, 2 – запрос. При значении атрибута ticketsIncluded = 0 значение данного параметра будет проигнорировано.
- hasBusinessTicketsRtn * – наличие обратных билетов бизнес класса, допустимы значения: 0 – нет мест, 1 есть места, 2 – запрос. При значении атрибута ticketsIncluded = 0 значение данного параметра будет проигнорировано.
- 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.
ПримерВызов метода ActualizeTour
http://localhost:9000/TourSearchOwin/searchApi?action=ActualizeTour&offerID=256¤cyId=1
Возвращаемый результат метода ActualizeTour (в формате JSON)
{ "version": "1.0", "actualizedTour": { "price": 1036, "ticketsIsIncluded": 1, "hotelIsInStop": 2, "hasEconomTicketsDpt": 1, "hasEconomTicketsRtn": 2, "hasBusinessTicketsDpt": 0, "hasBusinessTicketsRtn": 1, "fewPlacesInHotel": 5, "fewEconomTicketsDpt": 8, "fewEconomTicketsRtn": 8, "fewBusinessTicketsDpt": null, "fewBusinessTicketsRtn": null, "tourUrl": "http://localhost/TourSearchClient/Basket?departureCities=1&destination=1_22&tour=161&date=10.08.16&duration=8&hotelScheme=1_7_3239_221_10760 &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", "services": [ { "id": 0, "type": "DptTransport", "name": "А_П::Москва/Лиссабон/3G001, DME-LUS, 11:00-13:00/Y Экономический класс", "isIncluded": 1, "description": "", "surcharge": 100, "flightCompatibleIds": "2", "flightClass": "ECONOM", "flightAvailability": 1, "flightPlacesCount": -1, "flightAirportFrom": "DME", "flightAirportTo": "LUS", "flightNum": "3G 001", "flightAirline": "3G", "flightStartDateTime": "10.08.2016 11:00", "flightEndDateTime": "10.08.2016 13:00", "flightAircraft": "310" }, { "id": 1, "type": "HotelInfo", "name": "HOTEL::Лиссабон/Отель в Лиссабоне-4,7 ночей/Double(Sea View),2 Adult/TT NewP", "isIncluded": 1, "description": "", "surcharge": 836, "flightCompatibleIds": null, "flightClass": null, "flightAvailability": -1, "flightPlacesCount": -1, "flightAirportFrom": null, "flightAirportTo": null, "flightNum": null, "flightAirline": null, "flightStartDateTime": null, "flightEndDateTime": null, "flightAircraft": null }, { "id": 2, "type": "RtnTransport", "name": "А_П::Лиссабон/Москва/3G002, LUS-DME, 20:00-21:00/Y Экономический класс", "isIncluded": 1, "description": "", "surcharge": 100, "flightCompatibleIds": "0", "flightClass": "ECONOM", "flightAvailability": 2, "flightPlacesCount": -1, "flightAirportFrom": "LUS", "flightAirportTo": "DME", "flightNum": "3G 002", "flightAirline": "3G", "flightStartDateTime": "17.08.2016 20:00", "flightEndDateTime": "17.08.2016 21:00", "flightAircraft": "310" } ] } }
Проверка туриста (checkTourist)
Метод служит для получения информации о путевке по номеру путевки и номеру паспорта туриста.
- Формат запроса:
- /checkTourist
- Принимаемые параметры ( * – обязательный):
- dogovorNumber * – номер путевки.
- passport * – номер паспорта туриста (заграничного или общегражданского).
- Возвращаемый результат:
- isDogovor – true, если путевка найдена по номеру путевки, false, если не найдена.
- isAnnulated – true, если путевка аннулирована, false, если не аннулирована.
- dogovorStatus – статус путевки
- isPay – true, если путевка полностью оплачена, false, если не оплачена или оплачена частично.
- dogovorDateBegin – дата начала заезда.
- dogovorDateEnd – дата окончания заезда.
- dogovorDateCreate – дата создания путевки.
- isTouristDogovorCreate – true, если турист (по номеру паспорта) является главным туристом в путевке.
- services – набор услуг в путевке.
- svKey – код класса услуги.
- code – код услуги.
- subCode1 – код доп. описания 1 услуги.
- subCode2 – код доп. описания 2 услуги.
- name – название услуги.
- touristInfo – информация о главном туристе.
- lastname – фамилия туриста (рус).
- firstname – имя туриста (рус).
- surname – отчество туриста.
- address – адрес (индекс, город, улица, дом, квартира).
- postcode – индекс.
- city – город.
- street – улица.
- home – дом.
- roomNumber – квартира.
ПримерВызов метода checkTourist
http://localhost:9000/TourSearchOwin/checkTourist?dogovorNumber=AU25120001&passport=1234567
Возвращаемый результат метода checkTourist (в формате JSON)
{ "isDogovor": true, "isAnnulated": false, "dogovorStatus": "ОК", "isPay": true, "dogovorDateBegin": "05.02.2018", "dogovorDateEnd": "12.02.2018", "dogovorDateCreate": "01.02.2018", "isTouristDogovorCreate": true, "services": [ { "svKey": "1", "code": "1088", "subCode1": "147", "subCode2": "35", "name": "А_П::Вена/Москва/SU2353, VIE-SVO, 18:05-22:40/NSU Экономический класс" }, { "svKey": "3", "code": "698", "subCode1": "46200", "subCode2": "1", "name": "HOTEL::Вена/Graben-1*,5 ночей/DBL(Standart ),2Ad/FB Полный пансион" }, { "svKey": "1", "code": "1087", "subCode1": "147", "subCode2": "1", "name": "А_П::Москва/Вена/SU2352, SVO-VIE, 16:20-17:05/NSU Экономический класс" } ], "touristInfo": { "lastname": "Ivanov", "firstname": "Ivan", "surname": "Ivanovich", "address": "123456, г. Москва, ул. Ленина, д. 1, кв. 15", "postcode": "123456", "city": "Москва", "street": "Ленина", "home": "1", "roomNumber": "15" } }
- Формат запроса: