Мастер-Тур(15):API для отдачи цен в поисковые системы

Материал из Megatec
Версия от 11:18, 9 августа 2016; Biryukov (обсуждение | вклад) (Поиск туров (GetTours))
Перейти к: навигация, поиск

Статья находится на стадии разработки.
Версия статьи от 9-08-2016.

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


Введение

Данный web-сервис выполняет следующие задачи:

  • выгружает справочники (города вылета, страны, курорты, отели и т.д.)
  • осуществляет параметризованный поиск цен
  • актуализирует выбранный тур по его идентификатору

Выдача результатов осуществляется в формате JSON

Установка

Настройка

Загрузка справочников

Выгрузка списка стран (GetCountries)

Метод производит выгрузку всех направлений туроператора.

  • Формат запроса:
    •  ?action=GetCountries
  • Принимаемые параметры:
    • id – идентификатор страны (опциональный, если указан, то запрашивается только одна запись)
  • Возвращаемый результат:
    • id – идентификатор страны
    • name – название страны (рус/анг)
Пример

Вызов метода GetCountries

http://localhost:9000/TourSearchOwin/searchApi?action=GetCountries

Возвращаемый результат метода GetCountries (в формате JSON)

{
   "version": "1.0",
   "countries":    [
            {
         "id": 97,
         "name": "Тунис"
      },            
            {
         "id": 90,
         "name": "Австрия"
      },
            {
         "id": 30,
         "name": "Франция"
      }            
   ]
}


Выгрузка списка городов вылета (GetDepartCities)

Метод производит выгрузку всех доступных городов вылета, а также содержит данные о том, какие направления доступны из каждого города вылета.

  • Формат запроса:
    •  ?action=GetDepartCities
  • Принимаемые параметры:
    • id – идентификатор города вылета (опциональный, если указан, то запрашивается только одна запись)
  • Возвращаемый результат:
    • id – идентификатор города
    • name – название города (рус/анг)
    • countriesTo – идентификаторы стран, которые присутствуют в данном городе вылета
Пример

Вызов метода GetDepartCities

http://localhost:9000/TourSearchOwin/searchApi?action=GetDepartCities

Возвращаемый результат метода GetDepartCities (в формате JSON)

{
   "version": "1.0",
   "departCities":    [
            {
         "id": -1,
         "name": "Не указан",
         "countriesTo":          [
            97,
            90
         ]
      },
            {
         "id": 1,
         "name": "Москва",
         "countriesTo":          [
            90,
            30
         ]
      }
   ]
}


Выгрузка списка курортов (GetResorts)

Метод возвращает список всех доступных курортов.

  • Формат запроса:
    •  ?action=GetResorts
  • Принимаемые параметры:
    • id – идентификатор курорта (опциональный, если указан, то запрашивается только одна запись)
  • Возвращаемый результат:
    • id – идентификатор курорта
    • name – название курорта (рус/анг)
    • countryId – идентификатор страны, в котором расположен курорт
Пример

Вызов метода GetResorts

http://localhost:9000/TourSearchOwin/searchApi?action=GetResorts

Возвращаемый результат метода GetResorts (в формате JSON)

{
   "version": "1.0",
   "countries":    [
            {
         "id": 1,
         "name": "Каринтия",
         "countryId": 90
      },           
            {
         "id": 42,
         "name": "Хаммамед",
         "countryId": 97
      },
            {
         "id": 40,
         "name": "Сусс",
         "countryId": 97
      }           
   ]
}


Выгрузка списка категорий отелей (GetHotelCategories)

Метод возвращает список категорий отелей (примеры: 3*, 4*, Apts и т.д.).

  • Формат запроса:
    •  ?action=GetHotelCategories
  • Принимаемые параметры:
    • 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 – идентификатор отеля
    • 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
      }            
   ]
}


Выгрузка видов питания (GetMeals)

Метод возвращает список видов питания (примеры: HB, BB, без питания и т.д.).

  • Формат запроса:
    •  ?action=GetMeals
  • Принимаемые параметры:
    • id – идентификатор вида питания (опциональный, если указан, то запрашивается только одна запись)
  • Возвращаемый результат:
    • id – идентификатор вида питания
    • name – название вида питания
Пример

Вызов метода GetMeals

http://localhost:9000/TourSearchOwin/searchApi?action=GetMeals

Возвращаемый результат метода GetMeals (в формате JSON)

{
   "version": "1.0",
   "meals":    [
            {
         "id": 1,
         "name": "Пансион"
      },
            {
         "id": 2,
         "name": "Полупансион"
      },
            {
         "id": 4,
         "name": "Завтрак буфет"
      },
            {
         "id": 11,
         "name": "Шведский стол"
      }
   ]
}


Выгрузка списка валют (GetCurrencies)

Метод возвращает список используемых валют.

  • Формат запроса:
    •  ?action=GetCurrencies
  • Принимаемые параметры:
    • id – идентификатор валюты (опциональный, если указан, то запрашивается только одна запись)
  • Возвращаемый результат:
    • id – идентификатор валюты
    • name – название валюты
Пример

Вызов метода GetCurrencies

http://localhost:9000/TourSearchOwin/searchApi?action=GetCurrencies

Возвращаемый результат метода GetCurrencies (в формате JSON)

{
   "version": "1.0",
   "currencies":    [
            {
         "id": 1,
         "name": "USD"
      },
            {
         "id": 2,
         "name": "EUR"
      },
            {
         "id": 3,
         "name": "RUR"
      },
            {
         "id": 9,
         "name": "UAH"
      }
   ]
}


Поиск туров (GetTours)

Метод поиска туров использует множество параметров для поиска и фильтрации туров. Метод возвращает наиболее дешевые предложения, найденные по предоставленным параметрам. Количество туров в выдаче регулируется параметром count.

  • Формат запроса:
    •  ?action=GetTours&count=&countryId=&departCityId=&dateFrom=&dateTo=&adults=&kids=&nightsMin=&nightsMax=&currencyId=
  • Принимаемые параметры ( * – обязательный):
    • 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 в результат должны попадать как туры без билетов на рейс, так и туры с наличием билетов и с билетами по запросу.
  • Возвращаемый результат ( * – обязательный):
    • offerId * – уникальный идентификатор предложения, по которому в дальнейшем можно провести актуализацию тура или бронирование.
    • tourName * – название программы тура.
    • hotelId * – идентификатор отеля.
    • hotelUrl – ссылка на страницу с описанием отеля.
    • resortId * – идентификатор курорта, в котором расположен отель.
    • hotelCategoryId * – идентификатор категории отеля.
    • mealId * – идентификатор вида питания.
    • htPlaceName * – название размещения в номере (примеры: DBL, TRP, 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 – параметр не обрабатывается, всегда возвращается 0.
    • description – условия бронирования тура (указывается в программе тура).
    • receivingParty – параметр не обрабатывается.
    • earlyBookingValidTill – параметр не обрабатывается.
Пример

Вызов метода GetTours

http://localhost:9000/TourSearchOwin/searchApi?action=GetTours&count=20&countryId=22&departCityId=1&dateFrom=10.08.2016&dateTo=10.08.2016&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=$",
      "spoUrl": "wiki.megatec.ru",
      "fewPlacesInHotel": -1,
      "fewTicketsDptY": -1,
      "fewTicketsRtnY": -1,
      "fewTicketsDptB": -1,
      "fewTicketsRtnB": -1,
      "flags": 0,
      "description": "При раннем бронировании предоставляется скидка 20%",
      "receivingParty": "",
      "earlyBookingValidTill": ""
   }]
}