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

Материал из Megatec
Перейти к: навигация, поиск
[досмотренная версия][досмотренная версия]
(Установка)
 
(не показаны 293 промежуточные версии 12 участников)
Строка 7: Строка 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''
  
 
==Список методов==
 
==Список методов==
Строка 18: Строка 21:
 
[[Файл:mb_273.png|1000px|Последовательность вызова методов сервиса]]
 
[[Файл:mb_273.png|1000px|Последовательность вызова методов сервиса]]
  
 +
===Информация о состоянии службы поиска (statusCache)===
 +
Метод выводит информацию о состоянии службы поиска при ее загрузке.
 +
* Формат запроса:
 +
** GET .../TourSearchOwin/statusCache?
 +
* Принимаемые параметры:
 +
** нет принимаемых параметров
 +
* Возвращаемый результат:
 +
** '''Initialized''' – информация о том, загружена ли служба или нет ('''false''' – инициализация кешей не завершена, '''true''' – инициализация кешей завершена)
 +
** '''Status''' – состояние службы. Возможные значения: ''Запущена инициализация кэшей'', ''Инициализация кэшей завершена''
 +
** '''CacheName''' – информация о том, какой именно кеш сейчас считается (название)
 +
** '''Iteration''' – порядковый номер считаемого справочника кеша
 +
** '''CacheCount''' – общее количество кешей
 +
** '''ProcessMessage''' – детализация. Информацию можно разделить на 3 блока:
 +
*** Загрузка всех справочных данных, кроме расчета маршрутов и актуальных фильтров. В этом случае сообщение будет ''Загрузка кэшей из БД''
 +
*** Расчет маршрутов. ''CacheName'' – ''HotelScheme'', сообщение будет ''tours load: 956 / 1234''
 +
*** Расчет актуальных фильтров. ''CacheName'' – ''ActualFilters'', сообщение будет ''Actual filter processed: 783012 / 3865687"''
 +
 +
<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">
 +
GET http://localhost:9000/TourSearchOwin/statusCache
 +
</syntaxhighlight>
 +
Возвращаемый результат метода statusCache (в формате JSON)
 +
<syntaxhighlight lang="java" enclose="div">
 +
{
 +
    "Initialized": false,
 +
    "Status": "Запущена инициализация кэшей",
 +
    "CacheName": "ToursSearchView",
 +
    "Iteration": 10,
 +
    "CacheCount": 112,
 +
    "ProcessMessage": "Загрузка кэшей из БД"
 +
}
 +
{
 +
    "Initialized": false,
 +
    "Status": "Запущена инициализация кэшей",
 +
    "CacheName": "HotelScheme",
 +
    "Iteration": 109,
 +
    "CacheCount": 112,
 +
    "ProcessMessage": "tours load: 956 / 1234"
 +
}
 +
{
 +
    "Initialized": false,
 +
    "Status": "Запущена инициализация кэшей",
 +
    "CacheName": "ActualFilters",
 +
    "Iteration": 112,
 +
    "CacheCount": 112,
 +
    "ProcessMessage": "Actual filter processed: 783012 / 3865687"
 +
}
 +
{
 +
    "Initialized": true,
 +
    "Status": "Инициализация кэшей завершена",
 +
    "CacheName": null,
 +
    "Iteration": 0,
 +
    "CacheCount": 0,
 +
    "ProcessMessage": null
 +
}
 +
</syntaxhighlight>
 +
</TD></TR></TABLE>
 +
</div></div><br />
  
 
===Авторизация (Token)===
 
===Авторизация (Token)===
Метод производит получение авторизационного токена.
+
Метод производит получение авторизационного токена ([https://tools.ietf.org/html/rfc6749#section-1.3.3 описание стандарта]).
 
* Формат запроса:
 
* Формат запроса:
** .../TourSearchOwin/Token?
+
** POST .../TourSearchOwin/Token?
 +
* Принимаемые параметры headers ( '''*''' – обязательный):
 +
** '''Content-Type *''' – application/x-www-form-urlencoded
 +
 
 
* Принимаемые параметры POST запроса ( '''*''' – обязательный):
 
* Принимаемые параметры POST запроса ( '''*''' – обязательный):
** '''grant_type *''' – password
+
** '''grant_type *''' – текст ''password''
** '''username *''' – логин представителя партнера
+
** '''username *''' – логин представителя партнера или частного лица
** '''password *''' – пароль представителя партнера
+
** '''password *''' – пароль представителя партнера или частного лица
  
 
* Возвращаемый результат:
 
* Возвращаемый результат:
Строка 33: Строка 100:
 
** '''expires_in''' – код
 
** '''expires_in''' – код
 
** '''userKey''' – ключ пользователя
 
** '''userKey''' – ключ пользователя
 +
** '''userType''' – тип пользователя (0 – представитель партнера, 1 – частное лицо)
 
** '''.issued''' – дата получения
 
** '''.issued''' – дата получения
 
** '''.expires''' – дата действия до
 
** '''.expires''' – дата действия до
Строка 41: Строка 109:
 
Вызов метода Token
 
Вызов метода Token
 
<syntaxhighlight lang="java" enclose="div">
 
<syntaxhighlight lang="java" enclose="div">
http://localhost:9000/TourSearchOwin/Token
+
POST http://localhost:9000/TourSearchOwin/Token HTTP/1.1
POST
+
Content-Type: application/x-www-form-urlencoded
{
+
 
"grant_type": "password",
+
grant_type=password&username=test&password=1
"username": "test",
 
"password": "1",
 
}
 
 
</syntaxhighlight>
 
</syntaxhighlight>
Возвращаемый результат метода TransportPlan (в формате JSON)
+
Возвращаемый результат метода Token (в формате JSON)
 
<syntaxhighlight lang="java" enclose="div">
 
<syntaxhighlight lang="java" enclose="div">
 
{
 
{
"access_token": "AQAAANCMnd8BFdERjHoAwE_Cl-sBAAAAdsCC8X7m9E-2bg0-uS0VfgAAAAACAAAAAAADZgAAwAAAA-
+
"access_token": "AQAAANCMnd8BFdERjHoAwE_Cl-sBAAAAdsCC8X7m9E-2bg0-uS0VfgAAAAAAAAADZgAAwAAAA-
EqAAAAAASAAACgAAAAEAAAAO4S-VrqBhQuhqliqrAKKfIgAQAAn-gfgP-rYjk-Krr1Ck2A-IGCw6FBhamJDQdedCxccciUOzFxgTtk1hR-
+
EqAAAAAASAAACgAAAAEAAAAO4S-VrqBhQuhqliqrAKKfIgAQAAn-gfgP-rYjk-Krr1Ck2A-IGCw6FBhamUOzFxgTtk1hR-
GLMryFIH8VK5GmHdHubZWj4S7XcazGL1Kn5-VlbiYdW2ZVWpYlk638aV-XS2kpZ9YrKgViiM_x8RH5TPo4tmtVAg9Y8OWyjX8Qx9SzwTzB9LhE7V-SjiB_CP_qs58DRKcyohq3Tz9QaiFgH1Ko7O2XKjTBG7SHyQPDPYjaqg0oD5Rs8d0gNsTtpt2EvNH7Wnj59kDxmzq0UcIT6Fm4YkDxmm9-CW7u3cEFWcpiqKOc2VvZFKPPHc07uDOO4w9FXPhpXZwOcV8GaHQpOqrJBxzhbr73RuhzPs_e-hgxKaIlsMaKqt1PFAAAAC7J54NXq5b0v5ReAMy1kuY0ebXA",
+
GLMryFIH8VK5GmHdHubZWj4S7XcazGL1Kn5-VlbiYdW2ZVWpYlk638aV-XS2kpZ9YrKgViiM_x8RH5TPo4-
 +
9LhE7V-SjiB_CP_qs58DRKcyohq3Tz9QaiFgH1Ko7O2XKjTBG7SHyQPDPYjaqg9kDxmzq0UcIT6Fm4YkDxmm9-
 +
CW7u3cEFWcpiqKOc2VvZFKPPHc07uDOO4w9FXPhpXZwOqrJBxzhbr73RuhzPs_e-hgxKaIlsMaK5b0v5ReAMy1kuY0ebXA",",
 
"token_type": "bearer",
 
"token_type": "bearer",
 
"expires_in": 1209599,
 
"expires_in": 1209599,
 
"userKey": "333",
 
"userKey": "333",
 +
        "userType": "0",
 
".issued": "Thu, 05 Apr 2018 12:05:31 GMT",
 
".issued": "Thu, 05 Apr 2018 12:05:31 GMT",
 
".expires": "Thu, 19 Apr 2018 12:05:31 GMT"
 
".expires": "Thu, 19 Apr 2018 12:05:31 GMT"
Строка 68: Строка 136:
 
Метод производит выгрузку настроек службы поиска.
 
Метод производит выгрузку настроек службы поиска.
 
* Формат запроса:
 
* Формат запроса:
** .../TourSearchOwin/Settings?
+
** GET .../TourSearchOwin/Settings?
 
* Принимаемые параметры:
 
* Принимаемые параметры:
 
** нет принимаемых параметров
 
** нет принимаемых параметров
 
* Возвращаемый результат:
 
* Возвращаемый результат:
** '''ChildAgesSetting''' – регулируется настройкой [[Мастер-Тур(15):Программа туров. Панель администрирования#Общие настройки|максимальный возраст ребенка]] (массив возрастов, при которых турист будет считаться ребенком
+
** '''ChildAgesSetting''' – регулируется настройкой [[Мастер-Тур(15):Программа туров. Настройки|максимальный возраст ребенка]] (массив возрастов, при которых турист будет считаться ребенком
** '''DurationSetting''' – регулируется настройкой [[Мастер-Тур(15):Программа туров. Панель администрирования#Общие настройки|максимальная продолжительность тура]] (массив продолжительностей, доступных в фильтрах для поиска)
+
** '''DurationSetting''' – регулируется настройкой [[Мастер-Тур(15):Программа туров. Настройки|максимальная продолжительность тура]] (массив продолжительностей, доступных в фильтрах для поиска)
 
** '''RoundServiceSetting''' – признак округления цены (количество знаков после запятой)
 
** '''RoundServiceSetting''' – признак округления цены (количество знаков после запятой)
 
** '''CacheReady''' – статус готовности службы поиска к работе (true/false)
 
** '''CacheReady''' – статус готовности службы поиска к работе (true/false)
Строка 94: Строка 162:
 
** '''MaxSearchDatesCountClient''' – максимальное количество дат, которое будет обрабатываться в клиенте поиска
 
** '''MaxSearchDatesCountClient''' – максимальное количество дат, которое будет обрабатываться в клиенте поиска
 
** '''MaxDurationsCountClient''' – максимальное количество продолжительностей, которое будет обрабатываться в клиенте поиска
 
** '''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="toccolours mw-collapsible mw-collapsed" style="width:900px">Пример
 
<div class="mw-collapsible-content">
 
<div class="mw-collapsible-content">
Строка 100: Строка 182:
 
Вызов метода Settings
 
Вызов метода Settings
 
<syntaxhighlight lang="java" enclose="div">
 
<syntaxhighlight lang="java" enclose="div">
http://localhost:9000/TourSearchOwin/Settings
+
GET http://localhost:9000/TourSearchOwin/Settings
 
</syntaxhighlight>
 
</syntaxhighlight>
 
Возвращаемый результат метода Settings (в формате JSON)
 
Возвращаемый результат метода Settings (в формате JSON)
Строка 165: Строка 247:
 
   "MaxSearchDatesCountClient": 10,
 
   "MaxSearchDatesCountClient": 10,
 
   "MaxDurationsCountClient": 14
 
   "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>
 
</syntaxhighlight>
Строка 170: Строка 265:
 
</div></div><br />
 
</div></div><br />
  
===Выгрузка списка валют (Currency)===
+
===Выгрузка списка валют в онлайне (Currency)===
 
Метод возвращает список используемых валют.
 
Метод возвращает список используемых валют.
 
* Формат запроса:
 
* Формат запроса:
** .../TourSearchOwin/Currency
+
** GET .../TourSearchOwin/Currency
 
* Принимаемые параметры:
 
* Принимаемые параметры:
 
** нет принимаемых параметров
 
** нет принимаемых параметров
Строка 182: Строка 277:
 
** '''IsNational''' – признак валюты «Национальная»
 
** '''IsNational''' – признак валюты «Национальная»
 
** '''IsoCode''' – ISO код валюты
 
** '''IsoCode''' – ISO код валюты
 +
** '''IsShowInSearch''' – признак показывать ли валюту в поиске
 +
** '''Symbol''' – символ валюты (обрабатывается с 15.7)
 
** '''Key''' – идентификатор валюты
 
** '''Key''' – идентификатор валюты
** '''IsShowInSearch''' – признак показывать ли валюту в поиске
+
 
  
 
<div class="toccolours mw-collapsible mw-collapsed" style="width:900px">Пример
 
<div class="toccolours mw-collapsible mw-collapsed" style="width:900px">Пример
Строка 190: Строка 287:
 
Вызов метода Currency
 
Вызов метода Currency
 
<syntaxhighlight lang="java" enclose="div">
 
<syntaxhighlight lang="java" enclose="div">
http://localhost:9000/TourSearchOwin/Currency
+
GET http://localhost:9000/TourSearchOwin/Currency
 
</syntaxhighlight>
 
</syntaxhighlight>
 
Возвращаемый результат метода Currency (в формате JSON)
 
Возвращаемый результат метода Currency (в формате JSON)
Строка 201: Строка 298:
 
       "IsNational": false,
 
       "IsNational": false,
 
       "IsoCode": "EUR",
 
       "IsoCode": "EUR",
       "Key": 2,
+
       "IsShowInSearch": true,
       "IsShowInSearch": true
+
      "Symbol": "€",
 +
       "Key": 2
 
   },
 
   },
 
       {
 
       {
Строка 210: Строка 308:
 
       "IsNational": true,
 
       "IsNational": true,
 
       "IsoCode": "RUR",
 
       "IsoCode": "RUR",
       "Key": 14,
+
       "IsShowInSearch": true,
       "IsShowInSearch": true
+
      "Symbol": "₽",
 +
       "Key": 14
 
   },
 
   },
 
       {
 
       {
Строка 219: Строка 318:
 
       "IsNational": false,
 
       "IsNational": false,
 
       "IsoCode": "USD",
 
       "IsoCode": "USD",
       "Key": 1,
+
       "IsShowInSearch": true,
       "IsShowInSearch": true
+
      "Symbol": "$",
 +
       "Key": 1
 
   }
 
   }
 
]
 
]
Строка 227: Строка 327:
 
</div></div><br />
 
</div></div><br />
  
===Выгрузка квотируемых услуг системы (QuotedServices)===
+
 
Метод производит выгрузку услуг с признаком «Квотируемая»
+
===Выгрузка курсов валют (CurrencyRates) начиная с 15.7===
 +
Полный аналог метода [[Мастер-Тур(15):API для отдачи цен в поисковые системы#Выгрузка курсов валют (GetCurrencyRates)|Выгрузка курсов валют (GetCurrencyRates)]]<br />
 +
Метод возвращает список курсов валют, актуальных на дату запроса. Курсы отображаются только для тех валют, которые отмечены в справочнике признаком ''Отображать в онлайне''
 
* Формат запроса:
 
* Формат запроса:
** .../TourSearchOwin/QuotedServices
+
** GET .../TourSearchOwin/CurrencyRates
 
* Принимаемые параметры:
 
* Принимаемые параметры:
** нет принимаемых параметров
+
** '''dateFrom''' – начальная дата, от которой вывести список курсов валют, в формате DD.MM.YYYY, необязательный параметр (если не указан, берется за текущий день)
 +
** '''dateTo''' – конечная дата, до которой вывести список курсов валют, в формате DD.MM.YYYY, необязательный параметр (если не указан, берется за текущий день)
 +
** '''otherBaseCurrencyId''' – идентификатор любой валюты, эмулирующей работу национальной валюты, необязательный параметр. Если заполнен, то в результатах выдачи параметр ''baseCurrencyId'' будет заменяться на валюту из параметра ''otherBaseCurrencyId'' (обрабатывается с релиза 15.9).
 +
 
 
* Возвращаемый результат:
 
* Возвращаемый результат:
** '''Key''' – идентификатор услуги
+
** '''baseCurrencyId''' – идентификатор национальной валюты, либо произвольной валюты, указанной в настройке ''basketCurrency'' в конфигурационном файле (обрабатывается с релиза 15.6)
** '''Code''' – код услуги
+
** '''currencyId''' – идентификатор валюты, курс которой приводится
** '''Name''' – наименование услуги (русский)
+
** '''rate''' – курс валюты (отношение '''currencyId''' к '''baseCurrencyId''')
** '''NameLat''' – наименование услуги (английский)
+
** '''date''' – дата, на которую был зарегистрирован выводимый курс валюты
** '''IsDuration''' – наличие продолжительности у услуги
+
 
** '''IsCity''' – наличие города у услуги
+
<div class="toccolours mw-collapsible mw-collapsed" style="width:900px">Пример
** '''IsSubCode1''' – признак наличия ''SubCode1'' у услуги (вид проживания у отеля, тариф у авиаперелета)
+
<div class="mw-collapsible-content">
** '''IsSubCode2''' – признак наличия ''SubCode2'' у услуги (тип питания у отеля)
 
** '''Quoted''' – признак квотируемости услуги
 
** '''CheckGeoPoint''' – наличие геоточек у услуги
 
** '''IsRoute''' – признак маршрутной услуги
 
** '''LittlePercent''' – число в %, при которых будет считаться количество мест «Мало»
 
** '''LittlePlace''' – число, при котором будет считаться количество мест «Мало»
 
** '''LittleAnd''' – признак наличия мест «Мало» – будем ли учитывать количество мест вместе с процентным соотношением между общим и оставшимся количеством мест
 
** '''IsPartnerBasedOn''' – признак сопоставления партнера услуги в зависимости от отеля
 
** '''Control''' – идентификатор статуса услуги
 
 
 
<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>
 
<TABLE STYLE="border: 0.1em dashed #2F6FAB; margin: 8px; padding: 8px" WIDTH="99%"><TR><TD>
Вызов метода QuotedServices
+
Вызов метода CurrencyRates
 
<syntaxhighlight lang="java" enclose="div">
 
<syntaxhighlight lang="java" enclose="div">
http://localhost:9000/TourSearchOwin/QuotedServices
+
http://localhost:9000/TourSearchOwin/CurrencyRates?dateFrom=18.09.2024&dateTo=19.09.2024
 
</syntaxhighlight>
 
</syntaxhighlight>
Возвращаемый результат метода QuotedServices (в формате JSON)
+
Возвращаемый результат метода CurrencyRates (в формате JSON)
 
<syntaxhighlight lang="java" enclose="div">
 
<syntaxhighlight lang="java" enclose="div">
 
[
 
[
      {
+
    {
      "Key": 1,
+
        "BaseCurrencyId": 14,
      "Code": "А_П",
+
        "CurrencyId": 1,
      "Name": "Авиаперелет",
+
        "Rate": 91.429200,
      "NameLat": "Flight",
+
        "Date": "18.09.2024"
      "IsDuration": false,
+
    },
      "IsCity": true,
+
    {
      "IsSubCode1": true,
+
        "BaseCurrencyId": 14,
      "IsSubCode2": false,
+
        "CurrencyId": 2,
      "Quoted": true,
+
        "Rate": 101.505700,
      "CheckGeoPoint": true,
+
        "Date": "18.09.2024"
      "IsRoute": true,
+
    },
      "LittlePercent": null,
+
    {
      "LittlePlace": 10,
+
        "BaseCurrencyId": 14,
      "LittleAnd": true,
+
        "CurrencyId": 1,
      "IsPartnerBasedOn": false,
+
        "Rate": 91.671200,
      "Control": 1
+
        "Date": "19.09.2024"
  },
+
    },
      {
+
    {
      "Key": 3,
+
        "BaseCurrencyId": 14,
      "Code": "HOTEL",
+
        "CurrencyId": 2,
      "Name": "Отель/Круиз",
+
        "Rate": 102.039000,
      "NameLat": "Hotel/Cruise",
+
        "Date": "19.09.2024"
      "IsDuration": true,
+
    }
      "IsCity": true,
 
      "IsSubCode1": true,
 
      "IsSubCode2": true,
 
      "Quoted": true,
 
      "CheckGeoPoint": true,
 
      "IsRoute": true,
 
      "LittlePercent": 99,
 
      "LittlePlace": 5,
 
      "LittleAnd": false,
 
      "IsPartnerBasedOn": false,
 
      "Control": 1
 
  }
 
 
]
 
]
 +
 
</syntaxhighlight>
 
</syntaxhighlight>
 
</TD></TR></TABLE>
 
</TD></TR></TABLE>
 
</div></div><br />
 
</div></div><br />
  
===Выгрузка городов отправления (departureCities)===
+
===Выгрузка списка всех валют (getAllCurrencies)===
Метод производит выгрузку всех доступных городов отправления для поискового запроса.
+
Метод возвращает список всех валют.
 
* Формат запроса:
 
* Формат запроса:
** .../TourSearchOwin/departureCities?
+
** GET .../TourSearchOwin/AllCurencies/getAllCurrencies
 
* Принимаемые параметры:
 
* Принимаемые параметры:
 
** нет принимаемых параметров
 
** нет принимаемых параметров
 
* Возвращаемый результат:
 
* Возвращаемый результат:
** '''Key''' – идентификатор города
+
** '''Code''' – код валюты
** '''Name''' – название города
+
** '''Name''' – наименование валюты
 +
** '''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>
Вызов метода departureCities
+
Вызов метода getAllCurrencies
 
<syntaxhighlight lang="java" enclose="div">
 
<syntaxhighlight lang="java" enclose="div">
http://localhost:9000/TourSearchOwin/departureCities
+
GET http://localhost:9000/TourSearchOwin/AllCurencies/getAllCurrencies
 
</syntaxhighlight>
 
</syntaxhighlight>
Возвращаемый результат метода departureCities (в формате JSON)
+
Возвращаемый результат метода getAllCurrencies (в формате JSON)
 
<syntaxhighlight lang="java" enclose="div">
 
<syntaxhighlight lang="java" enclose="div">
 
[
 
[
 
       {
 
       {
       "Key": -1,
+
       "Code": "EU",
       "Name": "Без перелета"
+
       "Name": "Euro",
 +
      "IsMain": false,
 +
      "IsNational": false,
 +
      "IsoCode": "EUR",
 +
      "IsShowInSearch": true,
 +
      "Symbol": "€",
 +
      "Key": 2
 
   },
 
   },
 
       {
 
       {
       "Key": 312,
+
       "Code": "рб",
       "Name": "Астрахань"
+
       "Name": "Рубль",
 +
      "IsMain": false,
 +
      "IsNational": true,
 +
      "IsoCode": "RUR",
 +
      "IsShowInSearch": true,
 +
      "Symbol": "₽",
 +
      "Key": 14
 
   },
 
   },
 
       {
 
       {
       "Key": 1,
+
      "Code": "$",
      "Name": "Москва"
+
      "Name": "US Dollar",
 +
      "IsMain": true,
 +
      "IsNational": false,
 +
      "IsoCode": "USD",
 +
      "IsShowInSearch": true,
 +
      "Symbol": "$",
 +
       "Key": 1
 +
  },
 +
  {
 +
      "Code": "гр",
 +
      "Name": "Гривна",
 +
      "IsMain": false,
 +
      "IsNational": false,
 +
      "IsoCode": "UAH",
 +
      "IsShowInSearch": true,
 +
      "Symbol": "₴",
 +
      "Key": 6
 
   }
 
   }
 
]
 
]
Строка 339: Строка 455:
 
</div></div><br />
 
</div></div><br />
  
===Выгрузка списка стран (Destination)===
+
 
Метод производит выгрузку всех доступных направлений туроператора.
+
===Получение сконвертированных цен (convertFilterPrice)===
 +
Метод возвращает сконвертированные цен для допфильтра ''Цена'' (используется в canary)
 
* Формат запроса:
 
* Формат запроса:
** .../TourSearchOwin/Destination?
+
** GET .../TourSearchOwin/AllCurencies/convertFilterPrice
 
* Принимаемые параметры ( '''*''' – обязательный):
 
* Принимаемые параметры ( '''*''' – обязательный):
** '''term *''' – фильтрация результатов по контекстному поиску (по умолчанию параметр пустой)
+
** '''SourceRateKey *''' – ключ исходной валюты конвертации
** '''departureCities *''' – идентификатор города отправления (из контроллера ''.../TourSearchOwin/departureCities?'')
+
** '''TargetRateKey *''' – ключ валюты, в которую будет произведена конвертация
 +
** '''MinPrice *''' – значение минимальной цены, которое будет участвовать в конвертации
 +
** '''MaxPrice *''' – значение максимальной цены, которое будет участвовать в конвертации
 
* Возвращаемый результат:
 
* Возвращаемый результат:
** '''Name''' – название страны
+
** '''m_Item1''' – сконвертированная минимальная цена
** '''Key''' – идентификатор страны
+
** '''m_Item12''' – сконвертированная максимальная цена
** '''DestinationType''' – тип результата (всегда возвращается в JSON = 1, в xml = country)
 
  
 
<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
+
Вызов метода convertFilterPrice
 
<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/convertFilterPrice?SourceRateKey=2&TargetRateKey=1&MinPrice=10&MaxPrice=200
 
</syntaxhighlight>
 
</syntaxhighlight>
Возвращаемый результат метода Destination (в формате JSON)
+
Возвращаемый результат метода convertFilterPrice (в формате JSON)
 
<syntaxhighlight lang="java" enclose="div">
 
<syntaxhighlight lang="java" enclose="div">
[
+
{
      {
+
    "m_Item1": 12.035142616440004814057046576,
      "Name": "Болгария",
+
    "m_Item2": 240.70285232880009628114093152
      "Key": 359,
+
}
      "DestinationType": 1
 
  },
 
      {
 
      "Name": "Индия",
 
      "Key": 26,
 
      "DestinationType": 1
 
  },
 
      {
 
      "Name": "Финляндия",
 
      "Key": 64,
 
      "DestinationType": 1
 
  }
 
]
 
 
</syntaxhighlight>
 
</syntaxhighlight>
 
</TD></TR></TABLE>
 
</TD></TR></TABLE>
 
</div></div><br />
 
</div></div><br />
  
===Выгрузка списка городов (ActualizeCities)===
+
===Выгрузка квотируемых услуг системы (QuotedServices)===
Метод возвращает список всех доступных городов по определенному городу отправления и стране прибытия.
+
Метод производит выгрузку услуг с признаком «Квотируемая»
 
* Формат запроса:
 
* Формат запроса:
** .../TourSearchOwin/ActualizeCities?
+
** GET .../TourSearchOwin/QuotedServices
* Принимаемые параметры ( '''*''' – обязательный):
+
* Принимаемые параметры:
** '''cityKeys *''' – идентификатор города отправления (полученный из метода ''.../TourSearchOwin/departureCities?'')
+
** нет принимаемых параметров
** '''Key *''' – идентификатор страны прибытия (полученный из метода ''.../TourSearchOwin/Destination?'')
 
** '''Name *''' – название страны прибытия (полученный из метода ''.../TourSearchOwin/Destination?'')
 
** '''term *''' – фильтрация результатов по контекстному поиску (по умолчанию параметр пустой)
 
 
* Возвращаемый результат:
 
* Возвращаемый результат:
** '''Key''' – идентификатор города
+
** '''Key''' – идентификатор услуги
** '''Name''' – название города
+
** '''Code''' – код услуги
 +
** '''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>
Вызов метода ActualizeCities
+
Вызов метода QuotedServices
 
<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/QuotedServices
 
</syntaxhighlight>
 
</syntaxhighlight>
Возвращаемый результат метода ActualizeCities (в формате JSON)
+
Возвращаемый результат метода QuotedServices (в формате JSON)
 
<syntaxhighlight lang="java" enclose="div">
 
<syntaxhighlight lang="java" enclose="div">
 
[
 
[
 
       {
 
       {
       "Key": -1,
+
       "Key": 1,
       "Name": "Все"
+
      "Code": "А_П",
  },
+
       "Name": "Авиаперелет",
       {
+
      "NameLat": "Flight",
       "Key": 35,
+
      "IsDuration": false,
       "Name": "Вена"
+
       "IsCity": true,
   },
+
       "IsSubCode1": true,
 +
       "IsSubCode2": false,
 +
      "Quoted": true,
 +
      "CheckGeoPoint": true,
 +
      "IsRoute": true,
 +
      "IsPartnerBasedOn": false,
 +
      "Control": 1
 +
   },
 
       {
 
       {
       "Key": 440,
+
       "Key": 3,
       "Name": "Зельден"
+
      "Code": "HOTEL",
 +
       "Name": "Отель/Круиз",
 +
      "NameLat": "Hotel/Cruise",
 +
      "IsDuration": true,
 +
      "IsCity": true,
 +
      "IsSubCode1": true,
 +
      "IsSubCode2": true,
 +
      "Quoted": true,
 +
      "CheckGeoPoint": true,
 +
      "IsRoute": true,
 +
      "IsPartnerBasedOn": false,
 +
      "Control": 1
 
   }
 
   }
 
]
 
]
Строка 421: Строка 552:
 
</div></div><br />
 
</div></div><br />
  
===Выгрузка типов туров (ActualizeTourType)===
+
===Выгрузка актуальных городов отправления (departureCities)===
Метод возвращает список типов туров по определенному городу отправления, стране и городу прибытия.
+
Метод производит выгрузку всех доступных городов отправления для поискового запроса.
 
* Формат запроса:
 
* Формат запроса:
** .../TourSearchOwin/ActualizeTourType?
+
** GET .../TourSearchOwin/departureCities?  
* Принимаемые параметры ( '''*''' – обязательный):
+
* Принимаемые параметры:
** '''departureCityKeys *''' – идентификатор города отправления (полученный из метода ''.../TourSearchOwin/departureCities?'')
+
** нет принимаемых параметров
** '''Key *''' – идентификатор страны прибытия (полученный из метода ''.../TourSearchOwin/Destination?'')
 
** '''Name *''' – название страны прибытия (полученный из метода ''.../TourSearchOwin/Destination?'')
 
** '''Type *''' – тип результата (всегда возвращается в JSON = 1, в xml = country)
 
** '''destinationCity *''' – идентификатор города прибытия (полученный из метода ''.../TourSearchOwin/ActualizeCities?''), по умолчанию передается ''-1'', то есть все города в рамках данной страны
 
** '''term *''' – фильтрация результатов по контекстному поиску (по умолчанию параметр пустой)
 
 
* Возвращаемый результат:
 
* Возвращаемый результат:
** '''Key''' – идентификатор типа тура
+
** '''Key''' – идентификатор города
** '''Name''' – название типа тура
+
** '''Name''' – название города
** '''ParentId''' – идентификатор группы, к которой относится данный типа тура (если тип тура не относится к группе, то возвращается ''null'')
 
  
 
<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
+
Вызов метода departureCities
 
<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/departureCities
 
</syntaxhighlight>
 
</syntaxhighlight>
Возвращаемый результат метода ActualizeTourType (в формате JSON)
+
Возвращаемый результат метода departureCities (в формате JSON)
 
<syntaxhighlight lang="java" enclose="div">
 
<syntaxhighlight lang="java" enclose="div">
 
[
 
[
 
       {
 
       {
 
       "Key": -1,
 
       "Key": -1,
       "Name": "Все",
+
       "Name": "Без перелета"
      "ParentId": null
 
 
   },
 
   },
 
       {
 
       {
       "Key": 2,
+
       "Key": 312,
       "Name": "Стандартный тур",
+
       "Name": "Астрахань"
      "ParentId": null
 
 
   },
 
   },
 
       {
 
       {
       "Key": 16,
+
       "Key": 1,
       "Name": "Экскурсионный тур",
+
       "Name": "Москва"
      "ParentId": 35
 
 
   }
 
   }
 
]
 
]
Строка 467: Строка 589:
 
</div></div><br />
 
</div></div><br />
  
===Выгрузка актуальных дат заездов (TourDate)===
+
===Выгрузка актуальных стран (Destination)===
Метод производит выгрузку доступных дат заездов для поискового запроса.
+
Метод производит выгрузку всех доступных направлений туроператора.
 
* Формат запроса:
 
* Формат запроса:
** .../TourSearchOwin/TourDate?
+
** 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)
 
** '''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>
Вызов метода TourDate
+
Вызов метода Destination
 
<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/Destination?departureCities=1
 
</syntaxhighlight>
 
</syntaxhighlight>
Возвращаемый результат метода TourDate (в формате JSON)
+
Возвращаемый результат метода 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>
 +
Возвращаемый результат метода Destination (в формате JSON) с включенной настройкой easySearchFilter
 
<syntaxhighlight lang="java" enclose="div">
 
<syntaxhighlight lang="java" enclose="div">
 
[
 
[
  "21.02.2018",
+
{
  "22.02.2018",
+
  "Name": "Австрия",
  "23.02.2018",
+
  "Key": 90,
  "24.02.2018",
+
  "DestinationType": 1,
  "25.02.2018",
+
  "IsExist": false,
  "26.02.2018",
+
  "Data":
  "27.02.2018",
+
        [
  "28.02.2018"
+
        {
 +
          "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>
Строка 505: Строка 736:
 
</div></div><br />
 
</div></div><br />
  
===Выгрузка актуальных продолжительностей (Duration)===
+
===Выгрузка актуальных городов (ActualizeCities)===
Метод производит выгрузку доступных продолжительностей для поискового запроса.
+
Метод возвращает список всех доступных городов по определенному городу отправления и стране прибытия.
 
* Формат запроса:
 
* Формат запроса:
** .../TourSearchOwin/Duration?
+
** GET .../TourSearchOwin/ActualizeCities?
 
* Принимаемые параметры ( '''*''' – обязательный):
 
* Принимаемые параметры ( '''*''' – обязательный):
** '''departureCity *''' – идентификатор города отправления (полученный из метода ''.../TourSearchOwin/departureCities?'')
+
** '''cityKeys *''' – идентификатор города(ов) отправления (полученный из метода ''.../TourSearchOwin/departureCities?'')
** '''destinationCity *''' – идентификатор города прибытия (полученный из метода ''.../TourSearchOwin/ActualizeCities?''), по умолчанию передается ''-1'', то есть все города в рамках данной страны
 
 
** '''Key *''' – идентификатор страны прибытия (полученный из метода ''.../TourSearchOwin/Destination?'')
 
** '''Key *''' – идентификатор страны прибытия (полученный из метода ''.../TourSearchOwin/Destination?'')
** '''Name *''' – название страны прибытия (полученный из метода ''.../TourSearchOwin/Destination?'')
+
** '''term''' – фильтрация результатов по контекстному поиску (по умолчанию параметр пустой)
** '''Type *''' – тип результата (всегда возвращается в JSON = 1, в xml = country)
+
* Возвращаемый результат:
** '''tourDate *''' – массив дат заезда (полученные из метода ''.../TourSearchOwin/TourDate?''). Если параметры передаются через url, то каждое значение необходимо передавать отдельным параметром.
+
** '''Key''' – идентификатор города
** '''tourTypes *''' – идентификатор типа тура (полученный из метода ''.../TourSearchOwin/ActualizeTourType?''), по умолчанию передается ''-1'', то есть все типы тура в рамках данной страны
+
** '''Name''' – название города
** '''term *''' – фильтрация результатов по контекстному поиску (по умолчанию параметр пустой)
 
* Возвращаемый результат:
 
** массив продолжительностей
 
  
 
<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
+
Вызов метода ActualizeCities
 
<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&tourDate=26.02.2018&tourTypes=-1&term=
+
GET http://localhost:9000/TourSearchOwin/ActualizeCities?cityKeys=1&Key=90
 
</syntaxhighlight>
 
</syntaxhighlight>
Возвращаемый результат метода Duration (в формате JSON)
+
Возвращаемый результат метода ActualizeCities (в формате JSON)
 
<syntaxhighlight lang="java" enclose="div">
 
<syntaxhighlight lang="java" enclose="div">
 
[
 
[
  7,
+
      {
   8,
+
      "Key": -1,
  10,
+
      "Name": "Все"
   12,
+
   },
  15,
+
      {
   18
+
      "Key": 35,
 +
      "Name": "Вена"
 +
   },
 +
      {
 +
      "Key": 440,
 +
      "Name": "Зельден"
 +
   }
 
]
 
]
 
</syntaxhighlight>
 
</syntaxhighlight>
Строка 542: Строка 775:
 
</div></div><br />
 
</div></div><br />
  
===Поиск туров (Tour)===
+
===Выгрузка актуальных типов туров (ActualizeTourType)===
Метод поиска туров использует множество параметров для поиска и фильтрации туров. Метод возвращает наиболее дешевые предложения, найденные по предоставленным параметрам и сгруппированные по отелям в порядке возрастания цены.  
+
Метод возвращает список типов туров по определенному городу отправления, стране и городу прибытия.
 
* Формат запроса:
 
* Формат запроса:
** .../TourSearchOwin/Tour?
+
** GET .../TourSearchOwin/ActualizeTourType?
 
* Принимаемые параметры ( '''*''' – обязательный):
 
* Принимаемые параметры ( '''*''' – обязательный):
** '''DepartureCityKeys *''' – идентификатор города отправления (полученный из метода ''.../TourSearchOwin/departureCities?'')
+
** '''departureCityKeys *''' – идентификатор города(ов) отправления (полученный из метода ''.../TourSearchOwin/departureCities?'')
** '''Dates *''' – массив дат заезда (полученные из метода ''.../TourSearchOwin/TourDate?''). Если параметры передаются через url, то каждое значение необходимо передавать отдельным параметром.
+
** '''Key *''' – идентификатор страны прибытия (полученный из метода ''.../TourSearchOwin/Destination?'')
** '''Durations *''' – массив продолжительностей (полученные из метода ''.../TourSearchOwin/Duration?''). Если параметры передаются через url, то каждое значение необходимо передавать отдельным параметром.
+
** '''Type *''' – тип результата (внутренний параметр, не изменяемый, всегда указывать значение = 1)
** '''Groups''' – группировка результатов (2 – по названию тура, 4 – по дате тура, 8 – по продолжительности тура, 16 – по городу вылета, 32 – по отелю, 64 – по городу отеля, 128 – по курорту отеля, 256 – по категории отеля)
+
** '''destinationCity *''' – идентификатор города(ов) прибытия (полученный из метода ''.../TourSearchOwin/ActualizeCities?''), по умолчанию передается ''-1'', то есть все города в рамках данной страны
** '''PageNumber *''' – номер возвращаемой страницы (по умолчанию возвращается 1)
+
** '''terms''' – фильтрация результатов по контекстному поиску (по умолчанию параметр пустой)
** '''PageSize *''' – количество возвращаемых результатов на одной странице (возвращается 20)
+
* Возвращаемый результат:
** '''HotelScheme''' – пустой по умолчанию. Заполняется при вызове вариантов размещений в рамках одного отеля. Передаются следующие параметры: '''TemplateId''' – идентификатор шаблона услуги, '''DurationInNight''' – продолжительность отеля в ночах, '''Code''' – ключ отеля, '''PacketKey''' – ключ пакета, '''PartnerKey''' – ключ партнера
+
** '''Key''' – идентификатор типа тура
** '''BusTransferPointKeys''' – данный признак проставляется в ''true'' в том случае, когда происходит запрос вариантов проживания (кнопка ''Варианты'') в автобусных переездах
+
** '''Name''' – название типа тура
** '''TourKey''' – пустой по умолчанию. Заполняется при вызове вариантов размещений в рамках одного отеля: ключ программы тура
+
** '''ParentId''' – идентификатор группы, к которой относится данный тип тура (если тип тура не относится к группе, то возвращается ''null'')
** '''TourDuration''' – пустой по умолчанию. Заполняется при вызове вариантов размещений в рамках одного отеля: продолжительность тура в днях
+
 
** '''isFromBasket *''' – происходит ли обращение из корзины или из поиска туров (true/false)
+
<div class="toccolours mw-collapsible mw-collapsed" style="width:900px">Пример
** '''isFillSecondaryFilters *''' – заполнены ли дополнительные фильтры (по умолчанию всегда приходит true)
+
<div class="mw-collapsible-content">
** '''DestinationType *''' – тип результата (всегда возвращается в JSON = 1, в xml = country)
+
<TABLE STYLE="border: 0.1em dashed #2F6FAB; margin: 8px; padding: 8px" WIDTH="99%"><TR><TD>
** '''DestinationKey *''' – идентификатор страны прибытия (полученный из метода ''.../TourSearchOwin/Destination?'')
+
Вызов метода ActualizeTourType
** '''AdultCount *''' – количество взрослых
+
<syntaxhighlight lang="java" enclose="div">
** '''ChildAges''' – возраст детей. Если детей несколько, и параметры передаются через url, то каждое значение необходимо передавать отдельным параметром.
+
GET http://localhost:9000/TourSearchOwin/ActualizeTourType?departureCityKeys=1&Key=90&Type=1&destinationCity=-1
** '''CurrencyName''' – код валюты
+
</syntaxhighlight>
** '''AviaQuota *''' – информация о квотах на авиаперелет (значения параметров: ''"1"'' — фильтр "Есть", ''"5"'' — фильтр "Есть+запрос", ''"7"'' — фильтр "Все")
+
Возвращаемый результат метода ActualizeTourType (в формате JSON)
** '''HotelQuota *''' – информация о квотах на отель (значения параметров: ''"1"'' — фильтр "Есть", ''"5"'' — фильтр "Есть+запрос", ''"7"'' — фильтр "Все")
+
<syntaxhighlight lang="java" enclose="div">
** '''BusTransferQuota''' – информация о квотах на автобусный переезд (значения параметров: ''"1"'' — фильтр "Есть", ''"5"'' — фильтр "Есть+запрос", ''"7"'' — фильтр "Все")
+
[
** '''MinPrice *''' – минимальная цена (по умолчанию не задана, передается ''NaN'')
+
      {
** '''MaxPrice''' – максимальная цена (по умолчанию не передается)
+
      "Key": -1,
** '''TourType''' – идентификатор типа тура (полученный из метода ''.../TourSearchOwin/ActualizeTourType?''), по умолчанию передается ''-1'', то есть все типы тура в рамках данной страны. Возможна множественная передача параметров.
+
      "Name": "Все",
** '''Tour''' – ключ программы тура (дополнительный фильтр)
+
      "ParentId": null
** '''Duration''' – продолжительность тура (дополнительный фильтр)
+
  },
** '''DateTour''' – дата тура (дополнительный фильтр)
+
      {
** '''HotelResort''' – ключ курорта отеля (дополнительный фильтр)
+
      "Key": 2,
** '''HotelCity''' – ключ города отеля (дополнительный фильтр)
+
      "Name": "Стандартный тур",
** '''HotelType''' – ключ признака отеля (дополнительный фильтр)
+
      "ParentId": null
** '''HotelStars''' – ключ категории отеля (дополнительный фильтр)
+
  },
** '''Hotel''' – ключ отеля (дополнительный фильтр)
+
      {
** '''Pansions''' – ключ питания (дополнительный фильтр)
+
      "Key": 16,
** '''Airline''' – ключ авиакомпании (дополнительный фильтр)
+
      "Name": "Экскурсионный тур",
** '''AirportDeparture''' – ключ аэропорта вылета (дополнительный фильтр)
+
      "ParentId": 35
** '''AirportArrival''' – ключ аэропорта прилета (дополнительный фильтр)
+
  }
** '''CityIds''' – идентификатор города прибытия (полученный из метода ''.../TourSearchOwin/ActualizeCities?''), по умолчанию передается ''-1'', то есть все города в рамках данной страны. Возможна множественная передача параметров.
+
]
** '''TimeDepartureFrom''' – время отправления с (по умолчанию возвращается 00:00)
+
</syntaxhighlight>
** '''TimeDepartureTo''' – время отправления по (по умолчанию возвращается 23:59)
+
</TD></TR></TABLE>
** '''TimeArrivalFrom''' – время прибытия с (по умолчанию возвращается 00:00)
+
</div></div><br />
** '''TimeArrivalTo''' – время прибытия по (по умолчанию возвращается 23:59)
 
** '''ArrivalFlightNoTransfer''' – производить поиск без пересадок в прямом направлении (true/false, по умолчанию false)
 
** '''DepartureFlightNoTransfer''' – производить поиск без пересадок в обратном направлении (true/false, по умолчанию false)
 
** '''Tariff''' – ключ класса авиаперелета (дополнительный фильтр)
 
** '''FlightCityDeparture''' – ключ город вылета в параметрах авиаперелета (дополнительный фильтр)
 
** '''CityDeparture''' – ключ города начала поездки (дополнительный фильтр)
 
  
 +
===Выгрузка актуальных дат заездов (TourDate)===
 +
Метод производит выгрузку доступных дат заездов для поискового запроса.
 +
* Формат запроса:
 +
** GET .../TourSearchOwin/TourDate?
 +
* Принимаемые параметры ( '''*''' – обязательный):
 +
** '''departureCity *''' – идентификатор города(ов) отправления (полученный из метода ''.../TourSearchOwin/departureCities?'')
 +
** '''destinationCity *''' – идентификатор города(ов) прибытия (полученный из метода ''.../TourSearchOwin/ActualizeCities?''), по умолчанию передается ''-1'', то есть все города в рамках данной страны
 +
** '''Key *''' – идентификатор страны прибытия (полученный из метода ''.../TourSearchOwin/Destination?'')
 +
** '''Type *''' – тип результата (внутренний параметр, не изменяемый, всегда указывать значение = 1)
 +
** '''tourTypes *''' – идентификатор типа тура (полученный из метода ''.../TourSearchOwin/ActualizeTourType?''), по умолчанию передается ''-1'', то есть все типы тура в рамках данной страны
 
* Возвращаемый результат:
 
* Возвращаемый результат:
** '''CheckMessages''' – сообщения для логики проверки тура (не используется)
+
** массив дат
** '''Message''' – сообщение об ошибке
+
 
*** '''Key''' – код ошибки
+
<div class="toccolours mw-collapsible mw-collapsed" style="width:900px">Пример
*** '''Value''' – сообщение об ошибке
+
<div class="mw-collapsible-content">
** '''Result''' – результаты поиска
+
<TABLE STYLE="border: 0.1em dashed #2F6FAB; margin: 8px; padding: 8px" WIDTH="99%"><TR><TD>
*** '''Key''' – идентификатов программы тура
+
Вызов метода TourDate
*** '''Name''' – название программы тура
+
<syntaxhighlight lang="java" enclose="div">
*** '''TourUrl''' – ссылка на программу тура
+
GET http://localhost:9000/TourSearchOwin/TourDate?departureCity=1&destinationCity=-1&Key=90&Type=1&tourTypes=-1
*** '''BookingConditions''' – условия бронирования программы туров
+
</syntaxhighlight>
*** '''StartDate''' – дата начала тура
+
Возвращаемый результат метода TourDate (в формате JSON)
*** '''Duration''' – продолжительность тура (в днях)
+
<syntaxhighlight lang="java" enclose="div">
*** '''DurationInNight''' – продолжительность проживания (в ночах)
+
[
*** '''Types''' – идентификатор типа туров
+
  "21.02.2018",
*** '''Cost''' – цена тура
+
  "22.02.2018",
*** '''Rate''' – код валюты тура
+
  "23.02.2018",
*** '''CityDepature''' – город отправления
+
  "24.02.2018",
**** '''Key''' – идентификатор города отправления
+
  "25.02.2018",
**** '''Value''' – название города отправления
+
  "26.02.2018",
*** '''CountryId''' – всегда возвращается ключ 0
+
  "27.02.2018",
*** '''Services''' – услуги в туре
+
  "28.02.2018"
**** '''DepartureCity''' – город отправления
+
]
***** '''Key''' – идентификатор
+
</syntaxhighlight>
***** '''Value''' – название
+
</TD></TR></TABLE>
**** '''DepartureCountry
+
</div></div><br />
 +
 
 +
===Выгрузка актуальных продолжительностей (Duration)===
 +
Метод производит выгрузку доступных продолжительностей для поискового запроса.
 +
* Формат запроса:
 +
** GET .../TourSearchOwin/Duration?
 +
* Принимаемые параметры ( '''*''' – обязательный):
 +
** '''departureCity *''' – идентификатор города(ов) отправления (полученный из метода ''.../TourSearchOwin/departureCities?'')
 +
** '''destinationCity *''' – идентификатор города(ов) прибытия (полученный из метода ''.../TourSearchOwin/ActualizeCities?''), по умолчанию передается ''-1'', то есть все города в рамках данной страны
 +
** '''Key *''' – идентификатор страны прибытия (полученный из метода ''.../TourSearchOwin/Destination?'')
 +
** '''Type *''' – тип результата (внутренний параметр, не изменяемый, всегда указывать значение = 1)
 +
** '''tourDate *''' – массив дат заезда (полученные из метода ''..
 
                         {
 
                         {
               "Hotel":                {
+
               "DepartureCity":                {
                   "Key": 709,
+
                   "Key": 1,
                   "Value": "Am Brilliantengrund"
+
                   "Value": "Москва"
 +
              },
 +
              "DepartureCountry":                {
 +
                  "Key": 460,
 +
                  "Value": "Россия"
 
               },
 
               },
               "City":                {
+
               "ArrivalCity":                {
 
                   "Key": 35,
 
                   "Key": 35,
 
                   "Value": "Вена"
 
                   "Value": "Вена"
 
               },
 
               },
               "Stars":                {
+
               "ArrivalCountry":                {
                   "Key": -1,
+
                   "Key": 90,
                   "Value": null
+
                  "Value": "Австрия"
 +
              },
 +
              "DepartureAirport":                {
 +
                  "Key": "SVO4",
 +
                  "Value": "Шереметьево-24"
 +
              },
 +
              "ArrivalAirport":                {
 +
                  "Key": "VIE1",
 +
                   "Value": "Vena1"
 +
              },
 +
              "Airline":                {
 +
                  "Key": "BA7",
 +
                  "Value": "BRITISH  AIRWAYS"
 
               },
 
               },
               "Resort":                {
+
               "Aircraft":                {
                   "Key": -1,
+
                   "Key": "319",
                   "Value": null
+
                   "Value": "AIRBUS "
 
               },
 
               },
               "ImageURL": "",
+
               "Flight":                {
              "Http": null,
+
                   "Key": 882,
              "Description": "",
+
                   "Value": "4444"
              "Country":                {
 
                   "Key": 90,
 
                   "Value": "Австрия"
 
 
               },
 
               },
               "HotelDetails": [              {
+
               "DepartureTime": "10:00:00",
                  "HotelRoom": 46463,
+
              "ArrivalTime": "12:00:00",
                   "Room":                  {
+
              "EndDateTime": "2018-02-25T12:00:00",
                     "Key": 129,
+
              "FlightDetails": [              {
                     "Value": "DBL"
+
                   "Tariff":                  {
 +
                     "Key": 89,
 +
                    "Code": "Y",
 +
                     "Name": "Экономический класс"
 
                   },
 
                   },
                  "RoomCategory":                  {
+
                   "Cost": 10,
                    "Key": 3493,
+
                   "QuotaStatus":                  {
                    "Value": "Cosy"
+
                     "PlacesStatus": 4,
                  },
 
                  "AccomodationType":                  {
 
                    "Key": 1256,
 
                    "Value": "2+1_K",
 
                    "AdultCount": 2,
 
                    "ChildCount": 1
 
                  },
 
                  "Pansion":                  {
 
                    "Key": 4,
 
                    "Value": "Завтрак"
 
                  },
 
                   "Cost": 19.47,
 
                   "QuotaStatus":                  {
 
                     "PlacesStatus": 4,
 
 
                     "FreePlaces": 0,
 
                     "FreePlaces": 0,
                     "TotalPlaces": 0
+
                     "IsFewPlaces": false
 
                   },
 
                   },
                   "PartnerId": 12667,
+
                   "PartnerId": 12668,
                   "ByPax": false,
+
                   "ByPax": true,
 
                   "Partner":                  {
 
                   "Partner":                  {
                     "Key": 12667,
+
                     "Key": 0,
                     "Value": "Партнер-покупатель1"
+
                     "Value": null
 
                   }
 
                   }
 
               }],
 
               }],
               "HotelTypes": [              {
+
               "FlightSetting":               {
                   "Key": 5,
+
                   "ServiceId": 3,
                   "Value": "Рекомендуемые"
+
                   "PatternId": 13,
               }],
+
                  "FlightId": 13
               "Id": 1,
+
               },
               "SvKey": 3,
+
              "FlightSourceMode": 1,
 +
               "Id": 3,
 +
               "SvKey": 1,
 
               "IsSubCode1": true,
 
               "IsSubCode1": true,
               "IsSubCode2": true,
+
               "IsSubCode2": false,
 
               "IsPartnerBasedOn": false,
 
               "IsPartnerBasedOn": false,
 
               "Day": 1,
 
               "Day": 1,
               "DurationInNight": 3,
+
               "DurationInNight": 0,
               "BeginDateTime": "2018-02-25T12:00:00",
+
               "BeginDateTime": "2018-02-25T10:00:00",
              "EndDateTime": "2018-02-28T12:00:00",
 
 
               "IsHooded": false,
 
               "IsHooded": false,
 
               "IsDeleted": false,
 
               "IsDeleted": false,
 
               "IsNotCalculate": false,
 
               "IsNotCalculate": false,
 
               "PacketId": 779,
 
               "PacketId": 779,
               "Index": 1
+
               "Index": 0
 
             },
 
             },
 
                         {
 
                         {
               "DepartureCity":                {
+
               "Hotel":                {
 +
                  "Key": 709,
 +
                  "Value": "Am Brilliantengrund"
 +
              },
 +
              "City":                {
 
                   "Key": 35,
 
                   "Key": 35,
 
                   "Value": "Вена"
 
                   "Value": "Вена"
 
               },
 
               },
               "DepartureCountry":                {
+
               "Stars":                {
 +
                  "Key": -1,
 +
                  "Value": null
 +
              },
 +
              "Resort":                {
 +
                  "Key": -1,
 +
                  "Value": null
 +
              },
 +
              "ImageURL": "",
 +
              "Http": null,
 +
              "Description": "",
 +
              "Country":                {
 
                   "Key": 90,
 
                   "Key": 90,
 
                   "Value": "Австрия"
 
                   "Value": "Австрия"
 
               },
 
               },
               "ArrivalCity":               {
+
               "HotelDetails": [              {
                   "Key": 1,
+
                   "HotelRoom": 46463,
                   "Value": "Москва"
+
                   "Room":                   {
              },
+
                    "Key": 129,
              "ArrivalCountry":                {
+
                    "Value": "DBL"
                  "Key": 460,
+
                  },
                  "Value": "Россия"
+
                   "RoomCategory":                  {
              },
+
                    "Key": 3493,
              "DepartureAirport":                {
+
                    "Value": "Cosy"
                   "Key": "VIE1",
+
                  },
                   "Value": "Vena1"
+
                   "AccomodationType":                  {
              },
+
                    "Key": 1256,
              "ArrivalAirport":                {
+
                    "Value": "2+1_K",
                  "Key": "DME",
+
                    "AdultCount": 2,
                  "Value": "Домодедово"
+
                    "ChildCount": 1
              },
+
                   },
              "Airline":                {
+
                   "Pansion":                  {
                   "Key": "7U",
+
                     "Key": 4,
                   "Value": "Авиаэнерго"
+
                     "Value": "Завтрак"
              },
 
              "Aircraft":                {
 
                  "Key": "727",
 
                  "Value": "Boeing"
 
              },
 
              "Flight":               {
 
                  "Key": 774,
 
                   "Value": "222"
 
              },
 
              "DepartureTime": "00:00:00",
 
              "ArrivalTime": "00:00:00",
 
              "EndDateTime": "2018-02-28T00:00:00",
 
              "FlightDetails": [              {
 
                   "Tariff":                  {
 
                     "Key": 89,
 
                     "Code": "Y",
 
                    "Name": "Экономический класс"
 
 
                   },
 
                   },
                   "Cost": 0,
+
                  "AbsolutePenalties": null,
 +
                   "Cost": 19.47,
 
                   "QuotaStatus":                  {
 
                   "QuotaStatus":                  {
 
                     "PlacesStatus": 4,
 
                     "PlacesStatus": 4,
 
                     "FreePlaces": 0,
 
                     "FreePlaces": 0,
                     "TotalPlaces": 0
+
                     "IsFewPlaces": false
 
                   },
 
                   },
                   "PartnerId": 10760,
+
                   "PartnerId": 12667,
                   "ByPax": true,
+
                   "ByPax": false,
 
                   "Partner":                  {
 
                   "Partner":                  {
                     "Key": 0,
+
                     "Key": 12667,
                     "Value": null
+
                     "Value": "Партнер-покупатель1"
 
                   }
 
                   }
 
               }],
 
               }],
               "FlightSetting":               {
+
               "HotelTypes": [              {
                   "ServiceId": 4,
+
                   "Key": 5,
                   "PatternId": 5,
+
                   "Value": "Рекомендуемые"
                  "FlightId": 4
+
               }],
               },
+
               "Id": 1,
               "FlightSourceMode": 1,
+
               "SvKey": 3,
              "Id": 4,
 
               "SvKey": 1,
 
 
               "IsSubCode1": true,
 
               "IsSubCode1": true,
               "IsSubCode2": false,
+
               "IsSubCode2": true,
 
               "IsPartnerBasedOn": false,
 
               "IsPartnerBasedOn": false,
               "Day": 4,
+
               "Day": 1,
               "DurationInNight": 0,
+
               "DurationInNight": 3,
               "BeginDateTime": "2018-02-28T00:00:00",
+
               "BeginDateTime": "2018-02-25T12:00:00",
 +
              "EndDateTime": "2018-02-28T12:00:00",
 
               "IsHooded": false,
 
               "IsHooded": false,
 
               "IsDeleted": false,
 
               "IsDeleted": false,
 
               "IsNotCalculate": false,
 
               "IsNotCalculate": false,
 
               "PacketId": 779,
 
               "PacketId": 779,
               "Index": 4
+
               "Index": 1
             }
+
             },
        ],
+
                        {
        "NotRouteServices":         [
+
              "DepartureCity":               {
            [            {
+
                  "Key": 35,
              "ServiceName": "страховка",
+
                  "Value": "Вена"
              "City": null,
+
               },
               "Country": 6245,
+
               "DepartureCountry":                {
               "Code":                {
+
                   "Key": 90,
                   "Key": 297,
+
                   "Value": "Австрия"
                   "Value": "Страховка от несчастного случая"
 
 
               },
 
               },
               "ByScheduler": false,
+
               "ArrivalCity":               {
               "Details": [              {
+
                  "Key": 1,
                   "SubCode1":                  {
+
                  "Value": "Москва"
                     "Key": 18,
+
              },
                     "Value": "2"
+
              "ArrivalCountry":                {
 +
                  "Key": 460,
 +
                  "Value": "Россия"
 +
              },
 +
              "DepartureAirport":                {
 +
                  "Key": "VIE1",
 +
                  "Value": "Vena1"
 +
              },
 +
              "ArrivalAirport":                {
 +
                  "Key": "DME",
 +
                  "Value": "Домодедово"
 +
              },
 +
              "Airline":                {
 +
                  "Key": "7U",
 +
                  "Value": "Авиаэнерго"
 +
              },
 +
              "Aircraft":                {
 +
                  "Key": "727",
 +
                  "Value": "Boeing"
 +
              },
 +
              "Flight":                {
 +
                  "Key": 774,
 +
                  "Value": "222"
 +
              },
 +
              "DepartureTime": "00:00:00",
 +
              "ArrivalTime": "00:00:00",
 +
               "EndDateTime": "2018-02-28T00:00:00",
 +
              "FlightDetails": [              {
 +
                   "Tariff":                  {
 +
                     "Key": 89,
 +
                     "Code": "Y",
 +
                    "Name": "Экономический класс"
 
                   },
 
                   },
                  "SubCode2":                  {
+
                   "Cost": 0,
                    "Key": null,
 
                    "Value": ""
 
                  },
 
                  "Date": null,
 
                  "IsShowTransportPlan": true,
 
                   "Cost": 389.57,
 
 
                   "QuotaStatus":                  {
 
                   "QuotaStatus":                  {
                     "PlacesStatus": 1,
+
                     "PlacesStatus": 4,
 
                     "FreePlaces": 0,
 
                     "FreePlaces": 0,
                     "TotalPlaces": 0
+
                     "IsFewPlaces": false
 
                   },
 
                   },
                   "PartnerId": 12668,
+
                   "PartnerId": 10760,
 
                   "ByPax": true,
 
                   "ByPax": true,
 
                   "Partner":                  {
 
                   "Partner":                  {
Строка 1147: Строка 1547:
 
                   }
 
                   }
 
               }],
 
               }],
               "ParentId": null,
+
               "FlightSetting":               {
               "PartnerBasedOnServiceTemplateId": null,
+
                  "ServiceId": 4,
               "Id": 10,
+
                  "PatternId": 5,
               "SvKey": 6,
+
                  "FlightId": 4
 +
              },
 +
               "FlightSourceMode": 1,
 +
               "Id": 4,
 +
               "SvKey": 1,
 
               "IsSubCode1": true,
 
               "IsSubCode1": true,
               "IsSubCode2": true,
+
               "IsSubCode2": false,
 
               "IsPartnerBasedOn": false,
 
               "IsPartnerBasedOn": false,
               "Day": 1,
+
               "Day": 4,
               "DurationInNight": 3,
+
               "DurationInNight": 0,
               "BeginDateTime": "2018-02-25T00:00:00",
+
               "BeginDateTime": "2018-02-28T00:00:00",
              "EndDateTime": "2018-02-28T00:00:00",
 
 
               "IsHooded": false,
 
               "IsHooded": false,
               "IsDeleted": true,
+
               "IsDeleted": false,
               "IsNotCalculate": true,
+
               "IsNotCalculate": false,
               "PacketId": 882,
+
               "PacketId": 779,
               "Index": 2
+
               "Index": 4
             }],
+
             }
 +
        ],
 +
        "NotRouteServices":          [
 
             [            {
 
             [            {
               "ServiceName": "экскурсия",
+
               "ServiceName": "страховка",
               "City":                {
+
               "City": null,
                   "Key": 1046,
+
              "Country":                {
                   "Value": "Санто-Доминго"
+
                   "Key": 90,
 +
                   "Value": "Австрия"
 
               },
 
               },
              "Country": 6245,
 
 
               "Code":                {
 
               "Code":                {
                   "Key": 743,
+
                   "Key": 297,
                   "Value": "4"
+
                   "Value": "Страховка от несчастного случая"
 
               },
 
               },
 
               "ByScheduler": false,
 
               "ByScheduler": false,
 
               "Details": [              {
 
               "Details": [              {
 
                   "SubCode1":                  {
 
                   "SubCode1":                  {
                     "Key": 37,
+
                     "Key": 18,
                     "Value": "Мини-автобус 10 чел."
+
                     "Value": "2"
 
                   },
 
                   },
 
                   "SubCode2":                  {
 
                   "SubCode2":                  {
Строка 1186: Строка 1591:
 
                   },
 
                   },
 
                   "Date": null,
 
                   "Date": null,
                   "IsShowTransportPlan": false,
+
                   "IsShowTransportPlan": true,
                   "Cost": 85.22,
+
                   "Cost": 16,
 
                   "QuotaStatus":                  {
 
                   "QuotaStatus":                  {
 
                     "PlacesStatus": 1,
 
                     "PlacesStatus": 1,
 
                     "FreePlaces": 0,
 
                     "FreePlaces": 0,
                     "TotalPlaces": 0
+
                     "IsFewPlaces": false
 
                   },
 
                   },
                   "PartnerId": 12667,
+
                   "PartnerId": 12668,
 
                   "ByPax": true,
 
                   "ByPax": true,
 
                   "Partner":                  {
 
                   "Partner":                  {
Строка 1202: Строка 1607:
 
               "ParentId": null,
 
               "ParentId": null,
 
               "PartnerBasedOnServiceTemplateId": null,
 
               "PartnerBasedOnServiceTemplateId": null,
               "Id": 7,
+
               "Id": 10,
               "SvKey": 4,
+
               "SvKey": 6,
 
               "IsSubCode1": true,
 
               "IsSubCode1": true,
               "IsSubCode2": false,
+
               "IsSubCode2": true,
               "IsPartnerBasedOn": true,
+
               "IsPartnerBasedOn": false,
 
               "Day": 1,
 
               "Day": 1,
               "DurationInNight": 0,
+
               "DurationInNight": 3,
 
               "BeginDateTime": "2018-02-25T00:00:00",
 
               "BeginDateTime": "2018-02-25T00:00:00",
               "EndDateTime": "2018-02-26T00:00:00",
+
               "EndDateTime": "2018-02-28T00:00:00",
 
               "IsHooded": false,
 
               "IsHooded": false,
 
               "IsDeleted": true,
 
               "IsDeleted": true,
 
               "IsNotCalculate": true,
 
               "IsNotCalculate": true,
               "PacketId": 779,
+
               "PacketId": 882,
               "Index": 3
+
               "Index": 2
             }]
+
             }],
        ],
+
            [            {
        "MinCostServicesComposition":         [
+
              "ServiceName": "экскурсия",
                        {
+
               "City":                {
               "Key":                {
+
                   "Key": 1046,
                   "TemplateId": 3,
+
                   "Value": "Санто-Доминго"
                   "PatternId": 13,
 
                  "SettingId": 13
 
 
               },
 
               },
               "Value":                {
+
               "Country":                {
                   "Cost": 240,
+
                   "Key": 90,
                  "ServiceType": 1,
+
                   "Value": "Австрия"
                  "Code": 882,
 
                  "SubCode1": 89,
 
                  "SubCode2": 1,
 
                  "PacketId": 779,
 
                  "PartnerId": 12668,
 
                  "CountryId": 90,
 
                   "CityId": 35,
 
                  "Day": 1,
 
                  "DurationInNight": 0
 
              }
 
            },
 
                        {
 
              "Key":                {
 
                  "TemplateId": 1,
 
                  "PatternId": 0,
 
                  "SettingId": 0
 
 
               },
 
               },
               "Value":                {
+
               "Code":                {
                   "Cost": 19.47,
+
                   "Key": 743,
                   "ServiceType": 3,
+
                   "Value": "4"
                  "Code": 709,
 
                  "SubCode1": 46463,
 
                  "SubCode2": 4,
 
                  "PacketId": 779,
 
                  "PartnerId": 12667,
 
                  "CountryId": 90,
 
                  "CityId": 35,
 
                  "Day": 1,
 
                  "DurationInNight": 3
 
              }
 
            },
 
                        {
 
              "Key":                {
 
                  "TemplateId": 4,
 
                  "PatternId": 5,
 
                  "SettingId": 4
 
 
               },
 
               },
               "Value":                {
+
               "ByScheduler": false,
                   "Cost": 0,
+
               "Details": [              {
                   "ServiceType": 1,
+
                   "SubCode1":                  {
                   "Code": 774,
+
                    "Key": 37,
                   "SubCode1": 89,
+
                    "Value": "Мини-автобус 10 чел."
                   "SubCode2": 35,
+
                  },
                   "PacketId": 779,
+
                   "SubCode2":                  {
                   "PartnerId": 10760,
+
                    "Key": null,
                   "CountryId": 460,
+
                    "Value": ""
                   "CityId": 1,
+
                  },
                   "Day": 4,
+
                   "Date": null,
                  "DurationInNight": 0
+
                   "IsShowTransportPlan": false,
               }
+
                   "Cost": 85.22,
             }
+
                   "QuotaStatus":                  {
         ],
+
                    "PlacesStatus": 1,
         "FlightWeight": 2,
+
                    "FreePlaces": 0,
        "LinkingFlightsRules":         {
+
                    "IsFewPlaces": false
            "notCombineDifferentAirlineRule":             {
+
                  },
              "airlines": ["AY2"],
+
                   "PartnerId": 12667,
              "flightSettings": [],
+
                   "ByPax": true,
              "enabled": true
+
                   "Partner":                  {
            },
+
                    "Key": 0,
            "checkPlusMinus1CharterRule":             {
+
                    "Value": null
              "FlightSettingPairs": [],
+
                   }
              "enabled": false
+
              }],
 +
              "ParentId": null,
 +
              "PartnerBasedOnServiceTemplateId": null,
 +
              "Id": 7,
 +
              "SvKey": 4,
 +
              "IsSubCode1": true,
 +
              "IsSubCode2": false,
 +
              "IsPartnerBasedOn": true,
 +
              "Day": 1,
 +
              "DurationInNight": 0,
 +
               "BeginDateTime": "2018-02-25T00:00:00",
 +
              "EndDateTime": "2018-02-26T00:00:00",
 +
              "IsHooded": false,
 +
              "IsDeleted": true,
 +
              "IsNotCalculate": true,
 +
              "PacketId": 779,
 +
              "Index": 3
 +
             }]
 +
         ],
 +
         "MinCostServicesComposition":          [
 +
                        {
 +
              "Key":                {
 +
                  "TemplateId": 3,
 +
                  "PatternId": 13,
 +
                  "SettingId": 13
 +
              },
 +
              "Value":               {
 +
                  "ServiceType": 1,
 +
                  "Code": 882,
 +
                  "SubCode1": 89,
 +
                  "SubCode2": 1,
 +
                  "PacketId": 779,
 +
                  "PartnerId": 12668,
 +
                  "CountryId": 90,
 +
                  "CityId": 35,
 +
                  "Day": 1,
 +
                  "DurationInNight": 0
 +
              }
 
             },
 
             },
            "notCombineDifferentTariffGroupRule":            {
+
                        {
               "FlightSettings": [],
+
              "Key":                {
               "enabled": true
+
                  "TemplateId": 1,
             },
+
                  "PatternId": 0,
             "notCombineDifferentPartnerRule":            {
+
                  "SettingId": 0
               "FlightSettings": [],
+
              },
               "enabled": false
+
              "Value":                {
 +
                  "ServiceType": 3,
 +
                  "Code": 709,
 +
                  "SubCode1": 46463,
 +
                  "SubCode2": 4,
 +
                  "PacketId": 779,
 +
                  "PartnerId": 12667,
 +
                  "CountryId": 90,
 +
                  "CityId": 35,
 +
                  "Day": 1,
 +
                  "DurationInNight": 3
 +
              }
 +
             },
 +
                        {
 +
               "Key":               {
 +
                  "TemplateId": 4,
 +
                  "PatternId": 5,
 +
                  "SettingId": 4
 +
              },
 +
               "Value":                {
 +
                  "ServiceType": 1,
 +
                  "Code": 774,
 +
                  "SubCode1": 89,
 +
                  "SubCode2": 35,
 +
                  "PacketId": 779,
 +
                  "PartnerId": 10760,
 +
                  "CountryId": 460,
 +
                  "CityId": 1,
 +
                  "Day": 4,
 +
                  "DurationInNight": 0
 +
              }
 +
             }
 +
        ],
 +
        "FlightWeight": 2,
 +
        "LinkingFlightsRules":          {
 +
             "notCombineDifferentAirlineRule":            {
 +
               "airlines": ["AY2"],
 +
              "flightSettings": [],
 +
               "enabled": true
 
             },
 
             },
             "departureCityEqualsArrivalCityRule":            {
+
            "checkPlusMinus1CharterRule":            {
 +
              "FlightSettingPairs": [],
 +
              "enabled": false
 +
            },
 +
            "notCombineDifferentTariffGroupRule":            {
 +
              "FlightSettings": [],
 +
              "enabled": true
 +
            },
 +
            "notCombineDifferentPartnerRule":            {
 +
              "FlightSettings": [],
 +
              "enabled": false
 +
            },
 +
             "departureCityEqualsArrivalCityRule":            {
 
               "FlightSettingPairs": [],
 
               "FlightSettingPairs": [],
 
               "enabled": false
 
               "enabled": false
Строка 1308: Строка 1766:
 
             }
 
             }
 
         },
 
         },
         "RouteSubVariants": []
+
         "RouteSubVariants": [],
 +
        "Routes": 1,
 +
        "IsRemoteHotels": false,
 +
        "IsTourImages": false,
 +
        "MaskKeys": null
 
       }
 
       }
 
   ],
 
   ],
Строка 1376: Строка 1838:
 
               }
 
               }
 
             },
 
             },
            "XmlSettings": "информация о туре в формате xml",
 
 
             "Type": "TourProgram"
 
             "Type": "TourProgram"
 
         }
 
         }
Строка 1827: Строка 2288:
 
</div></div><br />
 
</div></div><br />
  
===Выгрузка первоначального варианта в корзину для бронирования (Tour)===
+
* Детализация параметра serviceDescriptions из url:
Метод поиска, который возвращает варианты только по данной турпрограмме и схеме отеля.
+
** '''TemplateId''' – идентификатор шаблона услуги (этот параметр можно взять из контроллера Tour->Result->RouteSubVariants->CostServicesComposition->Key->TemplateId)
 +
** '''PatternId''' – идентификатор паттерна услуги (этот параметр можно взять из контроллера Tour->Result->RouteSubVariants->CostServicesComposition->Key->PatternId)
 +
** '''SettingId''' – идентификатор услуги (этот параметр можно взять из контроллера Tour->Result->RouteSubVariants->CostServicesComposition->Key->SettingId)
 +
** '''ServiceType''' – тип услуги (этот параметр можно взять из контроллера Tour->Result->RouteSubVariants->CostServicesComposition->Value->ServiceType)
 +
** '''Code''' – код услуги (этот параметр можно взять из контроллера Tour->Result->RouteSubVariants->CostServicesComposition->Value->Code)
 +
** '''SubCode1''' – доп. описание 1 услуги (этот параметр можно взять из контроллера Tour->Result->RouteSubVariants->CostServicesComposition->Value->SubCode1)
 +
** '''SubCode2''' – доп. описание 2 услуги (этот параметр можно взять из контроллера Tour->Result->RouteSubVariants->CostServicesComposition->Value->SubCode2)
 +
** '''CountryId''' – ключ страны (этот параметр можно взять из контроллера Tour->Result->RouteSubVariants->CostServicesComposition->Value->CountryId)
 +
** '''CityId''' – ключ города (этот параметр можно взять из контроллера Tour->Result->RouteSubVariants->CostServicesComposition->Value->CityId)
 +
** '''PacketId''' – ключ пакета (этот параметр можно взять из контроллера Tour->Result->RouteSubVariants->CostServicesComposition->Value->PacketId)
 +
** '''PartnerId''' – ключ партнера (этот параметр можно взять из контроллера Tour->Result->RouteSubVariants->CostServicesComposition->Value->PartnerId)
 +
** '''Day''' – день предоставления (этот параметр можно взять из контроллера Tour->Result->RouteSubVariants->CostServicesComposition->Value->Day)
 +
** '''DurationInNight''' – продолжительность в ночах (этот параметр можно взять из контроллера Tour->Result->RouteSubVariants->CostServicesComposition->Value->DurationInNight)
 +
 
 +
Пример: serviceDescriptions=1_0_0_3_107274_1400134_1526_460_1_1830_14752_1_8
 +
 
 +
===Выгрузка транспортного плана (TransportPlan) до релиза 15.7 включительно===
 +
Метод производит выгрузку транспортного плана.
 
* Формат запроса:
 
* Формат запроса:
** .../TourSearchOwin/Tour?
+
** GET .../TourSearchOwin/TransportPlan?
 
* Принимаемые параметры ( '''*''' – обязательный):
 
* Принимаемые параметры ( '''*''' – обязательный):
** '''DepartureCityKeys *''' – идентификатор города отправления (полученный из метода ''.../TourSearchOwin/departureCities?'')
+
** '''code''' – код услуги
** '''DestinationType *''' – тип результата (всегда возвращается в JSON = 1, в xml = country)
+
** '''dateBegin''' – дата услуги
** '''DestinationKey *''' – идентификатор страны прибытия (полученный из метода ''.../TourSearchOwin/Destination?'')
+
** '''serviceType''' – тип услуги
** '''Dates *''' – массив дат заезда (полученные из метода ''.../TourSearchOwin/TourDate?''). Если параметры передаются через url, то каждое значение необходимо передавать отдельным параметром.
+
** '''transportKey''' – ключ справочника транспорт
** '''Durations *''' – массив продолжительностей (полученные из метода ''.../TourSearchOwin/Duration?''). Если параметры передаются через url, то каждое значение необходимо передавать отдельным параметром.
 
** '''AdultCount *''' – количество взрослых
 
** '''ChildAges''' – возраст детей. Если детей несколько, и параметры передаются через url, то каждое значение необходимо передавать отдельным параметром.
 
** '''CurrencyName *''' – код валюты
 
** '''HotelQuota *''' – информация о квотах на отель (значения параметров: ''"1"'' — фильтр "Есть", ''"5"'' — фильтр "Есть+запрос", ''"7"'' — фильтр "Все")
 
** '''AviaQuota *''' – информация о квотах на авиаперелет (значения параметров: ''"1"'' — фильтр "Есть", ''"5"'' — фильтр "Есть+запрос", ''"7"'' — фильтр "Все")
 
** '''BusTransferQuota''' – информация о квотах на автобусный переезд (значения параметров: ''"1"'' — фильтр "Есть", ''"5"'' — фильтр "Есть+запрос", ''"7"'' — фильтр "Все")
 
** '''HotelScheme *''' – объект схемы отеля
 
*** '''TemplateId''' – идентификатор шаблона услуги
 
*** '''DurationInNight''' – продолжительность отеля в ночах
 
*** '''Code''' – ключ отеля
 
*** '''PacketKey''' – ключ пакета
 
*** '''PartnerKey''' – ключ партнера
 
** '''TourKey''' – пустой по умолчанию. Заполняется при вызове вариантов размещений в рамках одного отеля: ключ программы тура
 
** '''TourDuration''' – пустой по умолчанию. Заполняется при вызове вариантов размещений в рамках одного отеля: продолжительность тура в днях
 
** '''PageNumber *''' – номер возвращаемой страницы (по умолчанию возвращается 1)
 
** '''PageSize *''' – количество возвращаемых результатов на одной странице (возвращается 20)
 
** '''isFromBasket *''' – происходит ли обращение из корзины или из поиска туров (true/false).
 
** '''isFillSecondaryFilters *''' – заполнены ли дополнительные фильтры (true/false)
 
  
 
* Возвращаемый результат:
 
* Возвращаемый результат:
** '''CheckMessages''' – сообщения для логики проверки тура (не используется)
+
** '''TransportKey''' – ключ справочника транспорт
** '''Message''' – сообщение об ошибке
+
** '''Title''' – описание
*** '''Key''' – код ошибки
+
** '''AreasCount''' – количество уровней
*** '''Value''' – сообщение об ошибке
+
** '''RowsCount''' – количество рядов
** '''Result''' – результаты поиска
+
** '''ColumnsCount''' – количество мест в ряду
*** '''Key''' – идентификатов программы тура
+
** '''BusySeats''' – не используется
*** '''Name''' – название программы тура
+
** '''Cells''' – массив описаний всех мест
*** '''TourUrl''' – ссылка на программу тура
+
*** '''Row''' – ряд
*** '''BookingConditions''' – условия бронирования программы туров
+
*** '''Column''' – место в ряду
*** '''StartDate''' – дата начала тура
+
*** '''Area''' – уровень места
*** '''Duration''' – продолжительность тура (в днях)
+
*** '''Type''' – тип (None = 0, Seat = 1, Block = 4, Busy = 5)
*** '''DurationInNight''' – продолжительность проживания (в ночах)
+
*** '''Name''' – название/номер
*** '''Types''' – идентификатор типа туров
+
** '''UserSeats''' – не используется
*** '''Cost''' – цена тура
+
** '''BlockSeat''' – не используется
*** '''Rate''' – код валюты тура
+
 
*** '''CityDepature''' – город отправления
+
<div class="toccolours mw-collapsible mw-collapsed" style="width:900px">Пример
**** '''Key''' – идентификатор города отправления
+
<div class="mw-collapsible-content">
**** '''Value''' – название города отправления
+
<TABLE STYLE="border: 0.1em dashed #2F6FAB; margin: 8px; padding: 8px" WIDTH="99%"><TR><TD>
*** '''CountryId''' – всегда возвращается ключ 0
+
Вызов метода TransportPlan
*** '''Services''' – услуги в туре
+
<syntaxhighlight lang="java" enclose="div">
**** '''DepartureCity''' – город отправления
+
GET http://localhost:9000/TourSearchOwin/TransportPlan?code=1311&dateBegin=17.04.2018&serviceType=14&transportKey=39
***** '''Key''' – идентификатор
+
</syntaxhighlight>
***** '''Value''' – название
+
Возвращаемый результат метода TransportPlan (в формате JSON)
**** '''DepartureCountry''' – страна отправления
+
<syntaxhighlight lang="java" enclose="div">
***** '''Key''' – идентификатор
+
{
***** '''Value''' – название
+
"TransportKey": 39,
**** '''ArrivalCity''' – город прибытия
+
"Title": "__",
***** '''Key''' – идентификатор
+
"AreasCount": 1,
***** '''Value''' – название
+
"RowsCount": 12,
**** '''ArrivalCountry''' – страна прибытия
+
"ColumnsCount": 5,
***** '''Key''' – идентификатор
+
"BusySeats": [],
***** '''Value''' – название
+
"Cells": [{
**** '''DepartureAirport''' – аэропорт отправления
+
"Row": 5,
***** '''Key''' – идентификатор
+
"Column": 0,
***** '''Value''' – название
+
"Area": 0,
**** '''ArrivalAirport''' – аэропорт прибытия
+
"Type": 4,
***** '''Key''' – идентификатор
+
"Name": "21"
***** '''Value''' – название
+
},
**** '''Airline''' – авиакомпания
+
{
***** '''Key''' – идентификатор
+
"Row": 5,
***** '''Value''' – название
+
"Column": 1,
**** '''Aircraft''' – воздушное судно
+
"Area": 0,
***** '''Key''' – идентификатор
+
"Type": 1,
***** '''Value''' – название
+
"Name": "22"
**** '''Flight''' – рейс
+
},
***** '''Key''' – идентификатор
+
{
***** '''Value''' – название
+
"Row": 5,
**** '''DepartureTime''' – время вылета
+
"Column": 2,
**** '''ArrivalTime''' – время прилета
+
"Area": 0,
**** '''EndDateTime''' – дата и время прилета
+
"Type": 2,
**** '''FlightDetails''' – информация об авиаперелете
+
"Name": ""
***** '''Tariff''' – информация о тарифе перелета
+
},
****** '''Key''' – идентификатор
+
{
****** '''Code''' – код тарифа
+
"Row": 5,
****** '''Name''' – название тарифа
+
"Column": 3,
***** '''Cost''' – стоимость
+
"Area": 0,
***** '''QuotaStatus''' – информация о квоте
+
"Type": 1,
****** '''PlacesStatus''' – статус по квотам (есть места / нет мест / под запрос)
+
"Name": "23"
****** '''FreePlaces''' – количество свободных мест
+
},
****** '''TotalPlaces''' – всего мест
+
{
***** '''PartnerId''' – ключ партнера
+
"Row": 5,
***** '''ByPax''' – цена за человека (true/false)
+
"Column": 4,
***** '''Partner''' – информация о партнере
+
"Area": 0,
****** '''Key''' – идентификатор
+
"Type": 1,
****** '''Value''' – название
+
"Name": "24"
**** '''FlightSetting''' – внутренняя информация о перелете из программы туров
+
}],
***** '''ServiceId''' – идентификатор класса услуги (внутренняя информация из программы туров)
+
"UserSeats": {
***** '''PatternId''' – идентификатор паттерна услуги (внутренняя информация из программы туров)
+
***** '''FlightId''' – идентификатор перелета (внутренняя информация из программы туров)
+
},
**** '''FlightSourceMode''' – локальный или удаленный перелет (внутренняя информация из программы туров)
+
"BlockSeat": {
**** '''Id''' – идентификатор базового шаблона услуги (внутренняя информация из программы туров)
+
**** '''SvKey''' – ключ типа услуги
+
}
**** '''IsSubCode1''' – признак наличия доп. описания 1
+
}
**** '''IsSubCode2''' – признак наличия доп. описания 2
+
</syntaxhighlight>
**** '''IsPartnerBasedOn''' – признак услуга с приоритетным подбором поставщика
+
</TD></TR></TABLE>
**** '''Day''' – день предоставления услуги
+
</div></div><br />
**** '''DurationInNight''' – продолжительность услуги в ночах
+
 
**** '''BeginDateTime''' – дата предоставления услуги
+
===Выгрузка транспортного плана (TransportPlan) начиная с релиза 15.8===
**** '''IsHooded''' – признак скрытая услуга
+
Метод производит выгрузку транспортного плана.
**** '''IsDeleted''' – признак удаляемая услуга
+
* Формат запроса:
**** '''IsNotCalculate''' – признак не рассчитываемая услуга
+
** GET .../TourSearchOwin/TransportPlan?
**** '''PacketId''' – ключ пакета
+
* Принимаемые параметры ( '''*''' – обязательный):
**** '''Index''' – порядковый номер услуги
+
** '''code''' – код услуги
*** '''NotRouteServices''' – массив коллекций немаршрутных услуг (например если две экскурсии будут являться одним элементом массива, то это будет говорить о том, что эти экскурсии можно будет выбрать в выпадающем списке)
+
** '''dateBegin''' – дата услуги
**** '''ServiceName''' – название типа услуги
+
** '''serviceType''' – тип услуги
**** '''City''' – объект город
+
** '''transportKey''' – ключ справочника транспорт
***** '''Key''' – ключ города
+
 
***** '''Value''' – название города
+
* Возвращаемый результат:
**** '''Country''' – ключ страны
+
** '''VehiclePlans''' – массив параметров зон плана
**** '''Code''' – объект код услуги
+
*** '''Key''' – ключ зоны
***** '''Key''' – ключ услуги
+
*** '''TransportKey''' – ключ из справочника транспорт
***** '''Value''' – название услуги
+
*** '''Row''' – количество рядов
**** '''ByScheduler''' – флаг услуга по расписанию или нет
+
*** '''AreaNumber''' – номер уровня
**** '''Details''' – объект детализация услуги
+
*** '''Name''' – название уровня
***** '''SubCode1''' – объект доп. описание 1
+
*** '''PlanOrientation''' – ориентация плана (''false'' - горизонтальная, ''true'' - вертикальная)
****** '''Key''' – ключ доп. описания 1
+
*** '''Column''' – количество столбцов
****** '''Value''' – название доп. описания 1
+
*** '''IsAirCraft''' – является ли планом самолета (''false'' - нет, ''true'' - является)
***** '''SubCode2''' – объект доп. описание 2
+
*** '''Type''' – не используется
****** '''Key''' – ключ доп. описания 2
+
** '''Seats''' – массив параметров посадочного места
****** '''Value''' – название доп. описания 2
+
*** '''Key''' – ключ места
***** '''Date''' – дата услуги
+
*** '''SeatType''' – тип места (None = 0, Seat = 1, Pass/comment = 2, Block = 4, Busy = 5)
***** '''IsShowTransportPlan''' – признак показывать ли план рассадки (для автобусов)
+
*** '''Index''' – индекс места
***** '''Cost''' – цена
+
*** '''Number''' – название ячейки с местом
***** '''QuotaStatus''' – объект информация по квотам
+
*** '''Type''' – тип "место"
****** '''PlacesStatus''' – статус по квотам (есть места / нет мест / под запрос)
+
*** '''VPKey''' – ключ зоны
****** '''FreePlaces''' – количество свободных мест
+
*** '''Border''' – обводка границы (комбинация цифр, где 0 - нет обводки, 1 - обводка в 1 px, 2 - обводка в 2 px)
****** '''TotalPlaces''' – всего мест
+
 
***** '''PartnerId''' – идентификатор партнера
+
<div class="toccolours mw-collapsible mw-collapsed" style="width:900px">Пример
***** '''ByPax''' – признак цены за человека
+
<div class="mw-collapsible-content">
***** '''Partner''' – объект партнер (не заполняется)
+
<TABLE STYLE="border: 0.1em dashed #2F6FAB; margin: 8px; padding: 8px" WIDTH="99%"><TR><TD>
****** '''Key''' – ключ (не заполняется)
+
Вызов метода TransportPlan
****** '''Value''' – название (не заполняется)
+
<syntaxhighlight lang="java" enclose="div">
**** '''ParentId''' – идентификатор родительской услуги (для вложенных услуг)
+
GET http://localhost:9000/TourSearchOwin/TransportPlan?code=1776&dateBegin=28.03.2022&serviceType=14&transportKey=35
**** '''PartnerBasedOnServiceTemplateId''' – ключ шаблона услуги, по которой приоритетно выбирается партнер текущей услуги
+
</syntaxhighlight>
**** '''Id''' – идентификатор услуги
+
Возвращаемый результат метода TransportPlan формате JSON)
**** '''SvKey''' – ключ типа услуги
+
<syntaxhighlight lang="java" enclose="div">
**** '''IsSubCode1''' – наличие доп. описания 1
+
{
**** '''IsSubCode2''' – наличие доп. описания 2
+
"VehiclePlans":
**** '''IsPartnerBasedOn''' – услуга с подбором приоритетного поставщика услуги
+
[
**** '''Day''' – день предоставления услуги
+
  {
**** '''DurationInNight''' – продолжительность услуги в ночах
+
    "Key": 291,
**** '''BeginDateTime''' – дата предоставления услуги
+
    "TransportKey": 35,
**** '''EndDateTime''' – дата окончания услуги
+
    "Row": 2,
**** '''IsHooded''' – скрытая ли услуга
+
    "AreaNumber": 1,
**** '''IsDeleted''' – удаляемая ли услуга
+
    "Name": "Зона 1",
**** '''IsNotCalculate''' – не рассчитываемая ли услуга
+
    "PlanOrientation": false,
**** '''PacketId''' – пакет услуги
+
    "Column": 3,
**** '''Index''' – индекс услуги
+
    "IsAirCraft": false,
*** '''MinCostServicesComposition''' – массив состав услуг минимальной цены
+
    "Type": "VehiclePlans"
**** '''Key''' – ключ
+
  },
***** '''TemplateId''' – идентификатор шаблона
+
  {
***** '''PatternId''' – идентификатор вкладки
+
    "Key": 292,
***** '''SettingId''' – идентификатор услуги
+
    "TransportKey": 35,
**** '''Value''' – значение
+
    "Row": 3,
***** '''Cost''' – стоимость услуги
+
    "AreaNumber": 2,
***** '''ServiceType''' – тип услуги
+
    "Name": "Зона 2",
***** '''Code''' – ключ услуги
+
    "PlanOrientation": true,
***** '''SubCode1''' – доп. описание 1
+
    "Column": 2,
***** '''SubCode2''' – доп. описание 2
+
    "IsAirCraft": false,
***** '''PacketId''' – пакет услуги
+
    "Type": "VehiclePlans"
***** '''PartnerId''' – партнер услуги
+
  }
***** '''CountryId''' – страна услуги
+
],
***** '''CityId''' – город услуги
+
"Seats":
***** '''Day''' – день предоставления услуги
+
[
***** '''DurationInNight''' – продолжительность услуги в ночах
+
  {
*** '''FlightWeight''' –
+
    "Key": 332522,
*** '''LinkingFlightsRules''' – объект правил связывания
+
    "SeatType": 1,
**** '''notCombineDifferentAirlineRule''' – объект не скрещивать авиакомпании
+
    "Index": 0,
***** '''airlines''' – авиакомпании
+
    "Number": "1",
***** '''flightSettings''' – массив ключей ServiceId, PatternId, FlightId
+
    "Type": "Seat",
***** '''enabled''' – флаг включен/выключен
+
    "VPKey": 291,
**** '''checkPlusMinus1CharterRule''' – объект Отличие номера рейса на 1
+
    "Border": "2002"
***** '''FlightSettingPairs''' – массив чартеров, для которых это правило будет выполняться
+
  },
***** '''enabled''' – флаг включен/выключен
+
  {
**** '''notCombineDifferentTariffGroupRule''' – объект не комбинировать рейсы от разных классов перелетов
+
    "Key": 332523,
***** '''FlightSettings''' – массив ключей ServiceId, PatternId, FlightId
+
    "SeatType": 1,
***** '''enabled''' – флаг включен/выключен
+
    "Index": 1,
**** '''notCombineDifferentPartnerRule''' – объект не комбинировать рейсы от разных партнеров
+
    "Number": "2",
***** '''FlightSettings''' – массив ключей ServiceId, PatternId, FlightId
+
    "Type": "Seat",
***** '''enabled''' – флаг включен/выключен
+
    "VPKey": 291,
**** '''departureCityEqualsArrivalCityRule''' – объект Город вылета = городу прилета
+
    "Border": "2100"
***** '''FlightSettingPairs''' – чартеры, для которых это будет выполняться
+
  },
***** '''enabled''' – флаг включен/выключен
+
  {
**** '''combineOnlySpecificChartersRule''' – объект не комбинировать различные классы перелетов
+
    "Key": 332524,
***** '''settings''' – массив ключей чартеров CharterIds и ServiceId, PatternId, FlightId
+
    "SeatType": 2,
***** '''enabled''' – флаг включен/выключен
+
    "Index": 2,
*** '''RouteSubVariants''' – подварианты услуг (используется в основном поиске)
+
    "Number": "П",
** '''SecondaryFiltersResult''' – доп. фильтры (не используется при вызове из корзины)
+
    "Type": "Seat",
 
+
    "VPKey": 291,
 +
    "Border": "2201"
 +
  },
 +
  {
 +
    "Key": 332525,
 +
    "SeatType": 1,
 +
    "Index": 3,
 +
    "Number": "3",
 +
    "Type": "Seat",
 +
    "VPKey": 291,
 +
    "Border": "0022"
 +
  },
 +
  {
 +
    "Key": 332526,
 +
    "SeatType": 1,
 +
    "Index": 4,
 +
    "Number": "4",
 +
    "Type": "Seat",
 +
    "VPKey": 291,
 +
    "Border": "0120"
 +
  },
 +
  {
 +
    "Key": 332527,
 +
    "SeatType": 1,
 +
    "Index": 5,
 +
    "Number": "5",
 +
    "Type": "Seat",
 +
    "VPKey": 291,
 +
    "Border": "0221"
 +
  },
 +
  {
 +
    "Key": 332528,
 +
    "SeatType": 1,
 +
    "Index": 0,
 +
    "Number": "1",
 +
    "Type": "Seat",
 +
    "VPKey": 292,
 +
    "Border": "2002"
 +
  },
 +
  {
 +
    "Key": 332529,
 +
    "SeatType": 1,
 +
    "Index": 1,
 +
    "Number": "2",
 +
    "Type": "Seat",
 +
    "VPKey": 292,
 +
    "Border": "2200"
 +
  },
 +
  {
 +
    "Key": 332530,
 +
    "SeatType": 1,
 +
    "Index": 2,
 +
    "Number": "3",
 +
    "Type": "Seat",
 +
    "VPKey": 292,
 +
    "Border": "0012"
 +
  },
 +
  {
 +
    "Key": 332531,
 +
    "SeatType": 1,
 +
    "Index": 3,
 +
    "Number": "4",
 +
    "Type": "Seat",
 +
    "VPKey": 292,
 +
    "Border": "0210"
 +
  },
 +
  {
 +
    "Key": 332532,
 +
    "SeatType": 1,
 +
    "Index": 4,
 +
    "Number": "5",
 +
    "Type": "Seat",
 +
    "VPKey": 292,
 +
    "Border": "1000"
 +
  },
 +
  {
 +
    "Key": 332533,
 +
    "SeatType": 1,
 +
    "Index": 5,
 +
    "Number": "6",
 +
    "Type": "Seat",
 +
    "VPKey": 292,
 +
    "Border": "1000"
 +
  }
 +
],
 +
}
 +
</syntaxhighlight>
 +
</TD></TR></TABLE>
 +
</div></div><br />
 +
 
 +
===Получение дат заезда по турпрограмме===
 +
Работает начиная с релиза 15.8.
 +
Метод возвращает даты заезда по ключу турпрограммы.
 +
* Формат запроса:
 +
** GET .../TourSearchOwin/TransportPlan?
 +
* Принимаемые параметры ( '''*''' – обязательный):
 +
** '''tourProgramKey *''' – ключ турпрограммы
 +
 
 +
* Возвращаемый результат:
 +
** '''Массив дат заезда по туру'''
  
 
<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 (первоначальный вариант Tour в корзине для бронирования)
+
Вызов метода  
 
<syntaxhighlight lang="java" enclose="div">
 
<syntaxhighlight lang="java" enclose="div">
http://localhost:9000/TourSearchOwin/Tour?DepartureCityKeys=1&DestinationType=1&DestinationKey=90
+
GET http://localhost:9000/TourSearchOwin/TransportPlan?tourProgramKey=100001277
&Dates=31.03.18&Durations=8&AdultCount=2&CurrencyName=EU&HotelQuota=5&AviaQuota=5&BusTransferQuota=5
 
&HotelScheme=[{"TemplateId":"1","DurationInNight":"7","Code":"707","PacketKey":"779","PartnerKey":"12667"}]
 
&TourKey=100003404&TourDuration=8&PageNumber=1&PageSize=20&IsFromBasket=true&isFillSecondaryFilters=false
 
 
</syntaxhighlight>
 
</syntaxhighlight>
Возвращаемый результат метода Tour (в формате JSON)
+
Возвращаемый результат метода (в формате JSON)
 +
<syntaxhighlight lang="java" enclose="div">
 +
[
 +
    "2022-02-21T00:00:00Z",
 +
    "2022-02-22T00:00:00Z",
 +
    "2022-02-23T00:00:00Z",
 +
    "2022-02-24T00:00:00Z",
 +
    "2022-02-25T00:00:00Z",
 +
    "2022-02-26T00:00:00Z",
 +
]
 +
</syntaxhighlight>
 +
</TD></TR></TABLE>
 +
</div></div><br />
 +
 
 +
===Получение плана транспортного средства (TransportPlan) по ключу турпрограммы и дате услуги===
 +
Работает начиная с релиза 15.8.
 +
Метод возвращает даты заезда по ключу турпрограммы и дате услуги.
 +
* Формат запроса:
 +
** GET .../TourSearchOwin/TransportPlan?
 +
* Принимаемые параметры ( '''*''' – обязательный):
 +
** '''tourProgramKey *''' – ключ турпрограммы
 +
** '''dateBegin *''' – дата услуги
 +
** '''serviceType *''' – тип услуги
 +
 
 +
* Возвращаемый результат:
 +
* '''plan''' – массив данных план
 +
** '''VehiclePlans''' – массив параметров зон плана
 +
*** '''Key''' – ключ зоны
 +
*** '''TransportKey''' – ключ из справочника транспорт
 +
*** '''Row''' – количество рядов
 +
*** '''AreaNumber''' – номер уровня
 +
*** '''Name''' – название уровня
 +
*** '''PlanOrientation''' – ориентация плана (''false'' - горизонтальная, ''true'' - вертикальная)
 +
*** '''Column''' – количество столбцов
 +
*** '''IsAirCraft''' – является ли планом самолета (''false'' - нет, ''true'' - является)
 +
*** '''Dates''' – не используется
 +
*** '''Type''' – не используется
 +
** '''Seats''' – массив параметров посадочного места
 +
*** '''Key''' – ключ места
 +
*** '''SeatType''' – тип места (None = 0, Seat = 1, Pass/comment = 2, Block = 4, Busy = 5)
 +
*** '''Index''' – индекс места
 +
*** '''Number''' – название ячейки с местом
 +
*** '''Type''' – тип "место"
 +
*** '''VPKey''' – ключ зоны
 +
*** '''Border''' – обводка границы (комбинация цифр, где 0 - нет обводки, 1 - обводка в 1 px, 2 - обводка в 2 px)
 +
* '''routeCity''' – направление автобусного переезда
 +
<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>
 +
Вызов метода
 +
<syntaxhighlight lang="java" enclose="div">
 +
GET http://localhost:9000/TourSearchOwin/TransportPlan?tourProgramKey=100001221&dateBegin=06.09.2023&serviceType=14
 +
</syntaxhighlight>
 +
Возвращаемый результат метода (в формате JSON)
 
<syntaxhighlight lang="java" enclose="div">
 
<syntaxhighlight lang="java" enclose="div">
 
{
 
{
  "CheckMessages": null,
+
    "plan": {
  "Message":   {
+
        "VehiclePlans": [
      "Key": 0,
+
            {
      "Value": null
+
                "Key": 10,
  },
+
                "TransportKey": 24,
  "Result":   [
+
                "Row": 10,
 +
                "AreaNumber": 1,
 +
                "Name": "12345678901234567890",
 +
                "PlanOrientation": true,
 +
                "Column": 5,
 +
                "IsAirCraft": false,
 +
                "Dates": null,
 +
                "Type": "VehiclePlans"
 +
            }
 +
        ],
 +
        "Seats": [
 +
            {
 +
                "Key": 406,
 +
                "SeatType": 1,
 +
                "Index": 0,
 +
                "Number": "1",
 +
                "Type": "Seat",
 +
                "VPKey": 10,
 +
                "Border": "0000"
 +
            },
 +
            {
 +
                "Key": 407,
 +
                "SeatType": 1,
 +
                "Index": 1,
 +
                "Number": "2",
 +
                "Type": "Seat",
 +
                "VPKey": 10,
 +
                "Border": "0000"
 +
            },
 +
            {
 +
                "Key": 408,
 +
                "SeatType": 0,
 +
                "Index": 2,
 +
                "Number": "",
 +
                "Type": "Seat",
 +
                "VPKey": 10,
 +
                "Border": "0000"
 +
            },
 +
            {
 +
                "Key": 409,
 +
                "SeatType": 1,
 +
                "Index": 3,
 +
                "Number": "3",
 +
                "Type": "Seat",
 +
                "VPKey": 10,
 +
                "Border": "0000"
 +
            },
 +
            {
 +
                "Key": 410,
 +
                "SeatType": 1,
 +
                "Index": 4,
 +
                "Number": "4",
 +
                "Type": "Seat",
 +
                "VPKey": 10,
 +
                "Border": "0000"
 +
            },
 
             {
 
             {
        "Key": 100003404,
+
                "Key": 411,
        "Name": "Удалить этот тур",
+
                "SeatType": 1,
        "TourUrl": "www.megatec.ru",
+
                "Index": 5,
        "BookingConditions": "Условия бронирования тура",
+
                "Number": "5",
        "StartDate": "2018-03-31T00:00:00",
+
                "Type": "Seat",
        "Duration": 8,
+
                "VPKey": 10,
        "DurationInNight": 7,
+
                "Border": "0000"
        "Types": [2],
+
            },
        "Cost": 122,
+
            {
        "Rate": "EU",
+
                "Key": 412,
        "CityDepature":         {
+
                "SeatType": 1,
            "Key": 1,
+
                "Index": 6,
            "Value": "Москва"
+
                "Number": "6",
        },
+
                "Type": "Seat",
        "CountryId": 90,
+
                "VPKey": 10,
        "Services":         [
+
                "Border": "0000"
                        {
+
            }
              "DepartureCity":               {
+
        ]
                  "Key": 1,
+
    },
                  "Value": "Москва"
+
    "routeCity": "Москва - Казань"
              },
+
}
              "DepartureCountry":                {
+
</syntaxhighlight>
                  "Key": 460,
+
</TD></TR></TABLE>
                  "Value": "Россия"
+
</div></div><br />
              },
+
 
              "ArrivalCity":                {
+
===Выгрузка первоначального варианта в корзину для бронирования (Tour)===
                  "Key": 35,
+
Метод поиска, который возвращает варианты только по данной турпрограмме и схеме отеля.
                  "Value": "Вена"
+
* Формат запроса:
              },
+
** GET .../TourSearchOwin/Tour?
              "ArrivalCountry":                {
+
* Принимаемые параметры ( '''*''' – обязательный):
                  "Key": 90,
+
** '''DepartureCityKeys *''' – идентификатор города отправления (полученный из метода ''.../TourSearchOwin/departureCities?'')
                  "Value": "Австрия"
+
** '''DestinationType *''' – тип результата (внутренний параметр, не изменяемый, всегда указывать значение = 1)
              },
+
** '''DestinationKey *''' – идентификатор страны прибытия (полученный из метода ''.../TourSearchOwin/Destination?'')
              "DepartureAirport":                {
+
** '''Dates *''' – массив дат заезда (полученные из метода ''.../TourSearchOwin/TourDate?''). Если параметры передаются через url, то каждое значение необходимо передавать отдельным параметром.
                  "Key": "DME",
+
** '''Durations *''' – массив продолжительностей (полученные из метода ''.../TourSearchOwin/Duration?''). Если параметры передаются через url, то каждое значение необходимо передавать отдельным параметром.
                  "Value": "Домодедово"
+
** '''AdultCount *''' – количество взрослых
              },
+
** '''ChildAges''' – возраст детей. Если детей несколько, и параметры передаются через url, то каждое значение необходимо передавать отдельным параметром.
              "ArrivalAirport":               {
+
** '''CurrencyName *''' – код валюты
                  "Key": "VIE1",
+
** '''HotelQuota *''' – информация о квотах на отель (значения параметров: ''"1"'' — фильтр "Есть", ''"5"'' — фильтр "Есть+запрос", ''"7"'' — фильтр "Все")
                  "Value": "Vena1"
+
** '''AviaQuota *''' – информация о квотах на авиаперелет (значения параметров: ''"1"'' — фильтр "Есть", ''"5"'' — фильтр "Есть+запрос", ''"7"'' — фильтр "Все")
              },
+
** '''BusTransferQuota''' – информация о квотах на автобусный переезд (значения параметров: ''"1"'' — фильтр "Есть", ''"5"'' — фильтр "Есть+запрос", ''"7"'' — фильтр "Все")
              "Airline":                {
+
** '''HotelScheme *''' – объект схемы отеля (при работе с авиабукингом передается конструкция такого вида ''HotelScheme=[{"TemplateId":"}]'')
                  "Key": "3G",
+
*** '''TemplateId''' – идентификатор шаблона услуги
                  "Value": "Атлант Союз_d;kgmdlfkgnfdlkhndlfkhnlkfnh"
+
*** '''DurationInNight''' – продолжительность отеля в ночах
              },
+
*** '''Code''' – ключ отеля
              "Aircraft":                {
+
*** '''PacketKey''' – ключ пакета
                  "Key": "319",
+
*** '''PartnerKey''' – ключ партнера
                  "Value": "AIRBUS "
+
*** '''GDSProviderId''' – ключ провайдера из внешней системы
              },
+
*** '''TotalTourDuration''' – общая продолжительность тура в днях, обрабатывается начиная с релиза 15.6, обязательный параметр. Изменения связаны с возможностью работы поиска в ночах проживания в отеле, для перехода в корзину необходимо знать общую продолжительность тура. Взять значение для параметра ''TotalTourDuration'' для HotelScheme можно из свойства ''Duration'', пришедшего для данной цены в ответе метода поиск туров (''Tour'')
              "Flight":                {
+
** '''PageNumber *''' – номер возвращаемой страницы (по умолчанию возвращается 1)
                  "Key": 858,
+
** '''PageSize *''' – количество возвращаемых результатов на одной странице (возвращается 20)
                  "Value": "1111"
+
** '''isFromBasket *''' – происходит ли обращение из корзины или из поиска туров (true/false).
              },
+
** '''isFillSecondaryFilters''' – заполнены ли дополнительные фильтры (по умолчанию всегда приходит true). Служебный внутренний параметр. При работе с API не используется.
              "DepartureTime": "10:00:00",
+
** '''TourKey''' – ключ программы тура
              "ArrivalTime": "11:59:00",
+
** '''TourDuration''' – продолжительность тура в днях
              "EndDateTime": "2018-03-31T11:59:00",
+
** '''RemoteHotelMode''' – признак того, производится поиск только локальных отелей или и от внешних поставщиков тоже (только локальные отели – 0, только внешние отели – 2, локальные и внешние отели – 1). Если признак отсутствует – поиск будет только по локальным отелям. Обрабатывается начиная с релиза 15.4.
              "FlightDetails": [              {
+
** '''nodeId''' – уникальный идентификатор узла в кластере балансировки нагрузки [[Мастер-Тур(15):Балансировщик нагрузки HaProxy|HaProxy]]
                  "Tariff":                  {
+
 
                    "Key": 67,
+
* Возвращаемый результат:
                    "Code": "C",
+
** '''CheckMessages''' – сообщения для логики проверки тура (не используется)
                    "Name": "Бизнес класс"
+
** '''Message''' – сообщение об ошибке
                  },
+
*** '''Key''' – код ошибки
                  "Cost": 6.45,
+
*** '''Value''' – сообщение об ошибке
                  "QuotaStatus":                  {
+
** '''Result''' – результаты поиска
                    "PlacesStatus": 4,
+
*** '''Key''' – идентификатор программы тура
                    "FreePlaces": 0,
+
*** '''Name''' – название программы тура
                    "TotalPlaces": 0
+
*** '''TourUrl''' – ссылка на программу тура
                  },
+
*** '''BookingConditions''' – условия бронирования программы туров
                  "PartnerId": 10760,
+
*** '''DefaultManagers''' – список выбранных менеджеров в туре
                  "ByPax": true,
+
*** '''Manager''' – ключ менеджера по умолчанию в туре
                  "Partner":                  {
+
*** '''Branches''' – список ключей филиалов бронирования
                    "Key": 0,
+
*** '''DetermineTheBranchOnCity''' – признак, определять филиал в зависимости от города начала поездки
                    "Value": null
+
*** '''IndividualFlightSelection''' – признак, включены ли индивидуальные настройки подбора перелетов
                  }
+
*** '''RestrictionDateArrival''' – признак, ограничение даты прилета по базовому рейсу в индивидуальных настройках подбора перелетов
              }],
+
*** '''PriceUpdateForView''' – признак обновления цен в индивидуальных настройках подбора перелетов (true – включен, false – выключен)
              "FlightSetting":                {
+
*** '''SelectFlightAutomatically''' – признак выбирать рейс автоматически, если не выбран пользователем в индивидуальных настройках подбора перелетов
                  "ServiceId": 3,
+
*** '''BaggageSearchOtherFares''' – признак поиска багажа в других тарифах в индивидуальных настройках подбора перелетов
                  "PatternId": 14,
+
*** '''Luggage''' – значение багажа в блоке настроек, влияющих на формирование запроса в индивидуальных настройках подбора перелетов (all – все, withLuggage – багаж и ручная кладь, withoutLuggage – без багажа)
                  "FlightId": 14
+
*** '''LuggageForView''' – значение багажа в блоке настроек, влияющих на отображение информации в индивидуальных настройках подбора перелетов (all – все, withLuggage – багаж и ручная кладь, withoutLuggage – без багажа)
              },
+
*** '''LuggageForPrice''' – значение багажа в блоке фильтров для обновления цен в индивидуальных настройках подбора перелетов (all – все, withLuggage – багаж и ручная кладь, withoutLuggage – без багажа)
              "FlightSourceMode": 1,
+
*** '''FlightClass''' – класс перелета в индивидуальных настройках подбора перелетов (economy – Эконом, premiumEconomy 2 Премиум-эконом, business – Бизнес, first – Первый)
              "Id": 3,
+
*** '''Directs''' – значение пересадок в блоке настроек, влияющих на формирование запроса в индивидуальных настройках подбора перелетов (all – все, onlyDirectFlights – только прямые рейсы)
              "SvKey": 1,
+
*** '''DirectsForView''' – значение пересадок в блоке влияющих на отображение информации в индивидуальных настройках подбора перелетов (all – все, без пересадок – withoutDirect, с 1 пересадкой – oneDirect, с 2 пересадками и более – twoOrMoreDirect)
              "IsSubCode1": true,
+
*** '''DirectsForPrice''' – значение пересадок в блоке фильтров для обновления цен в индивидуальных настройках подбора перелетов (all – все, без пересадок – withoutDirect, с 1 пересадкой – oneDirect, с 2 пересадками и более – twoOrMoreDirect)
              "IsSubCode2": false,
+
*** '''DepartureTimeLimit''' – ограничение времени вылета: «Вылет не позже» в формате hh:mm
              "IsPartnerBasedOn": false,
+
*** '''SortingForView''' – сортировка в индивидуальных настройках подбора перелетов (cheap – сначала дешевые, fast – сначала быстрые, optimal – оптимальные)
              "Day": 1,
+
*** '''StartDate''' – дата начала тура
              "DurationInNight": 0,
+
*** '''MaxConnectionTime''' – длительность пересадок в индивидуальных настройках подбора перелетов в формате hh:mm
              "BeginDateTime": "2018-03-31T10:00:00",
+
*** '''FullPaymentPeriod''' – полная оплата с даты бронирования (может быть null)
              "IsHooded": false,
+
*** '''FullPaymentCheckin''' – полная оплата до даты заезда (может быть null)
              "IsDeleted": false,
+
*** '''PrePaymentPeriod''' – предоплата с даты бронирования (может быть null)
              "IsNotCalculate": false,
+
*** '''PrePaymentCheckin''' – предоплата до даты заезда (может быть null)
              "PacketId": 779,
+
*** '''PrePaymentCu"''' – значение предоплаты в y.e. (может быть null)
              "Index": 0
+
*** '''PrePaymentPercent''' – значение предоплаты в процентах (может быть null)
            },
+
*** '''Duration''' – продолжительность тура (в днях)
                        {
+
*** '''DurationInNight''' – продолжительность проживания (в ночах)
              "Hotel":                {
+
*** '''Types''' – идентификатор типа туров
                  "Key": 707,
+
*** '''Price''' –  цена тура с учетом скидки в валюте поиска
                  "Value": "Beim Theresianum"
+
*** '''Cost''' – цена тура в валюте поиска
              },
+
*** '''Rate''' – код валюты тура
              "City":                {
+
*** '''Penalties''' – внутреннее поле, не используется
                  "Key": 35,
+
*** '''StartDate''' – дата начала тура
                  "Value": "Вена"
+
*** '''Duration''' – продолжительность тура (в днях)
              },
+
*** '''DurationInNight''' – продолжительность проживания (в ночах)
              "Stars":                {
+
*** '''Types''' – идентификатор типа туров
                  "Key": 66,
+
*** '''Cost''' – цена тура
                  "Value": "4*Boutique"
+
*** '''Rate''' – код валюты тура
              },
+
*** '''CityDepature''' – город отправления
              "Resort":                {
+
**** '''Key''' – идентификатор города отправления
                  "Key": -1,
+
**** '''Value''' – название города отправления
                  "Value": null
+
*** '''CountryId''' – всегда возвращается ключ 0
              },
+
*** '''Services''' – услуги в туре
              "ImageURL": "",
+
**** '''DepartureCity''' – город отправления
              "Http": null,
+
***** '''Key''' – идентификатор
              "Description": "",
+
***** '''Value''' – название
              "Country":                {
+
**** '''DepartureCountry''' – страна отправления
                  "Key": 90,
+
***** '''Key''' – идентификатор
                  "Value": "Австрия"
+
***** '''Value''' – название
              },
+
**** '''ArrivalCity''' – город прибытия
              "HotelDetails":                [
+
***** '''Key''' – идентификатор
                                    {
+
***** '''Value''' – название
                    "HotelRoom": 10468,
+
**** '''ArrivalCountry''' – страна прибытия
                    "Room":                      {
+
***** '''Key''' – идентификатор
                        "Key": 2,
+
***** '''Value''' – название
                        "Value": "Double"
+
**** '''DepartureAirport''' – аэропорт отправления
                    },
+
***** '''Key''' – идентификатор
                    "RoomCategory":                      {
+
***** '''Value''' – название
                        "Key": 776,
+
**** '''ArrivalAirport''' – аэропорт прибытия
                        "Value": "Standart133"
+
***** '''Key''' – идентификатор
                    },
+
***** '''Value''' – название
                    "AccomodationType":                      {
+
**** '''Airline''' – авиакомпания
                        "Key": 328,
+
***** '''Key''' – идентификатор
                        "Value": "2Ad",
+
***** '''Value''' – название
                        "AdultCount": 2,
+
**** '''Aircraft''' – воздушное судно
                        "ChildCount": 0
+
***** '''Key''' – идентификатор
                    },
+
***** '''Value''' – название
                    "Pansion":                      {
+
**** '''Flight''' – рейс
                        "Key": 4,
+
***** '''Key''' – идентификатор
                        "Value": "Завтрак"
+
***** '''Value''' – название
                    },
+
**** '''DepartureTime''' – время вылета
                    "Cost": 112.96,
+
**** '''ArrivalTime''' – время прилета
                    "QuotaStatus":                      {
+
**** '''EndDateTime''' – дата и время прилета
                        "PlacesStatus": 4,
+
**** '''FlightDetails''' – информация об авиаперелете
                        "FreePlaces": 0,
+
***** '''Tariff''' – информация о тарифе перелета
                        "TotalPlaces": 0
+
****** '''Key''' – идентификатор
                    },
+
****** '''Code''' – код тарифа
                    "PartnerId": 12667,
+
****** '''Name''' – название тарифа
                    "ByPax": false,
+
***** '''Cost''' – разница в стоимости с самым дешевым вариантом
                    "Partner":                      {
+
***** '''QuotaStatus''' – информация о квоте
                        "Key": 12667,
+
****** '''PlacesStatus''' – статус по квотам (есть места-1 / нет мест-2 / под запрос-4)
                        "Value": "Партнер-покупатель1"
+
****** '''FreePlaces''' – количество свободных мест, если удовлетворяются условия, заданные в настройке "Мало" и включена настройка "Отображать числовое значение оставшихся мест". Иначе возвращается 0. Если в данном параметре 0, то руководствоваться следует значением, полученном в параметре '''PlacesStatus'''.
                    }
+
****** '''IsFewPlaces''' – выполнены ли условия, заданные в настройке "Мало": '''true''' – если заданы условия количества мест "Мало" и данные условия выполнены, '''false''' – если не заданы условия количества мест "Мало" или они заданы, но не выполнены.
                  },
+
***** '''PartnerId''' – ключ партнера
                                    {
+
***** '''ByPax''' – цена за человека (true/false)
                    "HotelRoom": 38636,
+
***** '''Partner''' – информация о партнере
                    "Room":                      {
+
****** '''Key''' – идентификатор
                        "Key": 2,
+
****** '''Value''' – название
                        "Value": "Double"
+
**** '''FlightSetting''' – внутренняя информация о перелете из программы туров
                    },
+
***** '''ServiceId''' – идентификатор класса услуги (внутренняя информация из программы туров)
                    "RoomCategory":                     {
+
***** '''PatternId''' – идентификатор паттерна услуги (внутренняя информация из программы туров)
                        "Key": 3764,
+
***** '''FlightId''' – идентификатор перелета (внутренняя информация из программы туров)
                        "Value": "Standart Without window"
+
**** '''FlightSourceMode''' – локальный или внешний перелет (внутренняя информация из программы туров)
                    },
+
**** '''Id''' – идентификатор базового шаблона услуги (внутренняя информация из программы туров)
                    "AccomodationType":                      {
+
**** '''SvKey''' – ключ типа услуги
                        "Key": 328,
+
**** '''IsSubCode1''' – признак наличия [[#Приложение 1: параметры услуги (ServiceType, Code, SubCode1, SubCode2)|доп. описания 1]]
                        "Value": "2Ad",
+
**** '''IsSubCode2''' – признак наличия [[#Приложение 1: параметры услуги (ServiceType, Code, SubCode1, SubCode2)|доп. описания 2]]
                        "AdultCount": 2,
+
**** '''IsPartnerBasedOn''' – признак услуга с приоритетным подбором поставщика
                        "ChildCount": 0
+
**** '''Day''' – день предоставления услуги
                    },
+
**** '''DurationInNight''' – продолжительность услуги в ночах
                    "Pansion":                      {
+
**** '''BeginDateTime''' – дата предоставления услуги
                        "Key": 4,
+
**** '''IsHooded''' – признак скрытая услуга
                        "Value": "Завтрак"
+
**** '''IsDeleted''' – признак удаляемая услуга
                    },
+
**** '''IsNotCalculate''' – признак не рассчитываемая услуга
                    "Cost": 338.9,
+
**** '''PacketId''' – ключ пакета
                    "QuotaStatus":                      {
+
**** '''Index''' – порядковый номер услуги
                        "PlacesStatus": 4,
+
*** '''NotRouteServices''' – массив коллекций немаршрутных услуг (например если две экскурсии будут являться одним элементом массива, то это будет говорить о том, что эти экскурсии можно будет выбрать в выпадающем списке)
                        "FreePlaces": 0,
+
**** '''ServiceName''' – название типа услуги
                        "TotalPlaces": 0
+
**** '''City''' – объект город
                    },
+
***** '''Key''' – ключ города
                    "PartnerId": 12667,
+
***** '''Value''' – название города
                    "ByPax": false,
+
**** '''Country''' – объект страна
                    "Partner":                      {
+
***** '''Key''' – ключ страны
                        "Key": 12667,
+
***** '''Value''' – название страны
                        "Value": "Партнер-покупатель1"
+
**** '''Code''' – объект код услуги
                    }
+
***** '''Key''' – ключ услуги
                  }
+
***** '''Value''' – название услуги
              ],
+
**** '''ByScheduler''' – флаг услуга по расписанию или нет
              "HotelTypes": [],
+
**** '''Details''' – объект детализация услуги
              "Id": 1,
+
***** '''SubCode1''' – объект [[#Приложение 1: параметры услуги (ServiceType, Code, SubCode1, SubCode2)|доп. описание 1]]
              "SvKey": 3,
+
****** '''Key''' – ключ доп. описания 1
              "IsSubCode1": true,
+
****** '''Value''' – название доп. описания 1
              "IsSubCode2": true,
+
***** '''SubCode2''' – объект [[#Приложение 1: параметры услуги (ServiceType, Code, SubCode1, SubCode2)|доп. описание 2]]
              "IsPartnerBasedOn": false,
+
****** '''Key''' – ключ доп. описания 2
              "Day": 1,
+
****** '''Value''' – название доп. описания 2
              "DurationInNight": 7,
+
***** '''Date''' – дата услуги
              "BeginDateTime": "2018-03-31T11:59:00",
+
***** '''IsShowTransportPlan''' – признак показывать ли план рассадки (для автобусов)
              "EndDateTime": "2018-04-07T11:59:00",
+
***** '''Cost''' – цена
              "IsHooded": false,
+
***** '''QuotaStatus''' – объект информация по квотам
              "IsDeleted": false,
+
****** '''PlacesStatus''' – статус по квотам (есть места-1 / нет мест-2 / под запрос-4)
              "IsNotCalculate": false,
+
****** '''FreePlaces''' – количество свободных мест, если удовлетворяются условия, заданные в настройке "Мало" и включена настройка "Отображать числовое значение оставшихся мест". Иначе возвращается 0. Если в данном параметре 0, то руководствоваться следует значением, полученном в параметре '''PlacesStatus'''.
              "PacketId": 779,
+
****** '''IsFewPlaces''' – выполнены ли условия, заданные в настройке "Мало": '''true''' – если заданы условия количества мест "Мало" и данные условия выполнены, '''false''' – если не заданы условия количества мест "Мало" или они заданы, но не выполнены.
              "Index": 1
+
***** '''PartnerId''' – идентификатор партнера
            },
+
***** '''ByPax''' – признак цены за человека
                        {
+
***** '''Partner''' – объект партнер (не заполняется)
              "DepartureCity":                {
+
****** '''Key''' – ключ (не заполняется)
                  "Key": 35,
+
****** '''Value''' – название (не заполняется)
                  "Value": "Вена"
+
**** '''ParentId''' – идентификатор родительской услуги (для вложенных услуг)
              },
+
**** '''PartnerBasedOnServiceTemplateId''' – ключ шаблона услуги, по которой приоритетно выбирается партнер текущей услуги
              "DepartureCountry":                {
+
**** '''Id''' – идентификатор услуги
                  "Key": 90,
+
**** '''SvKey''' – ключ типа услуги
                  "Value": "Австрия"
+
**** '''IsSubCode1''' – наличие [[#Приложение 1: параметры услуги (ServiceType, Code, SubCode1, SubCode2)|доп. описания 1]]
              },
+
**** '''IsSubCode2''' – наличие [[#Приложение 1: параметры услуги (ServiceType, Code, SubCode1, SubCode2)|доп. описания 2]]
              "ArrivalCity":                {
+
**** '''IsPartnerBasedOn''' – услуга с подбором приоритетного поставщика услуги
                   "Key": 1,
+
**** '''Day''' – день предоставления услуги
                   "Value": "Москва"
+
**** '''DurationInNight''' – продолжительность услуги в ночах
               },
+
**** '''BeginDateTime''' – дата предоставления услуги
               "ArrivalCountry":                {
+
**** '''EndDateTime''' – дата окончания услуги
 +
**** '''IsHooded''' – скрытая ли услуга
 +
**** '''IsDeleted''' – удаляемая ли услуга
 +
**** '''IsNotCalculate''' – не рассчитываемая ли услуга
 +
**** '''PacketId''' – пакет услуги
 +
**** '''Index''' – индекс услуги
 +
*** '''MinCostServicesComposition''' – массив состав услуг минимальной цены
 +
**** '''Key''' – ключ
 +
***** '''TemplateId''' – идентификатор шаблона
 +
***** '''PatternId''' – идентификатор вкладки
 +
***** '''SettingId''' – идентификатор услуги
 +
**** '''Value''' – значение
 +
***** '''ServiceType''' – тип услуги
 +
***** '''Code''' – ключ услуги
 +
***** '''SubCode1''' – [[#Приложение 1: параметры услуги (ServiceType, Code, SubCode1, SubCode2)|доп. описание 1]]
 +
***** '''SubCode2''' – [[#Приложение 1: параметры услуги (ServiceType, Code, SubCode1, SubCode2)|доп. описание 2]]
 +
***** '''PacketId''' – пакет услуги
 +
***** '''PartnerId''' – партнер услуги
 +
***** '''CountryId''' – страна услуги
 +
***** '''CityId''' – город услуги
 +
***** '''Day''' – день предоставления услуги
 +
***** '''DurationInNight''' – продолжительность услуги в ночах
 +
**** '''COAndSpecialsInfo''' – формирует, фильтрует и выдаёт списки применённых акций и ценовых блоков
 +
***** '''AppliedCostOffersKeys''' – коллекция идентификаторов всех применённых ценовых блоков к одной цене             
 +
***** '''AppliedSpeciasInfo''' – коллекция всех применённых акций к одной цене, содержит информацию об условиях, с которыми применилась каждая акция
 +
****** '''SpecialKey''' – ключ акции
 +
****** '''SpecialName''' – название акции
 +
****** '''SpecialType''' – тип акции
 +
****** '''NewPrice''' – цена после применения акции
 +
****** '''OldPrice''' – цена до применения акции
 +
****** '''ShowOnline''' – нужно ли показывать акцию в поиске
 +
****** '''UntilDate''' – акция действует при совершении покупки до указанной даты
 +
****** '''Condition''' – json форма условия применения акции. Данное поле включает в себя следующие значения в зависимости от типа акции:
 +
******* ''NightsFrom'' (для типа ''PayStay'') – ночей от
 +
******* ''NightsTo'' (для типа ''PayStay'') – ночей до
 +
******* ''NightValue'' (для типа ''PayStay'') – значение ночи, которое соответствует заданному периоду
 +
******* ''OperationType'' (для типа ''PayStay'') – тип действия
 +
******* ''SpecialNightType'' (для типа ''PayStay'') – тип бесплатной ночи
 +
******* ''DurationFrom'' (для типа ''KickBack'') – ночей от
 +
******* ''DurationTo'' (для типа ''KickBack'') – ночей до
 +
******* ''Value'' (для типа ''KickBack'') – значение продолжительности, равное заданному периоду
 +
******* ''OperationType'' (для типа ''KickBack'') – тип действия
 +
******* ''NightsFrom'' (для типа ''EarlyBird'') – ночей от
 +
******* ''NightsTo'' (для типа ''EarlyBird'') – ночей до
 +
******* ''Discount'' (для типа ''EarlyBird'') – размер скидки
 +
******* ''OperationType'' (для типа ''EarlyBird'') – тип действия
 +
**** '''COBySubCode''' – список применённых идентификаторов ценовых блоков по SubCode1 и SubCode2
 +
**** '''SpecialsBySubCode''' -  список применённых акций по SubCode1 и SubCode2
 +
***** '''SubCode1''' – объект [[#Приложение 1: параметры услуги (ServiceType, Code, SubCode1, SubCode2)|доп. описание 1]]
 +
***** '''SubCode2''' – объект [[#Приложение 1: параметры услуги (ServiceType, Code, SubCode1, SubCode2)|доп. описание 2]]
 +
*** '''FlightWeight''' –
 +
*** '''LinkingFlightsRules''' – объект правил связывания
 +
**** '''notCombineDifferentAirlineRule''' – объект не скрещивать авиакомпании
 +
***** '''airlines''' – авиакомпании
 +
***** '''flightSettings''' – массив ключей ServiceId, PatternId, FlightId
 +
***** '''enabled''' – флаг включен/выключен
 +
**** '''checkPlusMinus1CharterRule''' – объект Отличие номера рейса на 1
 +
***** '''FlightSettingPairs''' – массив чартеров, для которых это правило будет выполняться
 +
***** '''enabled''' – флаг включен/выключен
 +
**** '''notCombineDifferentTariffGroupRule''' – объект не комбинировать рейсы от разных классов перелетов
 +
***** '''FlightSettings''' – массив ключей ServiceId, PatternId, FlightId
 +
***** '''enabled''' – флаг включен/выключен
 +
**** '''notCombineDifferentPartnerRule''' – объект не комбинировать рейсы от разных партнеров
 +
***** '''FlightSettings''' – массив ключей ServiceId, PatternId, FlightId
 +
***** '''enabled''' – флаг включен/выключен
 +
**** '''departureCityEqualsArrivalCityRule''' – объект Город вылета = городу прилета
 +
***** '''FlightSettingPairs''' – чартеры, для которых это будет выполняться
 +
***** '''enabled''' – флаг включен/выключен
 +
**** '''combineOnlySpecificChartersRule''' – объект не комбинировать различные классы перелетов
 +
***** '''settings''' – массив ключей чартеров CharterIds и ServiceId, PatternId, FlightId
 +
***** '''enabled''' – флаг включен/выключен
 +
*** '''RouteSubVariants''' – подварианты услуг (используется в основном поиске)
 +
** '''SecondaryFiltersResult''' – доп. фильтры (не используется при вызове из корзины)
 +
** '''nodeId''' – уникальный идентификатор узла в кластере балансировки нагрузки [[Мастер-Тур(15):Балансировщик нагрузки HaProxy|HaProxy]]
 +
 
 +
 
 +
<div class="toccolours mw-collapsible mw-collapsed" style="width:900px">Пример
 +
<div class="mw-collapsible-content">
 +
<TABLE STYLE="border: 0.1em dashed #2F6FAB; margin: 8px; padding: 8px" WIDTH="99%"><TR><TD>
 +
Вызов метода Tour (первоначальный вариант Tour в корзине для бронирования)
 +
<syntaxhighlight lang="java" enclose="div">
 +
GET http://localhost:9000/TourSearchOwin/Tour?DepartureCityKeys=1&DestinationType=1&DestinationKey=90
 +
&Dates=31.03.18&Durations=8&AdultCount=2&CurrencyName=EU&HotelQuota=5&AviaQuota=5&BusTransferQuota=5
 +
&HotelScheme=[{"TemplateId":"1","DurationInNight":"7","Code":"707","PacketKey":"779","PartnerKey":"12667"
 +
"GDSProviderId": "0","TotalTourDuration": "8"}]
 +
&TourKey=100003404&TourDuration=8&PageNumber=1&PageSize=20&IsFromBasket=true&isFillSecondaryFilters=false
 +
</syntaxhighlight>
 +
Возвращаемый результат метода Tour (в формате JSON)
 +
<syntaxhighlight lang="java" enclose="div">
 +
{
 +
  "CheckMessages": null,
 +
  "Message":    {
 +
      "Key": 0,
 +
      "Value": null
 +
  },
 +
  "Result":    [
 +
            {
 +
        "Key": 100003404,
 +
        "Name": "Удалить этот тур",
 +
        "TourUrl": "www.megatec.ru",
 +
        "BookingConditions": "Условия бронирования тура",
 +
        "DefaultManagers": [],
 +
        "Manager": 169,
 +
        "Branches": [],
 +
        "DetermineTheBranchOnCity": false,
 +
        "IndividualFlightSelection": true,
 +
        "RestrictionDateArrival": false,
 +
        "PriceUpdateForView": false,
 +
        "SelectFlightAutomatically": false,
 +
        "BaggageSearchOtherFares": false,
 +
        "Luggage": "withoutLuggage",
 +
        "LuggageForView": "all",
 +
        "LuggageForPrice": "all",
 +
        "FlightClass": "economy",
 +
        "Directs": "all",
 +
        "DirectsForView": "all",
 +
        "DirectsForPrice": "all",
 +
        "DepartureTimeLimit": "",
 +
        "SortingForView": "cheap",
 +
        "StartDate": "2018-02-25T00:00:00",
 +
        "MaxConnectionTime": 0
 +
        "FullPaymentPeriod": 5,
 +
        "FullPaymentCheckin": null,
 +
        "PrePaymentPeriod": null,
 +
        "PrePaymentCheckin": 5,
 +
        "PrePaymentCu": null,
 +
        "PrePaymentPercent": 10.0,
 +
        "Duration": 4,
 +
        "DurationInNight": 3,
 +
        "Types": [2],
 +
        "Price": 260,
 +
        "Cost": 260,
 +
        "Penalties": null,
 +
        "Rate": "EU",
 +
        "CityDepature":          {
 +
            "Key": 1,
 +
            "Value": "Москва"
 +
        },
 +
        "CountryId": 90,
 +
        "Services":          [
 +
                        {
 +
              "DepartureCity":                {
 +
                   "Key": 1,
 +
                   "Value": "Москва"
 +
               },
 +
               "DepartureCountry":                {
 
                   "Key": 460,
 
                   "Key": 460,
 
                   "Value": "Россия"
 
                   "Value": "Россия"
 +
              },
 +
              "ArrivalCity":                {
 +
                  "Key": 35,
 +
                  "Value": "Вена"
 +
              },
 +
              "ArrivalCountry":                {
 +
                  "Key": 90,
 +
                  "Value": "Австрия"
 
               },
 
               },
 
               "DepartureAirport":                {
 
               "DepartureAirport":                {
 +
                  "Key": "DME",
 +
                  "Value": "Домодедово"
 +
              },
 +
              "ArrivalAirport":                {
 
                   "Key": "VIE1",
 
                   "Key": "VIE1",
 
                   "Value": "Vena1"
 
                   "Value": "Vena1"
              },
 
              "ArrivalAirport":                {
 
                  "Key": "DME",
 
                  "Value": "Домодедово"
 
 
               },
 
               },
 
               "Airline":                {
 
               "Airline":                {
                   "Key": "7U",
+
                   "Key": "3G",
                   "Value": "Авиаэнерго"
+
                   "Value": "Атлант Союз_d;kgmdlfkgnfdlkhndlfkhnlkfnh"
 
               },
 
               },
 
               "Aircraft":                {
 
               "Aircraft":                {
                   "Key": "727",
+
                   "Key": "319",
                   "Value": "Boeing"
+
                   "Value": "AIRBUS "
 
               },
 
               },
 
               "Flight":                {
 
               "Flight":                {
                   "Key": 774,
+
                   "Key": 858,
                   "Value": "222"
+
                   "Value": "1111"
 
               },
 
               },
               "DepartureTime": "00:00:00",
+
               "DepartureTime": "10:00:00",
               "ArrivalTime": "00:00:00",
+
               "ArrivalTime": "11:59:00",
               "EndDateTime": "2018-04-07T00:00:00",
+
               "EndDateTime": "2018-03-31T11:59:00",
 
               "FlightDetails": [              {
 
               "FlightDetails": [              {
 
                   "Tariff":                  {
 
                   "Tariff":                  {
Строка 2296: Строка 3112:
 
                     "Name": "Бизнес класс"
 
                     "Name": "Бизнес класс"
 
                   },
 
                   },
                   "Cost": 1.61,
+
                   "Cost": 6.45,
 
                   "QuotaStatus":                  {
 
                   "QuotaStatus":                  {
 
                     "PlacesStatus": 4,
 
                     "PlacesStatus": 4,
 
                     "FreePlaces": 0,
 
                     "FreePlaces": 0,
                     "TotalPlaces": 0
+
                     "IsFewPlaces": false
 
                   },
 
                   },
 
                   "PartnerId": 10760,
 
                   "PartnerId": 10760,
Строка 2310: Строка 3126:
 
               }],
 
               }],
 
               "FlightSetting":                {
 
               "FlightSetting":                {
                   "ServiceId": 4,
+
                   "ServiceId": 3,
                   "PatternId": 5,
+
                   "PatternId": 14,
                   "FlightId": 4
+
                   "FlightId": 14
 
               },
 
               },
 
               "FlightSourceMode": 1,
 
               "FlightSourceMode": 1,
               "Id": 4,
+
               "Id": 3,
 
               "SvKey": 1,
 
               "SvKey": 1,
 
               "IsSubCode1": true,
 
               "IsSubCode1": true,
 
               "IsSubCode2": false,
 
               "IsSubCode2": false,
 
               "IsPartnerBasedOn": false,
 
               "IsPartnerBasedOn": false,
               "Day": 8,
+
               "Day": 1,
 
               "DurationInNight": 0,
 
               "DurationInNight": 0,
               "BeginDateTime": "2018-04-07T00:00:00",
+
               "BeginDateTime": "2018-03-31T10:00:00",
 
               "IsHooded": false,
 
               "IsHooded": false,
 
               "IsDeleted": false,
 
               "IsDeleted": false,
 
               "IsNotCalculate": false,
 
               "IsNotCalculate": false,
 
               "PacketId": 779,
 
               "PacketId": 779,
               "Index": 3
+
               "Index": 0
             }
+
             },
        ],
 
        "NotRouteServices": [        [
 
 
                         {
 
                         {
               "ServiceName": "экскурсия",
+
               "Hotel":               {
 +
                  "Key": 707,
 +
                  "Value": "Beim Theresianum"
 +
              },
 
               "City":                {
 
               "City":                {
                   "Key": 1046,
+
                   "Key": 35,
                   "Value": "Санто-Доминго"
+
                   "Value": "Вена"
 
               },
 
               },
               "Country": 6245,
+
               "Stars":                {
               "Code":                {
+
                  "Key": 66,
                   "Key": 743,
+
                  "Value": "4*Boutique"
                   "Value": "4"
+
              },
 +
              "Resort":                {
 +
                  "Key": -1,
 +
                  "Value": null
 +
              },
 +
              "ImageURL": "",
 +
              "Http": null,
 +
              "Description": "",
 +
               "Country":                {
 +
                   "Key": 90,
 +
                   "Value": "Австрия"
 
               },
 
               },
               "ByScheduler": false,
+
               "HotelDetails":               [
              "Details": [              {
+
                                    {
                  "SubCode1":                   {
+
                    "HotelRoom": 10468,
                    "Key": 37,
+
                    "Room":                     {
                    "Value": "Мини-автобус 10 чел."
+
                        "Key": 2,
                  },
+
                        "Value": "Double"
                  "SubCode2":                   {
+
                    },
                    "Key": null,
+
                    "RoomCategory":                     {
                    "Value": ""
+
                        "Key": 776,
                  },
+
                        "Value": "Standart133"
                  "Date": null,
+
                    },
                  "IsShowTransportPlan": false,
+
                    "AccomodationType":                     {
                  "Cost": 56.48,
+
                        "Key": 328,
                  "QuotaStatus":                   {
+
                        "Value": "2Ad",
                    "PlacesStatus": 1,
+
                        "AdultCount": 2,
                    "FreePlaces": 0,
+
                        "ChildCount": 0
                    "TotalPlaces": 0
+
                    },
                  },
+
                    "Pansion":                      {
                  "PartnerId": 12667,
+
                        "Key": 4,
                  "ByPax": true,
+
                        "Value": "Завтрак"
                  "Partner":                   {
+
                    },
                    "Key": 0,
+
                    "Cost": 112.96,
                    "Value": null
+
                    "QuotaStatus":                     {
                  }
+
                        "PlacesStatus": 4,
              }],
+
                        "FreePlaces": 0,
              "ParentId": null,
+
                        "IsFewPlaces": false
              "PartnerBasedOnServiceTemplateId": null,
+
                    },
              "Id": 7,
+
                    "PartnerId": 12667,
              "SvKey": 4,
+
                    "ByPax": false,
              "IsSubCode1": true,
+
                    "Partner":                     {
              "IsSubCode2": false,
+
                        "Key": 12667,
              "IsPartnerBasedOn": true,
+
                        "Value": "Партнер-покупатель1"
              "Day": 1,
+
                    }
              "DurationInNight": 0,
+
                  },
              "BeginDateTime": "2018-03-31T00:00:00",
+
                                    {
              "EndDateTime": "2018-04-01T00:00:00",
+
                    "HotelRoom": 38636,
              "IsHooded": false,
+
                    "Room":                     {
              "IsDeleted": true,
+
                        "Key": 2,
              "IsNotCalculate": true,
+
                        "Value": "Double"
              "PacketId": 779,
+
                    },
              "Index": 2
+
                    "RoomCategory":                     {
            }
+
                        "Key": 3764,
        ]],
+
                        "Value": "Standart Without window"
        "MinCostServicesComposition":         [
+
                    },
                         {
+
                    "AccomodationType":                     {
              "Key":               {
+
                        "Key": 328,
                  "TemplateId": 3,
+
                        "Value": "2Ad",
                  "PatternId": 14,
+
                        "AdultCount": 2,
                  "SettingId": 14
+
                        "ChildCount": 0
              },
+
                    },
              "Value":                {
+
                    "Pansion":                     {
                  "Cost": 6.45,
+
                         "Key": 4,
                  "ServiceType": 1,
+
                        "Value": "Завтрак"
                  "Code": 858,
+
                    },
                  "SubCode1": 67,
+
                    "Cost": 338.9,
                  "SubCode2": 1,
+
                    "QuotaStatus":                     {
                  "PacketId": 779,
+
                        "PlacesStatus": 4,
                  "PartnerId": 10760,
+
                        "FreePlaces": 0,
                  "CountryId": 90,
+
                        "IsFewPlaces": false
                  "CityId": 35,
+
                    },
                  "Day": 1,
+
                    "PartnerId": 12667,
                  "DurationInNight": 0
+
                    "ByPax": false,
              }
+
                    "Partner":                     {
            },
+
                        "Key": 12667,
                        {
+
                        "Value": "Партнер-покупатель1"
               "Key":                {
+
                    }
                  "TemplateId": 1,
+
                  }
                  "PatternId": 0,
+
              ],
                  "SettingId": 0
+
               "HotelTypes": [],
              },
+
               "Id": 1,
               "Value":                {
+
              "SvKey": 3,
                  "Cost": 112.96,
+
              "IsSubCode1": true,
                  "ServiceType": 3,
+
               "IsSubCode2": true,
                  "Code": 707,
+
               "IsPartnerBasedOn": false,
                  "SubCode1": 10468,
+
              "Day": 1,
                  "SubCode2": 4,
+
              "DurationInNight": 7,
                  "PacketId": 779,
+
              "BeginDateTime": "2018-03-31T11:59:00",
                  "PartnerId": 12667,
+
              "EndDateTime": "2018-04-07T11:59:00",
                  "CountryId": 90,
+
              "IsHooded": false,
                  "CityId": 35,
+
              "IsDeleted": false,
                  "Day": 1,
+
              "IsNotCalculate": false,
                  "DurationInNight": 7
+
              "PacketId": 779,
              }
+
              "Index": 1
 
             },
 
             },
 
                         {
 
                         {
               "Key":                {
+
               "DepartureCity":                {
                   "TemplateId": 4,
+
                  "Key": 35,
                   "PatternId": 5,
+
                  "Value": "Вена"
                   "SettingId": 4
+
              },
 +
              "DepartureCountry":                {
 +
                  "Key": 90,
 +
                  "Value": "Австрия"
 +
              },
 +
              "ArrivalCity":                {
 +
                  "Key": 1,
 +
                  "Value": "Москва"
 +
              },
 +
              "ArrivalCountry":                {
 +
                  "Key": 460,
 +
                  "Value": "Россия"
 +
              },
 +
              "DepartureAirport":                {
 +
                  "Key": "VIE1",
 +
                  "Value": "Vena1"
 +
              },
 +
              "ArrivalAirport":                {
 +
                  "Key": "DME",
 +
                  "Value": "Домодедово"
 +
              },
 +
              "Airline":                {
 +
                  "Key": "7U",
 +
                  "Value": "Авиаэнерго"
 +
              },
 +
              "Aircraft":                {
 +
                   "Key": "727",
 +
                  "Value": "Boeing"
 +
              },
 +
              "Flight":                {
 +
                   "Key": 774,
 +
                   "Value": "222"
 
               },
 
               },
               "Value":                {
+
               "DepartureTime": "00:00:00",
 +
              "ArrivalTime": "00:00:00",
 +
              "EndDateTime": "2018-04-07T00:00:00",
 +
               "FlightDetails": [              {
 +
                  "Tariff":                  {
 +
                    "Key": 67,
 +
                    "Code": "C",
 +
                    "Name": "Бизнес класс"
 +
                  },
 
                   "Cost": 1.61,
 
                   "Cost": 1.61,
                   "ServiceType": 1,
+
                   "QuotaStatus":                   {
                  "Code": 774,
+
                    "PlacesStatus": 4,
                  "SubCode1": 67,
+
                    "FreePlaces": 0,
                  "SubCode2": 35,
+
                    "IsFewPlaces": false
                   "PacketId": 779,
+
                   },
 
                   "PartnerId": 10760,
 
                   "PartnerId": 10760,
                   "CountryId": 460,
+
                   "ByPax": true,
                   "CityId": 1,
+
                   "Partner":                  {
                  "Day": 8,
+
                    "Key": 0,
                  "DurationInNight": 0
+
                    "Value": null
               }
+
                  }
 +
              }],
 +
              "FlightSetting":                {
 +
                  "ServiceId": 4,
 +
                  "PatternId": 5,
 +
                  "FlightId": 4
 +
              },
 +
              "FlightSourceMode": 1,
 +
              "Id": 4,
 +
              "SvKey": 1,
 +
              "IsSubCode1": true,
 +
              "IsSubCode2": false,
 +
              "IsPartnerBasedOn": false,
 +
              "Day": 8,
 +
              "DurationInNight": 0,
 +
              "BeginDateTime": "2018-04-07T00:00:00",
 +
              "IsHooded": false,
 +
              "IsDeleted": false,
 +
               "IsNotCalculate": false,
 +
              "PacketId": 779,
 +
              "Index": 3
 
             }
 
             }
 
         ],
 
         ],
         "FlightWeight": 2,
+
         "NotRouteServices": [        [
        "LinkingFlightsRules":         {
+
                        {
            "notCombineDifferentAirlineRule":             {
+
              "ServiceName": "экскурсия",
              "airlines": ["AY2"],
+
              "City":               {
               "flightSettings": [],
+
                  "Key": 1046,
              "enabled": true
+
                  "Value": "Санто-Доминго"
            },
+
              },
            "checkPlusMinus1CharterRule":             {
+
              "Country": 6245,
              "FlightSettingPairs": [],
+
              "Code":                {
              "enabled": false
+
                  "Key": 743,
            },
+
                  "Value": "4"
            "notCombineDifferentTariffGroupRule":             {
+
              },
               "FlightSettings": [],
+
              "ByScheduler": false,
               "enabled": true
+
               "Details": [               {
            },
+
                  "SubCode1":                  {
            "notCombineDifferentPartnerRule":             {
+
                    "Key": 37,
               "FlightSettings": [],
+
                    "Value": "Мини-автобус 10 чел."
               "enabled": false
+
                  },
            },
+
                  "SubCode2":                   {
            "departureCityEqualsArrivalCityRule":             {
+
                    "Key": null,
               "FlightSettingPairs": [],
+
                    "Value": ""
               "enabled": false
+
                  },
            },
+
                  "Date": null,
            "combineOnlySpecificChartersRule":             {
+
                  "IsShowTransportPlan": false,
               "settings": [],
+
                  "Cost": 56.48,
               "enabled": false
+
                  "QuotaStatus":                  {
 +
                    "PlacesStatus": 1,
 +
                    "FreePlaces": 0,
 +
                    "IsFewPlaces": false
 +
                  },
 +
                  "PartnerId": 12667,
 +
                  "ByPax": true,
 +
                  "Partner":                  {
 +
                    "Key": 0,
 +
                    "Value": null
 +
                  }
 +
              }],
 +
               "ParentId": null,
 +
               "PartnerBasedOnServiceTemplateId": null,
 +
              "Id": 7,
 +
              "SvKey": 4,
 +
               "IsSubCode1": true,
 +
               "IsSubCode2": false,
 +
              "IsPartnerBasedOn": true,
 +
              "Day": 1,
 +
              "DurationInNight": 0,
 +
              "BeginDateTime": "2018-03-31T00:00:00",
 +
               "EndDateTime": "2018-04-01T00:00:00",
 +
               "IsHooded": false,
 +
              "IsDeleted": true,
 +
              "IsNotCalculate": true,
 +
               "PacketId": 779,
 +
               "Index": 2
 
             }
 
             }
         },
+
         ]],
         "RouteSubVariants": []
+
         "MinCostServicesComposition":         [
      }
+
                        {
  ],
+
              "Key":                {
  "SecondaryFiltersResult": null
+
                  "TemplateId": 3,
}
+
                  "PatternId": 14,
</syntaxhighlight>
+
                  "SettingId": 14
</TD></TR></TABLE>
+
              },
</div></div><br />
+
              "Value":                {
 
+
                  "ServiceType": 1,
===Выгрузка настройки отображения полей по туристам (TouristDataSettings)===
+
                  "Code": 858,
Метод производит выгрузку настроек отображения полей по туристам.
+
                  "SubCode1": 67,