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

Материал из Megatec
Перейти к: навигация, поиск

Статья находится на стадии разработки.

Версия статьи от 21-02-2018.

Поддерживаемые версии ПК «Мастер-Тур»:
Начиная с 15 версии


Введение

Данный 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 – услуги в туре
        • CityFrom – город отправления
      • '
      • '
    • '
    • '
    • '
    • '
     "CountryId": 0,
     "Services":       [
                 {
           "CityFrom":             {
              "Key": 312,
              "Value": "Астрахань"
           },
           "CountryFrom":             {
              "Key": 460,
              "Value": "Россия"
           },
           "CityTo":             {
              "Key": 275,
              "Value": "Арльберг"
           },
           "CountryTo":             {
              "Key": 90,
              "Value": "Австрия"
           },
           "BusTransfer":             {
              "Key": 1316,
              "Value": "Переезд 2_"
           },
           "Days": 2,
           "TimeFrom": "10:30:00",
           "TimeTo": "18:24:00",
           "BusTransferDetails": [            {
              "Transport":                {
                 "Key": 39,
                 "Value": "Car"
              },
              "IsShowTransportPlan": true,
              "Cost": 145.56,
              "QuotaStatus":                {
                 "PlacesStatus": 4,
                 "FreePlaces": 0,
                 "TotalPlaces": 0
              },
              "PartnerId": 12662,
              "ByPax": true,
              "Partner":                {
                 "Key": 0,
                 "Value": null
              }
           }],
           "Id": 8,
           "SvKey": 14,
           "IsSubCode1": true,
           "IsSubCode2": true,
           "IsPartnerBasedOn": false,
           "Day": 1,
           "DurationInNight": 1,
           "BeginDateTime": "2018-02-25T10:30:00",
           "EndDateTime": "2018-02-26T18:24:00",
           "IsHooded": false,
           "IsDeleted": false,
           "IsNotCalculate": false,
           "PacketId": 779,
           "Index": 0
        },
                 {
           "Hotel":             {
              "Key": 178,
              "Value": "Ananas"
           },
           "City":             {
              "Key": 35,
              "Value": "Вена"
           },
           "Stars":             {
              "Key": 56,
              "Value": "2*"
           },
           "Resort":             {
              "Key": -1,
              "Value": null
           },
           "ImageURL": "",
           "Http": "http://booking.panteon.ru/TourPrograms/Home/Tour/?tourKey=100000007",
           "Description": "",
           "Country":             {
              "Key": 90,
              "Value": "Австрия"
           },
           "HotelDetails": [            {
              "HotelRoom": 46462,
              "Room":                {
                 "Key": 2,
                 "Value": "Double"
              },
              "RoomCategory":                {
                 "Key": 4129,
                 "Value": "Cottage Premier Deluxe"
              },
              "AccomodationType":                {
                 "Key": 1256,
                 "Value": "2+1_K",
                 "AdultCount": 2,
                 "ChildCount": 1
              },
              "Pansion":                {
                 "Key": 4,
                 "Value": "Завтрак"
              },
              "Cost": 194.08,
              "QuotaStatus":                {
                 "PlacesStatus": 4,
                 "FreePlaces": 0,
                 "TotalPlaces": 0
              },
              "PartnerId": 12667,
              "ByPax": true,
              "Partner":                {
                 "Key": 12667,
                 "Value": "Партнер-покупатель1"
              }
           }],
           "HotelTypes":             [
                             {
                 "Key": 93,
                 "Value": "Best choice"
              },
                             {
                 "Key": 166,
                 "Value": "Майские праздники"
              },
                             {
                 "Key": 94,
                 "Value": "Молодежный отдых"
              },
                             {
                 "Key": 5,
                 "Value": "Рекомендуемые"
              },
                             {
                 "Key": 201,
                 "Value": "222"
              },
                             {
                 "Key": 206,
                 "Value": "Нпа новый улучшенный"
              },
                             {
                 "Key": 200,
                 "Value": "Новый который лучший"
              },
                             {
                 "Key": 177,
                 "Value": "Хитрый отель: работает как хочет"
              }
           ],
           "Id": 1,
           "SvKey": 3,
           "IsSubCode1": true,
           "IsSubCode2": true,
           "IsPartnerBasedOn": false,
           "Day": 2,
           "DurationInNight": 8,
           "BeginDateTime": "2018-02-26T18:24:00",
           "EndDateTime": "2018-03-06T18:24:00",
           "IsHooded": false,
           "IsDeleted": false,
           "IsNotCalculate": false,
           "PacketId": 779,
           "Index": 1
        }
     ],
     "NotRouteServices": [],
     "MinCostServicesComposition":       [
                 {
           "Key":             {
              "TemplateId": 8,
              "PatternId": 0,
              "SettingId": 0
           },
           "Value":             {
              "Cost": 145.56,
              "ServiceType": 14,
              "Code": 1316,
              "SubCode1": 312,
              "SubCode2": 39,
              "PacketId": 779,
              "PartnerId": 12662,
              "CountryId": 90,
              "CityId": 275,
              "Day": 1,
              "DurationInNight": 1
           }
        },
                 {
           "Key":             {
              "TemplateId": 1,
              "PatternId": 0,
              "SettingId": 0
           },
           "Value":             {
              "Cost": 194.08,
              "ServiceType": 3,
              "Code": 178,
              "SubCode1": 46462,
              "SubCode2": 4,
              "PacketId": 779,
              "PartnerId": 12667,
              "CountryId": 90,
              "CityId": 35,
              "Day": 2,
              "DurationInNight": 8
           }
        }
     ],
     "FlightWeight": 0,
     "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
        }
     },
     "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>&nbsp;</p>\r\n<p><strong>Условия аннуляции тура&nbsp;</strong></p>\r\n<p>Если Вы или один из членов Вашей группы желает отменить тур, сообщите об этом нашей компании, как можно скорее в письменной форме.&nbsp;Пожалуйста, обратите внимание, что в данном случае предоплата (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&currencyId=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&currencyId=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&currency=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&currencyId=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&currency=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 * – номер паспорта туриста (заграничного или общегражданского).
      • Возвращаемый результат:
        • isDogovortrue, если путевка найдена по номеру путевки, false, если не найдена.
        • isAnnulatedtrue, если путевка аннулирована, false, если не аннулирована.
        • dogovorStatus – статус путевки
        • isPaytrue, если путевка полностью оплачена, false, если не оплачена или оплачена частично.
        • dogovorDateBegin – дата начала заезда.
        • dogovorDateEnd – дата окончания заезда.
        • dogovorDateCreate – дата создания путевки.
        • isTouristDogovorCreatetrue, если турист (по номеру паспорта) является главным туристом в путевке.
        • 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"
         }
      }