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

Материал из Megatec
Перейти к: навигация, поиск
[досмотренная версия][досмотренная версия]
(Установка)
 
(не показано 325 промежуточных версий 12 участников)
Строка 1: Строка 1:
<span style="color:red;font-size:120%">Статья находится на стадии разработки.</span><br />
 
 
 
Версия статьи от {{REVISIONDAY}}-{{REVISIONMONTH}}-{{REVISIONYEAR}}.
 
Версия статьи от {{REVISIONDAY}}-{{REVISIONMONTH}}-{{REVISIONYEAR}}.
  
Строка 9: Строка 7:
  
 
==Введение==
 
==Введение==
Данный web-сервис разработан для разработки собственного сайта туроператору на основе API.
+
Данный web-сервис служит для разработки собственного сайта туроператору на основе API.
  
 
==Установка==
 
==Установка==
Для работы с web-сервисом необходимо установить [[Мастер-Тур(15):Установка#Установка службы поиска|службу поиска]].<br />
+
Для работы с web-сервисом необходимо на отдающей стороне установить [[Мастер-Тур(15):Установка#Установка службы поиска|службу поиска]].<br />
 
После установки web-сервис будет доступен по адресу ''<nowiki>http://значение настройки "serviceAddress" в TourSearchOwin/"название метода"</nowiki>'' (пример: ''http://localhost:9000/TourSearchOwin/Settings'')
 
После установки web-сервис будет доступен по адресу ''<nowiki>http://значение настройки "serviceAddress" в TourSearchOwin/"название метода"</nowiki>'' (пример: ''http://localhost:9000/TourSearchOwin/Settings'')
 +
 +
==Swagger==
 +
Работу методов можно проверить с помощью Swagger по пути: ''http://localhost:9000/TourSearchOwin/SwaggerUI''
  
 
==Список методов==
 
==Список методов==
Строка 20: Строка 21:
 
[[Файл:mb_273.png|1000px|Последовательность вызова методов сервиса]]
 
[[Файл:mb_273.png|1000px|Последовательность вызова методов сервиса]]
  
 
+
===Информация о состоянии службы поиска (statusCache)===
===Выгрузка настроек службы поиска (Settings)===
+
Метод выводит информацию о состоянии службы поиска при ее загрузке.
Метод производит выгрузку настроек службы поиска.
 
 
* Формат запроса:
 
* Формат запроса:
** .../TourSearchOwin/Settings?
+
** GET .../TourSearchOwin/statusCache?
 
* Принимаемые параметры:
 
* Принимаемые параметры:
 
** нет принимаемых параметров
 
** нет принимаемых параметров
 
* Возвращаемый результат:
 
* Возвращаемый результат:
** '''ChildAgesSetting''' – регулируется настройкой [[Мастер-Тур(15):Программа туров. Панель администрирования#Общие настройки|максимальный возраст ребенка]] (массив возрастов, при которых турист будет считаться ребенком
+
** '''Initialized''' – информация о том, загружена ли служба или нет ('''false''' – инициализация кешей не завершена, '''true''' – инициализация кешей завершена)
** '''DurationSetting''' – регулируется настройкой [[Мастер-Тур(15):Программа туров. Панель администрирования#Общие настройки|максимальная продолжительность тура]] (массив продолжительностей, доступных в фильтрах для поиска)
+
** '''Status''' – состояние службы. Возможные значения: ''Запущена инициализация кэшей'', ''Инициализация кэшей завершена''
** '''RoundServiceSetting''' – признак округления цены (количество знаков после запятой)
+
** '''CacheName''' – информация о том, какой именно кеш сейчас считается (название)
** '''CacheReady''' – статус готовности службы поиска к работе (true/false)
+
** '''Iteration''' – порядковый номер считаемого справочника кеша
** '''EnableFiterTree''' – устаревшая настройка, будет убрана (по умолчанию всегда false)
+
** '''CacheCount''' – общее количество кешей
** '''EnableActualFilters''' – включены ли актуальные фильтры (true/false)
+
** '''ProcessMessage''' – детализация. Информацию можно разделить на 3 блока:
** '''CorrectLicense''' – проверка лицензии (true/false)
+
*** Загрузка всех справочных данных, кроме расчета маршрутов и актуальных фильтров. В этом случае сообщение будет ''Загрузка кэшей из БД''
** '''CorrectLicenseMessage''' – сообщение, если проверка лицензии не прошла
+
*** Расчет маршрутов. ''CacheName'' – ''HotelScheme'', сообщение будет ''tours load: 956 / 1234''
** '''IsCorrectUser''' – проверка наличия пользователя в таблице ''Userlist'', под которым запущена служба поиска (true/false)
+
*** Расчет актуальных фильтров. ''CacheName'' – ''ActualFilters'', сообщение будет ''Actual filter processed: 783012 / 3865687"''
** '''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''' – максимальное количество продолжительностей, которое будет обрабатываться в клиенте поиска
 
  
 
<div class="toccolours mw-collapsible mw-collapsed" style="width:900px">Пример
 
<div class="toccolours mw-collapsible mw-collapsed" style="width:900px">Пример
Строка 56: Строка 43:
 
Вызов метода Settings
 
Вызов метода Settings
 
<syntaxhighlight lang="java" enclose="div">
 
<syntaxhighlight lang="java" enclose="div">
http://localhost:9000/TourSearchOwin/Settings
+
GET http://localhost:9000/TourSearchOwin/statusCache
 
</syntaxhighlight>
 
</syntaxhighlight>
Возвращаемый результат метода Settings (в формате JSON)
+
Возвращаемый результат метода statusCache (в формате JSON)
 
<syntaxhighlight lang="java" enclose="div">
 
<syntaxhighlight lang="java" enclose="div">
 
{
 
{
  "ChildAgesSetting":   [
+
    "Initialized": false,
      1,  
+
    "Status": "Запущена инициализация кэшей",
      2,
+
    "CacheName": "ToursSearchView",
      3,
+
    "Iteration": 10,
      4,
+
    "CacheCount": 112,
      5,
+
    "ProcessMessage": "Загрузка кэшей из БД"
      6,
+
}
      7,
+
{
      8,
+
    "Initialized": false,
      9,
+
    "Status": "Запущена инициализация кэшей",
      10,
+
    "CacheName": "HotelScheme",
      11,
+
    "Iteration": 109,
      12,
+
    "CacheCount": 112,
      13,
+
    "ProcessMessage": "tours load: 956 / 1234"
      14,
+
}
      15,
+
{
      16
+
    "Initialized": false,
  ],
+
    "Status": "Запущена инициализация кэшей",
  "DurationSetting":   [
+
    "CacheName": "ActualFilters",
      1,
+
    "Iteration": 112,
      2,
+
    "CacheCount": 112,
      3,
+
    "ProcessMessage": "Actual filter processed: 783012 / 3865687"
      4,
+
}
      5,
+
{
      6,
+
    "Initialized": true,
      7,
+
    "Status": "Инициализация кэшей завершена",
      8,
+
    "CacheName": null,
      9,
+
    "Iteration": 0,
      10,
+
    "CacheCount": 0,
      11,
+
    "ProcessMessage": null
      12,
+
}
      13,
+
</syntaxhighlight>
      14,
+
</TD></TR></TABLE>
      15,
+
</div></div><br />
      16,
+
 
      17,
+
===Авторизация (Token)===
      18,
+
Метод производит получение авторизационного токена ([https://tools.ietf.org/html/rfc6749#section-1.3.3 описание стандарта]).
      19,
+
* Формат запроса:
      20
+
** POST .../TourSearchOwin/Token?
  ],
+
* Принимаемые параметры headers ( '''*''' – обязательный):
  "RoundServiceSetting": 2,
+
** '''Content-Type *''' – application/x-www-form-urlencoded
  "CacheReady": true,
+
 
  "EnableFiterTree": false,
+
* Принимаемые параметры POST запроса ( '''*''' – обязательный):
  "EnableActualFilters": true,
+
** '''grant_type *''' – текст ''password''
  "CorrectLicense": true,
+
** '''username *''' – логин представителя партнера или частного лица
  "CorrectLicenseMessage": "0deb1f882da1ec6301c961780507a180",
+
** '''password *''' – пароль представителя партнера или частного лица
  "IsCorrectUser": true,
+
 
  "IsShowCitizenAuthTourist": true,
+
* Возвращаемый результат:
  "IsShowFewCountPlaces": true,
+
** '''access_token''' – токен
  "IsShowBusTransferPlaces": true,
+
** '''token_type''' – тип токена
  "UseBusSeatChecks": 1,
+
** '''expires_in''' – код
  "UseTransferSeatChecks": 2,
+
** '''userKey''' – ключ пользователя
  "IsShowFiltersByCity": true,
+
** '''userType''' – тип пользователя (0 – представитель партнера, 1 – частное лицо)
  "CheckRealCourses": true,
+
** '''.issued''' – дата получения
  "CommonImagesFolderPath": "\\\\server\\Icons",
+
** '''.expires''' – дата действия до
  "UseApplyFiltersButton": false,
+
 
  "AutoSearchFiltersTimeout": 1,
+
<div class="toccolours mw-collapsible mw-collapsed" style="width:900px">Пример
  "UseFastSearchAlgoritm": true,
+
<div class="mw-collapsible-content">
  "MaxSearchDatesCountClient": 10,
+
<TABLE STYLE="border: 0.1em dashed #2F6FAB; margin: 8px; padding: 8px" WIDTH="99%"><TR><TD>
  "MaxDurationsCountClient": 14
+
Вызов метода Token
}
+
<syntaxhighlight lang="java" enclose="div">
</syntaxhighlight>
+
POST http://localhost:9000/TourSearchOwin/Token HTTP/1.1
</TD></TR></TABLE>
+
Content-Type: application/x-www-form-urlencoded
</div></div><br />
+
 
 
+
grant_type=password&username=test&password=1
===Выгрузка списка валют (Currency)===
+
</syntaxhighlight>
Метод возвращает список используемых валют.
+
Возвращаемый результат метода Token (в формате JSON)
* Формат запроса:
+
<syntaxhighlight lang="java" enclose="div">
** .../TourSearchOwin/Currency
+
{
* Принимаемые параметры:
+
"access_token": "AQAAANCMnd8BFdERjHoAwE_Cl-sBAAAAdsCC8X7m9E-2bg0-uS0VfgAAAAAAAAADZgAAwAAAA-
** нет принимаемых параметров
+
EqAAAAAASAAACgAAAAEAAAAO4S-VrqBhQuhqliqrAKKfIgAQAAn-gfgP-rYjk-Krr1Ck2A-IGCw6FBhamUOzFxgTtk1hR-
* Возвращаемый результат:
+
GLMryFIH8VK5GmHdHubZWj4S7XcazGL1Kn5-VlbiYdW2ZVWpYlk638aV-XS2kpZ9YrKgViiM_x8RH5TPo4-
** '''Code''' – код валюты
+
9LhE7V-SjiB_CP_qs58DRKcyohq3Tz9QaiFgH1Ko7O2XKjTBG7SHyQPDPYjaqg9kDxmzq0UcIT6Fm4YkDxmm9-
** '''Name''' – наименование валюты
+
CW7u3cEFWcpiqKOc2VvZFKPPHc07uDOO4w9FXPhpXZwOqrJBxzhbr73RuhzPs_e-hgxKaIlsMaK5b0v5ReAMy1kuY0ebXA",",
** '''IsMain''' – признак валюты «Главная»
+
"token_type": "bearer",
** '''IsNational''' – признак валюты «Национальная»
+
"expires_in": 1209599,
** '''IsoCode''' – ISO код валюты
+
"userKey": "333",
** '''Key''' – идентификатор валюты
+
        "userType": "0",
** '''IsShowInSearch''' – признак показывать ли валюту в поиске
+
".issued": "Thu, 05 Apr 2018 12:05:31 GMT",
 
+
".expires": "Thu, 19 Apr 2018 12:05:31 GMT"
<div class="toccolours mw-collapsible mw-collapsed" style="width:900px">Пример
+
}
<div class="mw-collapsible-content">
+
</syntaxhighlight>
<TABLE STYLE="border: 0.1em dashed #2F6FAB; margin: 8px; padding: 8px" WIDTH="99%"><TR><TD>
+
</TD></TR></TABLE>
Вызов метода Currency
+
</div></div><br />
 +
 
 +
===Выгрузка настроек службы поиска (Settings)===
 +
Метод производит выгрузку настроек службы поиска.
 +
* Формат запроса:
 +
** GET .../TourSearchOwin/Settings?
 +
* Принимаемые параметры:
 +
** нет принимаемых параметров
 +
* Возвращаемый результат:
 +
** '''ChildAgesSetting''' – регулируется настройкой [[Мастер-Тур(15):Программа туров. Настройки|максимальный возраст ребенка]] (массив возрастов, при которых турист будет считаться ребенком
 +
** '''DurationSetting''' – регулируется настройкой [[Мастер-Тур(15):Программа туров. Настройки|максимальная продолжительность тура]] (массив продолжительностей, доступных в фильтрах для поиска)
 +
** '''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''' – максимальное количество продолжительностей, которое будет обрабатываться в клиенте поиска
 +
** '''UseHotelCategoryGlobalCodeInDopFilter''' – использовать глобальные коды категорий отелей в поиске
 +
** '''UsePansionGlobalCodeInDopFilter''' – использовать глобальные коды питаний в поиске
 +
** '''CheckTouristDataInBasket''' – проверять корректность данных туристов
 +
** '''SimpleRegistration''' – упрощенная регистрация частного лица
 +
** '''ShowHotelImagesInSearch''' – показывать описание и изображения отелей в поиске  
 +
** '''CacheReadyMessage''' – сообщение о готовности службы поиска или службы расчета актуальных фильтров. Варианты возвращаемых значений:
 +
*** ''<add key="enableActualFilters" value="true" />'' - CacheReady: true = CacheReadyMessage: "Кеш инициализирован"; CacheReady: false = CacheReadyMessage: "Кеш еще не инициализирован"
 +
*** ''<add key="enableActualFilters" value="false" />'' - Служба актуальных фильтров недоступна (выключена, неверно указана ссылка на нее и т.п.) CacheReadyMessage: "Служба актуальных фильтров недоступна"; Служба актуальных фильтров доступна но не готова - CacheReadyMessage: "Кеш службы актуальных фильтров не инициализирован"; Служба актуальных фильтров готова, а основная служба не готова - CacheReadyMessage: "Кеш ещё не инициализирован"; Служба актуальных фильтров готова, и основная служба готова - CacheReadyMessage: "Кеш ещё инициализирован".
 +
** '''nodeId''' – уникальный идентификатор узла в кластере балансировки нагрузки [[Мастер-Тур(15):Балансировщик нагрузки HaProxy|HaProxy]]
 +
** '''FullPaymentPeriod''' – полная оплата с даты бронирования (может быть null)
 +
** '''FullPaymentCheckin''' – полная оплата до даты заезда (может быть null)
 +
** '''PrePaymentPeriod''' – предоплата с даты бронирования (может быть null)
 +
** '''PrePaymentCheckin''' – предоплата до даты заезда (может быть null)
 +
** '''PrePaymentCu"''' – значение предоплаты в y.e. (может быть null)
 +
** '''PrePaymentPercent''' – значение предоплаты в процентах (может быть null)
 +
<div class="toccolours mw-collapsible mw-collapsed" style="width:900px">Пример
 +
<div class="mw-collapsible-content">
 +
<TABLE STYLE="border: 0.1em dashed #2F6FAB; margin: 8px; padding: 8px" WIDTH="99%"><TR><TD>
 +
Вызов метода Settings
 
<syntaxhighlight lang="java" enclose="div">
 
<syntaxhighlight lang="java" enclose="div">
http://localhost:9000/TourSearchOwin/Currency
+
GET http://localhost:9000/TourSearchOwin/Settings
 
</syntaxhighlight>
 
</syntaxhighlight>
Возвращаемый результат метода Currency (в формате JSON)
+
Возвращаемый результат метода Settings (в формате JSON)
 
<syntaxhighlight lang="java" enclose="div">
 
<syntaxhighlight lang="java" enclose="div">
[
+
{
       {
+
  "ChildAgesSetting":    [
       "Code": "EU",
+
       1,
      "Name": "Euro",
+
      2,
      "IsMain": false,
+
      3,
      "IsNational": false,
+
      4,
      "IsoCode": "EUR",
+
      5,
      "Key": 2,
+
      6,
      "IsShowInSearch": true
+
      7,
   },
+
      8,
      {
+
      9,
      "Code": "рб",
+
      10,
      "Name": "Рубль",
+
      11,
      "IsMain": false,
+
      12,
      "IsNational": true,
+
      13,
      "IsoCode": "RUR",
+
      14,
      "Key": 14,
+
      15,
      "IsShowInSearch": true
+
      16
   },
+
  ],
      {
+
  "DurationSetting":    [
      "Code": "$",
+
      1,
      "Name": "US Dollar",
+
      2,
      "IsMain": true,
+
      3,
      "IsNational": false,
+
      4,
      "IsoCode": "USD",
+
      5,
      "Key": 1,
+
      6,
      "IsShowInSearch": true
+
      7,
  }
+
      8,
]
+
      9,
</syntaxhighlight>
+
      10,
</TD></TR></TABLE>
+
      11,
</div></div><br />
+
      12,
 
+
      13,
===Выгрузка квотируемых услуг системы (QuotedServices)===
+
      14,
Метод производит выгрузку услуг с признаком «Квотируемая»
+
      15,
* Формат запроса:
+
      16,
** .../TourSearchOwin/QuotedServices
+
      17,
* Принимаемые параметры:
+
      18,
** нет принимаемых параметров
+
      19,
* Возвращаемый результат:
+
       20
** '''Key''' – идентификатор услуги
+
  ],
** '''Code''' – код услуги
+
  "RoundServiceSetting": 2,
** '''Name''' – наименование услуги (русский)
+
  "CacheReady": true,
** '''NameLat''' – наименование услуги (английский)
+
  "EnableFiterTree": false,
** '''IsDuration''' – наличие продолжительности у услуги
+
  "EnableActualFilters": true,
** '''IsCity''' – наличие города у услуги
+
  "CorrectLicense": true,
** '''IsSubCode1''' – признак наличия ''SubCode1'' у услуги (вид проживания у отеля, тариф у авиаперелета)
+
  "CorrectLicenseMessage": "0deb1f882da1ec6301c961780507a180",
** '''IsSubCode2''' – признак наличия ''SubCode2'' у услуги (тип питания у отеля)
+
  "IsCorrectUser": true,
** '''Quoted''' – признак квотируемости услуги
+
  "IsShowCitizenAuthTourist": true,
** '''CheckGeoPoint''' – наличие геоточек у услуги
+
  "IsShowFewCountPlaces": true,
** '''IsRoute''' – признак маршрутной услуги
+
  "IsShowBusTransferPlaces": true,
** '''LittlePercent''' – число в %, при которых будет считаться количество мест «Мало»
+
   "UseBusSeatChecks": 1,
** '''LittlePlace''' – число, при котором будет считаться количество мест «Мало»
+
  "UseTransferSeatChecks": 2,
** '''LittleAnd''' – признак наличия мест «Мало» – будем ли учитывать количество мест вместе с процентным соотношением между общим и оставшимся количеством мест
+
  "IsShowFiltersByCity": true,
** '''IsPartnerBasedOn''' – признак сопоставления партнера услуги в зависимости от отеля
+
  "CheckRealCourses": true,
** '''Control''' – идентификатор статуса услуги
+
  "CommonImagesFolderPath": "\\\\server\\Icons",
 +
  "UseApplyFiltersButton": false,
 +
  "AutoSearchFiltersTimeout": 1,
 +
  "UseFastSearchAlgoritm": true,
 +
  "MaxSearchDatesCountClient": 10,
 +
  "MaxDurationsCountClient": 14
 +
  "UseHotelCategoryGlobalCodeInDopFilter": false
 +
   "UsePansionGlobalCodeInDopFilter": false
 +
  "CheckTouristDataInBasket": true
 +
  "SimpleRegistration": false
 +
  "ShowHotelImagesInSearch": true
 +
  "CacheReadyMessage": "Кеш инициализирован"
 +
    "nodeId": 2147483647,
 +
    "FullPaymentPeriod": null,
 +
    "FullPaymentCheckin": 5,
 +
    "PrePaymentPeriod": null,
 +
    "PrePaymentCheckin": 10,
 +
    "PrePaymentPercent": 50.0,
 +
    "PrePaymentCu": null
 +
}
 +
</syntaxhighlight>
 +
</TD></TR></TABLE>
 +
</div></div><br />
  
<div class="toccolours mw-collapsible mw-collapsed" style="width:900px">Пример
+
===Выгрузка списка валют в онлайне (Currency)===
<div class="mw-collapsible-content">
+
Метод возвращает список используемых валют.
<TABLE STYLE="border: 0.1em dashed #2F6FAB; margin: 8px; padding: 8px" WIDTH="99%"><TR><TD>
+
* Формат запроса:
Вызов метода QuotedServices
+
** GET .../TourSearchOwin/Currency
<syntaxhighlight lang="java" enclose="div">
+
* Принимаемые параметры:
http://localhost:9000/TourSearchOwin/QuotedServices
+
** нет принимаемых параметров
 +
* Возвращаемый результат:
 +
** '''Code''' – код валюты
 +
** '''Name''' – наименование валюты
 +
** '''IsMain''' – признак валюты «Главная»
 +
** '''IsNational''' – признак валюты «Национальная»
 +
** '''IsoCode''' – ISO код валюты
 +
** '''IsShowInSearch''' – признак показывать ли валюту в поиске
 +
** '''Symbol''' – символ валюты (обрабатывается с 15.7)
 +
** '''Key''' – идентификатор валюты
 +
 
 +
 
 +
<div class="toccolours mw-collapsible mw-collapsed" style="width:900px">Пример
 +
<div class="mw-collapsible-content">
 +
<TABLE STYLE="border: 0.1em dashed #2F6FAB; margin: 8px; padding: 8px" WIDTH="99%"><TR><TD>
 +
Вызов метода Currency
 +
<syntaxhighlight lang="java" enclose="div">
 +
GET http://localhost:9000/TourSearchOwin/Currency
 
</syntaxhighlight>
 
</syntaxhighlight>
Возвращаемый результат метода QuotedServices (в формате JSON)
+
Возвращаемый результат метода Currency (в формате JSON)
 
<syntaxhighlight lang="java" enclose="div">
 
<syntaxhighlight lang="java" enclose="div">
 
[
 
[
 
       {
 
       {
      "Key": 1,
+
       "Code": "EU",
       "Code": "А_П",
+
       "Name": "Euro",
       "Name": "Авиаперелет",
+
       "IsMain": false,
       "NameLat": "Flight",
+
       "IsNational": false,
      "IsDuration": false,
+
       "IsoCode": "EUR",
       "IsCity": true,
+
       "IsShowInSearch": true,
      "IsSubCode1": true,
+
       "Symbol": "",
      "IsSubCode2": false,
+
       "Key": 2
       "Quoted": true,
 
      "CheckGeoPoint": true,
 
       "IsRoute": true,
 
       "LittlePercent": null,
 
      "LittlePlace": 10,
 
       "LittleAnd": true,
 
      "IsPartnerBasedOn": false,
 
      "Control": 1
 
 
   },
 
   },
 
       {
 
       {
       "Key": 3,
+
       "Code": "рб",
       "Code": "HOTEL",
+
       "Name": "Рубль",
       "Name": "Отель/Круиз",
+
       "IsMain": false,
       "NameLat": "Hotel/Cruise",
+
      "IsNational": true,
       "IsDuration": true,
+
       "IsoCode": "RUR",
       "IsCity": true,
+
       "IsShowInSearch": true,
       "IsSubCode1": true,
+
       "Symbol": "₽",
       "IsSubCode2": true,
+
       "Key": 14
       "Quoted": true,
+
  },
       "CheckGeoPoint": true,
+
      {
       "IsRoute": true,
+
       "Code": "$",
       "LittlePercent": 99,
+
       "Name": "US Dollar",
       "LittlePlace": 5,
+
       "IsMain": true,
       "LittleAnd": false,
+
       "IsNational": false,
      "IsPartnerBasedOn": false,
+
       "IsoCode": "USD",
       "Control": 1
+
       "IsShowInSearch": true,
 +
       "Symbol": "$",
 +
       "Key": 1
 
   }
 
   }
 
]
 
]
Строка 258: Строка 327:
 
</div></div><br />
 
</div></div><br />
  
===Выгрузка городов отправления (departureCities)===
+
 
Метод производит выгрузку всех доступных городов отправления для поискового запроса.
+
===Выгрузка курсов валют (CurrencyRates) начиная с 15.7===
 +
Полный аналог метода [[Мастер-Тур(15):API для отдачи цен в поисковые системы#Выгрузка курсов валют (GetCurrencyRates)|Выгрузка курсов валют (GetCurrencyRates)]]<br />
 +
Метод возвращает список курсов валют, актуальных на дату запроса. Курсы отображаются только для тех валют, которые отмечены в справочнике признаком ''Отображать в онлайне''
 
* Формат запроса:
 
* Формат запроса:
** .../TourSearchOwin/departureCities?
+
** GET .../TourSearchOwin/CurrencyRates
 
* Принимаемые параметры:
 
* Принимаемые параметры:
** нет принимаемых параметров
+
** '''dateFrom''' – начальная дата, от которой вывести список курсов валют, в формате DD.MM.YYYY, необязательный параметр (если не указан, берется за текущий день)
 +
** '''dateTo''' – конечная дата, до которой вывести список курсов валют, в формате DD.MM.YYYY, необязательный параметр (если не указан, берется за текущий день)
 +
** '''otherBaseCurrencyId''' – идентификатор любой валюты, эмулирующей работу национальной валюты, необязательный параметр. Если заполнен, то в результатах выдачи параметр ''baseCurrencyId'' будет заменяться на валюту из параметра ''otherBaseCurrencyId'' (обрабатывается с релиза 15.9).
 +
 
 
* Возвращаемый результат:
 
* Возвращаемый результат:
** '''Key''' – идентификатор города
+
** '''baseCurrencyId''' – идентификатор национальной валюты, либо произвольной валюты, указанной в настройке ''basketCurrency'' в конфигурационном файле (обрабатывается с релиза 15.6)
** '''Name''' – название города
+
** '''currencyId''' – идентификатор валюты, курс которой приводится
 +
** '''rate''' – курс валюты (отношение '''currencyId''' к '''baseCurrencyId''')
 +
** '''date''' – дата, на которую был зарегистрирован выводимый курс валюты
  
 
<div class="toccolours mw-collapsible mw-collapsed" style="width:900px">Пример
 
<div class="toccolours mw-collapsible mw-collapsed" style="width:900px">Пример
 
<div class="mw-collapsible-content">
 
<div class="mw-collapsible-content">
 
<TABLE STYLE="border: 0.1em dashed #2F6FAB; margin: 8px; padding: 8px" WIDTH="99%"><TR><TD>
 
<TABLE STYLE="border: 0.1em dashed #2F6FAB; margin: 8px; padding: 8px" WIDTH="99%"><TR><TD>
Вызов метода departureCities
+
Вызов метода CurrencyRates
 
<syntaxhighlight lang="java" enclose="div">
 
<syntaxhighlight lang="java" enclose="div">
http://localhost:9000/TourSearchOwin/departureCities
+
http://localhost:9000/TourSearchOwin/CurrencyRates?dateFrom=18.09.2024&dateTo=19.09.2024
 
</syntaxhighlight>
 
</syntaxhighlight>
Возвращаемый результат метода departureCities (в формате JSON)
+
Возвращаемый результат метода CurrencyRates (в формате JSON)
 
<syntaxhighlight lang="java" enclose="div">
 
<syntaxhighlight lang="java" enclose="div">
 
[
 
[
      {
+
    {
      "Key": -1,
+
        "BaseCurrencyId": 14,
      "Name": "Без перелета"
+
        "CurrencyId": 1,
  },
+
        "Rate": 91.429200,
      {
+
        "Date": "18.09.2024"
      "Key": 312,
+
    },
      "Name": "Астрахань"
+
    {
  },
+
        "BaseCurrencyId": 14,
      {
+
        "CurrencyId": 2,
      "Key": 1,
+
        "Rate": 101.505700,
      "Name": "Москва"
+
        "Date": "18.09.2024"
  }
+
    },
]
+
    {
 +
        "BaseCurrencyId": 14,
 +
        "CurrencyId": 1,
 +
        "Rate": 91.671200,
 +
        "Date": "19.09.2024"
 +
    },
 +
    {
 +
        "BaseCurrencyId": 14,
 +
        "CurrencyId": 2,
 +
        "Rate": 102.039000,
 +
        "Date": "19.09.2024"
 +
    }
 +
]
 +
 
 
</syntaxhighlight>
 
</syntaxhighlight>
 
</TD></TR></TABLE>
 
</TD></TR></TABLE>
 
</div></div><br />
 
</div></div><br />
  
===Выгрузка списка стран (Destination)===
+
===Выгрузка списка всех валют (getAllCurrencies)===
Метод производит выгрузку всех доступных направлений туроператора.
+
Метод возвращает список всех валют.
 
* Формат запроса:
 
* Формат запроса:
** .../TourSearchOwin/Destination?
+
** GET .../TourSearchOwin/AllCurencies/getAllCurrencies
* Принимаемые параметры ( '''*''' – обязательный):
+
* Принимаемые параметры:
** '''term *''' – фильтрация результатов по контекстному поиску (по умолчанию параметр пустой)
+
** нет принимаемых параметров
** '''departureCities *''' – идентификатор города отправления (из контроллера ''.../TourSearchOwin/departureCities?'')
 
 
* Возвращаемый результат:
 
* Возвращаемый результат:
** '''Name''' – название страны
+
** '''Code''' – код валюты
** '''Key''' – идентификатор страны
+
** '''Name''' – наименование валюты
** '''DestinationType''' – тип результата (всегда возвращается в JSON = 1, в xml = country)
+
** '''IsMain''' – признак валюты «Главная»
 +
** '''IsNational''' – признак валюты «Национальная»
 +
** '''IsoCode''' – ISO код валюты
 +
** '''IsShowInSearch''' – признак показывать ли валюту в поиске
 +
** '''Symbol''' – символ валюты (обрабатывается с 15.7)
 +
** '''Key''' – идентификатор валюты
  
 
<div class="toccolours mw-collapsible mw-collapsed" style="width:900px">Пример
 
<div class="toccolours mw-collapsible mw-collapsed" style="width:900px">Пример
 
<div class="mw-collapsible-content">
 
<div class="mw-collapsible-content">
 
<TABLE STYLE="border: 0.1em dashed #2F6FAB; margin: 8px; padding: 8px" WIDTH="99%"><TR><TD>
 
<TABLE STYLE="border: 0.1em dashed #2F6FAB; margin: 8px; padding: 8px" WIDTH="99%"><TR><TD>
Вызов метода Destination
+
Вызов метода getAllCurrencies
 
<syntaxhighlight lang="java" enclose="div">
 
<syntaxhighlight lang="java" enclose="div">
http://localhost:9000/TourSearchOwin/Destination?pageNumber=1&term=&showAll=false&departureCities=1
+
GET http://localhost:9000/TourSearchOwin/AllCurencies/getAllCurrencies
 
</syntaxhighlight>
 
</syntaxhighlight>
Возвращаемый результат метода Destination (в формате JSON)
+
Возвращаемый результат метода getAllCurrencies (в формате JSON)
 
<syntaxhighlight lang="java" enclose="div">
 
<syntaxhighlight lang="java" enclose="div">
 
[
 
[
 
       {
 
       {
       "Name": "Болгария",
+
      "Code": "EU",
       "Key": 359,
+
       "Name": "Euro",
       "DestinationType": 1
+
      "IsMain": false,
 +
      "IsNational": false,
 +
      "IsoCode": "EUR",
 +
       "IsShowInSearch": true,
 +
      "Symbol": "€",
 +
       "Key": 2
 
   },
 
   },
 
       {
 
       {
       "Name": "Индия",
+
      "Code": "рб",
       "Key": 26,
+
       "Name": "Рубль",
       "DestinationType": 1
+
      "IsMain": false,
   },
+
      "IsNational": true,
 +
      "IsoCode": "RUR",
 +
       "IsShowInSearch": true,
 +
      "Symbol": "₽",
 +
       "Key": 14
 +
   },
 
       {
 
       {
       "Name": "Финляндия",
+
      "Code": "$",
       "Key": 64,
+
       "Name": "US Dollar",
       "DestinationType": 1
+
       "IsMain": true,
 +
      "IsNational": false,
 +
      "IsoCode": "USD",
 +
      "IsShowInSearch": true,
 +
      "Symbol": "$",
 +
       "Key": 1
 +
  },
 +
  {
 +
      "Code": "гр",
 +
      "Name": "Гривна",
 +
      "IsMain": false,
 +
      "IsNational": false,
 +
      "IsoCode": "UAH",
 +
      "IsShowInSearch": true,
 +
      "Symbol": "₴",
 +
      "Key": 6
 
   }
 
   }
 
]
 
]
Строка 337: Строка 455:
 
</div></div><br />
 
</div></div><br />
  
===Выгрузка списка городов (ActualizeCities)===
+
 
Метод возвращает список всех доступных городов по определенному городу отправления и стране прибытия.
+
===Получение сконвертированных цен (convertFilterPrice)===
 +
Метод возвращает сконвертированные цен для допфильтра ''Цена'' (используется в canary)
 
* Формат запроса:
 
* Формат запроса:
** .../TourSearchOwin/ActualizeCities?
+
** GET .../TourSearchOwin/AllCurencies/convertFilterPrice
 
* Принимаемые параметры ( '''*''' – обязательный):
 
* Принимаемые параметры ( '''*''' – обязательный):
** '''cityKeys *''' – идентификатор города отправления (полученный из метода ''.../TourSearchOwin/departureCities?'')
+
** '''SourceRateKey *''' – ключ исходной валюты конвертации
** '''Key *''' – идентификатор страны прибытия (полученный из метода ''.../TourSearchOwin/Destination?'')
+
** '''TargetRateKey *''' – ключ валюты, в которую будет произведена конвертация
** '''Name *''' – название страны прибытия (полученный из метода ''.../TourSearchOwin/Destination?'')
+
** '''MinPrice *''' – значение минимальной цены, которое будет участвовать в конвертации
** '''term *''' – фильтрация результатов по контекстному поиску (по умолчанию параметр пустой)
+
** '''MaxPrice *''' – значение максимальной цены, которое будет участвовать в конвертации
 
* Возвращаемый результат:
 
* Возвращаемый результат:
** '''Key''' – идентификатор города
+
** '''m_Item1''' – сконвертированная минимальная цена
** '''Name''' – название города
+
** '''m_Item12''' – сконвертированная максимальная цена
  
 
<div class="toccolours mw-collapsible mw-collapsed" style="width:900px">Пример
 
<div class="toccolours mw-collapsible mw-collapsed" style="width:900px">Пример
 
<div class="mw-collapsible-content">
 
<div class="mw-collapsible-content">
 
<TABLE STYLE="border: 0.1em dashed #2F6FAB; margin: 8px; padding: 8px" WIDTH="99%"><TR><TD>
 
<TABLE STYLE="border: 0.1em dashed #2F6FAB; margin: 8px; padding: 8px" WIDTH="99%"><TR><TD>
Вызов метода ActualizeCities
+
Вызов метода convertFilterPrice
 
<syntaxhighlight lang="java" enclose="div">
 
<syntaxhighlight lang="java" enclose="div">
http://localhost:9000/TourSearchOwin/ActualizeCities?cityKeys=1&Key=90&Name=Австрия&term=
+
GET http://localhost:9000/TourSearchOwin/AllCurencies/convertFilterPrice?SourceRateKey=2&TargetRateKey=1&MinPrice=10&MaxPrice=200
 
</syntaxhighlight>
 
</syntaxhighlight>
Возвращаемый результат метода ActualizeCities (в формате JSON)
+
Возвращаемый результат метода convertFilterPrice (в формате JSON)
 
<syntaxhighlight lang="java" enclose="div">
 
<syntaxhighlight lang="java" enclose="div">
[
+
{
      {
+
    "m_Item1": 12.035142616440004814057046576,
      "Key": -1,
+
    "m_Item2": 240.70285232880009628114093152
      "Name": "Все"
+
}
  },
 
      {
 
      "Key": 35,
 
      "Name": "Вена"
 
  },
 
      {
 
      "Key": 440,
 
      "Name": "Зельден"
 
  }
 
]
 
 
</syntaxhighlight>
 
</syntaxhighlight>
 
</TD></TR></TABLE>
 
</TD></TR></TABLE>
 
</div></div><br />
 
</div></div><br />
  
===Выгрузка типов туров (ActualizeTourType)===
+
===Выгрузка квотируемых услуг системы (QuotedServices)===
Метод возвращает список типов туров по определенному городу отправления, стране и городу прибытия.
+
Метод производит выгрузку услуг с признаком «Квотируемая»
 
* Формат запроса:
 
* Формат запроса:
** .../TourSearchOwin/ActualizeTourType?
+
** GET .../TourSearchOwin/QuotedServices
* Принимаемые параметры ( '''*''' – обязательный):
+
* Принимаемые параметры:
** '''departureCityKeys *''' – идентификатор города отправления (полученный из метода ''.../TourSearchOwin/departureCities?'')
+
** нет принимаемых параметров
** '''Key *''' – идентификатор страны прибытия (полученный из метода ''.../TourSearchOwin/Destination?'')
 
** '''Name *''' – название страны прибытия (полученный из метода ''.../TourSearchOwin/Destination?'')
 
** '''Type *''' – тип результата (всегда возвращается в JSON = 1, в xml = country)
 
** '''destinationCity *''' – идентификатор города прибытия (полученный из метода ''.../TourSearchOwin/ActualizeCities?''), по умолчанию передается ''-1'', то есть все города в рамках данной страны
 
** '''term *''' – фильтрация результатов по контекстному поиску (по умолчанию параметр пустой)
 
 
* Возвращаемый результат:
 
* Возвращаемый результат:
** '''Key''' – идентификатор типа тура
+
** '''Key''' – идентификатор услуги
** '''Name''' – название типа тура
+
** '''Code''' – код услуги
** '''ParentId''' – идентификатор группы, к которой относится данный типа тура (если тип тура не относится к группе, то возвращается ''null'')
+
** '''Name''' – наименование услуги (русский)
 +
** '''NameLat''' – наименование услуги (английский)
 +
** '''IsDuration''' – наличие продолжительности у услуги
 +
** '''IsCity''' – наличие города у услуги
 +
** '''IsSubCode1''' – признак наличия [[#Приложение 1: параметры услуги (ServiceType, Code, SubCode1, SubCode2)|SubCode1]] у услуги
 +
** '''IsSubCode2''' – признак наличия [[#Приложение 1: параметры услуги (ServiceType, Code, SubCode1, SubCode2)|SubCode2]] у услуги
 +
** '''Quoted''' – признак квотируемости услуги
 +
** '''CheckGeoPoint''' – наличие геоточек у услуги
 +
** '''IsRoute''' – признак маршрутной услуги
 +
** '''IsPartnerBasedOn''' – признак сопоставления партнера услуги в зависимости от отеля
 +
** '''Control''' – идентификатор статуса услуги
  
 
<div class="toccolours mw-collapsible mw-collapsed" style="width:900px">Пример
 
<div class="toccolours mw-collapsible mw-collapsed" style="width:900px">Пример
 
<div class="mw-collapsible-content">
 
<div class="mw-collapsible-content">
 
<TABLE STYLE="border: 0.1em dashed #2F6FAB; margin: 8px; padding: 8px" WIDTH="99%"><TR><TD>
 
<TABLE STYLE="border: 0.1em dashed #2F6FAB; margin: 8px; padding: 8px" WIDTH="99%"><TR><TD>
Вызов метода ActualizeTourType
+
Вызов метода QuotedServices
 
<syntaxhighlight lang="java" enclose="div">
 
<syntaxhighlight lang="java" enclose="div">
http://localhost:9000/TourSearchOwin/ActualizeTourType?departureCityKeys=1&Key=90&Name=Австрия&Type=1&destinationCity=-1&terms=
+
GET http://localhost:9000/TourSearchOwin/QuotedServices
 
</syntaxhighlight>
 
</syntaxhighlight>
Возвращаемый результат метода ActualizeTourType (в формате JSON)
+
Возвращаемый результат метода QuotedServices (в формате JSON)
 
<syntaxhighlight lang="java" enclose="div">
 
<syntaxhighlight lang="java" enclose="div">
 
[
 
[
 
       {
 
       {
       "Key": -1,
+
       "Key": 1,
       "Name": "Все",
+
      "Code": "А_П",
       "ParentId": null
+
       "Name": "Авиаперелет",
  },
+
       "NameLat": "Flight",
       {
+
      "IsDuration": false,
       "Key": 2,
+
       "IsCity": true,
       "Name": "Стандартный тур",
+
       "IsSubCode1": true,
       "ParentId": null
+
       "IsSubCode2": false,
 +
      "Quoted": true,
 +
      "CheckGeoPoint": true,
 +
      "IsRoute": true,
 +
      "IsPartnerBasedOn": false,
 +
       "Control": 1
 
   },
 
   },
 
       {
 
       {
       "Key": 16,
+
       "Key": 3,
       "Name": "Экскурсионный тур",
+
      "Code": "HOTEL",
       "ParentId": 35
+
       "Name": "Отель/Круиз",
 +
      "NameLat": "Hotel/Cruise",
 +
      "IsDuration": true,
 +
      "IsCity": true,
 +
      "IsSubCode1": true,
 +
      "IsSubCode2": true,
 +
      "Quoted": true,
 +
      "CheckGeoPoint": true,
 +
      "IsRoute": true,
 +
      "IsPartnerBasedOn": false,
 +
       "Control": 1
 
   }
 
   }
 
]
 
]
Строка 423: Строка 552:
 
</div></div><br />
 
</div></div><br />
  
===Выгрузка актуальных дат заездов (TourDate)===
+
===Выгрузка актуальных городов отправления (departureCities)===
Метод производит выгрузку доступных дат заездов для поискового запроса.
+
Метод производит выгрузку всех доступных городов отправления для поискового запроса.
 
* Формат запроса:
 
* Формат запроса:
** .../TourSearchOwin/TourDate?
+
** GET .../TourSearchOwin/departureCities?  
* Принимаемые параметры ( '''*''' – обязательный):
+
* Принимаемые параметры:
** '''departureCity *''' – идентификатор города отправления (полученный из метода ''.../TourSearchOwin/departureCities?'')
+
** нет принимаемых параметров
** '''destinationCity *''' – идентификатор города прибытия (полученный из метода ''.../TourSearchOwin/ActualizeCities?''), по умолчанию передается ''-1'', то есть все города в рамках данной страны
 
** '''Key *''' – идентификатор страны прибытия (полученный из метода ''.../TourSearchOwin/Destination?'')
 
** '''Name *''' – название страны прибытия (полученный из метода ''.../TourSearchOwin/Destination?'')
 
** '''Type *''' – тип результата (всегда возвращается в JSON = 1, в xml = country)
 
** '''tourTypes *''' – идентификатор типа тура (полученный из метода ''.../TourSearchOwin/ActualizeTourType?''), по умолчанию передается ''-1'', то есть все типы тура в рамках данной страны
 
** '''term *''' – фильтрация результатов по контекстному поиску (по умолчанию параметр пустой)
 
 
* Возвращаемый результат:
 
* Возвращаемый результат:
** массив дат
+
** '''Key''' – идентификатор города
 +
** '''Name''' – название города
  
 
<div class="toccolours mw-collapsible mw-collapsed" style="width:900px">Пример
 
<div class="toccolours mw-collapsible mw-collapsed" style="width:900px">Пример
 
<div class="mw-collapsible-content">
 
<div class="mw-collapsible-content">
 
<TABLE STYLE="border: 0.1em dashed #2F6FAB; margin: 8px; padding: 8px" WIDTH="99%"><TR><TD>
 
<TABLE STYLE="border: 0.1em dashed #2F6FAB; margin: 8px; padding: 8px" WIDTH="99%"><TR><TD>
Вызов метода TourDate
+
Вызов метода departureCities
 
<syntaxhighlight lang="java" enclose="div">
 
<syntaxhighlight lang="java" enclose="div">
http://localhost:9000/TourSearchOwin/TourDate?departureCity=1&destinationCity=-1&Key=90&Name=Австрия&Type=1&tourTypes=-1&term=
+
GET http://localhost:9000/TourSearchOwin/departureCities
 
</syntaxhighlight>
 
</syntaxhighlight>
Возвращаемый результат метода TourDate (в формате JSON)
+
Возвращаемый результат метода departureCities (в формате JSON)
 
<syntaxhighlight lang="java" enclose="div">
 
<syntaxhighlight lang="java" enclose="div">
 
[
 
[
  "21.02.2018",
+
      {
  "22.02.2018",
+
      "Key": -1,
  "23.02.2018",
+
      "Name": "Без перелета"
  "24.02.2018",
+
  },
  "25.02.2018",
+
      {
  "26.02.2018",
+
      "Key": 312,
  "27.02.2018",
+
      "Name": "Астрахань"
   "28.02.2018"
+
  },
 +
      {
 +
      "Key": 1,
 +
      "Name": "Москва"
 +
   }
 
]
 
]
 
</syntaxhighlight>
 
</syntaxhighlight>
Строка 461: Строка 589:
 
</div></div><br />
 
</div></div><br />
  
===Выгрузка актуальных продолжительностей (Duration)===
+
===Выгрузка актуальных стран (Destination)===
Метод производит выгрузку доступных продолжительностей для поискового запроса.
+
Метод производит выгрузку всех доступных направлений туроператора.
 
* Формат запроса:
 
* Формат запроса:
** .../TourSearchOwin/Duration?
+
** GET .../TourSearchOwin/Destination?
 
* Принимаемые параметры ( '''*''' – обязательный):
 
* Принимаемые параметры ( '''*''' – обязательный):
** '''departureCity *''' – идентификатор города отправления (полученный из метода ''.../TourSearchOwin/departureCities?'')
+
** '''departureCities *''' – идентификатор города(ов) отправления (из контроллера [[#Выгрузка актуальных городов отправления (departureCities)|''.../TourSearchOwin/departureCities?'']])
** '''destinationCity *''' – идентификатор города прибытия (полученный из метода ''.../TourSearchOwin/ActualizeCities?''), по умолчанию передается ''-1'', то есть все города в рамках данной страны
+
** '''type''' – настройка easySearchFilter (0/не указано - настройка выключена, 1 - настройка включена)
** '''Key *''' – идентификатор страны прибытия (полученный из метода ''.../TourSearchOwin/Destination?'')
+
** '''term''' – фильтрация результатов по контекстному поиску (по умолчанию параметр пустой)
** '''Name *''' – название страны прибытия (полученный из метода ''.../TourSearchOwin/Destination?'')
 
** '''Type *''' – тип результата (всегда возвращается в JSON = 1, в xml = country)
 
** '''tourDate *''' – массив дат заезда (полученные из метода ''.../TourSearchOwin/TourDate?''). Если параметры передаются через url, то каждое значение необходимо передавать отдельным параметром.
 
** '''tourTypes *''' – идентификатор типа тура (полученный из метода ''.../TourSearchOwin/ActualizeTourType?''), по умолчанию передается ''-1'', то есть все типы тура в рамках данной страны
 
** '''term *''' – фильтрация результатов по контекстному поиску (по умолчанию параметр пустой)
 
 
* Возвращаемый результат:
 
* Возвращаемый результат:
** массив продолжительностей
+
** '''Name''' – название страны
 +
** '''Key''' – идентификатор страны
 +
** '''DestinationType''' – тип результата (внутренний параметр, не изменяемый, всегда возвращается значение = 1)
 +
** '''IsExist''' – не используется
 +
** '''Data''' – массив данных для контекстного поиска
 +
*** '''CityKey''' – код города
 +
*** '''CityName''' – Название
 +
*** '''HotelKey''' – код отеля
 +
*** '''HotelName''' – название отеля
 +
*** '''ResortKey''' – код курорта
 +
*** '''ResortName''' – название курорта
 +
 
  
 
<div class="toccolours mw-collapsible mw-collapsed" style="width:900px">Пример
 
<div class="toccolours mw-collapsible mw-collapsed" style="width:900px">Пример
 
<div class="mw-collapsible-content">
 
<div class="mw-collapsible-content">
 
<TABLE STYLE="border: 0.1em dashed #2F6FAB; margin: 8px; padding: 8px" WIDTH="99%"><TR><TD>
 
<TABLE STYLE="border: 0.1em dashed #2F6FAB; margin: 8px; padding: 8px" WIDTH="99%"><TR><TD>
Вызов метода Duration
+
Вызов метода Destination
 
<syntaxhighlight lang="java" enclose="div">
 
<syntaxhighlight lang="java" enclose="div">
http://localhost:9000/TourSearchOwin/Duration?departureCity=1&destinationCity=-1&Key=90&Name=Австрия&Type=1&tourDate=25.02.2018,26.02.2018&tourTypes=-1&term=
+
 
 +
GET http://localhost:9000/TourSearchOwin/Destination?departureCities=1
 +
</syntaxhighlight>
 +
Возвращаемый результат метода Destination (в формате JSON)
 +
<syntaxhighlight lang="java" enclose="div">
 +
[
 +
      {
 +
      "Data": null,
 +
      "DestinationType": 1,
 +
      "IsExist": false,
 +
      "Key": 90,
 +
      "Name": "Австрия"
 +
   
 +
   
 +
  },
 +
      {
 +
      "Data": null,
 +
      "DestinationType": 1,
 +
      "IsExist": false,
 +
      "Key": 53,
 +
      "Name": "Тайланд"
 +
     
 +
     
 +
  },
 +
      {
 +
      "Data": null,
 +
      "DestinationType": 1,
 +
      "IsExist": false,
 +
      "Key": 460,
 +
      "Name": "Россия"
 +
     
 +
     
 +
  }
 +
]
 +
GET http://localhost:9000/TourSearchOwin/Destination?departureCities=1&type=1
 
</syntaxhighlight>
 
</syntaxhighlight>
Возвращаемый результат метода Duration (в формате JSON)
+
Возвращаемый результат метода Destination (в формате JSON) с включенной настройкой easySearchFilter
 
<syntaxhighlight lang="java" enclose="div">
 
<syntaxhighlight lang="java" enclose="div">
 
[
 
[
  7,
+
{
  8,
+
  "Name": "Австрия",
  10,
+
  "Key": 90,
  12,
+
  "DestinationType": 1,
  15,
+
  "IsExist": false,
  18
+
  "Data":
 +
        [
 +
        {
 +
          "CityKey": 35,
 +
          "CityName": "Вена",
 +
          "HotelKey": 178,
 +
          "HotelName": "Ananas, 5+++*",
 +
          "ResortKey": 232,
 +
          "ResortName": "Малина"
 +
        },
 +
        {
 +
          "CityKey": 35,
 +
          "CityName": "Вена",
 +
          "HotelKey": 20748,
 +
          "HotelName": "Dev, 1-4*Boutique",
 +
          "ResortKey": 0,
 +
          "ResortName": ""
 +
        },
 +
      ],
 +
}
 +
{
 +
  "Name": "Тайланд",
 +
  "Key": 53,
 +
  "DestinationType": 1,
 +
  "IsExist": false,
 +
  "Data":
 +
        [
 +
          {
 +
            "CityKey": 415,
 +
            "CityName": "Пхукет",
 +
            "HotelKey": 5263,
 +
            "HotelName": "7Q Hotel, HV",
 +
            "ResortKey": 123,
 +
            "ResortName": "Пхукет"
 +
          }
 +
        ],
 +
},
 +
{
 +
  "Name": "Россия",
 +
  "Key": 460,
 +
  "DestinationType": 1,
 +
  "IsExist": false,
 +
  "Data":
 +
        [
 +
          {
 +
            "CityKey": 295,
 +
            "CityName": "Санкт-Петербург",
 +
            "HotelKey": 20365,
 +
            "HotelName": "Бристоль, 3*",
 +
            "ResortKey": 0,
 +
            "ResortName": ""
 +
          }
 +
        ],
 +
},
 +
{
 +
  "Name": "ОАЭ",
 +
  "Key": 2,
 +
  "DestinationType": 1,
 +
  "IsExist": false,
 +
  "Data":
 +
        [
 +
          {
 +
          "CityKey": 12,
 +
          "CityName": "ДУБАЙ",
 +
          "HotelKey": 1257,
 +
          "HotelName": "Avari, APTH3",
 +
          "ResortKey": 0,
 +
          "ResortName": ""
 +
          },
 +
      ],
 +
}
 
]
 
]
 
</syntaxhighlight>
 
</syntaxhighlight>
Строка 498: Строка 736:
 
</div></div><br />
 
</div></div><br />
  
===Поиск туров (Tour)===
+
===Выгрузка актуальных городов (ActualizeCities)===
Метод поиска туров использует множество параметров для поиска и фильтрации туров. Метод возвращает наиболее дешевые предложения, найденные по предоставленным параметрам и сгруппированные по отелям в порядке возрастания цены.  
+
Метод возвращает список всех доступных городов по определенному городу отправления и стране прибытия.
 
* Формат запроса:
 
* Формат запроса:
** .../TourSearchOwin/Tour?
+
** GET .../TourSearchOwin/ActualizeCities?
 
* Принимаемые параметры ( '''*''' – обязательный):
 
* Принимаемые параметры ( '''*''' – обязательный):
** '''DepartureCityKeys *''' – идентификатор города отправления (полученный из метода ''.../TourSearchOwin/departureCities?'')
+
** '''cityKeys *''' – идентификатор города(ов) отправления (полученный из метода ''.../TourSearchOwin/departureCities?'')
** '''Dates *''' – массив дат заезда (полученные из метода ''.../TourSearchOwin/TourDate?''). Если параметры передаются через url, то каждое значение необходимо передавать отдельным параметром.
+
** '''Key *''' – идентификатор страны прибытия (полученный из метода ''.../TourSearchOwin/Destination?'')
** '''Durations *''' – массив продолжительностей (полученные из метода ''.../TourSearchOwin/Duration?''). Если параметры передаются через url, то каждое значение необходимо передавать отдельным параметром.
+
** '''term''' – фильтрация результатов по контекстному поиску (по умолчанию параметр пустой)
** '''PageNumber *''' – номер возвращаемой страницы (по умолчанию возвращается 1)
+
* Возвращаемый результат:
** '''PageSize *''' – количество возвращаемых результатов на одной странице (возвращается 20)
+
** '''Key''' – идентификатор города
** '''HotelScheme''' – пустой по умолчанию. Заполняется при вызове вариантов размещений в рамках одного отеля. Передаются следующие параметры: '''TemplateId''' – порядковый номер записи, '''DurationInNight''' – продолжительность в ночах, '''Code''' – код услуги проживания, '''PacketKey''' – ключ пакета, '''PartnerKey''' – ключ партнера
+
** '''Name''' – название города
** '''TourKey''' – пустой по умолчанию. Заполняется при вызове вариантов размещений в рамках одного отеля: ключ программы тура
+
 
** '''TourDuration''' – пустой по умолчанию. Заполняется при вызове вариантов размещений в рамках одного отеля: продолжительность тура в днях
+
<div class="toccolours mw-collapsible mw-collapsed" style="width:900px">Пример
** '''isFromBasket *''' – происходит ли обращение из корзины или из поиска туров (true/false)
+
<div class="mw-collapsible-content">
** '''isFillSecondaryFilters *''' – заполнены ли дополнительные фильтры (true/false)
+
<TABLE STYLE="border: 0.1em dashed #2F6FAB; margin: 8px; padding: 8px" WIDTH="99%"><TR><TD>
** '''DestinationType *''' – тип результата (всегда возвращается в JSON = 1, в xml = country)
+
Вызов метода ActualizeCities
** '''DestinationKey *''' – идентификатор страны прибытия (полученный из метода ''.../TourSearchOwin/Destination?'')
+
<syntaxhighlight lang="java" enclose="div">
** '''AdultCount *''' – количество взрослых
+
GET http://localhost:9000/TourSearchOwin/ActualizeCities?cityKeys=1&Key=90
** '''ChildAges''' – возраст детей. Если детей несколько, и параметры передаются через url, то каждое значение необходимо передавать отдельным параметром.
+
</syntaxhighlight>
** '''CurrencyName''' – код валюты
+
Возвращаемый результат метода ActualizeCities (в формате JSON)
** '''AviaQuota *''' – информация о квотах на авиаперелет (значения параметров: ''"1"'' — фильтр "Есть", ''"5"'' — фильтр "Есть+запрос", ''"7"'' — фильтр "Все")
+
<syntaxhighlight lang="java" enclose="div">
** '''HotelQuota *''' – информация о квотах на отель (значения параметров: ''"1"'' — фильтр "Есть", ''"5"'' — фильтр "Есть+запрос", ''"7"'' — фильтр "Все")
+
[
** '''BusTransferQuota''' – информация о квотах на автобусный переезд (значения параметров: ''"1"'' — фильтр "Есть", ''"5"'' — фильтр "Есть+запрос", ''"7"'' — фильтр "Все")
+
      {
** '''MinPrice *''' – минимальная цена (по умолчанию не задана, передается ''NaN'')
+
      "Key": -1,
** '''TourType''' – идентификатор типа тура (полученный из метода ''.../TourSearchOwin/ActualizeTourType?''), по умолчанию передается ''-1'', то есть все типы тура в рамках данной страны. Возможна множественная передача параметров.
+
      "Name": "Все"
** '''CityIds''' – идентификатор города прибытия (полученный из метода ''.../TourSearchOwin/ActualizeCities?''), по умолчанию передается ''-1'', то есть все города в рамках данной страны. Возможна множественная передача параметров.
+
  },
** '''TimeDepartureFrom''' – время отправления с (по умолчанию возвращается 00:00)
+
      {
** '''TimeDepartureTo''' – время отправления по (по умолчанию возвращается 23:59)
+
      "Key": 35,
** '''TimeArrivalFrom''' – время прибытия с (по умолчанию возвращается 00:00)
+
      "Name": "Вена"
** '''TimeArrivalTo''' – время прибытия по (по умолчанию возвращается 23:59)
+
  },
** '''ArrivalFlightNoTransfer''' – производить поиск без пересадок в прямом направлении (true/false, по умолчанию false)
+
      {
** '''DepartureFlightNoTransfer''' – производить поиск без пересадок в обратном направлении (true/false, по умолчанию false)
+
      "Key": 440,
* Возвращаемый результат:
+
      "Name": "Зельден"
** '''CheckMessages''' – информация о том, произошла ли ошибка при поиске (null)
+
  }
** '''Message''' – сообщение об ошибке
+
]
*** '''Key''' – код ошибки
+
</syntaxhighlight>
*** '''Value''' – сообщение об ошибке
+
</TD></TR></TABLE>
** '''Result''' – результаты поиска
+
</div></div><br />
*** '''Key''' – идентификатов программы тура
+
 
*** '''Name''' – название программы тура
+
===Выгрузка актуальных типов туров (ActualizeTourType)===
*** '''TourUrl''' – ссылка на программу тура
+
Метод возвращает список типов туров по определенному городу отправления, стране и городу прибытия.
*** '''BookingConditions''' – условия бронирования программы туров
+
* Формат запроса:
*** '''StartDate''' – дата начала тура
+
** GET .../TourSearchOwin/ActualizeTourType?
*** '''Duration''' – продолжительность тура (в днях)
+
* Принимаемые параметры ( '''*''' – обязательный):
*** '''DurationInNight''' – продолжительность проживания (в ночах)
+
** '''departureCityKeys *''' – идентификатор города(ов) отправления (полученный из метода ''.../TourSearchOwin/departureCities?'')
*** '''Types''' – ??? возможно идентификатор типа туров
+
** '''Key *''' – идентификатор страны прибытия (полученный из метода ''.../TourSearchOwin/Destination?'')
*** '''Cost''' – цена тура
+
** '''Type *''' – тип результата (внутренний параметр, не изменяемый, всегда указывать значение = 1)
*** '''Rate''' – код валюты тура
+
** '''destinationCity *''' – идентификатор города(ов) прибытия (полученный из метода ''.../TourSearchOwin/ActualizeCities?''), по умолчанию передается ''-1'', то есть все города в рамках данной страны
*** '''CityDepature''' – город отправления
+
** '''terms''' – фильтрация результатов по контекстному поиску (по умолчанию параметр пустой)
**** '''Key''' – идентификатор города отправления
+
* Возвращаемый результат:
**** '''Value''' – название города отправления
+
** '''Key''' – идентификатор типа тура
*** '''CountryId''' – ??? предположительно страна тура, но почему отображается ключ 0?
+
** '''Name''' – название типа тура
*** '''Services''' – услуги в туре
+
** '''ParentId''' – идентификатор группы, к которой относится данный тип тура (если тип тура не относится к группе, то возвращается ''null'')
**** '''DepartureCity''' – город отправления
+
 
***** '''Key''' – идентификатор города отправления
+
<div class="toccolours mw-collapsible mw-collapsed" style="width:900px">Пример
***** '''Value''' – название города отправления
+
<div class="mw-collapsible-content">
**** '''DepartureCountry''' –
+
<TABLE STYLE="border: 0.1em dashed #2F6FAB; margin: 8px; padding: 8px" WIDTH="99%"><TR><TD>
***** '''Key''' –
+
Вызов метода ActualizeTourType
***** '''Value''' –
+
<syntaxhighlight lang="java" enclose="div">
**** '''ArrivalCity''' –
+
GET http://localhost:9000/TourSearchOwin/ActualizeTourType?departureCityKeys=1&Key=90&Type=1&destinationCity=-1
***** '''Key''' –
+
</syntaxhighlight>
***** '''Value''' –
+
Возвращаемый результат метода ActualizeTourType (в формате JSON)
**** '''ArrivalCountry''' –
+
<syntaxhighlight lang="java" enclose="div">
***** '''Key''' –
+
[
***** '''Value''' –
+
      {
**** '''DepartureAirport''' –
+
      "Key": -1,
***** '''Key''' –
+
      "Name": "Все",
***** '''Value''' –
+
      "ParentId": null
**** '''ArrivalAirport''' –
+
  },
***** '''Key''' –
+
      {
***** '''Value''' –
+
      "Key": 2,
**** '''Airline''' –
+
      "Name": "Стандартный тур",
***** '''Key''' –
+
      "ParentId": null
***** '''Value''' –
+
  },
**** '''Aircraft''' –
+
      {
***** '''Key''' –
+
      "Key": 16,
***** '''Value''' –
+
      "Name": "Экскурсионный тур",
**** '''Flight''' –
+
      "ParentId": 35
***** '''Key''' –
+
  }
***** '''Value''' –
+
]
**** '''DepartureTime''' –
+
</syntaxhighlight>
**** '''ArrivalTime''' –
+
</TD></TR></TABLE>
**** '''EndDateTime''' –
+
</div></div><br />
**** '''FlightDetails''' –
+
 
***** '''Tariff''' –
+
===Выгрузка актуальных дат заездов (TourDate)===
****** '''Key''' –
+
Метод производит выгрузку доступных дат заездов для поискового запроса.
****** '''Code''' –
+
* Формат запроса:
****** '''Name''' –
+
** GET .../TourSearchOwin/TourDate?
***** '''Cost''' –
+
* Принимаемые параметры ( '''*''' – обязательный):
***** '''QuotaStatus''' –
+
** '''departureCity *''' – идентификатор города(ов) отправления (полученный из метода ''.../TourSearchOwin/departureCities?'')
****** '''PlacesStatus''' –
+
** '''destinationCity *''' – идентификатор города(ов) прибытия (полученный из метода ''.../TourSearchOwin/ActualizeCities?''), по умолчанию передается ''-1'', то есть все города в рамках данной страны
****** '''FreePlaces''' –
+
** '''Key *''' – идентификатор страны прибытия (полученный из метода ''.../TourSearchOwin/Destination?'')
****** '''TotalPlaces''' –
+
** '''Type *''' – тип результата (внутренний параметр, не изменяемый, всегда указывать значение = 1)
***** '''PartnerId''' –
+
** '''tourTypes *''' – идентификатор типа тура (полученный из метода ''.../TourSearchOwin/ActualizeTourType?''), по умолчанию передается ''-1'', то есть все типы тура в рамках данной страны
***** '''ByPax''' –
+
* Возвращаемый результат:
***** '''Partner''' –
+
** массив дат
****** '''Key''' –
 
****** '''Value''' –
 
**** '''FlightSetting''' –
 
***** '''ServiceId''' –
 
***** '''PatternId''' –
 
***** '''FlightId''' –
 
**** '''FlightSourceMode''' –
 
**** '''Id''' –
 
**** '''SvKey''' –
 
**** '''IsSubCode1''' –
 
**** '''IsSubCode2''' –
 
**** '''IsPartnerBasedOn''' –
 
**** '''Day''' –
 
**** '''DurationInNight''' –
 
**** '''BeginDateTime''' –
 
**** '''IsHooded''' –
 
**** '''IsDeleted''' –
 
**** '''IsNotCalculate''' –
 
**** '''PacketId''' –
 
**** '''Index''' –
 
*** '''NotRouteServices''' – список немаршрутных услуг (??? расписать детально)
 
**** '''''' –
 
*** '''MinCostServicesComposition''' –
 
**** '''Key''' –
 
***** '''TemplateId''' –
 
***** '''PatternId''' –
 
***** '''SettingId''' –
 
**** '''Value''' –
 
***** '''Cost''' –
 
***** '''ServiceType''' –
 
***** '''Code''' –
 
***** '''SubCode1''' –
 
***** '''SubCode2''' –
 
***** '''PacketId''' –
 
***** '''PartnerId''' –
 
***** '''CountryId''' –
 
***** '''CityId''' –
 
***** '''Day''' –
 
***** '''DurationInNight''' –
 
*** '''FlightWeight''' –
 
*** '''LinkingFlightsRules''' –
 
**** '''notCombineDifferentAirlineRule''' –
 
***** '''airlines''' –
 
***** '''flightSettings''' –
 
***** '''enabled''' –
 
**** '''checkPlusMinus1CharterRule''' –
 
***** '''FlightSettingPairs''' –
 
***** '''enabled''' –
 
**** '''notCombineDifferentTariffGroupRule''' –
 
***** '''FlightSettings''' –
 
***** '''enabled''' –
 
**** '''notCombineDifferentPartnerRule''' –
 
***** '''FlightSettings''' –
 
***** '''enabled''' –
 
**** '''departureCityEqualsArrivalCityRule''' –
 
***** '''FlightSettingPairs''' –
 
***** '''enabled''' –
 
**** '''combineOnlySpecificChartersRule''' –
 
***** '''settings''' –
 
***** '''enabled''' –
 
*** '''RouteSubVariants''' –
 
** '''SecondaryFiltersResult''' –
 
*** '''TourTypes''' – типы тура
 
**** '''Id''' –
 
**** '''Name''' –
 
**** '''ParentId''' –
 
**** '''Type''' –
 
*** '''TourPrograms''' – информация по каждой турпрограмме
 
**** '''Key''' –
 
**** '''Name''' –
 
**** '''TourUrl''' –
 
**** '''BookingConditions''' –
 
**** '''IsLandOnly''' –
 
**** '''IsRestrictMultiHotels''' –
 
**** '''IsHotelTemplates''' –
 
**** '''IsRouteServices''' –
 
**** '''MultiHotelDelta''' –
 
**** '''Rate''' –
 
**** '''DateStart''' –
 
**** '''DateEnd''' –
 
**** '''Status''' –
 
***** '''Key''' –
 
***** '''Value''' –
 
**** '''Templates''' –
 
***** '''$id''' –
 
***** '''$id''' –
 
**** '''Types''' –
 
***** '''Id''' –
 
***** '''Name''' –
 
***** '''ParentId''' –
 
***** '''Type''' –
 
**** '''LinkingFlightsRules''' –
 
***** '''notCombineDifferentAirlineRule''' –
 
****** '''airlines''' –
 
****** '''flightSettings''' –
 
****** '''enabled''' –
 
***** '''checkPlusMinus1CharterRule''' –
 
****** '''FlightSettingPairs''' –
 
****** '''enabled''' –
 
***** '''notCombineDifferentTariffGroupRule''' –
 
****** '''FlightSettings''' –
 
****** '''enabled''' –
 
***** '''notCombineDifferentPartnerRule''' –
 
****** '''FlightSettings''' –
 
****** '''enabled''' –
 
***** '''departureCityEqualsArrivalCityRule''' –
 
****** '''FlightSettingPairs''' –
 
****** '''enabled''' –
 
***** '''combineOnlySpecificChartersRule''' –
 
****** '''settings''' –
 
****** '''enabled''' –
 
**** '''XmlSettings''' – xml
 
**** '''Type''' –
 
*** '''TourDurations''' –
 
*** '''TourDates''' –
 
**** '''HotelCities''' – город в дополнительных фильтрах (??? расписать детализацию)
 
***** '''''' –
 
**** '''HotelResorts''' – курорты в дополнительных фильтрах (??? расписать детализацию)
 
***** '''''' –
 
**** '''HotelCategories''' – категории отеля в дополнительных фильтрах (??? расписать детализацию)
 
***** '''''' –
 
**** '''Hotels''' – отели в дополнительных фильтрах (??? расписать детализацию)
 
***** '''''' –
 
**** '''Pansions''' – питания в дополнительных фильтрах (??? расписать детализацию)
 
***** '''''' –
 
**** '''Airlines''' – авиакомпании в дополнительных фильтрах (??? расписать детализацию)
 
***** '''''' –
 
**** '''FlightTariffs''' – класс перелета в дополнительных фильтрах (??? расписать детализацию)
 
***** '''''' –
 
**** '''DepartureCities''' – города вылета в дополнительных фильтрах (??? расписать детализацию)
 
***** '''''' –
 
**** '''DepartureAirports''' – аэропорты вылета в дополнительных фильтрах (??? расписать детализацию)
 
***** '''''' –
 
**** '''ArrivalCities''' – города прибытия в дополнительных фильтрах (??? расписать детализацию)
 
***** '''''' –
 
**** '''ArrivalAirports''' – аэропорты прибытия в дополнительных фильтрах (??? расписать детализацию)
 
***** '''''' –
 
**** '''HotelTypes''' – признаки отелей в дополнительных фильтрах (??? расписать детализацию)
 
***** '''''' –
 
  
 
<div class="toccolours mw-collapsible mw-collapsed" style="width:900px">Пример
 
<div class="toccolours mw-collapsible mw-collapsed" style="width:900px">Пример
 
<div class="mw-collapsible-content">
 
<div class="mw-collapsible-content">
 
<TABLE STYLE="border: 0.1em dashed #2F6FAB; margin: 8px; padding: 8px" WIDTH="99%"><TR><TD>
 
<TABLE STYLE="border: 0.1em dashed #2F6FAB; margin: 8px; padding: 8px" WIDTH="99%"><TR><TD>
Вызов метода Tour
+
Вызов метода TourDate
 
<syntaxhighlight lang="java" enclose="div">
 
<syntaxhighlight lang="java" enclose="div">
http://localhost:9000/TourSearchOwin/Tour?DepartureCityKeys=1&Dates=25.02.2018&Durations=4
+
GET http://localhost:9000/TourSearchOwin/TourDate?departureCity=1&destinationCity=-1&Key=90&Type=1&tourTypes=-1
&PageNumber=1&PageSize=20&HotelScheme=&TourKey=&TourDuration=&isFromBasket=false
+
</syntaxhighlight>
&isFillSecondaryFilters=true&DestinationType=1&DestinationKey=90&AdultCount=2&ChildAges=2
+
Возвращаемый результат метода TourDate (в формате JSON)
&ChildAges=2&CurrencyName=EU&AviaQuota=5&HotelQuota=5&BusTransferQuota=5&MinPrice=NaN&TourType=-1
+
<syntaxhighlight lang="java" enclose="div">
&CityIds=-1&TimeDepartureFrom=00%3A00&TimeDepartureTo=23%3A59&TimeArrivalFrom=00%3A00
+
[
&TimeArrivalTo=23%3A59&ArrivalFlightNoTransfer=false&DepartureFlightNoTransfer=false
+
  "21.02.2018",
 +
  "22.02.2018",
 +
  "23.02.2018",
 +
  "24.02.2018",
 +
  "25.02.2018",
 +
  "26.02.2018",
 +
  "27.02.2018",
 +
  "28.02.2018"
 +
]
 +
</syntaxhighlight>
 +
</TD></TR></TABLE>
 +
</div></div><br />
 +
 
 +
===Выгрузка актуальных продолжительностей (Duration)===
 +
Метод производит выгрузку доступных продолжительностей для поискового запроса.
 +
* Формат запроса:
 +
** GET .../TourSearchOwin/Duration?
 +
* Принимаемые параметры ( '''*''' – обязательный):
 +
** '''departureCity *''' – идентификатор города(ов) отправления (полученный из метода ''.../TourSearchOwin/departureCities?'')
 +
** '''destinationCity *''' – идентификатор города(ов) прибытия (полученный из метода ''.../TourSearchOwin/ActualizeCities?''), по умолчанию передается ''-1'', то есть все города в рамках данной страны
 +
** '''Key *''' – идентификатор страны прибытия (полученный из метода ''.../TourSearchOwin/Destination?'')
 +
** '''Type *''' – тип результата (внутренний параметр, не изменяемый, всегда указывать значение = 1)
 +
** '''tourDate *''' – массив дат заезда (полученные из метода ''.../TourSearchOwin/TourDate?''). Если параметры передаются через url, то каждое значение необходимо передавать отдельным параметром.
 +
** '''tourTypes *''' – идентификатор типа(ов) тура (полученный из метода ''.../TourSearchOwin/ActualizeTourType?''), по умолчанию передается ''-1'', то есть все типы тура в рамках данной страны
 +
* Возвращаемый результат:
 +
** массив продолжительностей (в днях)
 +
 
 +
<div class="toccolours mw-collapsible mw-collapsed" style="width:900px">Пример
 +
<div class="mw-collapsible-content">
 +
<TABLE STYLE="border: 0.1em dashed #2F6FAB; margin: 8px; padding: 8px" WIDTH="99%"><TR><TD>
 +
Вызов метода Duration
 +
<syntaxhighlight lang="java" enclose="div">
 +
GET http://localhost:9000/TourSearchOwin/Duration?departureCity=1&destinationCity=-1
 +
&Key=90&Type=1&tourDate=25.02.2018&tourDate=26.02.2018&tourTypes=-1
 
</syntaxhighlight>
 
</syntaxhighlight>
Возвращаемый результат метода Tour (в формате JSON)
+
Возвращаемый результат метода Duration (в формате JSON)
 
<syntaxhighlight lang="java" enclose="div">
 
<syntaxhighlight lang="java" enclose="div">
{
+
[
   "CheckMessages": null,
+
   7,
   "Message":   {
+
   8,
      "Key": 0,
+
   10,
      "Value": null
+
  12,
   },
+
  15,
  "Result":   [
+
   18
            {
+
]
        "Key": 100000004,
+
</syntaxhighlight>
        "Name": "Общая проверка системы",
+
</TD></TR></TABLE>
        "TourUrl": "www.megatec.ru",
+
</div></div><br />
        "BookingConditions": "<p>Условия бронирования тура.<\/p>",
+
 
        "StartDate": "2018-02-25T00:00:00",
+
===Поиск туров (Tour)===
        "Duration": 4,
+
Метод поиска туров использует множество параметров для поиска и фильтрации туров. Метод возвращает наиболее дешевые предложения, найденные по предоставленным параметрам и сгруппированные по отелям в порядке возрастания цены.
        "DurationInNight": 3,
+
* Формат запроса:
        "Types": [2],
+
** GET .../TourSearchOwin/Tour?
        "Cost": 260,
+
* Принимаемые параметры ( '''*''' – обязательный):
        "Rate": "EU",
+
** '''DepartureCityKeys *''' – идентификатор города(ов) отправления (полученный из метода ''.../TourSearchOwin/departureCities?'')
        "CityDepature":          {
+
** '''Dates *''' – массив дат заезда (полученные из метода ''.../TourSearchOwin/TourDate?''). Если параметры передаются через url, то каждое значение необходимо передавать отдельным параметром.
            "Key": 1,
+
** '''Durations *''' – массив продолжительностей (полученные из метода ''.../TourSearchOwin/Duration?''). Если параметры передаются через url, то каждое значение необходимо передавать отдельным параметром.
            "Value": "Москва"
+
** '''PageNumber *''' – номер возвращаемой страницы (по умолчанию возвращается 1)
        },
+
** '''PageSize *''' – количество возвращаемых результатов на одной странице (возвращается 20)
        "CountryId": 0,
+
** '''isFromBasket *''' – происходит ли обращение из корзины или из поиска туров (true/false)
        "Services":         [
+
** '''isFillSecondaryFilters''' – заполнены ли дополнительные фильтры (по умолчанию всегда приходит true). Служебный внутренний параметр. При работе с API не используется.
                        {
+
** '''DestinationType *''' – тип результата (внутренний параметр, не изменяемый, всегда указывать значение = 1)
              "DepartureCity":               {
+
** '''DestinationKey *''' – идентификатор страны прибытия (полученный из метода ''.../TourSearchOwin/Destination?'')
                  "Key": 1,
+
** ''