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

Материал из Megatec
Перейти к: навигация, поиск
[досмотренная версия][досмотренная версия]
(Установка)
 
(не показано 339 промежуточных версий 12 участников)
Строка 1: Строка 1:
<span style="color:red;font-size:120%">Статья находится на стадии разработки.</span><br />
 
 
 
Версия статьи от {{REVISIONDAY}}-{{REVISIONMONTH}}-{{REVISIONYEAR}}.
 
Версия статьи от {{REVISIONDAY}}-{{REVISIONMONTH}}-{{REVISIONYEAR}}.
  
Строка 9: Строка 7:
  
 
==Введение==
 
==Введение==
Данный web-сервис разработан для разработки собственного сайта туроператору на основе API.
+
Данный web-сервис служит для разработки собственного сайта туроператору на основе API.
  
 
==Установка==
 
==Установка==
Для работы с web-сервисом необходимо установить [[Мастер-Тур(15):Установка#Установка службы поиска|службу поиска]].<br />
+
Для работы с web-сервисом необходимо на отдающей стороне установить [[Мастер-Тур(15):Установка#Установка службы поиска|службу поиска]].<br />
 
После установки web-сервис будет доступен по адресу ''<nowiki>http://значение настройки "serviceAddress" в TourSearchOwin/"название метода"</nowiki>'' (пример: ''http://localhost:9000/TourSearchOwin/Settings'')
 
После установки web-сервис будет доступен по адресу ''<nowiki>http://значение настройки "serviceAddress" в TourSearchOwin/"название метода"</nowiki>'' (пример: ''http://localhost:9000/TourSearchOwin/Settings'')
 +
 +
==Swagger==
 +
Работу методов можно проверить с помощью Swagger по пути: ''http://localhost:9000/TourSearchOwin/SwaggerUI''
  
 
==Список методов==
 
==Список методов==
 +
 +
Последовательность вызова методов сервиса<br />
 +
[[Файл: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)===
 +
Метод производит получение авторизационного токена ([https://tools.ietf.org/html/rfc6749#section-1.3.3 описание стандарта]).
 +
* Формат запроса:
 +
** POST .../TourSearchOwin/Token?
 +
* Принимаемые параметры headers ( '''*''' – обязательный):
 +
** '''Content-Type *''' – application/x-www-form-urlencoded
 +
 +
* Принимаемые параметры POST запроса ( '''*''' – обязательный):
 +
** '''grant_type *''' – текст ''password''
 +
** '''username *''' – логин представителя партнера или частного лица
 +
** '''password *''' – пароль представителя партнера или частного лица
 +
 +
* Возвращаемый результат:
 +
** '''access_token''' – токен
 +
** '''token_type''' – тип токена
 +
** '''expires_in''' – код
 +
** '''userKey''' – ключ пользователя
 +
** '''userType''' – тип пользователя (0 – представитель партнера, 1 – частное лицо)
 +
** '''.issued''' – дата получения
 +
** '''.expires''' – дата действия до
 +
 +
<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>
 +
Вызов метода Token
 +
<syntaxhighlight lang="java" enclose="div">
 +
POST http://localhost:9000/TourSearchOwin/Token HTTP/1.1
 +
Content-Type: application/x-www-form-urlencoded
 +
 +
grant_type=password&username=test&password=1
 +
</syntaxhighlight>
 +
Возвращаемый результат метода Token (в формате JSON)
 +
<syntaxhighlight lang="java" enclose="div">
 +
{
 +
"access_token": "AQAAANCMnd8BFdERjHoAwE_Cl-sBAAAAdsCC8X7m9E-2bg0-uS0VfgAAAAAAAAADZgAAwAAAA-
 +
EqAAAAAASAAACgAAAAEAAAAO4S-VrqBhQuhqliqrAKKfIgAQAAn-gfgP-rYjk-Krr1Ck2A-IGCw6FBhamUOzFxgTtk1hR-
 +
GLMryFIH8VK5GmHdHubZWj4S7XcazGL1Kn5-VlbiYdW2ZVWpYlk638aV-XS2kpZ9YrKgViiM_x8RH5TPo4-
 +
9LhE7V-SjiB_CP_qs58DRKcyohq3Tz9QaiFgH1Ko7O2XKjTBG7SHyQPDPYjaqg9kDxmzq0UcIT6Fm4YkDxmm9-
 +
CW7u3cEFWcpiqKOc2VvZFKPPHc07uDOO4w9FXPhpXZwOqrJBxzhbr73RuhzPs_e-hgxKaIlsMaK5b0v5ReAMy1kuY0ebXA",",
 +
"token_type": "bearer",
 +
"expires_in": 1209599,
 +
"userKey": "333",
 +
        "userType": "0",
 +
".issued": "Thu, 05 Apr 2018 12:05:31 GMT",
 +
".expires": "Thu, 19 Apr 2018 12:05:31 GMT"
 +
}
 +
</syntaxhighlight>
 +
</TD></TR></TABLE>
 +
</div></div><br />
 +
 
===Выгрузка настроек службы поиска (Settings)===
 
===Выгрузка настроек службы поиска (Settings)===
 
Метод производит выгрузку настроек службы поиска.
 
Метод производит выгрузку настроек службы поиска.
 
* Формат запроса:
 
* Формат запроса:
** .../TourSearchOwin/Settings?
+
** GET .../TourSearchOwin/Settings?
 
* Принимаемые параметры:
 
* Принимаемые параметры:
 
** нет принимаемых параметров
 
** нет принимаемых параметров
 
* Возвращаемый результат:
 
* Возвращаемый результат:
** '''ChildAgesSetting''' – регулируется настройкой [[Мастер-Тур(15):Программа туров. Панель администрирования#Общие настройки|максимальный возраст ребенка]] (массив возрастов, при которых турист будет считаться ребенком
+
** '''ChildAgesSetting''' – регулируется настройкой [[Мастер-Тур(15):Программа туров. Настройки|максимальный возраст ребенка]] (массив возрастов, при которых турист будет считаться ребенком
** '''DurationSetting''' – регулируется настройкой [[Мастер-Тур(15):Программа туров. Панель администрирования#Общие настройки|максимальная продолжительность тура]] (массив продолжительностей, доступных в фильтрах для поиска)
+
** '''DurationSetting''' – регулируется настройкой [[Мастер-Тур(15):Программа туров. Настройки|максимальная продолжительность тура]] (массив продолжительностей, доступных в фильтрах для поиска)
 
** '''RoundServiceSetting''' – признак округления цены (количество знаков после запятой)
 
** '''RoundServiceSetting''' – признак округления цены (количество знаков после запятой)
 
** '''CacheReady''' – статус готовности службы поиска к работе (true/false)
 
** '''CacheReady''' – статус готовности службы поиска к работе (true/false)
Строка 45: Строка 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">
Строка 51: Строка 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)
Строка 116: Строка 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>
Строка 121: Строка 265:
 
</div></div><br />
 
</div></div><br />
  
===Выгрузка списка валют (Currency)===
+
===Выгрузка списка валют в онлайне (Currency)===
 
Метод возвращает список используемых валют.
 
Метод возвращает список используемых валют.
 
* Формат запроса:
 
* Формат запроса:
** .../TourSearchOwin/Currency
+
** GET .../TourSearchOwin/Currency
 
* Принимаемые параметры:
 
* Принимаемые параметры:
 
** нет принимаемых параметров
 
** нет принимаемых параметров
Строка 133: Строка 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">Пример
Строка 141: Строка 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)
Строка 152: Строка 298:
 
       "IsNational": false,
 
       "IsNational": false,
 
       "IsoCode": "EUR",
 
       "IsoCode": "EUR",
       "Key": 2,
+
      "IsShowInSearch": true,
       "IsShowInSearch": true
+
      "Symbol": "€",
 +
       "Key": 2
 +
  },
 +
      {
 +
      "Code": "рб",
 +
      "Name": "Рубль",
 +
      "IsMain": false,
 +
      "IsNational": true,
 +
      "IsoCode": "RUR",
 +
      "IsShowInSearch": true,
 +
      "Symbol": "₽",
 +
      "Key": 14
 +
  },
 +
      {
 +
      "Code": "$",
 +
      "Name": "US Dollar",
 +
      "IsMain": true,
 +
      "IsNational": false,
 +
      "IsoCode": "USD",
 +
       "IsShowInSearch": true,
 +
      "Symbol": "$",
 +
      "Key": 1
 +
  }
 +
]
 +
</syntaxhighlight>
 +
</TD></TR></TABLE>
 +
</div></div><br />
 +
 
 +
 
 +
===Выгрузка курсов валют (CurrencyRates) начиная с 15.7===
 +
Полный аналог метода [[Мастер-Тур(15):API для отдачи цен в поисковые системы#Выгрузка курсов валют (GetCurrencyRates)|Выгрузка курсов валют (GetCurrencyRates)]]<br />
 +
Метод возвращает список курсов валют, актуальных на дату запроса. Курсы отображаются только для тех валют, которые отмечены в справочнике признаком ''Отображать в онлайне''
 +
* Формат запроса:
 +
** GET .../TourSearchOwin/CurrencyRates
 +
* Принимаемые параметры:
 +
** '''dateFrom''' – начальная дата, от которой вывести список курсов валют, в формате DD.MM.YYYY, необязательный параметр (если не указан, берется за текущий день)
 +
** '''dateTo''' – конечная дата, до которой вывести список курсов валют, в формате DD.MM.YYYY, необязательный параметр (если не указан, берется за текущий день)
 +
** '''otherBaseCurrencyId''' – идентификатор любой валюты, эмулирующей работу национальной валюты, необязательный параметр. Если заполнен, то в результатах выдачи параметр ''baseCurrencyId'' будет заменяться на валюту из параметра ''otherBaseCurrencyId'' (обрабатывается с релиза 15.9).
 +
 
 +
* Возвращаемый результат:
 +
** '''baseCurrencyId''' – идентификатор национальной валюты, либо произвольной валюты, указанной в настройке ''basketCurrency'' в конфигурационном файле (обрабатывается с релиза 15.6)
 +
** '''currencyId''' – идентификатор валюты, курс которой приводится
 +
** '''rate''' – курс валюты (отношение '''currencyId''' к '''baseCurrencyId''')
 +
** '''date''' – дата, на которую был зарегистрирован выводимый курс валюты
 +
 
 +
<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>
 +
Вызов метода CurrencyRates
 +
<syntaxhighlight lang="java" enclose="div">
 +
http://localhost:9000/TourSearchOwin/CurrencyRates?dateFrom=18.09.2024&dateTo=19.09.2024
 +
</syntaxhighlight>
 +
Возвращаемый результат метода CurrencyRates (в формате JSON)
 +
<syntaxhighlight lang="java" enclose="div">
 +
[
 +
    {
 +
        "BaseCurrencyId": 14,
 +
        "CurrencyId": 1,
 +
        "Rate": 91.429200,
 +
        "Date": "18.09.2024"
 +
    },
 +
    {
 +
        "BaseCurrencyId": 14,
 +
        "CurrencyId": 2,
 +
        "Rate": 101.505700,
 +
        "Date": "18.09.2024"
 +
    },
 +
    {
 +
        "BaseCurrencyId": 14,
 +
        "CurrencyId": 1,
 +
        "Rate": 91.671200,
 +
        "Date": "19.09.2024"
 +
    },
 +
    {
 +
        "BaseCurrencyId": 14,
 +
        "CurrencyId": 2,
 +
        "Rate": 102.039000,
 +
        "Date": "19.09.2024"
 +
    }
 +
]
 +
 
 +
</syntaxhighlight>
 +
</TD></TR></TABLE>
 +
</div></div><br />
 +
 
 +
===Выгрузка списка всех валют (getAllCurrencies)===
 +
Метод возвращает список всех валют.
 +
* Формат запроса:
 +
** GET .../TourSearchOwin/AllCurencies/getAllCurrencies
 +
* Принимаемые параметры:
 +
** нет принимаемых параметров
 +
* Возвращаемый результат:
 +
** '''Code''' – код валюты
 +
** '''Name''' – наименование валюты
 +
** '''IsMain''' – признак валюты «Главная»
 +
** '''IsNational''' – признак валюты «Национальная»
 +
** '''IsoCode''' – ISO код валюты
 +
** '''IsShowInSearch''' – признак показывать ли валюту в поиске
 +
** '''Symbol''' – символ валюты (обрабатывается с 15.7)
 +
** '''Key''' – идентификатор валюты
 +
 
 +
<div class="toccolours mw-collapsible mw-collapsed" style="width:900px">Пример
 +
<div class="mw-collapsible-content">
 +
<TABLE STYLE="border: 0.1em dashed #2F6FAB; margin: 8px; padding: 8px" WIDTH="99%"><TR><TD>
 +
Вызов метода getAllCurrencies
 +
<syntaxhighlight lang="java" enclose="div">
 +
GET http://localhost:9000/TourSearchOwin/AllCurencies/getAllCurrencies
 +
</syntaxhighlight>
 +
Возвращаемый результат метода getAllCurrencies (в формате JSON)
 +
<syntaxhighlight lang="java" enclose="div">
 +
[
 +
      {
 +
      "Code": "EU",
 +
      "Name": "Euro",
 +
      "IsMain": false,
 +
      "IsNational": false,
 +
      "IsoCode": "EUR",
 +
      "IsShowInSearch": true,
 +
      "Symbol": "€",
 +
      "Key": 2
 
   },
 
   },
 
       {
 
       {
Строка 161: Строка 426:
 
       "IsNational": true,
 
       "IsNational": true,
 
       "IsoCode": "RUR",
 
       "IsoCode": "RUR",
       "Key": 14,
+
       "IsShowInSearch": true,
       "IsShowInSearch": true
+
      "Symbol": "₽",
 +
       "Key": 14
 
   },
 
   },
 
       {
 
       {
Строка 170: Строка 436:
 
       "IsNational": false,
 
       "IsNational": false,
 
       "IsoCode": "USD",
 
       "IsoCode": "USD",
       "Key": 1,
+
      "IsShowInSearch": true,
      "IsShowInSearch": true
+
      "Symbol": "$",
 +
       "Key": 1
 +
  },
 +
  {
 +
      "Code": "гр",
 +
      "Name": "Гривна",
 +
      "IsMain": false,
 +
      "IsNational": false,
 +
      "IsoCode": "UAH",
 +
      "IsShowInSearch": true,
 +
      "Symbol": "₴",
 +
      "Key": 6
 
   }
 
   }
 
]
 
]
 +
</syntaxhighlight>
 +
</TD></TR></TABLE>
 +
</div></div><br />
 +
 +
 +
===Получение сконвертированных цен (convertFilterPrice)===
 +
Метод возвращает сконвертированные цен для допфильтра ''Цена'' (используется в canary)
 +
* Формат запроса:
 +
** GET .../TourSearchOwin/AllCurencies/convertFilterPrice
 +
* Принимаемые параметры ( '''*''' – обязательный):
 +
** '''SourceRateKey *''' – ключ исходной валюты конвертации
 +
** '''TargetRateKey *''' – ключ валюты, в которую будет произведена конвертация
 +
** '''MinPrice *''' – значение минимальной цены, которое будет участвовать в конвертации
 +
** '''MaxPrice *''' – значение максимальной цены, которое будет участвовать в конвертации
 +
* Возвращаемый результат:
 +
** '''m_Item1''' – сконвертированная минимальная цена
 +
** '''m_Item12''' – сконвертированная максимальная цена
 +
 +
<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>
 +
Вызов метода convertFilterPrice
 +
<syntaxhighlight lang="java" enclose="div">
 +
GET http://localhost:9000/TourSearchOwin/AllCurencies/convertFilterPrice?SourceRateKey=2&TargetRateKey=1&MinPrice=10&MaxPrice=200
 +
</syntaxhighlight>
 +
Возвращаемый результат метода convertFilterPrice (в формате JSON)
 +
<syntaxhighlight lang="java" enclose="div">
 +
{
 +
    "m_Item1": 12.035142616440004814057046576,
 +
    "m_Item2": 240.70285232880009628114093152
 +
}
 
</syntaxhighlight>
 
</syntaxhighlight>
 
</TD></TR></TABLE>
 
</TD></TR></TABLE>
Строка 181: Строка 489:
 
Метод производит выгрузку услуг с признаком «Квотируемая»
 
Метод производит выгрузку услуг с признаком «Квотируемая»
 
* Формат запроса:
 
* Формат запроса:
** .../TourSearchOwin/QuotedServices
+
** GET .../TourSearchOwin/QuotedServices
 
* Принимаемые параметры:
 
* Принимаемые параметры:
 
** нет принимаемых параметров
 
** нет принимаемых параметров
Строка 191: Строка 499:
 
** '''IsDuration''' – наличие продолжительности у услуги
 
** '''IsDuration''' – наличие продолжительности у услуги
 
** '''IsCity''' – наличие города у услуги
 
** '''IsCity''' – наличие города у услуги
** '''IsSubCode1''' – признак наличия ''SubCode1'' у услуги (вид проживания у отеля, тариф у авиаперелета)
+
** '''IsSubCode1''' – признак наличия [[#Приложение 1: параметры услуги (ServiceType, Code, SubCode1, SubCode2)|SubCode1]] у услуги
** '''IsSubCode2''' – признак наличия ''SubCode2'' у услуги (тип питания у отеля)
+
** '''IsSubCode2''' – признак наличия [[#Приложение 1: параметры услуги (ServiceType, Code, SubCode1, SubCode2)|SubCode2]] у услуги  
 
** '''Quoted''' – признак квотируемости услуги
 
** '''Quoted''' – признак квотируемости услуги
 
** '''CheckGeoPoint''' – наличие геоточек у услуги
 
** '''CheckGeoPoint''' – наличие геоточек у услуги
 
** '''IsRoute''' – признак маршрутной услуги
 
** '''IsRoute''' – признак маршрутной услуги
** '''LittlePercent''' – число в %, при которых будет считаться количество мест «Мало»
 
** '''LittlePlace''' – число, при котором будет считаться количество мест «Мало»
 
** '''LittleAnd''' – признак наличия мест «Мало» – будем ли учитывать количество мест вместе с процентным соотношением между общим и оставшимся количеством мест
 
 
** '''IsPartnerBasedOn''' – признак сопоставления партнера услуги в зависимости от отеля
 
** '''IsPartnerBasedOn''' – признак сопоставления партнера услуги в зависимости от отеля
 
** '''Control''' – идентификатор статуса услуги
 
** '''Control''' – идентификатор статуса услуги
Строка 207: Строка 512:
 
Вызов метода QuotedServices
 
Вызов метода QuotedServices
 
<syntaxhighlight lang="java" enclose="div">
 
<syntaxhighlight lang="java" enclose="div">
http://localhost:9000/TourSearchOwin/QuotedServices
+
GET http://localhost:9000/TourSearchOwin/QuotedServices
 
</syntaxhighlight>
 
</syntaxhighlight>
 
Возвращаемый результат метода QuotedServices (в формате JSON)
 
Возвращаемый результат метода QuotedServices (в формате JSON)
Строка 224: Строка 529:
 
       "CheckGeoPoint": true,
 
       "CheckGeoPoint": true,
 
       "IsRoute": true,
 
       "IsRoute": true,
      "LittlePercent": null,
 
      "LittlePlace": 10,
 
      "LittleAnd": true,
 
 
       "IsPartnerBasedOn": false,
 
       "IsPartnerBasedOn": false,
 
       "Control": 1
 
       "Control": 1
Строка 242: Строка 544:
 
       "CheckGeoPoint": true,
 
       "CheckGeoPoint": true,
 
       "IsRoute": true,
 
       "IsRoute": true,
      "LittlePercent": 99,
 
      "LittlePlace": 5,
 
      "LittleAnd": false,
 
 
       "IsPartnerBasedOn": false,
 
       "IsPartnerBasedOn": false,
 
       "Control": 1
 
       "Control": 1
Строка 253: Строка 552:
 
</div></div><br />
 
</div></div><br />
  
===Выгрузка городов отправления (departureCities)===
+
===Выгрузка актуальных городов отправления (departureCities)===
 
Метод производит выгрузку всех доступных городов отправления для поискового запроса.
 
Метод производит выгрузку всех доступных городов отправления для поискового запроса.
 
* Формат запроса:
 
* Формат запроса:
** .../TourSearchOwin/departureCities?  
+
** GET .../TourSearchOwin/departureCities?  
 
* Принимаемые параметры:
 
* Принимаемые параметры:
 
** нет принимаемых параметров
 
** нет принимаемых параметров
Строка 268: Строка 567:
 
Вызов метода departureCities
 
Вызов метода departureCities
 
<syntaxhighlight lang="java" enclose="div">
 
<syntaxhighlight lang="java" enclose="div">
http://localhost:9000/TourSearchOwin/departureCities
+
GET http://localhost:9000/TourSearchOwin/departureCities
 
</syntaxhighlight>
 
</syntaxhighlight>
 
Возвращаемый результат метода departureCities (в формате JSON)
 
Возвращаемый результат метода departureCities (в формате JSON)
Строка 290: Строка 589:
 
</div></div><br />
 
</div></div><br />
  
===Выгрузка списка стран (Destination)===
+
===Выгрузка актуальных стран (Destination)===
 
Метод производит выгрузку всех доступных направлений туроператора.
 
Метод производит выгрузку всех доступных направлений туроператора.
 
* Формат запроса:
 
* Формат запроса:
** .../TourSearchOwin/Destination?
+
** GET .../TourSearchOwin/Destination?
 
* Принимаемые параметры ( '''*''' – обязательный):
 
* Принимаемые параметры ( '''*''' – обязательный):
** '''pageNumber''' – номер страницы ???
+
** '''departureCities *''' – идентификатор города(ов) отправления (из контроллера [[#Выгрузка актуальных городов отправления (departureCities)|''.../TourSearchOwin/departureCities?'']])
** '''term *''' – фильтрация результатов по контекстному поиску (по умолчанию параметр пустой)
+
** '''type''' – настройка easySearchFilter (0/не указано - настройка выключена, 1 - настройка включена)
** '''showAll''' – ??? (true/false)
+
** '''term''' – фильтрация результатов по контекстному поиску (по умолчанию параметр пустой)
** '''departureCities *''' – идентификатор города отправления (из контроллера ''.../TourSearchOwin/departureCities?'')
 
 
* Возвращаемый результат:
 
* Возвращаемый результат:
 
** '''Name''' – название страны
 
** '''Name''' – название страны
 
** '''Key''' – идентификатор страны
 
** '''Key''' – идентификатор страны
** '''DestinationType''' – ??? (всегда возвращается в JSON = 1, в xml = country)
+
** '''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">Пример
Строка 309: Строка 616:
 
Вызов метода Destination
 
Вызов метода Destination
 
<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/Destination?departureCities=1
 
</syntaxhighlight>
 
</syntaxhighlight>
 
Возвращаемый результат метода Destination (в формате JSON)
 
Возвращаемый результат метода Destination (в формате JSON)
Строка 315: Строка 623:
 
[
 
[
 
       {
 
       {
       "Name": "Болгария",
+
       "Data": null,
       "Key": 359,
+
      "DestinationType": 1,
       "DestinationType": 1
+
      "IsExist": false,
 +
       "Key": 90,
 +
       "Name": "Австрия"
 +
   
 +
   
 
   },
 
   },
 
       {
 
       {
       "Name": "Индия",
+
       "Data": null,
       "Key": 26,
+
      "DestinationType": 1,
       "DestinationType": 1
+
      "IsExist": false,
 +
       "Key": 53,
 +
       "Name": "Тайланд"
 +
     
 +
     
 
   },
 
   },
 
       {
 
       {
       "Name": "Финляндия",
+
       "Data": null,
       "Key": 64,
+
      "DestinationType": 1,
       "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">
 +
[
 +
{
 +
  "Name": "Австрия",
 +
  "Key": 90,
 +
  "DestinationType": 1,
 +
  "IsExist": false,
 +
  "Data":
 +
        [
 +
        {
 +
          "CityKey": 35,
 +
          "CityName": "Вена",
 +
          "HotelKey": 178,
 +
          "HotelName": "Ananas, 5+++*",
 +
          "ResortKey": 232,
 +
          "ResortName": "Малина"
 +
        },
 +
        {
 +
          "CityKey": 35,
 +
          "CityName": "Вена",
 +
          "HotelKey": 20748,
 +
          "HotelName": "Dev, 1-4*Boutique",
 +
          "ResortKey": 0,
 +
          "ResortName": ""
 +
        },
 +
      ],
 +
}
 +
{
 +
  "Name": "Тайланд",
 +
  "Key": 53,
 +
  "DestinationType": 1,
 +
  "IsExist": false,
 +
  "Data":
 +
        [
 +
          {
 +
            "CityKey": 415,
 +
            "CityName": "Пхукет",
 +
            "HotelKey": 5263,
 +
            "HotelName": "7Q Hotel, HV",
 +
            "ResortKey": 123,
 +
            "ResortName": "Пхукет"
 +
          }
 +
        ],
 +
},
 +
{
 +
  "Name": "Россия",
 +
  "Key": 460,
 +
  "DestinationType": 1,
 +
  "IsExist": false,
 +
  "Data":
 +
        [
 +
          {
 +
            "CityKey": 295,
 +
            "CityName": "Санкт-Петербург",
 +
            "HotelKey": 20365,
 +
            "HotelName": "Бристоль, 3*",
 +
            "ResortKey": 0,
 +
            "ResortName": ""
 +
          }
 +
        ],
 +
},
 +
{
 +
  "Name": "ОАЭ",
 +
  "Key": 2,
 +
  "DestinationType": 1,
 +
  "IsExist": false,
 +
  "Data":
 +
        [
 +
          {
 +
          "CityKey": 12,
 +
          "CityName": "ДУБАЙ",
 +
          "HotelKey": 1257,
 +
          "HotelName": "Avari, APTH3",
 +
          "ResortKey": 0,
 +
          "ResortName": ""
 +
          },
 +
      ],
 +
}
 
]
 
]
 
</syntaxhighlight>
 
</syntaxhighlight>
Строка 334: Строка 736:
 
</div></div><br />
 
</div></div><br />
  
===Выгрузка списка городов (ActualizeCities)===
+
===Выгрузка актуальных городов (ActualizeCities)===
 
Метод возвращает список всех доступных городов по определенному городу отправления и стране прибытия.
 
Метод возвращает список всех доступных городов по определенному городу отправления и стране прибытия.
 
* Формат запроса:
 
* Формат запроса:
** .../TourSearchOwin/ActualizeCities?
+
** GET .../TourSearchOwin/ActualizeCities?
 
* Принимаемые параметры ( '''*''' – обязательный):
 
* Принимаемые параметры ( '''*''' – обязательный):
** '''cityKeys *''' – идентификатор города отправления (полученный из метода ''.../TourSearchOwin/departureCities?'')
+
** '''cityKeys *''' – идентификатор города(ов) отправления (полученный из метода ''.../TourSearchOwin/departureCities?'')
 
** '''Key *''' – идентификатор страны прибытия (полученный из метода ''.../TourSearchOwin/Destination?'')
 
** '''Key *''' – идентификатор страны прибытия (полученный из метода ''.../TourSearchOwin/Destination?'')
** '''Name *''' – название страны прибытия (полученный из метода ''.../TourSearchOwin/Destination?'')
+
** '''term''' – фильтрация результатов по контекстному поиску (по умолчанию параметр пустой)
** '''term *''' – фильтрация результатов по контекстному поиску (по умолчанию параметр пустой)
 
 
* Возвращаемый результат:
 
* Возвращаемый результат:
 
** '''Key''' – идентификатор города
 
** '''Key''' – идентификатор города
Строка 352: Строка 753:
 
Вызов метода ActualizeCities
 
Вызов метода ActualizeCities
 
<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/ActualizeCities?cityKeys=1&Key=90
 
</syntaxhighlight>
 
</syntaxhighlight>
 
Возвращаемый результат метода ActualizeCities (в формате JSON)
 
Возвращаемый результат метода ActualizeCities (в формате JSON)
Строка 374: Строка 775:
 
</div></div><br />
 
</div></div><br />
  
===Выгрузка типов туров (ActualizeTourType)===
+
===Выгрузка актуальных типов туров (ActualizeTourType)===
 
Метод возвращает список типов туров по определенному городу отправления, стране и городу прибытия.
 
Метод возвращает список типов туров по определенному городу отправления, стране и городу прибытия.
 
* Формат запроса:
 
* Формат запроса:
** .../TourSearchOwin/ActualizeTourType?
+
** GET .../TourSearchOwin/ActualizeTourType?
 
* Принимаемые параметры ( '''*''' – обязательный):
 
* Принимаемые параметры ( '''*''' – обязательный):
** '''departureCityKeys *''' – идентификатор города отправления (полученный из метода ''.../TourSearchOwin/departureCities?'')
+
** '''departureCityKeys *''' – идентификатор города(ов) отправления (полученный из метода ''.../TourSearchOwin/departureCities?'')
 
** '''Key *''' – идентификатор страны прибытия (полученный из метода ''.../TourSearchOwin/Destination?'')
 
** '''Key *''' – идентификатор страны прибытия (полученный из метода ''.../TourSearchOwin/Destination?'')
** '''Name *''' – название страны прибытия (полученный из метода ''.../TourSearchOwin/Destination?'')
+
** '''Type *''' – тип результата (внутренний параметр, не изменяемый, всегда указывать значение = 1)
** '''Type *''' – ??? (по умолчанию всегда 1)
+
** '''destinationCity *''' – идентификатор города(ов) прибытия (полученный из метода ''.../TourSearchOwin/ActualizeCities?''), по умолчанию передается ''-1'', то есть все города в рамках данной страны
** '''destinationCity *''' – идентификатор города прибытия (полученный из метода ''.../TourSearchOwin/ActualizeCities?''), по умолчанию передается ''-1'', то есть все города в рамках данной страны
+
** '''terms''' – фильтрация результатов по контекстному поиску (по умолчанию параметр пустой)
** '''term *''' – фильтрация результатов по контекстному поиску (по умолчанию параметр пустой)
 
 
* Возвращаемый результат:
 
* Возвращаемый результат:
 
** '''Key''' – идентификатор типа тура
 
** '''Key''' – идентификатор типа тура
 
** '''Name''' – название типа тура
 
** '''Name''' – название типа тура
** '''ParentId''' – идентификатор группы, к которой относится данный типа тура (если тип тура не относится к группе, то возвращается ''null'')
+
** '''ParentId''' – идентификатор группы, к которой относится данный тип тура (если тип тура не относится к группе, то возвращается ''null'')
  
 
<div class="toccolours mw-collapsible mw-collapsed" style="width:900px">Пример
 
<div class="toccolours mw-collapsible mw-collapsed" style="width:900px">Пример
Строка 395: Строка 795:
 
Вызов метода ActualizeTourType
 
Вызов метода ActualizeTourType
 
<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/ActualizeTourType?departureCityKeys=1&Key=90&Type=1&destinationCity=-1
 
</syntaxhighlight>
 
</syntaxhighlight>
 
Возвращаемый результат метода ActualizeTourType (в формате JSON)
 
Возвращаемый результат метода ActualizeTourType (в формате JSON)
Строка 423: Строка 823:
 
Метод производит выгрузку доступных дат заездов для поискового запроса.
 
Метод производит выгрузку доступных дат заездов для поискового запроса.
 
* Формат запроса:
 
* Формат запроса:
** .../TourSearchOwin/TourDate?
+
** GET .../TourSearchOwin/TourDate?
 
* Принимаемые параметры ( '''*''' – обязательный):
 
* Принимаемые параметры ( '''*''' – обязательный):
** '''departureCity *''' – идентификатор города отправления (полученный из метода ''.../TourSearchOwin/departureCities?'')
+
** '''departureCity *''' – идентификатор города(ов) отправления (полученный из метода ''.../TourSearchOwin/departureCities?'')
** '''destinationCity *''' – идентификатор города прибытия (полученный из метода ''.../TourSearchOwin/ActualizeCities?''), по умолчанию передается ''-1'', то есть все города в рамках данной страны
+
** '''destinationCity *''' – идентификатор города(ов) прибытия (полученный из метода ''.../TourSearchOwin/ActualizeCities?''), по умолчанию передается ''-1'', то есть все города в рамках данной страны
 
** '''Key *''' – идентификатор страны прибытия (полученный из метода ''.../TourSearchOwin/Destination?'')
 
** '''Key *''' – идентификатор страны прибытия (полученный из метода ''.../TourSearchOwin/Destination?'')
** '''Name *''' – название страны прибытия (полученный из метода ''.../TourSearchOwin/Destination?'')
+
** '''Type *''' – тип результата (внутренний параметр, не изменяемый, всегда указывать значение = 1)
** '''Type *''' – ??? (по умолчанию всегда 1)
 
 
** '''tourTypes *''' – идентификатор типа тура (полученный из метода ''.../TourSearchOwin/ActualizeTourType?''), по умолчанию передается ''-1'', то есть все типы тура в рамках данной страны
 
** '''tourTypes *''' – идентификатор типа тура (полученный из метода ''.../TourSearchOwin/ActualizeTourType?''), по умолчанию передается ''-1'', то есть все типы тура в рамках данной страны
** '''term *''' – фильтрация результатов по контекстному поиску (по умолчанию параметр пустой)
 
 
* Возвращаемый результат:
 
* Возвращаемый результат:
 
** массив дат
 
** массив дат
Строка 440: Строка 838:
 
Вызов метода TourDate
 
Вызов метода TourDate
 
<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/TourDate?departureCity=1&destinationCity=-1&Key=90&Type=1&tourTypes=-1
 
</syntaxhighlight>
 
</syntaxhighlight>
 
Возвращаемый результат метода TourDate (в формате JSON)
 
Возвращаемый результат метода TourDate (в формате JSON)
Строка 461: Строка 859:
 
Метод производит выгрузку доступных продолжительностей для поискового запроса.
 
Метод производит выгрузку доступных продолжительностей для поискового запроса.
 
* Формат запроса:
 
* Формат запроса:
** .../TourSearchOwin/Duration?
+
** GET .../TourSearchOwin/Duration?
 
* Принимаемые параметры ( '''*''' – обязательный):
 
* Принимаемые параметры ( '''*''' – обязательный):
** '''departureCity *''' – идентификатор города отправления (полученный из метода ''.../TourSearchOwin/departureCities?'')
+
** '''departureCity *''' – идентификатор города(ов) отправления (полученный из метода ''.../TourSearchOwin/departureCities?'')
** '''destinationCity *''' – идентификатор города прибытия (полученный из метода ''.../TourSearchOwin/ActualizeCities?''), по умолчанию передается ''-1'', то есть все города в рамках данной страны
+
** '''destinationCity *''' – идентификатор города(ов) прибытия (полученный из метода ''.../TourSearchOwin/ActualizeCities?''), по умолчанию передается ''-1'', то есть все города в рамках данной страны
 
** '''Key *''' – идентификатор страны прибытия (полученный из метода ''.../TourSearchOwin/Destination?'')
 
** '''Key *''' – идентификатор страны прибытия (полученный из метода ''.../TourSearchOwin/Destination?'')
** '''Name *''' – название страны прибытия (полученный из метода ''.../TourSearchOwin/Destination?'')
+
** '''Type *''' – тип результата (внутренний параметр, не изменяемый, всегда указывать значение = 1)
** '''Type *''' – ??? (по умолчанию всегда 1)
+
** '''tourDate *''' – массив дат заезда (полученные из метода ''.../TourSearchOwin/TourDate?''). Если параметры передаются через url, то каждое значение необходимо передавать отдельным параметром.
** '''tourDate *''' – дата(ы) заезда (полученные из метода ''.../TourSearchOwin/TourDate?'')
+
** '''tourTypes *''' – идентификатор типа(ов) тура (полученный из метода ''.../TourSearchOwin/ActualizeTourType?''), по умолчанию передается ''-1'', то есть все типы тура в рамках данной страны
** '''tourTypes *''' – идентификатор типа тура (полученный из метода ''.../TourSearchOwin/ActualizeTourType?''), по умолчанию передается ''-1'', то есть все типы тура в рамках данной страны
 
** '''term *''' – фильтрация результатов по контекстному поиску (по умолчанию параметр пустой)
 
 
* Возвращаемый результат:
 
* Возвращаемый результат:
** массив продолжительностей
+
** массив продолжительностей (в днях)
  
 
<div class="toccolours mw-collapsible mw-collapsed" style="width:900px">Пример
 
<div class="toccolours mw-collapsible mw-collapsed" style="width:900px">Пример
Строка 479: Строка 875:
 
Вызов метода Duration
 
Вызов метода Duration
 
<syntaxhighlight lang="java" enclose="div">
 
<syntaxhighlight lang="java" enclose="div">
http://localhost:9000/TourSearchOwin/Duration?departureCity=1&destinationCity=-1&Key=90&Name=Австрия&Type=1&tourDate=25.02.2018,26.02.2018&tourTypes=-1&term=
+
GET http://localhost:9000/TourSearchOwin/Duration?departureCity=1&destinationCity=-1
 +
&Key=90&Type=1&tourDate=25.02.2018&tourDate=26.02.2018&tourTypes=-1
 
</syntaxhighlight>
 
</syntaxhighlight>
 
Возвращаемый результат метода Duration (в формате JSON)
 
Возвращаемый результат метода Duration (в формате JSON)
Строка 498: Строка 895:
 
Метод поиска туров использует множество параметров для поиска и фильтрации туров. Метод возвращает наиболее дешевые предложения, найденные по предоставленным параметрам и сгруппированные по отелям в порядке возрастания цены.  
 
Метод поиска туров использует множество параметров для поиска и фильтрации туров. Метод возвращает наиболее дешевые предложения, найденные по предоставленным параметрам и сгруппированные по отелям в порядке возрастания цены.  
 
* Формат запроса:
 
* Формат запроса:
** .../TourSearchOwin/Tour?
+
** GET .../TourSearchOwin/Tour?
 +
* Принимаемые параметры ( '''*''' – обязательный):
 +
** '''DepartureCityKeys *''' – идентификатор города(ов) отправления (полученный из метода ''.../TourSearchOwin/departureCities?'')
 +
** '''Dates *''' – массив дат заезда (полученные из метода ''.../TourSearchOwin/TourDate?''). Если параметры передаются через url, то каждое значение необходимо передавать отдельным параметром.
 +
** '''Durations *''' – массив продолжительностей (полученные из метода ''.../TourSearchOwin/Duration?''). Если параметры передаются через url, то каждое значение необходимо передавать отдельным параметром.
 +
** '''PageNumber *''' – номер возвращаемой страницы (по умолчанию возвращается 1)
 +
** '''PageSize *''' – количество возвращаемых результатов на одной странице (возвращается 20)
 +
** '''isFromBasket *''' – происходит ли обращение из корзины или из поиска туров (true/false)
 +
** '''isFillSecondaryFilters''' – заполнены ли дополнительные фильтры (по умолчанию всегда приходит true). Служебный внутренний параметр. При работе с API не используется.
 +
** '''DestinationType *''' – тип результата (внутренний параметр, не изменяемый, всегда указывать значение = 1)
 +
** '''DestinationKey *''' – идентификатор страны прибытия (полученный из метода ''.../TourSearchOwin/Destination?'')
 +
** '''AdultCount *''' – количество взрослых
 +
** '''ChildAges''' – возраст детей. Если детей несколько, и параметры передаются через url, то каждое значение необходимо передавать отдельным параметром.
 +
** '''CurrencyName *''' – код валюты
 +
** '''AviaQuota *''' – информация о квотах на авиаперелет (значения параметров: ''"1"'' — фильтр "Есть", ''"5"'' — фильтр "Есть+запрос", ''"7"'' — фильтр "Все")
 +
** '''HotelQuota *''' – информация о квотах на отель (значения параметров: ''"1"'' — фильтр "Есть", ''"5"'' — фильтр "Есть+запрос", ''"7"'' — фильтр "Все")
 +
** '''BusTransferQuota''' – информация о квотах на автобусный переезд (значения параметров: ''"1"'' — фильтр "Есть", ''"5"'' — фильтр "Есть+запрос", ''"7"'' — фильтр "Все")
 +
** '''MinPrice *''' – минимальная цена (по умолчанию не задана, передается ''NaN'')
 +
** '''MaxPrice''' – максимальная цена (по умолчанию не передается)
 +
** '''Groups''' – группировка результатов (2 – по названию тура, 4 – по дате тура, 8 – по продолжительности тура, 16 – по городу вылета, 32 – по отелю, 64 – по городу отеля, 128 – по курорту отеля, 256 – по категории отеля)
 +
** '''HotelScheme''' – пустой по умолчанию. Заполняется при вызове вариантов размещений в рамках одного отеля. Передаются следующие параметры:
 +
*** '''TemplateId''' – идентификатор шаблона услуги (этот параметр можно взять из контроллера Tour->Result->MinCostServicesComposition->Key->TemplateId),
 +
*** '''DurationInNight''' – продолжительность отеля в ночах (этот параметр можно взять из контроллера Tour->Result->MinCostServicesComposition->Value->DurationInNight),
 +
*** '''Code''' – ключ отеля (этот параметр можно взять из контроллера Tour->Result->MinCostServicesComposition->Value->Code),
 +
*** '''PacketKey''' – ключ пакета (этот параметр можно взять из контроллера Tour->Result->MinCostServicesComposition->Value->PacketId), 
 +
*** '''PartnerKey''' – ключ партнера (этот параметр можно взять из контроллера Tour->Result->MinCostServicesComposition->Value->PartnerId),
 +
*** '''GDSProviderId''' – ключ провайдера из внешней системы (этот параметр можно взять из контроллера Tour->Result->MinCostServicesComposition->Value->GDSProviderId),
 +
*** '''TotalTourDuration''' – общая продолжительность тура в днях (этот параметр можно взять из контроллера Tour->Result->Duration)
 +
** '''BusTransferPointKeys''' – данный признак проставляется в ''true'' в том случае, когда происходит запрос вариантов проживания (кнопка ''Варианты'') в автобусных переездах
 +
** '''TourKey''' – пустой по умолчанию. Заполняется при вызове вариантов размещений в рамках одного отеля: ключ программы тура
 +
** '''TourDuration''' – пустой по умолчанию. Заполняется при вызове вариантов размещений в рамках одного отеля: продолжительность тура в днях
 +
** '''TourType''' – идентификатор типа(ов) тура (полученный из метода ''.../TourSearchOwin/ActualizeTourType?''), по умолчанию передается ''-1'', то есть все типы тура в рамках данной страны. Возможна множественная передача параметров.
 +
** '''Tour''' – ключ программы тура (дополнительный фильтр)
 +
** '''Duration''' – продолжительность тура (дополнительный фильтр)
 +
** '''DateTour''' – дата тура (дополнительный фильтр)
 +
** '''HotelResort''' – ключ курорта отеля (дополнительный фильтр)
 +
** '''HotelCity''' – ключ города отеля (дополнительный фильтр)
 +
** '''HotelType''' – ключ признака отеля (дополнительный фильтр)
 +
** '''HotelStars''' – ключ категории отеля (дополнительный фильтр)
 +
** '''Hotel''' – ключ отеля (дополнительный фильтр)
 +
** '''Pansions''' – ключ питания (дополнительный фильтр)
 +
** '''Airline''' – ключ авиакомпании (дополнительный фильтр)
 +
** '''AirportDeparture''' – ключ аэропорта вылета (дополнительный фильтр)
 +
** '''AirportArrival''' – ключ аэропорта прилета (дополнительный фильтр)
 +
** '''CityIds''' – идентификатор города(ов) прибытия (полученный из метода ''.../TourSearchOwin/ActualizeCities?''), по умолчанию передается ''-1'', то есть все города в рамках данной страны. Возможна множественная передача параметров.
 +
** '''TimeDepartureFrom''' – время отправления с (по умолчанию возвращается 00:00)
 +
** '''TimeDepartureTo''' – время отправления по (по умолчанию возвращается 23:59)
 +
** '''TimeArrivalFrom''' – время прибытия с (по умолчанию возвращается 00:00)
 +
** '''TimeArrivalTo''' – время прибытия по (по умолчанию возвращается 23:59)
 +
** '''ArrivalFlightNoTransfer''' – производить поиск без пересадок в прямом направлении (true/false, по умолчанию false)
 +
** '''DepartureFlightNoTransfer''' – производить поиск без пересадок в обратном направлении (true/false, по умолчанию false)
 +
** '''DepartureFlightNumberTransfer''' – наличие пересадок в прямом направлении (1 – одна пересадка, 2 – две пересадки и более, 3 – одна пересадка совместно с двумя пересадками и более). Обрабатывается начиная с релиза 15.3.
 +
** '''ArrivalFlightNumberTransfer''' – наличие пересадок в обратном направлении (1 – одна пересадка, 2 – две пересадки и более, 3 – одна пересадка совместно с двумя пересадками и более). Обрабатывается начиная с релиза 15.3.
 +
** '''Tariff''' – ключ класса авиаперелета (дополнительный фильтр)
 +
** '''CombineAirlines''' — разрешить комбинировать авиаперелеты (дополнительный фильтр). Параметр применяется только при наличии параметра '''airline'''. Обрабатывается начиная с релиза 15.3.
 +
** '''CombineTariffs''' — разрешить комбинировать классы перелета (дополнительный фильтр). Параметр применяется только при наличии параметра '''tariff'''. Обрабатывается начиная с релиза 15.3.
 +
** '''FlightCityDeparture''' – ключ город вылета в параметрах авиаперелета (дополнительный фильтр)
 +
** '''CityDeparture''' – ключ города начала поездки (дополнительный фильтр)
 +
** '''RemoteHotelMode''' – признак того, производится поиск только локальных отелей или и от внешних поставщиков тоже (только локальные отели – 0, только внешние отели – 2, локальные и внешние отели – 1). Если признак отсутствует – поиск будет только по локальным отелям. Обрабатывается начиная с релиза 15.4.
 +
** '''GroupGuid''' – используется для получения турпрограмм по уникальному ключу из кэша при использовании группировки. Примеры использования. ''GroupGuid=00000000-0000-0000-0000-000000000000'' – при первом запросе от локальной системы. ''GroupGuid=936DA01F-9ABD-4d9d-80C7-02AF85C822A8'' (уникальный ключ) – передается на клиент от первого запроса из внешней системы. С данным уникальным ключом осуществляется второй запрос от внешней системы. Далее происходит получение значений по данному уникальному ключу. Обрабатывается начиная с релиза 15.4.
 +
** '''IsGroupingTourAlreadyMerge''' – определяет слияние данных турпрограмм от локальной системы с данными от внешней системы при использовании группировки. Примеры использования. ''IsGroupingTourAlreadyMerge=false'' – полученные данные от локальной системы не объединены с данными от внешней системы. На клиенте осуществляется объединение данных турпрограмм с последующей сортировкой по минимальной цене. ''IsGroupingTourAlreadyMerge=true'' – полученные данные от локальной системы уже объединены с данными от внешней системы. На клиенте осуществляется только сортировка по минимальной цене. Обрабатывается начиная с релиза 15.4.
 +
** '''SearchId''' – уникальный идентификатор запроса поиска, передаваемый с клиентской части. Возвращается в ответе без изменений. Обрабатывается начиная с релиза 15.5.
 +
** '''nodeId''' – уникальный идентификатор узла в кластере балансировки нагрузки [[Мастер-Тур(15):Балансировщик нагрузки HaProxy|HaProxy]]
 +
 +
 
 +
* Возвращаемый результат:
 +
** '''CheckMessages''' – сообщения для логики проверки тура (не используется)
 +
** '''Message''' – сообщение об ошибке
 +
*** '''Key''' – код ошибки
 +
*** '''Value''' – сообщение об ошибке
 +
** '''Result''' – результаты поиска
 +
*** '''Key''' – идентификатов программы тура
 +
*** '''Name''' – название программы тура
 +
*** '''TourUrl''' – ссылка на программу тура
 +
*** '''BookingConditions''' – условия бронирования программы туров
 +
*** '''DefaultManagers''' – список выбранных менеджеров в туре
 +
*** '''Manager''' – ключ менеджера по умолчанию в туре
 +
*** '''Branches''' – список ключей филиалов бронирования
 +
*** '''DetermineTheBranchOnCity''' – признак, определять филиал в зависимости от города начала поездки
 +
*** '''IndividualFlightSelection''' – признак, включены ли индивидуальные настройки подбора перелетов
 +
*** '''RestrictionDateArrival''' – признак, ограничение даты прилета по базовому рейсу в индивидуальных настройках подбора перелетов
 +
*** '''PriceUpdateForView''' – признак обновления цен в индивидуальных настройках подбора перелетов (true – включен, false – выключен)
 +
*** '''SelectFlightAutomatically''' – признак выбирать рейс автоматически, если не выбран пользователем в индивидуальных настройках подбора перелетов
 +
*** '''BaggageSearchOtherFares''' – признак поиска багажа в других тарифах в индивидуальных настройках подбора перелетов
 +
*** '''Luggage''' – значение багажа в блоке настроек, влияющих на формирование запроса в индивидуальных настройках подбора перелетов (all – все, withLuggage – багаж и ручная кладь, withoutLuggage – без багажа)
 +
*** '''LuggageForView''' – значение багажа в блоке настроек, влияющих на отображение информации в индивидуальных настройках подбора перелетов (all – все, withLuggage – багаж и ручная кладь, withoutLuggage – без багажа)
 +
*** '''LuggageForPrice''' – значение багажа в блоке фильтров для обновления цен в индивидуальных настройках подбора перелетов (all – все, withLuggage – багаж и ручная кладь, withoutLuggage – без багажа)
 +
*** '''FlightClass''' – класс перелета в индивидуальных настройках подбора перелетов (economy – Эконом, premiumEconomy 2 Премиум-эконом, business – Бизнес, first – Первый)
 +
*** '''Directs''' – значение пересадок в блоке настроек, влияющих на формирование запроса в индивидуальных настройках подбора перелетов (all – все, onlyDirectFlights – только прямые рейсы)
 +
*** '''DirectsForView''' – значение пересадок в блоке влияющих на отображение информации в индивидуальных настройках подбора перелетов (all – все, без пересадок – withoutDirect, с 1 пересадкой – oneDirect, с 2 пересадками и более – twoOrMoreDirect)
 +
*** '''DirectsForPrice''' – значение пересадок в блоке фильтров для обновления цен в индивидуальных настройках подбора перелетов (all – все, без пересадок – withoutDirect, с 1 пересадкой – oneDirect, с 2 пересадками и более – twoOrMoreDirect)
 +
*** '''DepartureTimeLimit''' – ограничение времени вылета: «Вылет не позже» в формате hh:mm
 +
*** '''SortingForView''' – сортировка в индивидуальных настройках подбора перелетов (cheap – сначала дешевые, fast – сначала быстрые, optimal – оптимальные)
 +
*** '''StartDate''' – дата начала тура
 +
*** '''MaxConnectionTime''' – длительность пересадок в индивидуальных настройках подбора перелетов в формате hh:mm
 +
*** '''FullPaymentPeriod''' – полная оплата с даты бронирования (может быть null)
 +
*** '''FullPaymentCheckin''' – полная оплата до даты заезда (может быть null)
 +
*** '''PrePaymentPeriod''' – предоплата с даты бронирования (может быть null)
 +
*** '''PrePaymentCheckin''' – предоплата до даты заезда (может быть null)
 +
*** '''PrePaymentCu"''' – значение предоплаты в y.e. (может быть null)
 +
*** '''PrePaymentPercent''' – значение предоплаты в процентах (может быть null)
 +
*** '''Duration''' – продолжительность тура (в днях)
 +
*** '''DurationInNight''' – продолжительность проживания (в ночах)
 +
*** '''Types''' – идентификатор типа туров
 +
*** '''Price''' –  цена тура с учетом скидки в валюте поиска
 +
*** '''Cost''' – цена тура в валюте поиска
 +
*** '''Rate''' – код валюты тура
 +
*** '''Penalties''' – внутреннее поле, не используется
 +
*** '''CityDepature''' – город отправления
 +
**** '''Key''' – идентификатор города отправления
 +
**** '''Value''' – название города отправления
 +
*** '''CountryId''' – всегда возвращается ключ 0
 +
*** '''Services''' – услуги в туре
 +
**** '''DepartureCity''' – город отправления
 +
***** '''Key''' – идентификатор
 +
***** '''Value''' – название
 +
**** '''DepartureCountry''' – страна отправления
 +
***** '''Key''' – идентификатор
 +
***** '''Value''' – название
 +
**** '''ArrivalCity''' – город прибытия
 +
***** '''Key''' – идентификатор
 +
***** '''Value''' – название
 +
**** '''ArrivalCountry''' – страна прибытия
 +
***** '''Key''' – идентификатор
 +
***** '''Value''' – название
 +
**** '''DepartureAirport''' – аэропорт отправления
 +
***** '''Key''' – идентификатор
 +
***** '''Value''' – название
 +
**** '''ArrivalAirport''' – аэропорт прибытия
 +
***** '''Key''' – идентификатор
 +
***** '''Value''' – название
 +
**** '''Airline''' – авиакомпания
 +
***** '''Key''' – идентификатор
 +
***** '''Value''' – название
 +
**** '''Aircraft''' – воздушное судно
 +
***** '''Key''' – идентификатор
 +
***** '''Value''' – название
 +
**** '''Flight''' – рейс
 +
***** '''Key''' – идентификатор
 +
***** '''Value''' – название
 +
**** '''DepartureTime''' – время вылета
 +
**** '''ArrivalTime''' – время прилета
 +
**** '''EndDateTime''' – дата и время прилета
 +
**** '''FlightDetails''' – информация об авиаперелете
 +
***** '''Tariff''' – информация о тарифе перелета
 +
****** '''Key''' – идентификатор
 +
****** '''Code''' – код тарифа
 +
****** '''Name''' – название тарифа
 +
***** '''Cost''' – разница в стоимости с самым дешевым вариантом
 +
***** '''QuotaStatus''' – информация о квоте
 +
****** '''PlacesStatus''' – статус по квотам (есть места-1 / нет мест-2 / под запрос-4)
 +
****** '''FreePlaces''' – количество свободных мест, если удовлетворяются условия, заданные в настройке "Мало" и включена настройка "Отображать числовое значение оставшихся мест". Иначе возвращается 0. Если в данном параметре 0, то руководствоваться следует значением, полученном в параметре '''PlacesStatus'''.
 +
****** '''IsFewPlaces''' – выполнены ли условия, заданные в настройке "Мало": '''true''' – если заданы условия количества мест "Мало" и данные условия выполнены, '''false''' – если не заданы условия количества мест "Мало" или они заданы, но не выполнены.
 +
***** '''PartnerId''' – ключ партнера
 +
***** '''ByPax''' – цена за человека (true/false)
 +
***** '''Partner''' – информация о партнере
 +
****** '''Key''' – идентификатор
 +
****** '''Value''' – название
 +
**** '''FlightSetting''' – внутренняя информация о перелете из программы туров
 +
***** '''ServiceId''' – идентификатор класса услуги (внутренняя информация из программы туров)
 +
***** '''PatternId''' – идентификатор паттерна услуги (внутренняя информация из программы туров)
 +
***** '''FlightId''' – идентификатор перелета (внутренняя информация из программы туров)
 +
**** '''FlightSourceMode''' – локальный или внешний перелет (внутренняя информация из программы туров)
 +
**** '''Id''' – идентификатор базового шаблона услуги (внутренняя информация из программы туров)
 +
**** '''SvKey''' – ключ типа услуги
 +
**** '''IsSubCode1''' – признак наличия [[#Приложение 1: параметры услуги (ServiceType, Code, SubCode1, SubCode2)|доп. описания 1]]
 +
**** '''IsSubCode2''' – признак наличия [[#Приложение 1: параметры услуги (ServiceType, Code, SubCode1, SubCode2)|доп. описания 2]]
 +
**** '''IsPartnerBasedOn''' – признак услуга с приоритетным подбором поставщика
 +
**** '''Day''' – день предоставления услуги
 +
**** '''DurationInNight''' – продолжительность услуги в ночах
 +
**** '''BeginDateTime''' – дата предоставления услуги
 +
**** '''IsHooded''' – признак скрытая услуга
 +
**** '''IsDeleted''' – признак удаляемая услуга
 +
**** '''IsNotCalculate''' – признак не рассчитываемая услуга
 +
**** '''PacketId''' – ключ пакета
 +
**** '''Index''' – порядковый номер услуги
 +
*** '''NotRouteServices''' – массив коллекций немаршрутных услуг (например если две экскурсии будут являться одним элементом массива, то это будет говорить о том, что эти экскурсии можно будет выбрать в выпадающем списке)
 +
**** '''ServiceName''' – название типа услуги
 +
**** '''City''' – объект город
 +
***** '''Key''' – ключ города
 +
***** '''Value''' – название города
 +
**** '''Country''' – объект страна
 +
***** '''Key''' – ключ страны
 +
***** '''Value''' – название страны
 +
**** '''Code''' – объект код услуги
 +
***** '''Key''' – ключ услуги
 +
***** '''Value''' – название услуги
 +
**** '''ByScheduler''' – флаг услуга по расписанию или нет
 +
**** '''Details''' – объект детализация услуги
 +
***** '''SubCode1''' – объект [[#Приложение 1: параметры услуги (ServiceType, Code, SubCode1, SubCode2)|доп. описание 1]]
 +
****** '''Key''' – ключ доп. описания 1
 +
****** '''Value''' – название доп. описания 1
 +
***** '''SubCode2''' – объект [[#Приложение 1: параметры услуги (ServiceType, Code, SubCode1, SubCode2)|доп. описание 2]]
 +
****** '''Key''' – ключ доп. описания 2
 +
****** '''Value''' – название доп. описания 2
 +
***** '''Date''' – дата услуги
 +
***** '''IsShowTransportPlan''' – признак показывать ли план рассадки (для автобусов)
 +
***** '''Cost''' – цена
 +
***** '''QuotaStatus''' – объект информация по квотам
 +
****** '''PlacesStatus''' – статус по квотам (есть места-1 / нет мест-2 / под запрос-4) 
 +
****** '''FreePlaces''' – количество свободных мест, если удовлетворяются условия, заданные в настройке "Мало" и включена настройка "Отображать числовое значение оставшихся мест". Иначе возвращается 0. Если в данном параметре 0, то руководствоваться следует значением, полученном в параметре '''PlacesStatus'''.
 +
****** '''IsFewPlaces''' – выполнены ли условия, заданные в настройке "Мало": '''true''' – если заданы условия количества мест "Мало" и данные условия выполнены, '''false''' – если не заданы условия количества мест "Мало" или они заданы, но не выполнены.
 +
***** '''PartnerId''' – идентификатор партнера
 +
***** '''ByPax''' – признак цены за человека
 +
***** '''Partner''' – объект партнер (не заполняется)
 +
****** '''Key''' – ключ (не заполняется)
 +
****** '''Value''' – название (не заполняется)
 +
**** '''ParentId''' – идентификатор родительской услуги (для вложенных услуг)
 +
**** '''PartnerBasedOnServiceTemplateId''' – ключ шаблона услуги, по которой приоритетно выбирается партнер текущей услуги
 +
**** '''Id''' – идентификатор услуги
 +
**** '''SvKey''' – ключ типа услуги
 +
**** '''IsSubCode1''' – наличие [[#Приложение 1: параметры услуги (ServiceType, Code, SubCode1, SubCode2)|доп. описания 1]]
 +
**** '''IsSubCode2''' – наличие [[#Приложение 1: параметры услуги (ServiceType, Code, SubCode1, SubCode2)|доп. описания 2]]
 +
**** '''IsPartnerBasedOn''' – услуга с подбором приоритетного поставщика услуги
 +
**** '''Day''' – день предоставления услуги
 +
**** '''DurationInNight''' – продолжительность услуги в ночах
 +
**** '''BeginDateTime''' – дата предоставления услуги
 +
**** '''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''' – подварианты услуг (используется в основном поиске)
 +
*** '''Routes''' – количество маршрутов для данного варианта поиска (к примеру, если будет несколько вариантов
 +
*** '''IsRemoteHotels''' – признак, есть ли внешние отели в данном варианте
 +
*** '''IsTourImages''' – признак, есть ли картинки тура
 +
*** '''MaskKeys''' – маска фильтра категории номеров
 +
** '''SecondaryFiltersResult''' – результаты доп. фильтров
 +
*** '''TourTypes''' – типы тура
 +
**** '''Id''' – ключ типа тура
 +
**** '''Name''' – название типа тура
 +
**** '''ParentId''' – родительский элемент типа тура (если есть)
 +
**** '''Type''' – тип справочника (используется для внутренних целей)
 +
*** '''TourPrograms''' – информация по каждой турпрограмме
 +
**** '''Key''' – ключ турпрограммы
 +
**** '''Name''' – название турпрограммы
 +
**** '''TourUrl''' – ссылка на тур
 +
**** '''BookingConditions''' – условия бронирования
 +
**** '''IsLandOnly''' – признак только наземное обслуживание
 +
**** '''IsRestrictMultiHotels''' – ограничивать ли расчёт многоотельных туров категориями отелей
 +
**** '''IsHotelTemplates''' – есть ли вообще отели в данной турпрограмме
 +
**** '''IsRouteServices''' – есть ли маршрутные услуги
 +
**** '''MultiHotelDelta''' – Значение отклонения звездности последующих отелей от первого отеля в многоотельном туре. По умолчанию 0. Звездность определяется числом, заданном в поле порядок при печати.
 +
**** '''Rate''' – валюта тура
 +
**** '''DateStart''' – нижняя граница дат заезда по программе тура
 +
**** '''DateEnd''' – верхняя граница дат заеда по программе тура
 +
**** '''Status''' – статус турпрограммы
 +
***** '''Key''' – ключ
 +
***** '''Value''' – значение
 +
**** '''Templates''' – шаблоны услуг
 +
***** '''$id''' – шаблон 1
 +
***** '''$id''' – шаблон 2
 +
**** '''Types''' – типы тура
 +
***** '''Id''' – ключ типа тура
 +
***** '''Name''' – название типа тура
 +
***** '''ParentId''' – родительский элемент типа тура (если есть)
 +
***** '''Type''' – тип справочника (используется для внутренних целей)
 +
**** '''LinkingFlightsRules''' – правила связывания перелетов
 +
***** '''notCombineDifferentAirlineRule''' –
 +
****** '''airlines''' –
 +
****** '''flightSettings''' –
 +
****** '''enabled''' –
 +
***** '''checkPlusMinus1CharterRule''' –
 +
****** '''FlightSettingPairs''' –
 +
****** '''enabled''' –
 +
***** '''notCombineDifferentTariffGroupRule''' –
 +
****** '''FlightSettings''' –
 +
****** '''enabled''' –
 +
***** '''notCombineDifferentPartnerRule''' –
 +
****** '''FlightSettings''' –
 +
****** '''enabled''' –
 +
***** '''departureCityEqualsArrivalCityRule''' –
 +
****** '''FlightSettingPairs''' –
 +
****** '''enabled''' –
 +
***** '''combineOnlySpecificChartersRule''' –
 +
****** '''settings''' –
 +
****** '''enabled''' –
 +
**** '''Type''' – тип справочника (используется для внутренних целей)
 +
*** '''TourDurations''' – продолжительность тура
 +
*** '''TourDates''' – список дат заездов в турпрограмме
 +
**** '''HotelCities''' – город в дополнительных фильтрах
 +
***** '''''' –
 +
**** '''HotelResorts''' – курорты в дополнительных фильтрах
 +
***** '''''' –
 +
**** '''HotelCategories''' – категории отеля в дополнительных фильтрах
 +
***** '''''' –
 +
**** '''Hotels''' – отели в дополнительных фильтрах
 +
***** '''''' –
 +
**** '''Pansions''' – питания в дополнительных фильтрах
 +
***** '''''' –
 +
**** '''Airlines''' – авиакомпании в дополнительных фильтрах
 +
***** '''''' –
 +
**** '''FlightTariffs''' – класс перелета в дополнительных фильтрах
 +
***** '''''' –
 +
**** '''DepartureCities''' – города вылета в дополнительных фильтрах
 +
***** '''''' –
 +
**** '''DepartureAirports''' – аэропорты вылета в дополнительных фильтрах
 +
***** '''''' –
 +
**** '''ArrivalCities''' – города прибытия в дополнительных фильтрах
 +
***** '''''' –
 +
**** '''ArrivalAirports''' – аэропорты прибытия в дополнительных фильтрах
 +
***** '''''' –
 +
**** '''HotelTypes''' – признаки отелей в дополнительных фильтрах
 +
***** '''''' –
 +
** '''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
 +
<syntaxhighlight lang="java" enclose="div">
 +
GET http://localhost:9000/TourSearchOwin/Tour?DepartureCityKeys=1&Dates=25.02.2018&Durations=4
 +
&PageNumber=1&PageSize=20&HotelScheme=&TourKey=&TourDuration=&isFromBasket=false
 +
&isFillSecondaryFilters=true&DestinationType=1&DestinationKey=90&AdultCount=2&ChildAges=2
 +
&ChildAges=2&CurrencyName=EU&AviaQuota=5&HotelQuota=5&BusTransferQuota=5&MinPrice=NaN&TourType=-1
 +
&CityIds=-1&TimeDepartureFrom=00%3A00&TimeDepartureTo=23%3A59&TimeArrivalFrom=00%3A00
 +
&TimeArrivalTo=23%3A59&ArrivalFlightNoTransfer=false&DepartureFlightNoTransfer=false
 +
</syntaxhighlight>
 +
Возвращаемый результат метода Tour (в формате JSON)
 +
<syntaxhighlight lang="java" enclose="div">
 +
{
 +
  "CheckMessages": null,
 +
  "Message":    {
 +
      "Key": 0,
 +
      "Value": null
 +
  },
 +
  "Result":    [
 +
            {
 +
        "Key": 100000004,
 +
        "Name": "Общая проверка системы",
 +
        "TourUrl": "www.megatec.ru",
 +
        "BookingConditions": "<p>Условия бронирования тура.<\/p>",
 +
        "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": 0,
 +
        "Services":          [
 +
                        {
 +
              "DepartureCity":                {
 +
                  "Key": 1,
 +
                  "Value": "Москва"
 +
              },
 +
              "DepartureCountry":                {
 +
                  "Key": 460,
 +
                  "Value": "Россия"
 +
              },
 +
              "ArrivalCity":                {
 +
                  "Key": 35,
 +
                  "Value": "Вена"
 +
              },
 +
              "ArrivalCountry":                {
 +
                  "Key": 90,
 +
                  "Value": "Австрия"
 +
              },
 +
              "DepartureAirport":                {
 +
                  "Key": "SVO4",
 +
                  "Value": "Шереметьево-24"
 +
              },
 +
              "ArrivalAirport":                {
 +
                  "Key": "VIE1",
 +
                  "Value": "Vena1"
 +
              },
 +
              "Airline":                {
 +
                  "Key": "BA7",
 +
                  "Value": "BRITISH  AIRWAYS"
 +
              },
 +
              "Aircraft":                {
 +
                  "Key": "319",
 +
                  "Value": "AIRBUS "
 +
              },
 +
              "Flight":                {
 +
                  "Key": 882,
 +
                  "Value": "4444"
 +
              },
 +
              "DepartureTime": "10:00:00",
 +
              "ArrivalTime": "12:00:00",
 +
              "EndDateTime": "2018-02-25T12:00:00",
 +
              "FlightDetails": [              {
 +
                  "Tariff":                  {
 +
                    "Key": 89,
 +
                    "Code": "Y",
 +
                    "Name": "Экономический класс"
 +
                  },
 +
                  "Cost": 10,
 +
                  "QuotaStatus":                  {
 +
                    "PlacesStatus": 4,
 +
                    "FreePlaces": 0,
 +
                    "IsFewPlaces": false
 +
                  },
 +
                  "PartnerId": 12668,
 +
                  "ByPax": true,
 +
                  "Partner":                  {
 +
                    "Key": 0,
 +
                    "Value": null
 +
                  }
 +
              }],
 +
              "FlightSetting":                {
 +
                  "ServiceId": 3,
 +
                  "PatternId": 13,
 +
                  "FlightId": 13
 +
              },
 +
              "FlightSourceMode": 1,
 +
              "Id": 3,
 +
              "SvKey": 1,
 +
              "IsSubCode1": true,
 +
              "IsSubCode2": false,
 +
              "IsPartnerBasedOn": false,
 +
              "Day": 1,
 +
              "DurationInNight": 0,
 +
              "BeginDateTime": "2018-02-25T10:00:00",
 +
              "IsHooded": false,
 +
              "IsDeleted": false,
 +
              "IsNotCalculate": false,
 +
              "PacketId": 779,
 +
              "Index": 0
 +
            },
 +
                        {
 +
              "Hotel":                {
 +
                  "Key": 709,
 +
                  "Value": "Am Brilliantengrund"
 +
              },
 +
              "City":                {
 +
                  "Key": 35,
 +
                  "Value": "Вена"
 +
              },
 +
              "Stars":                {
 +
                  "Key": -1,
 +
                  "Value": null
 +
              },
 +
              "Resort":                {
 +
                  "Key": -1,
 +
                  "Value": null
 +
              },
 +
              "ImageURL": "",
 +
              "Http": null,
 +
              "Description": "",
 +
              "Country":                {
 +
                  "Key": 90,
 +
                  "Value": "Австрия"
 +
              },
 +
              "HotelDetails": [              {
 +
                  "HotelRoom": 46463,
 +
                  "Room":                  {
 +
                    "Key": 129,
 +
                    "Value": "DBL"
 +
                  },
 +
                  "RoomCategory":                  {
 +
                    "Key": 3493,
 +
                    "Value": "Cosy"
 +
                  },
 +
                  "AccomodationType":                  {
 +
                    "Key": 1256,
 +
                    "Value": "2+1_K",
 +
                    "AdultCount": 2,
 +
                    "ChildCount": 1
 +
                  },
 +
                  "Pansion":                  {
 +
                    "Key": 4,
 +
                    "Value": "Завтрак"
 +
                  },
 +
                  "AbsolutePenalties": null,
 +
                  "Cost": 19.47,
 +
                  "QuotaStatus":                  {
 +
                    "PlacesStatus": 4,
 +
                    "FreePlaces": 0,
 +
                    "IsFewPlaces": false
 +
                  },
 +
                  "PartnerId": 12667,
 +
                  "ByPax": false,
 +
                  "Partner":                  {
 +
                    "Key": 12667,
 +
                    "Value": "Партнер-покупатель1"
 +
                  }
 +
              }],
 +
              "HotelTypes": [              {
 +
                  "Key": 5,
 +
                  "Value": "Рекомендуемые"
 +
              }],
 +
              "Id": 1,
 +
              "SvKey": 3,
 +
              "IsSubCode1": true,
 +
              "IsSubCode2": true,
 +
              "IsPartnerBasedOn": false,
 +
              "Day": 1,
 +
              "DurationInNight": 3,
 +
              "BeginDateTime": "2018-02-25T12:00:00",
 +
              "EndDateTime": "2018-02-28T12:00:00",
 +
              "IsHooded": false,
 +
              "IsDeleted": false,
 +
              "IsNotCalculate": false,
 +
              "PacketId": 779,
 +
              "Index": 1
 +
            },
 +
                        {
 +
              "DepartureCity":                {
 +
                  "Key": 35,
 +
                  "Value": "Вена"
 +
              },
 +
              "DepartureCountry":                {
 +
                  "Key": 90,
 +
                  "Value": "Австрия"
 +
              },
 +
              "ArrivalCity":                {
 +
                  "Key": 1,
 +
                  "Value": "Москва"
 +
              },
 +
              "ArrivalCountry":                {
 +
                  "Key": 460,
 +
                  "Value": "Россия"
 +
              },
 +
              "DepartureAirport":                {
 +
                  "Key": "VIE1",
 +
                  "Value": "Vena1"
 +
              },
 +
              "ArrivalAirport":                {
 +
                  "Key": "DME",
 +
                  "Value": "Домодедово"
 +
              },
 +
              "Airline":                {
 +
                  "Key": "7U",
 +
                  "Value": "Авиаэнерго"
 +
              },
 +
              "Aircraft":                {
 +
                  "Key": "727",
 +
                  "Value": "Boeing"
 +
              },
 +
              "Flight":                {
 +
                  "Key": 774,
 +
                  "Value": "222"
 +
              },
 +
              "DepartureTime": "00:00:00",
 +
              "ArrivalTime": "00:00:00",
 +
              "EndDateTime": "2018-02-28T00:00:00",
 +
              "FlightDetails": [              {
 +
                  "Tariff":                  {
 +
                    "Key": 89,
 +
                    "Code": "Y",
 +
                    "Name": "Экономический класс"
 +
                  },
 +
                  "Cost": 0,
 +
                  "QuotaStatus":                  {
 +
                    "PlacesStatus": 4,
 +
                    "FreePlaces": 0,
 +
                    "IsFewPlaces": false
 +
                  },
 +
                  "PartnerId": 10760,
 +
                  "ByPax": true,
 +
                  "Partner":                  {
 +
                    "Key": 0,
 +
                    "Value": null
 +
                  }
 +
              }],
 +
              "FlightSetting":                {
 +
                  "ServiceId": 4,
 +
                  "PatternId": 5,
 +
                  "FlightId": 4
 +
              },
 +
              "FlightSourceMode": 1,
 +
              "Id": 4,
 +
              "SvKey": 1,
 +
              "IsSubCode1": true,
 +
              "IsSubCode2": false,
 +
              "IsPartnerBasedOn": false,
 +
              "Day": 4,
 +
              "DurationInNight": 0,
 +
              "BeginDateTime": "2018-02-28T00:00:00",
 +
              "IsHooded": false,
 +
              "IsDeleted": false,
 +
              "IsNotCalculate": false,
 +
              "PacketId": 779,
 +
              "Index": 4
 +
            }
 +
        ],
 +
        "NotRouteServices":          [
 +
            [            {
 +
              "ServiceName": "страховка",
 +
              "City": null,
 +
              "Country":                {
 +
                  "Key": 90,
 +
                  "Value": "Австрия"
 +
              },
 +
              "Code":                {
 +
                  "Key": 297,
 +
                  "Value": "Страховка от несчастного случая"
 +
              },
 +
              "ByScheduler": false,
 +
              "Details": [              {
 +
                  "SubCode1":                  {
 +
                    "Key": 18,
 +
                    "Value": "2"
 +
                  },
 +
                  "SubCode2":                  {
 +
                    "Key": null,
 +
                    "Value": ""
 +
                  },
 +
                  "Date": null,
 +
                  "IsShowTransportPlan": true,
 +
                  "Cost": 16,
 +
                  "QuotaStatus":                  {
 +
                    "PlacesStatus": 1,
 +
                    "FreePlaces": 0,
 +
                    "IsFewPlaces": false
 +
                  },
 +
                  "PartnerId": 12668,
 +
                  "ByPax": true,
 +
                  "Partner":                  {
 +
                    "Key": 0,
 +
                    "Value": null
 +
                  }
 +
              }],
 +
              "ParentId": null,
 +
              "PartnerBasedOnServiceTemplateId": null,
 +
              "Id": 10,
 +
              "SvKey": 6,
 +
              "IsSubCode1": true,
 +
              "IsSubCode2": true,
 +
              "IsPartnerBasedOn": false,
 +
              "Day": 1,
 +
              "DurationInNight": 3,
 +
              "BeginDateTime": "2018-02-25T00:00:00",
 +
              "EndDateTime": "2018-02-28T00:00:00",
 +
              "IsHooded": false,
 +
              "IsDeleted": true,
 +
              "IsNotCalculate": true,
 +
              "PacketId": 882,
 +
              "Index": 2
 +
            }],
 +
            [            {
 +
              "ServiceName": "экскурсия",
 +
              "City":                {
 +
                  "Key": 1046,
 +
                  "Value": "Санто-Доминго"
 +
              },
 +
              "Country":                {
 +
                  "Key": 90,
 +
                  "Value": "Австрия"
 +
              },
 +
              "Code":                {
 +
                  "Key": 743,
 +
                  "Value": "4"
 +
              },
 +
              "ByScheduler": false,
 +
              "Details": [              {
 +
                  "SubCode1":                  {
 +
                    "Key": 37,
 +
                    "Value": "Мини-автобус 10 чел."
 +
                  },
 +
                  "SubCode2":                  {
 +
                    "Key": null,
 +
                    "Value": ""
 +
                  },
 +
                  "Date": null,
 +
                  "IsShowTransportPlan": false,
 +
                  "Cost": 85.22,
 +
                  "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-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
 +
              }
 +
            },
 +
                        {
 +
              "Key":                {
 +
                  "TemplateId": 1,
 +
                  "PatternId": 0,
 +
                  "SettingId": 0
 +
              },
 +
              "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
 +
            },
 +
            "checkPlusMinus1CharterRule":            {
 +
              "FlightSettingPairs": [],
 +
              "enabled": false
 +
            },
 +
            "notCombineDifferentTariffGroupRule":            {
 +
              "FlightSettings": [],
 +
              "enabled": true
 +
            },
 +
            "notCombineDifferentPartnerRule":            {
 +
              "FlightSettings": [],
 +
              "enabled": false
 +
            },
 +
            "departureCityEqualsArrivalCityRule":            {
 +
              "FlightSettingPairs": [],
 +
              "enabled": false
 +
            },
 +
            "combineOnlySpecificChartersRule":            {
 +
              "settings": [],
 +
              "enabled": false
 +
            }
 +
        },
 +
        "RouteSubVariants": [],
 +
        "Routes": 1,
 +
        "IsRemoteHotels": false,
 +
        "IsTourImages": false,
 +
        "MaskKeys": null
 +
      }
 +
  ],
 +
  "SecondaryFiltersResult":    {
 +
      "TourTypes": [      {
 +
        "Id": 2,
 +
        "Name": "Стандартный тур",
 +
        "ParentId": null,
 +
        "Type": "TourType"
 +
      }],
 +
      "TourPrograms":      [
 +
                      {
 +
            "Key": 100000004,
 +
            "Name": "Общая проверка системы",
 +
            "TourUrl": "www.megatec.ru",
 +
            "BookingConditions": "<p>Условия бронирования тура.<\/p>",
 +
            "IsLandOnly": false,
 +
            "IsRestrictMultiHotels": false,
 +
            "IsHotelTemplates": true,
 +
            "IsRouteServices": true,
 +
            "MultiHotelDelta": 0,
 +
            "Rate": "EU",
 +
            "DateStart": "2018-01-30T00:00:00Z",
 +
            "DateEnd": "2018-02-27T00:00:00Z",
 +
            "Status":            {
 +
              "Key": 3,
 +
              "Value": "Доступен для продажи"
 +
            },
 +
            "Templates":            [
 +
              {"$id": "5"},
 +
              {"$id": "6"},
 +
              {"$id": "7"},
 +
              {"$id": "8"},
 +
              {"$id": "9"}
 +
            ],
 +
            "Types": [            {
 +
              "Id": 2,
 +
              "Name": "Стандартный тур",
 +
              "ParentId": null,
 +
              "Type": "TourType"
 +
            }],
 +
            "LinkingFlightsRules":            {
 +
              "notCombineDifferentAirlineRule":                {
 +
                  "airlines": ["AY2"],
 +
                  "flightSettings": [],
 +
                  "enabled": true
 +
              },
 +
              "checkPlusMinus1CharterRule":                {
 +
                  "FlightSettingPairs": [],
 +
                  "enabled": false
 +
              },
 +
              "notCombineDifferentTariffGroupRule":                {
 +
                  "FlightSettings": [],
 +
                  "enabled": true
 +
              },
 +
              "notCombineDifferentPartnerRule":                {
 +
                  "FlightSettings": [],
 +
                  "enabled": false
 +
              },
 +
              "departureCityEqualsArrivalCityRule":                {
 +
                  "FlightSettingPairs": [],
 +
                  "enabled": false
 +
              },
 +
              "combineOnlySpecificChartersRule":                {
 +
                  "settings": [],
 +
                  "enabled": false
 +
              }
 +
            },
 +
            "Type": "TourProgram"
 +
        }
 +
      ],
 +
      "TourDurations": [4],
 +
      "TourDates": ["2018-02-25T00:00:00"],
 +
      "HotelCities": [      {
 +
        "key": 35,
 +
        "Country":          {
 +
            "key": 90,
 +
            "name": "Австрия",
 +
            "Code": "AUS",
 +
            "CitizenName": "Австрия",
 +
            "CitizenNameLat": "AUSTRIA",
 +
            "PassportMinDurCheckFrom": 0,
 +
            "CheckINN": false,
 +
            "PassportMinDur": null,
 +
            "INNName": "ИНН",
 +
            "Web": 1,
 +
            "WebImage": "/pics/animate/austria.gif",
 +
            "WebHTTP": "",
 +
            "AnkLang": 0,
 +
            "Type": "Country"
 +
        },
 +
        "name": "Вена",
 +
        "Code": "VIE",
 +
        "Web": 0,
 +
        "RSKey": 0,
 +
        "WebImage": null,
 +
        "IsDeparture": 1,
 +
        "Type": "City"
 +
      }],
 +
      "HotelResorts": [      {
 +
        "Key": -1,
 +
        "CountryKey": 0,
 +
        "Name": "Не указан",
 +
        "NameLat": null,
 +
        "Type": "Resort"
 +
      }],
 +
      "HotelCategories":      [
 +
                  {
 +
            "Key": 23,
 +
            "Name": "1*",
 +
            "PrintNumber": 1,
 +
            "Type": "HotelCatigory"
 +
        },
 +
                  {
 +
            "Key": 56,
 +
            "Name": "2*",
 +
            "PrintNumber": 2,
 +
            "Type": "HotelCatigory"
 +
        },
 +
                  {
 +
            "Key": 66,
 +
            "Name": "4*Boutique",
 +
            "PrintNumber": null,
 +
            "Type": "HotelCatigory"
 +
        }
 +
      ],
 +
      "Hotels":      [
 +
                  {
 +
            "Key": 705,
 +
            "Country":            {
 +
              "key": 90,
 +
              "name": "Австрия",
 +
              "Code": "AUS",
 +
              "CitizenName": "Австрия",
 +
              "CitizenNameLat": "AUSTRIA",
 +
              "PassportMinDurCheckFrom": 0,
 +
              "CheckINN": false,
 +
              "PassportMinDur": null,
 +
              "INNName": "ИНН",
 +
              "Web": 1,
 +
              "WebImage": "/pics/animate/austria.gif",
 +
              "WebHTTP": "",
 +
              "AnkLang": 0,
 +
              "Type": "Country"
 +
            },
 +
            "City":            {
 +
              "key": 35,
 +
              "Country":                {
 +
                  "key": 90,
 +
                  "name": "Австрия",
 +
                  "Code": "AUS",
 +
                  "CitizenName": "Австрия",
 +
                  "CitizenNameLat": "AUSTRIA",
 +
                  "PassportMinDurCheckFrom": 0,
 +
                  "CheckINN": false,
 +
                  "PassportMinDur": null,
 +
                  "INNName": "ИНН",
 +
                  "Web": 1,
 +
                  "WebImage": "/pics/animate/austria.gif",
 +
                  "WebHTTP": "",
 +
                  "AnkLang": 0,
 +
                  "Type": "Country"
 +
              },
 +
              "name": "Вена",
 +
              "Code": "VIE",
 +
              "Web": 0,
 +
              "RSKey": 0,
 +
              "WebImage": null,
 +
              "IsDeparture": 1,
 +
              "Type": "City"
 +
            },
 +
            "Resort": null,
 +
            "Name": "Continental",
 +
            "Category":            {
 +
              "Key": 23,
 +
              "Name": "1*",
 +
              "PrintNumber": 1,
 +
              "Type": "HotelCatigory"
 +
            },
 +
            "TimeFrom": null,
 +
            "TimeTo": null,
 +
            "HTTP": null,
 +
            "Stars": "1*",
 +
            "TimeIsEmpty": true,
 +
            "NameLat": "Continental",
 +
            "Address": null,
 +
            "IsCruise": 0,
 +
            "Phone": null,
 +
            "Code": null,
 +
            "Type": "Hotel"
 +
        },
 +
                  {
 +
            "Key": 178,
 +
            "Country":            {
 +
              "key": 90,
 +
              "name": "Австрия",
 +
              "Code": "AUS",
 +
              "CitizenName": "Австрия",
 +
              "CitizenNameLat": "AUSTRIA",
 +
              "PassportMinDurCheckFrom": 0,
 +
              "CheckINN": false,
 +
              "PassportMinDur": null,
 +
              "INNName": "ИНН",
 +
              "Web": 1,
 +
              "WebImage": "/pics/animate/austria.gif",
 +
              "WebHTTP": "",
 +
              "AnkLang": 0,
 +
              "Type": "Country"
 +
            },
 +
            "City":            {
 +
              "key": 35,
 +
              "Country":                {
 +
                  "key": 90,
 +
                  "name": "Австрия",
 +
                  "Code": "AUS",
 +
                  "CitizenName": "Австрия",
 +
                  "CitizenNameLat": "AUSTRIA",
 +
                  "PassportMinDurCheckFrom": 0,
 +
                  "CheckINN": false,
 +
                  "PassportMinDur": null,
 +
                  "INNName": "ИНН",
 +
                  "Web": 1,
 +
                  "WebImage": "/pics/animate/austria.gif",
 +
                  "WebHTTP": "",
 +
                  "AnkLang": 0,
 +
                  "Type": "Country"
 +
              },
 +
              "name": "Вена",
 +
              "Code": "VIE",
 +
              "Web": 0,
 +
              "RSKey": 0,
 +
              "WebImage": null,
 +
              "IsDeparture": 1,
 +
              "Type": "City"
 +
            },
 +
            "Resort": null,
 +
            "Name": "Ananas",
 +
            "Category":            {
 +
              "Key": 56,
 +
              "Name": "2*",
 +
              "PrintNumber": 2,
 +
              "Type": "HotelCatigory"
 +
            },
 +
            "TimeFrom": "1900-01-01T11:00:00",
 +
            "TimeTo": "1900-01-01T12:00:00",
 +
            "HTTP": "http://booking.panteon.ru/TourPrograms/Home/Tour/?tourKey=100000007",
 +
            "Stars": "2*",
 +
            "TimeIsEmpty": false,
 +
            "NameLat": "Ananas",
 +
            "Address": null,
 +
            "IsCruise": 0,
 +
            "Phone": "(+43/1) 546200",
 +
            "Code": null,
 +
            "Type": "Hotel"
 +
        },
 +
                  {
 +
            "Key": 707,
 +
            "Country":            {
 +
              "key": 90,
 +
              "name": "Австрия",
 +
              "Code": "AUS",
 +
              "CitizenName": "Австрия",
 +
              "CitizenNameLat": "AUSTRIA",
 +
              "PassportMinDurCheckFrom": 0,
 +
              "CheckINN": false,
 +
              "PassportMinDur": null,
 +
              "INNName": "ИНН",
 +
              "Web": 1,
 +
              "WebImage": "/pics/animate/austria.gif",
 +
              "WebHTTP": "",
 +
              "AnkLang": 0,
 +
              "Type": "Country"
 +
            },
 +
            "City":            {
 +
              "key": 35,
 +
              "Country":                {
 +
                  "key": 90,
 +
                  "name": "Австрия",
 +
                  "Code": "AUS",
 +
                  "CitizenName": "Австрия",
 +
                  "CitizenNameLat": "AUSTRIA",
 +
                  "PassportMinDurCheckFrom": 0,
 +
                  "CheckINN": false,
 +
                  "PassportMinDur": null,
 +
                  "INNName": "ИНН",
 +
                  "Web": 1,
 +
                  "WebImage": "/pics/animate/austria.gif",
 +
                  "WebHTTP": "",
 +
                  "AnkLang": 0,
 +
                  "Type": "Country"
 +
              },
 +
              "name": "Вена",
 +
              "Code": "VIE",
 +
              "Web": 0,
 +
              "RSKey": 0,
 +
              "WebImage": null,
 +
              "IsDeparture": 1,
 +
              "Type": "City"
 +
            },
 +
            "Resort": null,
 +
            "Name": "Beim Theresianum",
 +
            "Category":            {
 +
              "Key": 66,
 +
              "Name": "4*Boutique",
 +
              "PrintNumber": null,
 +
              "Type": "HotelCatigory"
 +
            },
 +
            "TimeFrom": null,
 +
            "TimeTo": null,
 +
            "HTTP": null,
 +
            "Stars": "4*Boutique",
 +
            "TimeIsEmpty": true,
 +
            "NameLat": "Beim Theresianum",
 +
            "Address": null,
 +
            "IsCruise": 0,
 +
            "Phone": null,
 +
            "Code": null,
 +
            "Type": "Hotel"
 +
        },
 +
                  {
 +
            "Key": 709,
 +
            "Country":            {
 +
              "key": 90,
 +
              "name": "Австрия",
 +
              "Code": "AUS",
 +
              "CitizenName": "Австрия",
 +
              "CitizenNameLat": "AUSTRIA",
 +
              "PassportMinDurCheckFrom": 0,
 +
              "CheckINN": false,
 +
              "PassportMinDur": null,
 +
              "INNName": "ИНН",
 +
              "Web": 1,
 +
              "WebImage": "/pics/animate/austria.gif",
 +
              "WebHTTP": "",
 +
              "AnkLang": 0,
 +
              "Type": "Country"
 +
            },
 +
            "City":            {
 +
              "key": 35,
 +
              "Country":                {
 +
                  "key": 90,
 +
                  "name": "Австрия",
 +
                  "Code": "AUS",
 +
                  "CitizenName": "Австрия",
 +
                  "CitizenNameLat": "AUSTRIA",
 +
                  "PassportMinDurCheckFrom": 0,
 +
                  "CheckINN": false,
 +
                  "PassportMinDur": null,
 +
                  "INNName": "ИНН",
 +
                  "Web": 1,
 +
                  "WebImage": "/pics/animate/austria.gif",
 +
                  "WebHTTP": "",
 +
                  "AnkLang": 0,
 +
                  "Type": "Country"
 +
              },
 +
              "name": "Вена",
 +
              "Code": "VIE",
 +
              "Web": 0,
 +
              "RSKey": 0,
 +
              "WebImage": null,
 +
              "IsDeparture": 1,
 +
              "Type": "City"
 +
            },
 +
            "Resort": null,
 +
            "Name": "Am Brilliantengrund",
 +
            "Category": null,
 +
            "TimeFrom": null,
 +
            "TimeTo": null,
 +
            "HTTP": null,
 +
            "Stars": "",
 +
            "TimeIsEmpty": true,
 +
            "NameLat": "Am Brilliantengrund",
 +
            "Address": null,
 +
            "IsCruise": 0,
 +
            "Phone": null,
 +
            "Code": null,
 +
            "Type": "Hotel"
 +
        }
 +
      ],
 +
      "Pansions":      [
 +
                  {
 +
            "Key": 46,
 +
            "Code": "RO",
 +
            "Name": "RO",
 +
            "NameLat": null,
 +
            "Type": "Pansion"
 +
        },
 +
                  {
 +
            "Key": 4,
 +
            "Code": "BB2",
 +
            "Name": "Завтрак",
 +
            "NameLat": null,
 +
            "Type": "Pansion"
 +
        },
 +
                  {
 +
            "Key": 2,
 +
            "Code": "HB",
 +
            "Name": "Полупансион",
 +
            "NameLat": null,
 +
            "Type": "Pansion"
 +
        }
 +
      ],
 +
      "Airlines":      [
 +
                  {
 +
            "Key": 8,
 +
            "Code": "BA7",
 +
            "Name": "BRITISH  AIRWAYS",
 +
            "NameLat": "en_BRITISH  AIRWAYS",
 +
            "Type": "AirLine"
 +
        },
 +
                  {
 +
            "Key": 3,
 +
            "Code": "7U",
 +
            "Name": "Авиаэнерго",
 +
            "NameLat": "en_Авиаэнерго",
 +
            "Type": "AirLine"
 +
        }
 +
      ],
 +
      "FlightTariffs": [      {
 +
        "Key": 89,
 +
        "Code": "Y",
 +
        "Name": "Экономический класс",
 +
        "NameLat": "Coach economy",
 +
        "Group": null,
 +
        "Type": "AirService"
 +
      }],
 +
      "DepartureCities": [      {
 +
        "key": 1,
 +
        "Country":          {
 +
            "key": 460,
 +
            "name": "Россия",
 +
            "Code": null,
 +
            "CitizenName": "Россия",
 +
            "CitizenNameLat": "Russia",
 +
            "PassportMinDurCheckFrom": 0,
 +
            "CheckINN": true,
 +
            "PassportMinDur": null,
 +
            "INNName": "ИНН",
 +
            "Web": 0,
 +
            "WebImage": "",
 +
            "WebHTTP": "",
 +
            "AnkLang": 0,
 +
            "Type": "Country"
 +
        },
 +
        "name": "Москва",
 +
        "Code": "MOW",
 +
        "Web": 0,
 +
        "RSKey": 0,
 +
        "WebImage": null,
 +
        "IsDeparture": 1,
 +
        "Type": "City"
 +
      }],
 +
      "DepartureAirports": [      {
 +
        "Key": 52,
 +
        "Code": "SVO4",
 +
        "Name": "Шереметьево-24",
 +
        "NameLat": "Шереметьево-",
 +
        "CityKey": 1,
 +
        "CountryKey": 460,
 +
        "Letter": "S",
 +
        "Site": 0,
 +
        "Type": "Airport"
 +
      }],
 +
      "ArrivalCities": [      {
 +
        "key": 1,
 +
        "Country":          {
 +
            "key": 460,
 +
            "name": "Россия",
 +
            "Code": null,
 +
            "CitizenName": "Россия",
 +
            "CitizenNameLat": "Russia",
 +
            "PassportMinDurCheckFrom": 0,
 +
            "CheckINN": true,
 +
            "PassportMinDur": null,
 +
            "INNName": "ИНН",
 +
            "Web": 0,
 +
            "WebImage": "",
 +
            "WebHTTP": "",
 +
            "AnkLang": 0,
 +
            "Type": "Country"
 +
        },
 +
        "name": "Москва",
 +
        "Code": "MOW",
 +
        "Web": 0,
 +
        "RSKey": 0,
 +
        "WebImage": null,
 +
        "IsDeparture": 1,
 +
        "Type": "City"
 +
      }],
 +
      "ArrivalAirports": [      {
 +
        "Key": 12,
 +
        "Code": "DME",
 +
        "Name": "Домодедово",
 +
        "NameLat": "Домодедово",
 +
        "CityKey": 1,
 +
        "CountryKey": 460,
 +
        "Letter": "D",
 +
        "Site": 0,
 +
        "Type": "Airport"
 +
      }],
 +
      "HotelTypes":      [
 +
                  {
 +
            "key": 94,
 +
            "name": "Молодежный отдых",
 +
            "Type": "HotelType"
 +
        },
 +
                  {
 +
            "key": 5,
 +
            "name": "Рекомендуемые",
 +
            "Type": "HotelType"
 +
        }
 +
      ]
 +
  }
 +
}
 +
</syntaxhighlight>
 +
</TD></TR></TABLE>
 +
</div></div><br />
 +
 
 +
* Детализация параметра 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 включительно===
 +
Метод производит выгрузку транспортного плана.
 +
* Формат запроса:
 +
** GET .../TourSearchOwin/TransportPlan?
 +
* Принимаемые параметры ( '''*''' – обязательный):
 +
** '''code''' – код услуги
 +
** '''dateBegin''' – дата услуги
 +
** '''serviceType''' – тип услуги
 +
** '''transportKey''' – ключ справочника транспорт
 +
 
 +
* Возвращаемый результат:
 +
** '''TransportKey''' – ключ справочника транспорт
 +
** '''Title''' – описание
 +
** '''AreasCount''' – количество уровней
 +
** '''RowsCount''' – количество рядов
 +
** '''ColumnsCount''' – количество мест в ряду
 +
** '''BusySeats''' – не используется
 +
** '''Cells''' – массив описаний всех мест
 +
*** '''Row''' – ряд
 +
*** '''Column''' – место в ряду
 +
*** '''Area''' – уровень места
 +
*** '''Type''' – тип (None = 0, Seat = 1, Block = 4, Busy = 5)
 +
*** '''Name''' – название/номер
 +
** '''UserSeats''' – не используется
 +
** '''BlockSeat''' – не используется
 +
 
 +
<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>
 +
Вызов метода TransportPlan
 +
<syntaxhighlight lang="java" enclose="div">
 +
GET http://localhost:9000/TourSearchOwin/TransportPlan?code=1311&dateBegin=17.04.2018&serviceType=14&transportKey=39
 +
</syntaxhighlight>
 +
Возвращаемый результат метода TransportPlan (в формате JSON)
 +
<syntaxhighlight lang="java" enclose="div">
 +
{
 +
"TransportKey": 39,
 +
"Title": "__",
 +
"AreasCount": 1,
 +
"RowsCount": 12,
 +
"ColumnsCount": 5,
 +
"BusySeats": [],
 +
"Cells": [{
 +
"Row": 5,
 +
"Column": 0,
 +
"Area": 0,
 +
"Type": 4,
 +
"Name": "21"
 +
},
 +
{
 +
"Row": 5,
 +
"Column": 1,
 +
"Area": 0,
 +
"Type": 1,
 +
"Name": "22"
 +
},
 +
{
 +
"Row": 5,
 +
"Column": 2,
 +
"Area": 0,
 +
"Type": 2,
 +
"Name": ""
 +
},
 +
{
 +
"Row": 5,
 +
"Column": 3,
 +
"Area": 0,
 +
"Type": 1,
 +
"Name": "23"
 +
},
 +
{
 +
"Row": 5,
 +
"Column": 4,
 +
"Area": 0,
 +
"Type": 1,
 +
"Name": "24"
 +
}],
 +
"UserSeats": {
 +
 +
},
 +
"BlockSeat": {
 +
 +
}
 +
}
 +
</syntaxhighlight>
 +
</TD></TR></TABLE>
 +
</div></div><br />
 +
 
 +
===Выгрузка транспортного плана (TransportPlan) начиная с релиза 15.8===
 +
Метод производит выгрузку транспортного плана.
 +
* Формат запроса:
 +
** GET .../TourSearchOwin/TransportPlan?
 +
* Принимаемые параметры ( '''*''' – обязательный):
 +
** '''code''' – код услуги
 +
** '''dateBegin''' – дата услуги
 +
** '''serviceType''' – тип услуги
 +
** '''transportKey''' – ключ справочника транспорт
 +
 
 +
* Возвращаемый результат:
 +
** '''VehiclePlans''' – массив параметров зон плана
 +
*** '''Key''' – ключ зоны
 +
*** '''TransportKey''' – ключ из справочника транспорт
 +
*** '''Row''' – количество рядов
 +
*** '''AreaNumber''' – номер уровня
 +
*** '''Name''' – название уровня
 +
*** '''PlanOrientation''' – ориентация плана (''false'' - горизонтальная, ''true'' - вертикальная)
 +
*** '''Column''' – количество столбцов
 +
*** '''IsAirCraft''' – является ли планом самолета (''false'' - нет, ''true'' - является)
 +
*** '''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)
 +
 
 +
<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>
 +
Вызов метода TransportPlan
 +
<syntaxhighlight lang="java" enclose="div">
 +
GET http://localhost:9000/TourSearchOwin/TransportPlan?code=1776&dateBegin=28.03.2022&serviceType=14&transportKey=35
 +
</syntaxhighlight>
 +
Возвращаемый результат метода TransportPlan (в формате JSON)
 +
<syntaxhighlight lang="java" enclose="div">
 +
{
 +
"VehiclePlans":
 +
[
 +
  {
 +
    "Key": 291,
 +
    "TransportKey": 35,
 +
    "Row": 2,
 +
    "AreaNumber": 1,
 +
    "Name": "Зона 1",
 +
    "PlanOrientation": false,
 +
    "Column": 3,
 +
    "IsAirCraft": false,
 +
    "Type": "VehiclePlans"
 +
  },
 +
  {
 +
    "Key": 292,
 +
    "TransportKey": 35,
 +
    "Row": 3,
 +
    "AreaNumber": 2,
 +
    "Name": "Зона 2",
 +
    "PlanOrientation": true,
 +
    "Column": 2,
 +
    "IsAirCraft": false,
 +
    "Type": "VehiclePlans"
 +
  }
 +
],
 +
"Seats":
 +
[
 +
  {
 +
    "Key": 332522,
 +
    "SeatType": 1,
 +
    "Index": 0,
 +
    "Number": "1",
 +
    "Type": "Seat",
 +
    "VPKey": 291,
 +
    "Border": "2002"
 +
  },
 +
  {
 +
    "Key": 332523,
 +
    "SeatType": 1,
 +
    "Index": 1,
 +
    "Number": "2",
 +
    "Type": "Seat",
 +
    "VPKey": 291,
 +
    "Border": "2100"
 +
  },
 +
  {
 +
    "Key": 332524,
 +
    "SeatType": 2,
 +
    "Index": 2,
 +
    "Number": "П",
 +
    "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="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=100001277
 +
</syntaxhighlight>
 +
Возвращаемый результат метода (в формате 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">
 +
{
 +
    "plan": {
 +
        "VehiclePlans": [
 +
            {
 +
                "Key": 10,
 +
                "TransportKey": 24,
 +
                "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": 411,
 +
                "SeatType": 1,
 +
                "Index": 5,
 +
                "Number": "5",
 +
                "Type": "Seat",
 +
                "VPKey": 10,
 +
                "Border": "0000"
 +
            },
 +
            {
 +
                "Key": 412,
 +
                "SeatType": 1,
 +
                "Index": 6,
 +
                "Number": "6",
 +
                "Type": "Seat",
 +
                "VPKey": 10,
 +
                "Border": "0000"
 +
            }
 +
        ]
 +
    },
 +
    "routeCity": "Москва - Казань"
 +
}
 +
</syntaxhighlight>
 +
</TD></TR></TABLE>
 +
</div></div><br />
 +
 
 +
===Выгрузка первоначального варианта в корзину для бронирования (Tour)===
 +
Метод поиска, который возвращает варианты только по данной турпрограмме и схеме отеля.
 +
* Формат запроса:
 +
** GET .../TourSearchOwin/Tour?
 
* Принимаемые параметры ( '''*''' – обязательный):
 
* Принимаемые параметры ( '''*''' – обязательный):
 
** '''DepartureCityKeys *''' – идентификатор города отправления (полученный из метода ''.../TourSearchOwin/departureCities?'')
 
** '''DepartureCityKeys *''' – идентификатор города отправления (полученный из метода ''.../TourSearchOwin/departureCities?'')
** '''Dates *''' – ??? как передать 2 даты? дата(ы) заезда (полученные из метода ''.../TourSearchOwin/TourDate?'')
+
** '''DestinationType *''' – тип результата (внутренний параметр, не изменяемый, всегда указывать значение = 1)
** '''Durations *''' – ??? как передать 2 продолжительности? продолжительности тура в днях (полученные из метода ''.../TourSearchOwin/Duration?'')
+
** '''DestinationKey *''' – идентификатор страны прибытия (полученный из метода ''.../TourSearchOwin/Destination?'')
** '''PageNumber *''' – ??? (возвращается 1)
+
** '''Dates *''' – массив дат заезда (полученные из метода ''.../TourSearchOwin/TourDate?''). Если параметры передаются через url, то каждое значение необходимо передавать отдельным параметром.
 +
** '''Durations *''' – массив продолжительностей (полученные из метода ''.../TourSearchOwin/Duration?''). Если параметры передаются через url, то каждое значение необходимо передавать отдельным параметром.
 +
** '''AdultCount *''' – количество взрослых
 +
** '''ChildAges''' – возраст детей. Если детей несколько, и параметры передаются через url, то каждое значение необходимо передавать отдельным параметром.
 +
** '''CurrencyName *''' – код валюты
 +
** '''HotelQuota *''' – информация о квотах на отель (значения параметров: ''"1"'' — фильтр "Есть", ''"5"'' — фильтр "Есть+запрос", ''"7"'' — фильтр "Все")
 +
** '''AviaQuota *''' – информация о квотах на авиаперелет (значения параметров: ''"1"'' — фильтр "Есть", ''"5"'' — фильтр "Есть+запрос", ''"7"'' — фильтр "Все")
 +
** '''BusTransferQuota''' – информация о квотах на автобусный переезд (значения параметров: ''"1"'' — фильтр "Есть", ''"5"'' — фильтр "Есть+запрос", ''"7"'' — фильтр "Все")
 +
** '''HotelScheme *''' – объект схемы отеля (при работе с авиабукингом передается конструкция такого вида ''HotelScheme=[{"TemplateId":"}]'')
 +
*** '''TemplateId''' – идентификатор шаблона услуги
 +
*** '''DurationInNight''' – продолжительность отеля в ночах
 +
*** '''Code''' – ключ отеля
 +
*** '''PacketKey''' – ключ пакета
 +
*** '''PartnerKey''' – ключ партнера
 +
*** '''GDSProviderId''' – ключ провайдера из внешней системы
 +
*** '''TotalTourDuration''' – общая продолжительность тура в днях, обрабатывается начиная с релиза 15.6, обязательный параметр. Изменения связаны с возможностью работы поиска в ночах проживания в отеле, для перехода в корзину необходимо знать общую продолжительность тура. Взять значение для параметра ''TotalTourDuration'' для HotelScheme можно из свойства ''Duration'', пришедшего для данной цены в ответе метода поиск туров (''Tour'')
 +
** '''PageNumber *''' – номер возвращаемой страницы (по умолчанию возвращается 1)
 
** '''PageSize *''' – количество возвращаемых результатов на одной странице (возвращается 20)
 
** '''PageSize *''' – количество возвращаемых результатов на одной странице (возвращается 20)
** '''HotelScheme''' – ??? (пустой по умолчанию)
+
** '''isFromBasket *''' – происходит ли обращение из корзины или из поиска туров (true/false).
** '''TourKey''' – ??? (пустой по умолчанию)
+
** '''isFillSecondaryFilters''' – заполнены ли дополнительные фильтры (по умолчанию всегда приходит true). Служебный внутренний параметр. При работе с API не используется.
** '''TourDuration''' – ? (пустой по умолчанию)
+
** '''TourKey''' – ключ программы тура
** '''isFromBasket''' – происходит ли обращение из корзины или из поиска туров (true/false)
+
** '''TourDuration''' – продолжительность тура в днях
** '''isFillSecondaryFilters''' – ??? (true/false)
+
** '''RemoteHotelMode''' – признак того, производится поиск только локальных отелей или и от внешних поставщиков тоже (только локальные отели 0, только внешние отели 2, локальные и внешние отели 1). Если признак отсутствует поиск будет только по локальным отелям. Обрабатывается начиная с релиза 15.4.
** '''DestinationType''' – ??? (1)
+
** '''nodeId''' – уникальный идентификатор узла в кластере балансировки нагрузки [[Мастер-Тур(15):Балансировщик нагрузки HaProxy|HaProxy]]
** '''DestinationKey''' – идентификатор страны прибытия (полученный из метода ''.../TourSearchOwin/Destination?'')
+
 
** '''AdultCount''' – количество взрослых
 
** '''ChildAges''' – возраст детей ??? (описать, как будут передаваться двое детей)
 
** '''CurrencyName''' – код валюты
 
** '''AviaQuota''' – информация о квотах на авиаперелет (5) ??? расписать что означает каждый из цифр
 
** '''HotelQuota''' информация о квотах на отель (5) ??? расписать что означает каждый из цифр
 
** '''BusTransferQuota''' информация о квотах на автобусный переезд (5) ??? расписать что означает каждый из цифр
 
** '''MinPrice''' минимальная цена ??? (NaN)
 
** '''TourType''' идентификатор типа тура (полученный из метода ''.../TourSearchOwin/ActualizeTourType?''), по умолчанию передается ''-1'', то есть все типы тура в рамках данной страны. Возможна множественная передача параметров.
 
** '''CityIds''' – идентификатор города прибытия (полученный из метода ''.../TourSearchOwin/ActualizeCities?''), по умолчанию передается ''-1'', то есть все города в рамках данной страны. Возможна множественная передача параметров.
 
** '''TimeDepartureFrom''' – время отправления с (всегда возвращается 00:00)
 
** '''TimeDepartureTo''' – время отправления по (всегда возвращается 23:59)
 
** '''TimeArrivalFrom''' – время прибытия с (всегда возвращается 00:00)
 
** '''TimeArrivalTo''' – время прибытия по (всегда возвращается 23:59)
 
** '''ArrivalFlightNoTransfer''' – ??? уточнить что означает
 
** '''DepartureFlightNoTransfer''' – ??? уточнить что означает
 
** '''wrongLicenseFileUpperTitle''' – ??? для локализации (убрать)
 
 
* Возвращаемый результат:
 
* Возвращаемый результат:
** массив продолжительностей
+
** '''CheckMessages''' – сообщения для логики проверки тура (не используется)
 +
** '''Message''' – сообщение об ошибке
 +
*** '''Key''' – код ошибки
 +
*** '''Value''' – сообщение об ошибке
 +
** '''Result''' – результаты поиска
 +
*** '''Key''' – идентификатор программы тура
 +
*** '''Name''' – название программы тура
 +
*** '''TourUrl''' – ссылка на программу тура
 +
*** '''BookingConditions''' – условия бронирования программы туров
 +
*** '''DefaultManagers''' – список выбранных менеджеров в туре
 +
*** '''Manager''' – ключ менеджера по умолчанию в туре
 +
*** '''Branches''' – список ключей филиалов бронирования
 +
*** '''DetermineTheBranchOnCity''' – признак, определять филиал в зависимости от города начала поездки
 +
*** '''IndividualFlightSelection''' – признак, включены ли индивидуальные настройки подбора перелетов
 +
*** '''RestrictionDateArrival''' – признак, ограничение даты прилета по базовому рейсу в индивидуальных настройках подбора перелетов
 +
*** '''PriceUpdateForView''' – признак обновления цен в индивидуальных настройках подбора перелетов (true – включен, false – выключен)
 +
*** '''SelectFlightAutomatically''' – признак выбирать рейс автоматически, если не выбран пользователем в индивидуальных настройках подбора перелетов
 +
*** '''BaggageSearchOtherFares''' – признак поиска багажа в других тарифах в индивидуальных настройках подбора перелетов
 +
*** '''Luggage''' – значение багажа в блоке настроек, влияющих на формирование запроса в индивидуальных настройках подбора перелетов (all – все, withLuggage – багаж и ручная кладь, withoutLuggage – без багажа)
 +
*** '''LuggageForView''' – значение багажа в блоке настроек, влияющих на отображение информации в индивидуальных настройках подбора перелетов (all – все, withLuggage – багаж и ручная кладь, withoutLuggage – без багажа)
 +
*** '''LuggageForPrice''' – значение багажа в блоке фильтров для обновления цен в индивидуальных настройках подбора перелетов (all – все, withLuggage – багаж и ручная кладь, withoutLuggage – без багажа)
 +
*** '''FlightClass''' – класс перелета в индивидуальных настройках подбора перелетов (economy – Эконом, premiumEconomy 2 Премиум-эконом, business – Бизнес, first – Первый)
 +
*** '''Directs''' – значение пересадок в блоке настроек, влияющих на формирование запроса в индивидуальных настройках подбора перелетов (all – все, onlyDirectFlights – только прямые рейсы)
 +
*** '''DirectsForView''' – значение пересадок в блоке влияющих на отображение информации в индивидуальных настройках подбора перелетов (all – все, без пересадок – withoutDirect, с 1 пересадкой – oneDirect, с 2 пересадками и более – twoOrMoreDirect)
 +
*** '''DirectsForPrice''' – значение пересадок в блоке фильтров для обновления цен в индивидуальных настройках подбора перелетов (all – все, без пересадок – withoutDirect, с 1 пересадкой – oneDirect, с 2 пересадками и более – twoOrMoreDirect)
 +
*** '''DepartureTimeLimit''' – ограничение времени вылета: «Вылет не позже» в формате hh:mm
 +
*** '''SortingForView''' – сортировка в индивидуальных настройках подбора перелетов (cheap – сначала дешевые, fast – сначала быстрые, optimal – оптимальные)
 +
*** '''StartDate''' – дата начала тура
 +
*** '''MaxConnectionTime''' – длительность пересадок в индивидуальных настройках подбора перелетов в формате hh:mm
 +
*** '''FullPaymentPeriod''' – полная оплата с даты бронирования (может быть null)
 +
*** '''FullPaymentCheckin''' – полная оплата до даты заезда (может быть null)
 +
*** '''PrePaymentPeriod''' – предоплата с даты бронирования (может быть null)
 +
*** '''PrePaymentCheckin''' – предоплата до даты заезда (может быть null)
 +
*** '''PrePaymentCu"''' – значение предоплаты в y.e. (может быть null)
 +
*** '''PrePaymentPercent''' – значение предоплаты в процентах (может быть null)
 +
*** '''Duration''' – продолжительность тура (в днях)
 +
*** '''DurationInNight''' – продолжительность проживания (в ночах)
 +
*** '''Types''' – идентификатор типа туров
 +
*** '''Price''' –  цена тура с учетом скидки в валюте поиска
 +
*** '''Cost''' – цена тура в валюте поиска
 +
*** '''Rate''' – код валюты тура
 +
*** '''Penalties''' – внутреннее поле, не используется
 +
*** '''StartDate''' – дата начала тура
 +
*** '''Duration''' – продолжительность тура (в днях)
 +
*** '''DurationInNight''' – продолжительность проживания (в ночах)
 +
*** '''Types''' – идентификатор типа туров
 +
*** '''Cost''' – цена тура
 +
*** '''Rate''' – код валюты тура
 +
*** '''CityDepature''' – город отправления
 +
**** '''Key''' – идентификатор города отправления
 +
**** '''Value''' – название города отправления
 +
*** '''CountryId''' – всегда возвращается ключ 0
 +
*** '''Services''' – услуги в туре
 +
**** '''DepartureCity''' – город отправления
 +
***** '''Key''' – идентификатор
 +
***** '''Value''' – название
 +
**** '''DepartureCountry''' – страна отправления
 +
***** '''Key''' – идентификатор
 +
***** '''Value''' – название
 +
**** '''ArrivalCity''' – город прибытия
 +
***** '''Key''' – идентификатор
 +
***** '''Value''' – название
 +
**** '''ArrivalCountry''' – страна прибытия
 +
***** '''Key''' – идентификатор
 +
***** '''Value''' – название
 +
**** '''DepartureAirport''' – аэропорт отправления
 +
***** '''Key''' – идентификатор
 +
***** '''Value''' – название
 +
**** '''ArrivalAirport''' – аэропорт прибытия
 +
***** '''Key''' – идентификатор
 +
***** '''Value''' – название
 +
**** '''Airline''' – авиакомпания
 +
***** '''Key''' – идентификатор
 +
***** '''Value''' – название
 +
**** '''Aircraft''' – воздушное судно
 +
***** '''Key''' – идентификатор
 +
***** '''Value''' – название
 +
**** '''Flight''' – рейс
 +
***** '''Key''' – идентификатор
 +
***** '''Value''' – название
 +
**** '''DepartureTime''' – время вылета
 +
**** '''ArrivalTime''' – время прилета
 +
**** '''EndDateTime''' – дата и время прилета
 +
**** '''FlightDetails''' – информация об авиаперелете
 +
***** '''Tariff''' – информация о тарифе перелета
 +
****** '''Key''' – идентификатор
 +
****** '''Code''' – код тарифа
 +
****** '''Name''' – название тарифа
 +
***** '''Cost''' – разница в стоимости с самым дешевым вариантом
 +
***** '''QuotaStatus''' – информация о квоте
 +
****** '''PlacesStatus''' – статус по квотам (есть места-1 / нет мест-2 / под запрос-4)
 +
****** '''FreePlaces''' – количество свободных мест, если удовлетворяются условия, заданные в настройке "Мало" и включена настройка "Отображать числовое значение оставшихся мест". Иначе возвращается 0. Если в данном параметре 0, то руководствоваться следует значением, полученном в параметре '''PlacesStatus'''.
 +
****** '''IsFewPlaces''' – выполнены ли условия, заданные в настройке "Мало": '''true''' – если заданы условия количества мест "Мало" и данные условия выполнены, '''false''' – если не заданы условия количества мест "Мало" или они заданы, но не выполнены.
 +
***** '''PartnerId''' – ключ партнера
 +
***** '''ByPax''' – цена за человека (true/false)
 +
***** '''Partner''' – информация о партнере
 +
****** '''Key''' – идентификатор
 +
****** '''Value''' – название
 +
**** '''FlightSetting''' – внутренняя информация о перелете из программы туров
 +
***** '''ServiceId''' – идентификатор класса услуги (внутренняя информация из программы туров)
 +
***** '''PatternId''' – идентификатор паттерна услуги (внутренняя информация из программы туров)
 +
***** '''FlightId''' – идентификатор перелета (внутренняя информация из программы туров)
 +
**** '''FlightSourceMode''' – локальный или внешний перелет (внутренняя информация из программы туров)
 +
**** '''Id''' – идентификатор базового шаблона услуги (внутренняя информация из программы туров)
 +
**** '''SvKey''' – ключ типа услуги
 +
**** '''IsSubCode1''' – признак наличия [[#Приложение 1: параметры услуги (ServiceType, Code, SubCode1, SubCode2)|доп. описания 1]]
 +
**** '''IsSubCode2''' – признак наличия [[#Приложение 1: параметры услуги (ServiceType, Code, SubCode1, SubCode2)|доп. описания 2]]
 +
**** '''IsPartnerBasedOn''' – признак услуга с приоритетным подбором поставщика
 +
**** '''Day''' – день предоставления услуги
 +
**** '''DurationInNight''' – продолжительность услуги в ночах
 +
**** '''BeginDateTime''' – дата предоставления услуги
 +
**** '''IsHooded''' – признак скрытая услуга
 +
**** '''IsDeleted''' – признак удаляемая услуга
 +
**** '''IsNotCalculate''' – признак не рассчитываемая услуга
 +
**** '''PacketId''' – ключ пакета
 +
**** '''Index''' – порядковый номер услуги
 +
*** '''NotRouteServices''' – массив коллекций немаршрутных услуг (например если две экскурсии будут являться одним элементом массива, то это будет говорить о том, что эти экскурсии можно будет выбрать в выпадающем списке)
 +
**** '''ServiceName''' – название типа услуги
 +
**** '''City''' – объект город
 +
***** '''Key''' – ключ города
 +
***** '''Value''' – название города
 +
**** '''Country''' – объект страна
 +
***** '''Key''' – ключ страны
 +
***** '''Value''' – название страны
 +
**** '''Code''' – объект код услуги
 +
***** '''Key''' – ключ услуги
 +
***** '''Value''' – название услуги
 +
**** '''ByScheduler''' – флаг услуга по расписанию или нет
 +
**** '''Details''' – объект детализация услуги
 +
***** '''SubCode1''' – объект [[#Приложение 1: параметры услуги (ServiceType, Code, SubCode1, SubCode2)|доп. описание 1]]
 +
****** '''Key''' – ключ доп. описания 1
 +
****** '''Value''' – название доп. описания 1
 +
***** '''SubCode2''' – объект [[#Приложение 1: параметры услуги (ServiceType, Code, SubCode1, SubCode2)|доп. описание 2]]
 +
****** '''Key''' – ключ доп. описания 2
 +
****** '''Value''' – название доп. описания 2
 +
***** '''Date''' – дата услуги
 +
***** '''IsShowTransportPlan''' – признак показывать ли план рассадки (для автобусов)
 +
***** '''Cost''' – цена
 +
***** '''QuotaStatus''' – объект информация по квотам
 +
****** '''PlacesStatus''' – статус по квотам (есть места-1 / нет мест-2 / под запрос-4)
 +
****** '''FreePlaces''' – количество свободных мест, если удовлетворяются условия, заданные в настройке "Мало" и включена настройка "Отображать числовое значение оставшихся мест". Иначе возвращается 0. Если в данном параметре 0, то руководствоваться следует значением, полученном в параметре '''PlacesStatus'''.
 +
****** '''IsFewPlaces''' – выполнены ли условия, заданные в настройке "Мало": '''true''' – если заданы условия количества мест "Мало" и данные условия выполнены, '''false''' – если не заданы условия количества мест "Мало" или они заданы, но не выполнены.
 +
***** '''PartnerId''' – идентификатор партнера
 +
***** '''ByPax''' – признак цены за человека
 +
***** '''Partner''' – объект партнер (не заполняется)
 +
****** '''Key''' – ключ (не заполняется)
 +
****** '''Value''' – название (не заполняется)
 +
**** '''ParentId''' – идентификатор родительской услуги (для вложенных услуг)
 +
**** '''PartnerBasedOnServiceTemplateId''' – ключ шаблона услуги, по которой приоритетно выбирается партнер текущей услуги
 +
**** '''Id''' – идентификатор услуги
 +
**** '''SvKey''' – ключ типа услуги
 +
**** '''IsSubCode1''' – наличие [[#Приложение 1: параметры услуги (ServiceType, Code, SubCode1, SubCode2)|доп. описания 1]]
 +
**** '''IsSubCode2''' – наличие [[#Приложение 1: параметры услуги (ServiceType, Code, SubCode1, SubCode2)|доп. описания 2]]
 +
**** '''IsPartnerBasedOn''' – услуга с подбором приоритетного поставщика услуги
 +
**** '''Day''' – день предоставления услуги
 +
**** '''DurationInNight''' – продолжительность услуги в ночах
 +
**** '''BeginDateTime''' – дата предоставления услуги
 +
**** '''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]]
  
http://dev1-22:9000/TourSearchOwin/Tour?DepartureCityKeys=312&Dates=25.02.2018&Dates=26.02.2018&Durations=9&Durations=10&PageNumber=1&PageSize=20&HotelScheme=&TourKey=&TourDuration=&isFromBasket=false&isFillSecondaryFilters=true&DestinationType=1&DestinationKey=90&AdultCount=2&ChildAges=2&ChildAges=4&CurrencyName=EU&AviaQuota=5&HotelQuota=5&BusTransferQuota=5&MinPrice=NaN&TourType=-1&CityIds=-1&TimeDepartureFrom=00%3A00&TimeDepartureTo=23%3A59&TimeArrivalFrom=00%3A00&TimeArrivalTo=23%3A59&ArrivalFlightNoTransfer=false&DepartureFlightNoTransfer=false&wrongLicenseFileUpperTitle=%D0%9D%D0%B5%D0%BA%D0%BE%D1%80%D1%80%D0%B5%D0%BA%D1%82%D0%BD%D1%8B%D0%B9+%D1%84%D0%B0%D0%B9%D0%BB+%D0%BB%D0%B8%D1%86%D0%B5%D0%BD%D0%B7%D0%B8%D0%B8.&_=1519198071922
 
  
http://dev1-22:9000/TourSearchOwin/Tour?DepartureCityKeys=312&Dates=25.02.2018&Dates=26.02.2018&Durations=9&Durations=10&PageNumber=1&PageSize=20&HotelScheme=&TourKey=&TourDuration=&isFromBasket=false&isFillSecondaryFilters=true&DestinationType=1&DestinationKey=90&AdultCount=2&ChildAges=2&ChildAges=4&CurrencyName=EU&AviaQuota=5&HotelQuota=5&BusTransferQuota=5&MinPrice=NaN&TourType=-1&CityIds=-1&TimeDepartureFrom=00%3A00&TimeDepartureTo=23%3A59&TimeArrivalFrom=00%3A00&TimeArrivalTo=23%3A59&ArrivalFlightNoTransfer=false&DepartureFlightNoTransfer=false&wrongLicenseFileUpperTitle=%D0%9D%D0%B5%D0%BA%D0%BE%D1%80%D1%80%D0%B5%D0%BA%D1%82%D0%BD%D1%8B%D0%B9+%D1%84%D0%B0%D0%B9%D0%BB+%D0%BB%D0%B8%D1%86%D0%B5%D0%BD%D0%B7%D0%B8%D0%B8.&_=1519198071922
+
<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,
 +
                  "Value": "Россия"
 +
              },
 +
              "ArrivalCity":                {
 +
                  "Key": 35,
 +
                  "Value": "Вена"
 +
              },
 +
              "ArrivalCountry":                {
 +
                  "Key": 90,
 +
                  "Value": "Австрия"
 +
              },
 +
              "DepartureAirport":                {
 +
                  "Key": "DME",
 +
                  "Value": "Домодедово"
 +
              },
 +
              "ArrivalAirport":                {
 +
                  "Key": "VIE1",
 +
                  "Value": "Vena1"
 +
              },
 +
              "Airline":                {
 +
                  "Key": "3G",
 +
                  "Value": "Атлант Союз_d;kgmdlfkgnfdlkhndlfkhnlkfnh"
 +
              },
 +
              "Aircraft":                {
 +
                  "Key": "319",
 +
                  "Value": "AIRBUS "
 +
              },
 +
              "Flight":                {
 +
                  "Key": 858,
 +
                  "Value": "1111"
 +
              },
 +
              "DepartureTime": "10:00:00",
 +
              "ArrivalTime": "11:59:00",
 +
              "EndDateTime": "2018-03-31T11:59:00",
 +
              "FlightDetails": [              {
 +
                  "Tariff":                  {
 +
                    "Key": 67,
 +
                    "Code": "C",
 +
                    "Name": "Бизнес класс"
 +
                  },
 +
                  "Cost": 6.45,
 +
                  "QuotaStatus":                  {
 +
                    "PlacesStatus": 4,
 +
                    "FreePlaces": 0,
 +
                    "IsFewPlaces": false
 +
                  },
 +
                  "PartnerId": 10760,
 +
                  "ByPax": true,
 +
                  "Partner":                  {
 +
                    "Key": 0,
 +
                    "Value": null
 +
                  }
 +
              }],
 +
              "FlightSetting":                {
 +
                  "ServiceId": 3,
 +
                  "PatternId": 14,
 +
                  "FlightId": 14
 +
              },
 +
              "FlightSourceMode": 1,
 +
              "Id": 3,
 +
              "SvKey": 1,
 +
              "IsSubCode1": true,
 +
              "IsSubCode2": false,
 +
              "IsPartnerBasedOn": false,
 +
              "Day": 1,
 +
              "DurationInNight": 0,
 +
              "BeginDateTime": "2018-03-31T10:00:00",
 +
              "IsHooded": false,
 +
              "IsDeleted": false,
 +
              "IsNotCalculate": false,
 +
              "PacketId": 779,
 +
              "Index": 0
 +
            },
 +
                        {
 +
              "Hotel":                {
 +
                  "Key": 707,
 +
                  "Value": "Beim Theresianum"
 +
              },
 +
              "City":                {
 +
                  "Key": 35,
 +
                  "Value": "Вена"
 +
              },
 +
              "Stars":                {
 +
                  "Key": 66,
 +
                  "Value": "4*Boutique"
 +
              },
 +
              "Resort":                {
 +
                  "Key": -1,
 +
                  "Value": null
 +
              },
 +
              "ImageURL": "",
 +
              "Http": null,
 +
              "Description": "",
 +
              "Country":                {
 +
                  "Key": 90,
 +
                  "Value": "Австрия"
 +
              },
 +
              "HotelDetails":                [
 +
                                    {
 +
                    "HotelRoom": 10468,
 +
                    "Room":                      {
 +
                        "Key": 2,
 +
                        "Value": "Double"
 +
                    },
 +
                    "RoomCategory":                      {
 +
                        "Key": 776,
 +
                        "Value": "Standart133"
 +
                    },
 +
                    "AccomodationType":                      {
 +
                        "Key": 328,
 +
                        "Value": "2Ad",
 +
                        "AdultCount": 2,
 +
                        "ChildCount": 0
 +
                    },
 +
                    "Pansion":                      {
 +
                        "Key": 4,
 +
                        "Value": "Завтрак"
 +
                    },
 +
                    "Cost": 112.96,
 +
                    "QuotaStatus":                      {
 +
                        "PlacesStatus": 4,
 +
                        "FreePlaces": 0,
 +
                        "IsFewPlaces": false
 +
                    },
 +
                    "PartnerId": 12667,
 +
                    "ByPax": false,
 +
                    "Partner":                      {
 +
                        "Key": 12667,
 +
                        "Value": "Партнер-покупатель1"
 +
                    }
 +
                  },
 +
                                    {
 +
                    "HotelRoom": 38636,
 +
                    "Room":                      {
 +
                        "Key": 2,
 +
                        "Value": "Double"
 +
                    },
 +
                    "RoomCategory":                      {
 +
                        "Key": 3764,
 +
                        "Value": "Standart Without window"
 +
                    },
 +
                    "AccomodationType":                      {
 +
                        "Key": 328,
 +
                        "Value": "2Ad",
 +
                        "AdultCount": 2,
 +
                        "ChildCount": 0
 +
                    },
 +
                    "Pansion":                      {
 +
                        "Key": 4,
 +
                        "Value": "Завтрак"
 +
                    },
 +
                    "Cost": 338.9,
 +
                    "QuotaStatus":                      {
 +
                        "PlacesStatus": 4,
 +
                        "FreePlaces": 0,
 +
                        "IsFewPlaces": false
 +
                    },
 +
                    "PartnerId": 12667,
 +
                    "ByPax": false,
 +
                    "Partner":                      {
 +
                        "Key": 12667,
 +
                        "Value": "Партнер-покупатель1"
 +
                    }
 +
                  }
 +
              ],
 +
              "HotelTypes": [],
 +
              "Id": 1,
 +
              "SvKey": 3,
 +
              "IsSubCode1": true,
 +
              "IsSubCode2": true,
 +
              "IsPartnerBasedOn": false,
 +
              "Day": 1,
 +
              "DurationInNight": 7,
 +
              "BeginDateTime": "2018-03-31T11:59:00",
 +
              "EndDateTime": "2018-04-07T11:59:00",
 +
              "IsHooded": false,
 +
              "IsDeleted": false,
 +
              "IsNotCalculate": false,
 +
              "PacketId": 779,
 +
              "Index": 1
 +
            },
 +
                        {
 +
              "DepartureCity":                {
 +
                  "Key": 35,
 +
                  "Value": "Вена"
 +
              },
 +
              "DepartureCountry":                {
 +
                  "Key": 90,
 +
                  "Value": "Австрия"
 +
              },
 +
              "ArrivalCity":                {
 +
                  "Key": 1,
 +
                  "Value": "Москва"
 +
              },
 +
              "ArrivalCountry":                {
 +
                  "Key": 460,
 +
                  "Value": "Россия"
 +
              },
 +
              "DepartureAirport":                {
 +
                  "Key": "VIE1",
 +
                  "Value": "Vena1"
 +
              },
 +
              "ArrivalAirport":                {
 +
                  "Key": "DME",
 +
                  "Value": "Домодедово"
 +
              },
 +
              "Airline":                {
 +
                  "Key": "7U",
 +
                  "Value": "Авиаэнерго"
 +
              },
 +
              "Aircraft":                {
 +
                  "Key": "727",
 +
                  "Value": "Boeing"
 +
              },
 +
              "Flight":                {
 +
                  "Key": 774,
 +
                  "Value": "222"
 +
              },
 +
              "DepartureTime": "00:00:00",
 +
              "ArrivalTime": "00:00:00",
 +
              "EndDateTime": "2018-04-07T00:00:00",
 +
              "FlightDetails": [              {
 +
                  "Tariff":                  {
 +
                    "Key": 67,
 +
                    "Code": "C",
 +
                    "Name": "Бизнес класс"
 +
                  },
 +
                  "Cost": 1.61,
 +
                  "QuotaStatus":                  {
 +
                    "PlacesStatus": 4,
 +
                    "FreePlaces": 0,
 +
                    "IsFewPlaces": false
 +
                  },
 +
                  "PartnerId": 10760,
 +
                  "ByPax": true,
 +
                  "Partner":                  {
 +
                    "Key": 0,
 +
                    "Value": null
 +
                  }
 +
              }],
 +
              "FlightSetting":                {
 +
                  "ServiceId": 4,
 +
                  "PatternId": 5,
 +
                  "FlightId": 4
 +
              },
 +
              "FlightSourceMode": 1,
 +
              "Id": 4,
 +
              "SvKey": 1,
 +
              "IsSubCode1": true,
 +
              "IsSubCode2": false,
 +
              "IsPartnerBasedOn": false,
 +
              "Day": 8,
 +
              "DurationInNight": 0,
 +
              "BeginDateTime": "2018-04-07T00:00:00",
 +
              "IsHooded": false,
 +
              "IsDeleted": false,
 +
              "IsNotCalculate": false,
 +
              "PacketId": 779,
 +
              "Index": 3
 +
            }
 +
        ],
 +
        "NotRouteServices": [        [
 +
                        {
 +
              "ServiceName": "экскурсия",
 +
              "City":                {
 +
                  "Key": 1046,
 +
                  "Value": "Санто-Доминго"
 +
              },
 +
              "Country": 6245,
 +
              "Code":                {
 +
                  "Key": 743,
 +
                  "Value": "4"
 +
              },
 +
              "ByScheduler": false,
 +
              "Details": [              {
 +
                  "SubCode1":                  {
 +
                    "Key": 37,
 +
                    "Value": "Мини-автобус 10 чел."
 +
                  },
 +
                  "SubCode2":                  {
 +
                    "Key": null,
 +
                    "Value": ""
 +
                  },
 +
                  "Date": null,
 +
                  "IsShowTransportPlan": false,
 +
                  "Cost": 56.48,
 +
                  "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
 +
            }
 +
        ]],
 +
        "MinCostServicesComposition":          [
 +
                        {
 +
              "Key":                {
 +
                  "TemplateId": 3,
 +
                  "PatternId": 14,
 +
                  "SettingId": 14
 +
              },
 +
              "Value":                {
 +
                  "ServiceType": 1,
 +
                  "Code": 858,
 +
                  "SubCode1": 67,
 +
                  "SubCode2": 1,
 +
                  "PacketId": 779,
 +
                  "PartnerId": 10760,
 +
                  "CountryId": 90,
 +
                  "CityId": 35,
 +
                  "Day": 1,
 +
                  "DurationInNight": 0
 +
              }
 +
            },
 +
                        {
 +
              "Key":                {
 +
                  "TemplateId": 1,
 +
                  "PatternId": 0,
 +
                  "SettingId": 0
 +
              },
 +
              "Value":                {
 +
                  "ServiceType": 3,
 +
                  "Code": 707,
 +
                  "SubCode1": 10468,
 +
                  "SubCode2": 4,
 +
                  "PacketId": 779,
 +
                  "PartnerId": 12667,
 +
                  "CountryId": 90,
 +
                  "CityId": 35,
 +
                  "Day": 1,
 +
                  "DurationInNight": 7
 +
              }
 +
            },
 +
                        {
 +
              "Key":                {
 +
                  "TemplateId": 4,
 +
                  "PatternId": 5,
 +
                  "SettingId": 4
 +
              },
 +
              "Value":                {
 +
                  "ServiceType": 1,
 +
                  "Code": 774,
 +
                  "SubCode1": 67,
 +
                  "SubCode2": 35,
 +
                  "PacketId": 779,
 +
                  "PartnerId": 10760,
 +
                  "CountryId": 460,
 +
                  "CityId": 1,
 +
                  "Day": 8,
 +
                  "DurationInNight": 0
 +
              }
 +
            }
 +
        ],
 +
        "FlightWeight": 2,
 +
        "LinkingFlightsRules":          {
 +
            "notCombineDifferentAirlineRule":            {
 +
              "airlines": ["AY2"],
 +
              "flightSettings": [],
 +
              "enabled": true
 +
            },
 +
            "checkPlusMinus1CharterRule":            {
 +
              "FlightSettingPairs": [],
 +
              "enabled": false
 +
            },
 +
            "notCombineDifferentTariffGroupRule":            {
 +
              "FlightSettings": [],
 +
              "enabled": true
 +
            },
 +
            "notCombineDifferentPartnerRule":            {
 +
              "FlightSettings": [],
 +
              "enabled": false
 +
            },
 +
            "departureCityEqualsArrivalCityRule":            {
 +
              "FlightSettingPairs": [],
 +
              "enabled": false
 +
            },
 +
            "combineOnlySpecificChartersRule":            {
 +
              "settings": [],
 +
              "enabled": false
 +
            }
 +
        },
 +
        "RouteSubVariants": []
 +
      }
 +
  ],
 +
  "SecondaryFiltersResult": null
 +
}
 +
</syntaxhighlight>
 +
</TD></TR></TABLE>
 +
</div></div><br />
 +
 
 +
===Выгрузка настройки отображения полей по туристам (TouristDataSettings)===
 +
Метод производит выгрузку настроек отображения полей по туристам.
 +
* Формат запроса:
 +
** GET .../TourSearchOwin/TouristDataSettings?
 +
* Принимаемые параметры ( '''*''' – обязательный):
 +
** '''countryId *''' – ключ страны, для которой будут выгружаться настройки
 +
** '''nodeId''' – уникальный идентификатор узла в кластере балансировки нагрузки [[Мастер-Тур(15):Балансировщик нагрузки HaProxy|HaProxy]]
 +
 
 +
* Возвращаемый результат:
 +
** '''TouristFieldsSettings''' – массив полей с информацией о туристах (из админки Мастер-Web)
 +
*** '''lastname''' – объект фамилия туриста (лат)
 +
**** '''Index''' – порядковый индекс элемента
 +
**** '''Code''' – код поля
 +
**** '''ApiCode''' – имя поля, которое будет использоваться при бронировании (например при вызове метода CreateReservation)
 +
**** '''HeaderText''' – название поля
 +
**** '''IsEdit''' – признак редактируемости поля
 +
**** '''IsRequired''' – признак обязательности заполнения поля
 +
**** '''IsVisible''' – видимость поля (видимое)
 +
**** '''IsDisabled''' – служебный внутренний параметр. При работе с API не используется
 +
**** '''Translit''' – настройки транслитерации (0 – нет, 1 – транслитерация, 2 – латиница)
 +
**** '''LetterCase''' – настройки регистра (0 – по умолчанию, 1 – с заглавной, 2 – большие, 3 – маленькие)
 +
*** '''patronymic''' – объект отчество туриста (лат)
 +
*** '''sex''' – объект пол туриста
 +
*** '''firstname''' – объект имя туриста (лат)
 +
*** '''passportbywhom''' – объект кем выдан заграничный паспорт
 +
*** '''birthplace''' – объект место рождения
 +
*** '''birthdate''' – объект дата рождения
 +
*** '''patronymicrus''' – объект отчество (рус)
 +
*** '''lastnamerus''' – объект фамилия туриста (рус)
 +
*** '''citizenid''' –  объект ID туриста
 +
*** '''passport''' – объект серия и номер заграничного паспорта
 +
*** '''passportrus''' – объект серия и номер национального паспорт а
 +
*** '''ismain''' – объект признак главного туриста
 +
*** '''passportdate''' – объект дата выдачи заграничного паспорта
 +
*** '''firstnamerus''' – объект имя туриста (рус)
 +
*** '''passportbywhomrus''' – объект кем выдан национальный паспорт
 +
*** '''citizenship''' – объект гражданство
 +
*** '''passportdaterus''' – объект дата выдачи национального паспорта
 +
*** '''phone''' – объект телефон
 +
*** '''number''' – объект порядковый номер
 +
*** '''passportdateend''' – объект дата окончания заграничного паспорта
 +
*** '''email''' – объект e-mail туриста
 +
** '''PassportDurationOfExpiry''' – объект минимальный срок действия загранпаспорта туриста
 +
*** '''StartPoint''' – точка отсчета
 +
*** '''Duration''' – минимальная продолжительность
 +
** '''ChildAgeSetting''' – максимальный возраст ребенка, когда он считается ребенком (лет)
 +
** '''InfantAgeSetting''' – максимальный возраст младенца (месяцев)
 +
** '''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>
 +
Вызов метода TouristDataSettings
 +
<syntaxhighlight lang="java" enclose="div">
 +
GET http://localhost:9000/TourSearchOwin/TouristDataSettings?countryId=90
 +
</syntaxhighlight>
 +
Возвращаемый результат метода TouristDataSettings (в формате JSON)
 +
<syntaxhighlight lang="java" enclose="div">
 +
{
 +
  "TouristFieldsSettings": {
 +
        "number": {
 +
            "Index": 0,
 +
            "Code": "number",
 +
            "ApiCode": "Number",
 +
            "HeaderText": "№",
 +
            "IsEdit": false,
 +
            "IsRequired": false,
 +
            "IsVisible": false,
 +
            "IsDisabled": false,
 +
            "Translit": 0,
 +
            "LetterCase": 0
 +
        },
 +
        "ismain": {
 +
            "Index": 1,
 +
            "Code": "ismain",
 +
            "ApiCode": "IsMain",
 +
            "HeaderText": "<img src=\"images/mw_main_tourist.gif\" border=\"0\" alt=\"Главный турист\" />",
 +
            "IsEdit": false,
 +
            "IsRequired": true,
 +
            "IsVisible": true,
 +
            "IsDisabled": true,
 +
            "Translit": 0,
 +
            "LetterCase": 0
 +
        },
 +
        "sex": {
 +
            "Index": 2,
 +
            "Code": "sex",
 +
            "ApiCode": "Sex",
 +
            "HeaderText": "Пол<font color=\"red\">*</font>",
 +
            "IsEdit": true,
 +
            "IsRequired": false,
 +
            "IsVisible": true,
 +
            "IsDisabled": false,
 +
            "Translit": 0,
 +
            "LetterCase": 0
 +
        },
 +
        "birthdate": {
 +
            "Index": 3,
 +
            "Code": "birthdate",
 +
            "ApiCode": "BirthDay",
 +
            "HeaderText": "Дата рождения<br />(dd.MM.yyyy)",
 +
            "IsEdit": false,
 +
            "IsRequired": false,
 +
            "IsVisible": true,
 +
            "IsDisabled": false,
 +
            "Translit": 0,
 +
            "LetterCase": 0
 +
        },
 +
        "birthplace": {
 +
            "Index": 4,
 +
            "Code": "birthplace",
 +
            "ApiCode": "BirthPlace",
 +
            "HeaderText": "Место рождения",
 +
            "IsEdit": false,
 +
            "IsRequired": false,
 +
            "IsVisible": false,
 +
            "IsDisabled": false,
 +
            "Translit": 0,
 +
            "LetterCase": 0
 +
        },
 +
        "citizenship": {
 +
            "Index": 5,
 +
            "Code": "citizenship",
 +
            "ApiCode": "Citizenship",
 +
            "HeaderText": "Гражданство",
 +
            "IsEdit": false,
 +
            "IsRequired": false,
 +
            "IsVisible": true,
 +
            "IsDisabled": false,
 +
            "Translit": 0,
 +
            "LetterCase": 0
 +
        },
 +
        "lastname": {
 +
            "Index": 6,
 +
            "Code": "lastname",
 +
            "ApiCode": "LastName",
 +
            "HeaderText": "Фамилия<font color=\"red\">*</font>",
 +
            "IsEdit": true,
 +
            "IsRequired": true,
 +
            "IsVisible": true,
 +
            "IsDisabled": false,
 +
            "Translit": 1,
 +
            "LetterCase": 2
 +
        },
 +
        "firstname": {
 +
            "Index": 7,
 +
            "Code": "firstname",
 +
            "ApiCode": "FirstName",
 +
            "HeaderText": "Имя<font color=\"red\">*</font>",
 +
            "IsEdit": true,
 +
            "IsRequired": true,
 +
            "IsVisible": true,
 +
            "IsDisabled": false,
 +
            "Translit": 1,
 +
            "LetterCase": 2
 +
        },
 +
        "patronymic": {
 +
            "Index": 8,
 +
            "Code": "patronymic",
 +
            "ApiCode": "Patronymic",
 +
            "HeaderText": "Отчество",
 +
            "IsEdit": false,
 +
            "IsRequired": false,
 +
            "IsVisible": false,
 +
            "IsDisabled": false,
 +
            "Translit": 1,
 +
            "LetterCase": 2
 +
        },
 +
        "passport": {
 +
            "Index": 9,
 +
            "Code": "passport",
 +
            "ApiCode": "InternationalPassportSeries/InternationalPassportNumber",
 +
            "HeaderText": "Загран-паспорт: Паспорт<br />(серия/номер)",
 +
            "IsEdit": false,
 +
            "IsRequired": false,
 +
            "IsVisible": true,
 +
            "IsDisabled": false,
 +
            "Translit": 1,
 +
            "LetterCase": 2
 +
        },
 +
        "passportdate": {
 +
            "Index": 10,
 +
            "Code": "passportdate",
 +
            "ApiCode": "InternationalPassportDateOfIssue",
 +
            "HeaderText": "Загран-паспорт: дата выдачи",
 +
            "IsEdit": false,
 +
            "IsRequired": false,
 +
            "IsVisible": false,
 +
            "IsDisabled": false,
 +
            "Translit": 0,
 +
            "LetterCase": 0
 +
        },
 +
        "passportdateend": {
 +
            "Index": 11,
 +
            "Code": "passportdateend",
 +
            "ApiCode": "InternationalPassportDateOfExpiry",
 +
            "HeaderText": "Действителен до<br />(dd.MM.yyyy)",
 +
            "IsEdit": false,
 +
            "IsRequired": false,
 +
            "IsVisible": true,
 +
            "IsDisabled": false,
 +
            "Translit": 0,
 +
            "LetterCase": 0
 +
        },
 +
        "passportbywhom": {
 +
            "Index": 12,
 +
            "Code": "passportbywhom",
 +
            "ApiCode": "internationalPassportByWhom",
 +
            "HeaderText": "Кем выдан",
 +
            "IsEdit": false,
 +
            "IsRequired": false,
 +
            "IsVisible": false,
 +
            "IsDisabled": false,
 +
            "Translit": 0,
 +
            "LetterCase": 0
 +
        },
 +
        "lastnamerus": {
 +
            "Index": 13,
 +
            "Code": "lastnamerus",
 +
            "ApiCode": "LastNameRus",
 +
            "HeaderText": "Нац. паспорт: Фамилия",
 +
            "IsEdit": false,
 +
            "IsRequired": false,
 +
            "IsVisible": false,
 +
            "IsDisabled": false,
 +
            "Translit": 0,
 +
            "LetterCase": 2
 +
        },
 +
        "firstnamerus": {
 +
            "Index": 14,
 +
            "Code": "firstnamerus",
 +
            "ApiCode": "FirstNameRus",
 +
            "HeaderText": "Нац. паспорт: Имя",
 +
            "IsEdit": false,
 +
            "IsRequired": false,
 +
            "IsVisible": false,
 +
            "IsDisabled": false,
 +
            "Translit": 0,
 +
            "LetterCase": 2
 +
        },
 +
        "patronymicrus": {
 +
            "Index": 15,
 +
            "Code": "patronymicrus",
 +
            "ApiCode": "PatronymicRus",
 +
            "HeaderText": "Нац. Отчество",
 +
            "IsEdit": false,
 +
            "IsRequired": false,
 +
            "IsVisible": false,
 +
            "IsDisabled": false,
 +
            "Translit": 0,
 +
            "LetterCase": 2
 +
        },
 +
        "passportrus": {
 +
            "Index": 16,
 +
            "Code": "passportrus",
 +
            "ApiCode": "PassportSeries/PassportNumber",
 +
            "HeaderText": "серия/номер",
 +
            "IsEdit": false,
 +
            "IsRequired": false,
 +
            "IsVisible": false,
 +
            "IsDisabled": false,
 +
            "Translit": 0,
 +
            "LetterCase": 0
 +
        },
 +
        "passportdaterus": {
 +
            "Index": 17,
 +
            "Code": "passportdaterus",
 +
            "ApiCode": "PassportDateOfIssue",
 +
            "HeaderText": "Нац. паспорт:дата выдачи",
 +
            "IsEdit": false,
 +
            "IsRequired": false,
 +
            "IsVisible": false,
 +
            "IsDisabled": false,
 +
            "Translit": 0,
 +
            "LetterCase": 0
 +
        },
 +
        "passportbywhomrus": {
 +
            "Index": 18,
 +
            "Code": "passportbywhomrus",
 +
            "ApiCode": "PassportByWhom",
 +
            "HeaderText": "Паспорт: кем выдан",
 +
            "IsEdit": false,
 +
            "IsRequired": false,
 +
            "IsVisible": false,
 +
            "IsDisabled": false,
 +
            "Translit": 0,
 +
            "LetterCase": 0
 +
        },
 +
        "phone": {
 +
            "Index": 19,
 +
            "Code": "phone",
 +
            "ApiCode": "Phone",
 +
            "HeaderText": "Телефон",
 +
            "IsEdit": false,
 +
            "IsRequired": false,
 +
            "IsVisible": true,
 +
            "IsDisabled": false,
 +
            "Translit": 0,
 +
            "LetterCase": 0
 +
        },
 +
        "email": {
 +
            "Index": 20,
 +
            "Code": "email",
 +
            "ApiCode": "Email",
 +
            "HeaderText": "Email",
 +
            "IsEdit": false,
 +
            "IsRequired": false,
 +
            "IsVisible": true,
 +
            "IsDisabled": false,
 +
            "Translit": 0,
 +
            "LetterCase": 0
 +
        },
 +
        "citizenid": {
 +
            "Index": 21,
 +
            "Code": "citizenid",
 +
            "ApiCode": "CitizenID",
 +
            "HeaderText": "ID туриста1",
 +
            "IsEdit": false,
 +
            "IsRequired": false,
 +
            "IsVisible": false,
 +
            "IsDisabled": false,
 +
            "Translit": 2,
 +
            "LetterCase": 2
 +
        }
 +
    },
 +
    "PassportDurationOfExpiry": {
 +
        "StartPoint": 0,
 +
        "Duration": 0
 +
    },
 +
    "ChildAgeSetting": 16,
 +
    "InfantAgeSetting": 24
 +
}
 +
</syntaxhighlight>
 +
</TD></TR></TABLE>
 +
</div></div><br />
 +
 
 +
===Выгрузка услуг доплат к авиаперелетам (GetFlightsAdditionalServices)===
 +
Метод производит выгрузку услуг доплат к авиаперелетам.
 +
* Формат запроса:
 +
** POST .../TourSearchOwin/GetFlightsAdditionalServices?nodeId=2147483647
 +
, где ''nodeId'' – уникальный идентификатор узла в кластере балансировки нагрузки [[Мастер-Тур(15):Балансировщик нагрузки HaProxy|HaProxy]]
 +
 
 +
* Принимаемые параметры headers ( '''*''' – обязательный):
 +
** '''Content-Type *''' – application/json
 +
 
 +
* Принимаемые параметры POST запроса ( '''*''' – обязательный):
 +
** '''TourProgramId''' – ключ турпрограммы
 +
** '''BeginDate''' – дата начала тура
 +
** '''Duration''' – продолжительность тура
 +
** '''Currency''' – код валюты
 +
** '''Services''' – массив услуг авиаперелетов для получения доплат
 +
*** '''Service''' – объект услуга авиаперелет
 +
**** '''ServiceType''' – тип услуги
 +
**** '''Code''' – код услуги
 +
**** '''SubCode1''' – [[#Приложение 1: параметры услуги (ServiceType, Code, SubCode1, SubCode2)|доп. описание 1]] услуги
 +
**** '''SubCode2''' – [[#Приложение 1: параметры услуги (ServiceType, Code, SubCode1, SubCode2)|доп. описание 2]] услуги
 +
**** '''Packet''' – ключ пакета услуги
 +
**** '''Partner''' – ключ партнера услуги
 +
**** '''Day''' – день предоставления услуги
 +
**** '''DurationInNight''' – продолжительность услуги в ночах
 +
**** '''City''' – ключ города
 +
**** '''Country''' – страна услуги
 +
**** '''Attributes''' – битовая маска атрибутов услуг
 +
**** '''IsRemovable''' – (не обрабатывается)
 +
**** '''Type''' – тип услуги в путевке (базовая дополнительная)
 +
**** '''IsHooded''' – признак скрытая услуга
 +
**** '''IsNotCalculated''' – признак не рассчитываемая услуга
 +
**** '''BeginDateTimeString''' – дата и время начала услуги
 +
**** '''EndDateTimeString''' – дата и время окончания услуги
 +
**** '''TemplateId''' – шаблон услуги
 +
**** '''Cost''' – цена услуги
 +
**** '''ByPax''' – цена за человека
 +
**** '''QuotaStatus''' – объект статус квотирования
 +
***** '''PlacesStatus''' – статус по квотам (есть места-1 / нет мест-2 / под запрос-4)
 +
***** '''FreePlaces''' – количество свободных мест, если удовлетворяются условия, заданные в настройке "Мало" и включена настройка "Отображать числовое значение оставшихся мест". Иначе возвращается 0. Если в данном параметре 0, то руководствоваться следует значением, полученном в параметре '''PlacesStatus'''.
 +
***** '''IsFewPlaces''' – выполнены ли условия, заданные в настройке "Мало": '''true''' – если заданы условия количества мест "Мало" и данные условия выполнены, '''false''' – если не заданы условия количества мест "Мало" или они заданы, но не выполнены.
 +
**** '''Index''' – индекс услуги
 +
**** '''IsRoute''' – признак маршрутная услуга
 +
**** '''ServiceTemplateIndex''' – индекс шаблона услуги
 +
*** '''TouristNumbersList''' – массив туристов, привязанных к услуге
 +
** '''Tourists''' – массив туристов
 +
*** '''IsMain''' – главный турист
 +
*** '''Number''' – порядковый номер туриста
 +
*** '''AgeType''' – тип туриста (0 – взрослый, 1 – ребенок, 2 – инфант)
 +
*** '''MaleFemaleSex''' – пол (0 – мужской, 1 – женский)
 +
*** '''FirstName''' – имя (лат)
 +
*** '''LastName''' – фамилия (лат)
 +
*** '''Patronymic''' – отчество (лат)
 +
*** '''FirstNameRus''' – имя (рус)
 +
*** '''LastNameRus''' – фамилия (рус)
 +
*** '''PatronymicRus''' – отчество (рус)
 +
*** '''InternationalPassportSeries''' – серия загранпаспорта
 +
*** '''InternationalPassportNumber''' – номер загранпаспорта
 +
*** '''InternationalPassportDateOfIssue''' – дата выдачи загранпаспорта (YYYY-MM-DDThh:mm:ssz)
 +
*** '''InternationalPassportDateOfIssueString''' – дата выдачи загранпаспорта в строковом формате (DD.MM.YYYY)
 +
*** '''InternationalPassportDateOfExpiry''' – дата окончания действия загранпаспорта (YYYY-MM-DDThh:mm:ssz)
 +
*** '''InternationalPassportDateOfExpiryString''' – дата окончания действия загранпаспорта в строковом формате (DD.MM.YYYY)
 +
*** '''internationalPassportByWhom''' – кем выдан загранпаспорт
 +
*** '''PassportSeries''' – серия паспорта
 +
*** '''PassportNumber''' – номер паспорта
 +
*** '''PassportDateOfIssue''' – дата выдачи паспорта (YYYY-MM-DDThh:mm:ssz)
 +
*** '''PassportDateOfIssueString''' – дата выдачи паспорта в строковом формате (DD.MM.YYYY)
 +
*** '''PassportByWhom''' – кем выдан паспорт
 +
*** '''Citizenship''' – название страны
 +
*** '''Phone''' – телефон
 +
*** '''Email''' – e-mail
 +
*** '''BirthDay''' – дата рождения (YYYY-MM-DDThh:mm:ssz)
 +
*** '''BirthDayString''' – дата рождения в строковом формате (DD.MM.YYYY)
 +
*** '''BirthPlace''' – место рождения
 +
*** '''CitizenID''' – гражданство
 +
*** '''Age''' – количество полных лет на момент окончания тура
 +
 
 +
* Возвращаемый результат:
 +
** '''Массив''' – массив объектов доплат к авиаперелетам
 +
*** '''ServiceName''' – название услуги
 +
*** '''City''' – объект город
 +
*** '''Country''' – объект страна
 +
**** '''Key''' – ключ страны
 +
**** '''Value''' – название страны
 +
*** '''Code''' – объект код услуги
 +
**** '''Key''' – ключ услуги
 +
**** '''Value''' – название услуги
 +
*** '''ByScheduler''' – признак по расписанию
 +
*** '''Details''' - объект детализация
 +
**** '''SubCode1''' – объект [[#Приложение 1: параметры услуги (ServiceType, Code, SubCode1, SubCode2)|доп. описание 1]]
 +
***** '''Key''' – ключ
 +
***** '''Value''' – название
 +
**** '''SubCode2''' – объект [[#Приложение 1: параметры услуги (ServiceType, Code, SubCode1, SubCode2)|доп. описание 2]]
 +
***** '''Key''' – ключ
 +
***** '''Value''' – название
 +
**** '''Date''' – дата услуги
 +
**** '''IsShowTransportPlan''' – признак показать транспортный план (для автобусов)
 +
**** '''Cost''' – цена
 +
**** '''QuotaStatus''' – объект статус квотирования
 +
***** '''PlacesStatus''' – статус по квотам (есть места-1 / нет мест-2 / под запрос-4)
 +
***** '''FreePlaces''' – количество свободных мест, если удовлетворяются условия, заданные в настройке "Мало" и включена настройка "Отображать числовое значение оставшихся мест". Иначе возвращается 0. Если в данном параметре 0, то руководствоваться следует значением, полученном в параметре '''PlacesStatus'''.
 +
***** '''IsFewPlaces''' – выполнены ли условия, заданные в настройке "Мало": '''true''' – если заданы условия количества мест "Мало" и данные условия выполнены, '''false''' – если не заданы условия количества мест "Мало" или они заданы, но не выполнены.
 +
**** '''PartnerId''' – ключ партнера
 +
**** '''ByPax''' – признак за человека
 +
**** '''Partner''' – объект партнер (не заполняется)
 +
***** '''Key''' – ключ (не заполняется)
 +
***** '''Value''' – название (не заполняется)
 +
*** '''ParentId''' – ключ родительской услуги
 +
*** '''PartnerBasedOnServiceTemplateId''' – шаблон услуги для подбора поставщика
 +
*** '''ShowOrder''' – порядок при печати (сортировка) по услуге
 +
*** '''ShowOrderAddDescript1''' – порядок при печати (сортировка) по доп. описанию 1
 +
*** '''ShowOrderAddDescript2''' – порядок при печати (сортировка) по доп. описанию 2
 +
*** '''Id''' – идентификатор услуги
 +
*** '''SvKey''' – тип услуги
 +
*** '''IsSubCode1''' – признак наличия [[#Приложение 1: параметры услуги (ServiceType, Code, SubCode1, SubCode2)|доп. описания 1]]
 +
*** '''IsSubCode2''' – признак наличия [[#Приложение 1: параметры услуги (ServiceType, Code, SubCode1, SubCode2)|доп. описания 2]]
 +
*** '''IsPartnerBasedOn''' – признак услуга с приоритетным подбором поставщика
 +
*** '''Day''' – день предоставления услуги
 +
*** '''DurationInNight''' – продолжительность услуги в ночах
 +
*** '''BeginDateTime''' – дата начала услуги
 +
*** '''EndDateTime''' – дата окончания
 +
*** '''IsHooded''' – признак скрытая
 +
*** '''IsDeleted''' – признак удаляемая
 +
*** '''IsNotCalculate''' – признак не рассчитываемая
 +
*** '''PacketId''' – ключ пакета
 +
*** '''Index''' – индекс шаблона услуги
  
 
<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
+
Вызов метода GetHotelsAdditionalServices
 +
<syntaxhighlight lang="java" enclose="div">
 +
POST http://localhost:9000/TourSearchOwin/GetFlightsAdditionalServices?nodeId=2147483647 HTTP/1.1
 +
Content-Type: application/json
 +
{
 +
"TourProgramId": 100003404,
 +
"BeginDate": "2018-04-16T00:00:00",
 +
"Duration": 8,
 +
"Currency": "EU",
 +
"Services": [{
 +
"Service": {
 +
"ServiceType": 1,
 +
"Code": 858,
 +
"SubCode1": 67,
 +
"SubCode2": 1,
 +
"Packet": 779,
 +
"Partner": 10760,
 +
"Day": 1,
 +
"DurationInNight": 0,
 +
"City": 35,
 +
"Country": 90,
 +
"Attributes": 0,
 +
"IsRemovable": false,
 +
"Type": 1,
 +
"IsHooded": false,
 +
"IsNotCalculated": false,
 +
"BeginDateTimeString": "2018-04-16T10:00:00",
 +
"EndDateTimeString": "2018-04-16T11:59:00",
 +
"TemplateId": 3,
 +
"Cost": 6,
 +
"ByPax": true,
 +
"QuotaStatus": {
 +
"PlacesStatus": 4,
 +
"FreePlaces": 0,
 +
"IsFewPlaces": false
 +
},
 +
"Index": 0,
 +
"IsRoute": true,
 +
"ServiceTemplateIndex": 0
 +
},
 +
"TouristNumbersList": [1,
 +
2]
 +
},
 +
{
 +
"Service": {
 +
"ServiceType": 1,
 +
"Code": 774,
 +
"SubCode1": 67,
 +
"SubCode2": 35,
 +
"Packet": 779,
 +
"Partner": 10760,
 +
"Day": 8,
 +
"DurationInNight": 0,
 +
"City": 1,
 +
"Country": 460,
 +
"Attributes": 0,
 +
"IsRemovable": false,
 +
"Type": 1,
 +
"IsHooded": false,
 +
"IsNotCalculated": false,
 +
"BeginDateTimeString": "2018-04-23T00:00:00",
 +
"EndDateTimeString": "2018-04-23T00:00:00",
 +
"TemplateId": 4,
 +
"Cost": 2,
 +
"ByPax": true,
 +
"QuotaStatus": {
 +
"PlacesStatus": 4,
 +
"FreePlaces": 0,
 +
"IsFewPlaces": false
 +
},
 +
"Index": 3,
 +
"IsRoute": true,
 +
"ServiceTemplateIndex": 3
 +
},
 +
"TouristNumbersList": [1,
 +
2]
 +
}],
 +
"Tourists": [{
 +
"IsMain": true,
 +
"Number": 1,
 +
"AgeType": 0,
 +
"MaleFemaleSex": 0,
 +
"FirstName": "",
 +
"LastName": "",
 +
"Patronymic": "",
 +
"FirstNameRus": "",
 +
"LastNameRus": "",
 +
"PatronymicRus": "",
 +
"InternationalPassportSeries": "",
 +
"InternationalPassportNumber": "",
 +
"InternationalPassportDateOfIssue": "",
 +
"InternationalPassportDateOfIssueString": "",
 +
"InternationalPassportDateOfExpiry": "",
 +
"InternationalPassportDateOfExpiryString": "",
 +
"internationalPassportByWhom": "",
 +
"PassportSeries": "",
 +
"PassportNumber": "",
 +
"PassportDateOfIssue": "",
 +
"PassportDateOfIssueString": "",
 +
"PassportByWhom": "",
 +
"Citizenship": "",
 +
"Phone": "",
 +
"Email": "",
 +
"BirthDay": null,
 +
"BirthDayString": "",
 +
"BirthPlace": "",
 +
"CitizenID": "",
 +
                "Age": null
 +
},
 +
{
 +
"IsMain": false,
 +
"Number": 2,
 +
"AgeType": 0,
 +
"MaleFemaleSex": 0,
 +
"FirstName": "",
 +
"LastName": "",
 +
"Patronymic": "",
 +
"FirstNameRus": "",
 +
"LastNameRus": "",
 +
"PatronymicRus": "",
 +
"InternationalPassportSeries": "",
 +
"InternationalPassportNumber": "",
 +
"InternationalPassportDateOfIssue": "",
 +
"InternationalPassportDateOfIssueString": "",
 +
"InternationalPassportDateOfExpiry": "",
 +
"InternationalPassportDateOfExpiryString": "",
 +
"internationalPassportByWhom": "",
 +
"PassportSeries": "",
 +
"PassportNumber": "",
 +
"PassportDateOfIssue": "",
 +
"PassportDateOfIssueString": "",
 +
"PassportByWhom": "",
 +
"Citizenship": "",
 +
"Phone": "",
 +
"Email": "",
 +
"BirthDay": null,
 +
"BirthDayString": "",
 +
"BirthPlace": "",
 +
"CitizenID": "",
 +
                "Age": null
 +
}]
 +
}
 +
</syntaxhighlight>
 +
Возвращаемый результат метода GetFlightsAdditionalServices (в формате JSON)
 +
<syntaxhighlight lang="java" enclose="div">
 +
[{
 +
"ServiceName": "Доплаты к авиаперелетам",
 +
"City": null,
 +
        "Country":                {
 +
                  "Key": 90,
 +
                  "Value": "Австрия"
 +
},
 +
"Code": {
 +
"Key": 357,
 +
"Value": "Топливный сбор"
 +
},
 +
"ByScheduler": false,
 +
"Details": [{
 +
"SubCode1": {
 +
"Key": 41,
 +
"Value": "3G1111 DME-VIE1 ()"
 +
},
 +
"SubCode2": {
 +
"Key": null,
 +
"Value": ""
 +
},
 +
"Date": "2018-04-16T10:00:00",
 +
"IsShowTransportPlan": false,
 +
"Cost": 24,
 +
"QuotaStatus": {
 +
"PlacesStatus": 0,
 +
"FreePlaces": 0,
 +
"IsFewPlaces": false
 +
},
 +
"PartnerId": 10760,
 +
"ByPax": false,
 +
"Partner": {
 +
"Key": 0,
 +
"Value": null
 +
}
 +
}],
 +
"ParentId": null,
 +
"PartnerBasedOnServiceTemplateId": null,
 +
"ShowOrder": 0,
 +
"ShowOrderAddDescript1": 0,
 +
"ShowOrderAddDescript2": 0,
 +
"Id": -1,
 +
"SvKey": 12,
 +
"IsSubCode1": false,
 +
"IsSubCode2": false,
 +
"IsPartnerBasedOn": false,
 +
"Day": 1,
 +
"DurationInNight": 0,
 +
"BeginDateTime": "2018-04-16T10:00:00",
 +
"EndDateTime": "0001-01-01T00:00:00",
 +
"IsHooded": false,
 +
"IsDeleted": false,
 +
"IsNotCalculate": true,
 +
"PacketId": 777,
 +
"Index": 0
 +
}]
 +
</syntaxhighlight>
 +
</TD></TR></TABLE>
 +
</div></div><br />
 +
 
 +
===Выгрузка услуг доплат к отелям (GetHotelsAdditionalServices)===
 +
Метод производит выгрузку услуг доплат к отелям.
 +
* Формат запроса:
 +
** POST .../TourSearchOwin/GetHotelsAdditionalServices?nodeId=2147483647
 +
, где ''nodeId'' – уникальный идентификатор узла в кластере балансировки нагрузки [[Мастер-Тур(15):Балансировщик нагрузки HaProxy|HaProxy]]
 +
 
 +
* Принимаемые параметры headers ( '''*''' – обязательный):
 +
** '''Content-Type *''' – application/json
 +
 
 +
* Принимаемые параметры POST запроса ( '''*''' – обязательный):
 +
** '''TourProgramId''' – ключ турпрограммы
 +
** '''BeginDate''' – дата начала тура
 +
** '''Duration''' – продолжительность тура
 +
** '''Currency''' – код валюты
 +
** '''Services''' – массив услуг отелей для получения доплат
 +
*** '''Service''' – объект услуга отель
 +
**** '''ServiceType''' – тип услуги
 +
**** '''Code''' – код услуги
 +
**** '''SubCode1''' – [[#Приложение 1: параметры услуги (ServiceType, Code, SubCode1, SubCode2)|доп. описание 1]] услуги
 +
**** '''SubCode2''' – [[#Приложение 1: параметры услуги (ServiceType, Code, SubCode1, SubCode2)|доп. описание 2]] услуги
 +
**** '''Packet''' – ключ пакета услуги
 +
**** '''Partner''' – ключ партнера услуги
 +
**** '''Day''' – день предоставления услуги
 +
**** '''DurationInNight''' – продолжительность услуги в ночах
 +
**** '''City''' – ключ города
 +
**** '''Country''' – страна услуги
 +
**** '''Attributes''' – битовая маска атрибутов услуг
 +
**** '''IsRemovable''' – (не обрабатывается)
 +
**** '''Type''' – тип услуги в путевке (базовая дополнительная)
 +
**** '''IsHooded''' – признак скрытая услуга
 +
**** '''IsNotCalculated''' – признак не рассчитываемая услуга
 +
**** '''BeginDateTimeString''' – дата и время начала услуги (YYYY-MM-DDThh:mm:ss)
 +
**** '''EndDateTimeString''' – дата и время окончания услуги (YYYY-MM-DDThh:mm:ss)
 +
**** '''TemplateId''' – шаблон услуги
 +
**** '''Cost''' – цена услуги
 +
**** '''ByPax''' – цена за человека
 +
**** '''QuotaStatus''' – объект статус квотирования
 +
***** '''PlacesStatus''' – статус по квотам (есть места-1 / нет мест-2 / под запрос-4)
 +
***** '''FreePlaces''' – количество свободных мест, если удовлетворяются условия, заданные в настройке "Мало" и включена настройка "Отображать числовое значение оставшихся мест". Иначе возвращается 0. Если в данном параметре 0, то руководствоваться следует значением, полученном в параметре '''PlacesStatus'''.
 +
***** '''IsFewPlaces''' – выполнены ли условия, заданные в настройке "Мало": '''true''' – если заданы условия количества мест "Мало" и данные условия выполнены, '''false''' – если не заданы условия количества мест "Мало" или они заданы, но не выполнены.
 +
**** '''Index''' – индекс услуги
 +
**** '''IsRoute''' – признак маршрутная услуга
 +
**** '''ServiceTemplateIndex''' – индекс шаблона услуги
 +
**** '''RemoteId''' – (в доплатах не используется)
 +
*** '''TouristNumbersList''' – массив туристов, привязанных к услуге
 +
** '''Tourists''' – массив туристов
 +
*** '''IsMain''' – главный турист
 +
*** '''Number''' – порядковый номер туриста
 +
*** '''AgeType''' – тип туриста (0 – взрослый, 1 – ребенок, 2 – инфант)
 +
*** '''MaleFemaleSex''' – пол (0 – мужской, 1 – женский)
 +
*** '''FirstName''' – имя (лат)
 +
*** '''LastName''' – фамилия (лат)
 +
*** '''Patronymic''' – отчество (лат)
 +
*** '''FirstNameRus''' – имя (рус)
 +
*** '''LastNameRus''' – фамилия (рус)
 +
*** '''PatronymicRus''' – отчество (рус)
 +
*** '''InternationalPassportSeries''' – серия загранпаспорта
 +
*** '''InternationalPassportNumber''' – номер загранпаспорта
 +
*** '''InternationalPassportDateOfIssue''' – дата выдачи загранпаспорта (YYYY-MM-DDThh:mm:ssz)
 +
*** '''InternationalPassportDateOfIssueString''' – дата выдачи загранпаспорта в строковом формате (DD.MM.YYYY)
 +
*** '''InternationalPassportDateOfExpiry''' – дата окончания действия загранпаспорта (YYYY-MM-DDThh:mm:ssz)
 +
*** '''InternationalPassportDateOfExpiryString''' – дата окончания действия загранпаспорта в строковом формате (DD.MM.YYYY)
 +
*** '''internationalPassportByWhom''' – кем выдан загранпаспорт
 +
*** '''PassportSeries''' – серия паспорта
 +
*** '''PassportNumber''' – номер паспорта
 +
*** '''PassportDateOfIssue''' – дата выдачи паспорта (YYYY-MM-DDThh:mm:ssz)
 +
*** '''PassportDateOfIssueString''' – дата выдачи паспорта в строке (DD.MM.YYYY)
 +
*** '''PassportByWhom''' – кем выдан паспорт
 +
*** '''Citizenship''' – название страны
 +
*** '''Phone''' – телефон
 +
*** '''Email''' – e-mail
 +
*** '''BirthDay''' – дата рождения (YYYY-MM-DDThh:mm:ssz)
 +
*** '''BirthDayString''' – дата рождения в строковом формате (DD.MM.YYYY)
 +
*** '''BirthPlace''' – место рождения
 +
*** '''CitizenID''' – гражданство
 +
*** '''Age''' – количество полных лет на момент окончания тура
 +
 
 +
* Возвращаемый результат:
 +
** '''Массив''' – массив объектов связок Возраст-Отель-Доп. услуги
 +
*** '''Age''' – возраст туриста
 +
*** '''Hotel''' – объект отель
 +
**** '''ServiceType''' – тип услуги
 +
**** '''Code''' – код услуги
 +
**** '''SubCode1''' – [[#Приложение 1: параметры услуги (ServiceType, Code, SubCode1, SubCode2)|доп. описание 1]]
 +
**** '''SubCode2''' – [[#Приложение 1: параметры услуги (ServiceType, Code, SubCode1, SubCode2)|доп. описание 2]]
 +
**** '''PacketId''' – ключ пакета
 +
**** '''PartnerId''' – ключ партнера
 +
**** '''Day''' – день предоставления услуги
 +
**** '''BeginTime''' – время начала услуги
 +
**** '''EndTime''' – время окончания услуги
 +
**** '''DurationInNight''' – продолжительность услуги в ночах
 +
**** '''Attributes''' – маска атрибутов услуги
 +
**** '''CountryId''' – ключ страны услуги
 +
**** '''CityId''' – ключ города
 +
**** '''Type''' – тип услуги в путевке
 +
**** '''ShowOrder''' – порядок при печати (сортировка) по услуге
 +
**** '''ShowOrderAddDescript1''' – порядок при печати (сортировка) по доп. описанию 1
 +
**** '''ShowOrderAddDescript2''' – порядок при печати (сортировка) по доп. описанию 2
 +
**** '''IsCommission''' – признак, комиссионная ли услуга
 +
**** '''BaseFlightsParams''' – параметр не обрабатывается
 +
*** '''AdditionalServices''' – массив доплат
 +
*** '''ServiceName''' – название услуги
 +
*** '''City''' – объект город
 +
*** '''Country''' – ключ страны
 +
*** '''Code''' – объект код услуги
 +
**** '''Key''' – ключ услуги
 +
**** '''Value''' – название услуги
 +
*** '''ByScheduler''' – признак по расписанию
 +
*** '''Details''' - объект детализация
 +
**** '''SubCode1''' – объект [[#Приложение 1: параметры услуги (ServiceType, Code, SubCode1, SubCode2)|доп. описание 1]]
 +
***** '''Key''' – ключ
 +
***** '''Value''' – название
 +
**** '''SubCode2''' – объект [[#Приложение 1: параметры услуги (ServiceType, Code, SubCode1, SubCode2)|доп. описание 2]]
 +
***** '''Key''' – ключ
 +
***** '''Value''' – название
 +
**** '''Date''' – дата услуги
 +
**** '''IsShowTransportPlan''' – признак показать транспортный план (для автобусов)
 +
**** '''Cost''' – цена
 +
**** '''QuotaStatus''' – объект статус квотирования
 +
***** '''PlacesStatus''' – статус по квотам (есть места-1 / нет мест-2 / под запрос-4)
 +
***** '''FreePlaces''' – количество свободных мест, если удовлетворяются условия, заданные в настройке "Мало" и включена настройка "Отображать числовое значение оставшихся мест". Иначе возвращается 0. Если в данном параметре 0, то руководствоваться следует значением, полученном в параметре '''PlacesStatus'''.
 +
***** '''IsFewPlaces''' – выполнены ли условия, заданные в настройке "Мало": '''true''' – если заданы условия количества мест "Мало" и данные условия выполнены, '''false''' – если не заданы условия количества мест "Мало" или они заданы, но не выполнены.
 +
**** '''PartnerId''' – ключ партнера
 +
**** '''ByPax''' – признак за человека
 +
**** '''Partner''' – объект партнер (не заполняется)
 +
***** '''Key''' – ключ (не заполняется)
 +
***** '''Value''' – название (не заполняется)
 +
*** '''ParentId''' – ключ родительской услуги
 +
*** '''PartnerBasedOnServiceTemplateId''' – шаблон услуги для подбора поставщика
 +
*** '''ShowOrder''' – порядок при печати (сортировка) по услуге
 +
*** '''ShowOrderAddDescript1''' – порядок при печати (сортировка) по доп. описанию 1
 +
*** '''ShowOrderAddDescript2''' – порядок при печати (сортировка) по доп. описанию 2
 +
*** '''Id''' – идентификатор услуги
 +
*** '''SvKey''' – тип услуги
 +
*** '''IsSubCode1''' – признак наличия [[#Приложение 1: параметры услуги (ServiceType, Code, SubCode1, SubCode2)|доп. описания 1]]
 +
*** '''IsSubCode2''' – признак наличия [[#Приложение 1: параметры услуги (ServiceType, Code, SubCode1, SubCode2)|доп. описания 2]]
 +
*** '''IsPartnerBasedOn''' – признак услуга с приоритетным подбором поставщика
 +
*** '''Day''' – день предоставления услуги
 +
*** '''DurationInNight''' – продолжительность услуги в ночах
 +
*** '''BeginDateTime''' – дата начала услуги
 +
*** '''EndDateTime''' – дата окончания
 +
*** '''IsHooded''' – признак скрытая
 +
*** '''IsDeleted''' – признак удаляемая
 +
*** '''IsNotCalculate''' – признак не рассчитываемая
 +
*** '''PacketId''' – ключ пакета
 +
*** '''Index''' – индекс шаблона услуги
 +
 
 +
<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>
 +
Вызов метода GetHotelsAdditionalServices
 
<syntaxhighlight lang="java" enclose="div">
 
<syntaxhighlight lang="java" enclose="div">
http://localhost:9000/TourSearchOwin/Duration?departureCity=1&destinationCity=-1&Key=90&Name=Австрия&Type=1&tourDate=25.02.2018,26.02.2018&tourTypes=-1&term=
+
POST http://localhost:9000/TourSearchOwin/GetHotelsAdditionalServices?nodeId=2147483647 HTTP/1.1
 +
Content-Type: application/json
 +
 
 +
{ "TourProgramId": 100003404,
 +
"BeginDate": "2018-04-16T00:00:00",
 +
"Duration": 8,
 +
"Currency": "EU",
 +
"Services": [{
 +
"Service": {
 +
"ServiceType": 3,
 +
"Code": 178,
 +
"SubCode1": 46387,
 +
"SubCode2": 57,
 +
"Packet": 779,
 +
"Partner": 12667,
 +
"Day": 1,
 +
"DurationInNight": 7,
 +
"City": 35,
 +
"Country": 90,
 +
"Attributes": 0,
 +
"IsRemovable": false,
 +
"Type": 1,
 +
"IsHooded": false,
 +
"IsNotCalculated": false
 +
"BeginDateTimeString": "2018-04-16T11:59:00"
 +
"EndDateTimeString": "2018-04-23T11:59:00",
 +
"TemplateId": 1,
 +
"Cost": 122,
 +
"ByPax": false,
 +
"QuotaStatus": {
 +
"PlacesStatus": 4,
 +
"FreePlaces": 0,
 +
"IsFewPlaces": false
 +
},
 +
"Index": 1,
 +
"IsRoute": true,
 +
"ServiceTemplateIndex": 1,
 +
"RemoteId": null
 +
},
 +
"TouristNumbersList": [1,
 +
2
 +
}],
 +
"Tourists": [{
 +
"IsMain": true,
 +
"Number": 1,
 +
"AgeType": 0,
 +
"MaleFemaleSex": 0,
 +
"FirstName": "",
 +
"LastName": "",
 +
"Patronymic": "",
 +
"FirstNameRus": "",
 +
"LastNameRus": "",
 +
"PatronymicRus": "",
 +
"InternationalPassportSeries": "",
 +
"InternationalPassportNumber": "",
 +
"InternationalPassportDateOfIssue": "",
 +
"InternationalPassportDateOfIssueString": "",
 +
"InternationalPassportDateOfExpiry": "",
 +
"InternationalPassportDateOfExpiryString": "",
 +
"internationalPassportByWhom": "",
 +
"PassportSeries": "",
 +
"PassportNumber": "",
 +
"PassportDateOfIssue": "",
 +
"PassportDateOfIssueString": "",
 +
"PassportByWhom": "",
 +
"Citizenship": "",
 +
"Phone": "",
 +
"Email": "",
 +
"BirthDay": null,
 +
"BirthDayString": "",
 +
"BirthPlace": "",
 +
"CitizenID": "",
 +
                "Age": null
 +
},
 +
{
 +
"IsMain": false,
 +
"Number": 2,
 +
"AgeType": 0,
 +
"MaleFemaleSex": 0,
 +
"FirstName": "",
 +
"LastName": "",
 +
"Patronymic": "",
 +
"FirstNameRus": "",
 +
"LastNameRus": "",
 +
"PatronymicRus": "",
 +
"InternationalPassportSeries": "",
 +
"InternationalPassportNumber": "",
 +
"InternationalPassportDateOfIssue": "",
 +
"InternationalPassportDateOfIssueString": "",
 +
"InternationalPassportDateOfExpiry": "",
 +
"InternationalPassportDateOfExpiryString": "",
 +
"internationalPassportByWhom": "",
 +
"PassportSeries": "",
 +
"PassportNumber": "",
 +
"PassportDateOfIssue": "",
 +
"PassportDateOfIssueString": "",
 +
"PassportByWhom": "",
 +
"Citizenship": "",
 +
"Phone": "",
 +
"Email": "",
 +
"BirthDay": null,
 +
"BirthDayString": "",
 +
"BirthPlace": "",
 +
"CitizenID": "",
 +
                "Age": null
 +
}]
 +
}
 
</syntaxhighlight>
 
</syntaxhighlight>
Возвращаемый результат метода Duration (в формате JSON)
+
Возвращаемый результат метода GetHotelsAdditionalServices (в формате JSON)
 
<syntaxhighlight lang="java" enclose="div">
 
<syntaxhighlight lang="java" enclose="div">
[
+
[{
  7,
+
"Age": 17,
  8,
+
"Hotel": {
  10,
+
"ServiceType": 3,
  12,
+
"Code": 178,
  15,
+
"SubCode1": 46387,
  18
+
"SubCode2": 57,
]
+
"PacketId": 779,
 +
"PartnerId": 12667,
 +
"Day": 1,
 +
"BeginTime": "11:59:00",
 +
"EndTime": "11:59:00",
 +
"DurationInNight": 7,
 +
"Attributes": 0,
 +
"CountryId": 90,
 +
"CityId": 35,
 +
"Type": 1,
 +
"ShowOrder": 1,
 +
"ShowOrderAddDescript1": 0,
 +
"ShowOrderAddDescript2": 0,
 +
"IsCommission": false,
 +
"BaseFlightsParams": null
 +
},
 +
"AdditionalServices": [{
 +
"ServiceName": "Доплаты к отелям",
 +
"City": null,
 +
                "Country":                {
 +
                  "Key": 90,
 +
                  "Value": "Австрия"
 +
},
 +
"Code": {
 +
"Key": 364,
 +
"Value": "Праздник"
 +
},
 +
"ByScheduler": false,
 +
"Details": [{
 +
"SubCode1": {
 +
"Key": 109,
 +
"Value": "Ananas"
 +
},
 +
"SubCode2": {
 +
"Key": null,
 +
"Value": ""
 +
},
 +
"Date": "2018-04-16T11:59:00",
 +
"IsShowTransportPlan": false,
 +
"Cost": 2,
 +
"QuotaStatus": {
 +
"PlacesStatus": 0,
 +
"FreePlaces": 0,
 +
"IsFewPlaces": false
 +
},
 +
"PartnerId": 12667,
 +
"ByPax": false,
 +
"Partner": {
 +
"Key": 0,
 +
"Value": null
 +
}
 +
}],
 +
"ParentId": null,
 +
"PartnerBasedOnServiceTemplateId": null,
 +
"ShowOrder": 0,
 +
"ShowOrderAddDescript1": 0,
 +
"ShowOrderAddDescript2": 0,
 +
"Id": -1,
 +
"SvKey": 13,
 +
"IsSubCode1": false,
 +
"IsSubCode2": false,
 +
"IsPartnerBasedOn": false,
 +
"Day": 1,
 +
"DurationInNight": 0,
 +
"BeginDateTime": "2018-04-16T11:59:00",
 +
"EndDateTime": "0001-01-01T00:00:00",
 +
"IsHooded": false,
 +
"IsDeleted": false,
 +
"IsNotCalculate": true,
 +
"PacketId": 879,
 +
"Index": 1
 +
}]
 +
}]
 
</syntaxhighlight>
 
</syntaxhighlight>
 
</TD></TR></TABLE>
 
</TD></TR></TABLE>
 
</div></div><br />
 
</div></div><br />
  
 +
===Расчет индивидуальных услуг (CalculateIndividualServiceCosts)===
 +
Метод производит расчет услуг с индивидуальным выбором у туристов.
 +
* Формат запроса:
 +
** POST .../TourSearchOwin/CalculateIndividualServiceCosts?nodeId=2147483647
 +
, где ''nodeId'' – уникальный идентификатор узла в кластере балансировки нагрузки [[Мастер-Тур(15):Балансировщик нагрузки HaProxy|HaProxy]]
  
 +
* Принимаемые параметры headers ( '''*''' – обязательный):
 +
** '''Content-Type *''' – application/json
  
 +
* Принимаемые параметры POST запроса ( '''*''' – обязательный):
 +
** '''TourProgramId''' – ключ тура
 +
** '''TourDate''' – дата тура
 +
** '''TourDuration''' – продолжительность тура
 +
** '''Currency''' – код валюты
 +
** '''Services''' – массив индивидуальных услуг
 +
*** '''ServiceType''' – тип услуги
 +
*** '''Code''' – код услуги
 +
*** '''SubCode1''' – [[#Приложение 1: параметры услуги (ServiceType, Code, SubCode1, SubCode2)|доп. описание 1]]
 +
*** '''SubCode2''' – [[#Приложение 1: параметры услуги (ServiceType, Code, SubCode1, SubCode2)|доп. описание 2]]
 +
*** '''Packet''' – ключ пакета
 +
*** '''Partner''' – ключ партнера
 +
*** '''Day''' – день предоставления услуги
 +
*** '''DurationInNight''' – продолжительность услуги в ночах
 +
*** '''City''' – объект город
 +
*** '''Country''' – страна услуги
 +
*** '''Attributes''' – маска атрибутов услуги
 +
*** '''Type''' – тип услуги
 +
*** '''IsHooded''' – признак скрытая
 +
*** '''IsNotCalculated''' – признак не рассчитываемая
 +
*** '''BeginDateTimeString''' – дата начала услуги в строке
 +
*** '''EndDateTimeString''' – дата начала услуги в строке
 +
*** '''TemplateId''' – номер шаблона услуги
 +
*** '''Cost''' – цена услуги
 +
*** '''ByPax''' – цена за человека
 +
*** '''QuotaStatus''' – объект статус квотирования
 +
**** '''PlacesStatus''' – статус по квотам (есть места / нет мест / под запрос)
 +
**** '''FreePlaces''' – количество свободных мест, если удовлетворяются условия, заданные в настройке "Мало" и включена настройка "Отображать числовое значение оставшихся мест". Иначе возвращается 0. Если в данном параметре 0, то руководствоваться следует значением, полученном в параметре '''PlacesStatus'''.
 +
**** '''IsFewPlaces''' – выполнены ли условия, заданные в настройке "Мало": '''true''' – если заданы условия количества мест "Мало" и данные условия выполнены, '''false''' – если не заданы условия количества мест "Мало" или они заданы, но не выполнены.
 +
*** '''Index''' – индекс услуги
 +
*** '''IsRoute''' – признак маршрутная услуга
 +
*** '''ServiceTemplateIndex''' – индекс шаблона услуги
 +
*** '''RemoteId''' – (не используется)
 +
** '''Ages''' – массив возрастов туристов
  
==Загрузка справочников==
+
* Возвращаемый результат:
 +
** '''Массив''' – массив связок Возраст-Услуга-Цена
 +
*** '''Age''' – возраст
 +
*** '''Service''' – объект услуга
 +
**** '''ServiceType''' – тип услуги
 +
**** '''Code''' – код услуги
 +
**** '''SubCode1''' – [[#Приложение 1: параметры услуги (ServiceType, Code, SubCode1, SubCode2)|доп. описание 1]]
 +
**** '''SubCode2''' – [[#Приложение 1: параметры услуги (ServiceType, Code, SubCode1, SubCode2)|доп. описание 2]]
 +
**** '''PacketId''' – ключ пакета услуги
 +
**** '''PartnerId''' – ключ партнера
 +
**** '''Day''' – день предоставления услуги
 +
**** '''BeginTime''' – время начала услуги
 +
**** '''EndTime''' – время окончания услуги
 +
**** '''DurationInNight''' – продолжительность услуги в ночах
 +
**** '''Attributes''' – маска атрибутов услуги
 +
**** '''CountryId''' – ключ страны
 +
**** '''CityId''' – ключ города
 +
**** '''Type''' – тип услуги
 +
**** '''ShowOrder''' – порядковый номер
 +
*** '''SimpleServiceCost''' – объект цена
 +
**** '''Brutto''' – брутто
 +
**** '''Discount''' – скидка
 +
** '''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>
 +
Вызов метода CalculateIndividualServiceCosts
 +
<syntaxhighlight lang="java" enclose="div">
 +
POST http://localhost:9000/TourSearchOwin/CalculateIndividualServiceCosts?nodeId=2147483647 HTTP/1.1
 +
Content-Type: application/json
  
 +
{
 +
"TourProgramId": 100003403,
 +
"TourDate": "2018-04-16T00:00:00",
 +
"TourDuration": 8,
 +
"Currency": "EU",
 +
"Services": [{
 +
"ServiceType": 6,
 +
"Code": 155,
 +
"SubCode1": 7,
 +
"SubCode2": 10,
 +
"Packet": 779,
 +
"Partner": 10760,
 +
"Day": 1,
 +
"DurationInNight": 7,
 +
"City": null,
 +
"Country": 90,
 +
"Attributes": 0,
 +
"Type": 1,
 +
"IsHooded": false,
 +
"IsNotCalculated": false,
 +
"BeginDateTimeString": "2018-04-16T00:00:00",
 +
"EndDateTimeString": null,
 +
"TemplateId": 12,
 +
"Cost": 26,
 +
"ByPax": false,
 +
"QuotaStatus": {
 +
"PlacesStatus": 1,
 +
"FreePlaces": 0,
 +
"IsFewPlaces": false
 +
},
 +
"Index": null,
 +
"IsRoute": null,
 +
"ServiceTemplateIndex": null,
 +
"RemoteId": null
 +
}],
 +
"Ages": [17]
 +
}
 +
</syntaxhighlight>
 +
Возвращаемый результат метода CalculateIndividualServiceCosts (в формате JSON)
 +
<syntaxhighlight lang="java" enclose="div">
 +
[{
 +
"Age": 17,
 +
"Service": {
 +
"ServiceType": 6,
 +
"Code": 155,
 +
"SubCode1": 7,
 +
"SubCode2": 10,
 +
"PacketId": 779,
 +
"PartnerId": 10760,
 +
"Day": 1,
 +
"BeginTime": null,
 +
"EndTime": null,
 +
"DurationInNight": 7,
 +
"Attributes": 0,
 +
"CountryId": 90,
 +
"CityId": null,
 +
"Type": 1,
 +
"ShowOrder": 0
 +
},
 +
"SimpleServiceCost": {
 +
"Brutto": 13,
 +
"Discount": 0
 +
}
 +
}]
 +
</syntaxhighlight>
 +
</TD></TR></TABLE>
 +
</div></div><br />
  
===Выгрузка списка категорий отелей (GetHotelCategories)===
+
===Поиск рейсов из внешней системы (GetGDSFlights)===
Метод возвращает список категорий отелей (примеры: 3*, 4*, Apts и т.д.).
+
Метод производит поиск рейсов из внешней системы.
 
* Формат запроса:
 
* Формат запроса:
** ?action=GetHotelCategories
+
** POST .../TourSearchOwin/GetGDSFlights?
* Принимаемые параметры:
+
 
** '''id''' – идентификатор категории отеля (опциональный, передача в запрос нескольких id не обрабатывается, в этом случае возвращаются все результаты. Если указан, то запрашивается только одна запись)
+
* Принимаемые параметры headers ( '''*''' – обязательный):
 +
** '''Content-Type *''' – application/json
 +
 
 +
* Принимаемые параметры POST запроса ( '''*''' – обязательный):
 +
<font style="color:red">''Внимание!''</font> Если в туре используется перелет из GDS, то в параметр '''flightSettings''' передается ответ из секции '''flightGDSRequest''' метода API [[Мастер-Тур(15):API для отдачи цен в поисковые системы#Актуализация тура (ActualizeTour)|ActualizeTour]]. Далее для получения цены выполняем методы [[Мастер-Тур(15):API для разработки онлайн поиска и бронирования#Выгрузка информации от внешнего поставщика по перелету (RebuildFlights)|RebuidFlights]] и [[Мастер-Тур(15):API для разработки онлайн поиска и бронирования#Расчет путевки (CalculateReservation)|CalculateReservation]]. <br />
 +
** '''flightSettings''' – информация о шаблоне услуги авиаперелета
 +
*** '''templateId''' – идентификатор шаблона услуги
 +
*** '''patternId''' – идентификатор паттерна услуги (внутренняя информация из программы туров)
 +
*** '''serviceId''' – идентификатор класса услуги (внутренняя информация из программы туров)
 +
** '''service''' – информация об услуге авиаперелета
 +
*** '''ServiceType''' – тип услуги
 +
*** '''Code''' – ключ услуги
 +
*** '''SubCode1''' – [[#Приложение 1: параметры услуги (ServiceType, Code, SubCode1, SubCode2)|доп. описание 1]]
 +
*** '''SubCode2''' – [[#Приложение 1: параметры услуги (ServiceType, Code, SubCode1, SubCode2)|доп. описание 2]]
 +
*** '''CountryId''' – страна услуги
 +
*** '''CityId''' – город услуги
 +
*** '''PacketId''' – пакет услуги
 +
*** '''PartnerId''' – партнер услуги
 +
*** '''Day''' – день предоставления услуги
 +
*** '''DurationInNight''' – продолжительность услуги в ночах
 +
** '''price''' – стоимость перелета
 +
** '''quotaInfo''' – объект информация по квотам
 +
*** '''status''' – статус по квотам (есть места / нет мест / под запрос)
 +
*** '''freePlaces''' – количество свободных мест, если удовлетворяются условия, заданные в настройке "Мало" и включена настройка "Отображать числовое значение оставшихся мест". Иначе возвращается 0. Если в данном параметре 0, то руководствоваться следует значением, полученном в параметре '''PlacesStatus'''.
 +
*** '''isFewPlaces''' – выполнены ли условия, заданные в настройке "Мало": '''true''' – если заданы условия количества мест "Мало" и данные условия выполнены, '''false''' – если не заданы условия количества мест "Мало" или они заданы, но не выполнены.
 +
** '''flightDateTimeLimitationInterval''' –
 +
*** '''startLimitation''' – начало тайм-лимита
 +
*** '''finishLimitation''' – объект тайм-лимита
 +
**** '''dateTimeString''' – дата окончания тайм-лимита
 +
**** '''serviceType''' – тип услуги
 +
**** '''serviceCode''' – код услуги
 +
** '''flightSourceMode''' – тип перелета (1 – локальный, 2 – из внешний системы)
 +
** '''passengers''' – информация о пассажирах
 +
*** '''IsMain''' – главный турист
 +
*** '''Number''' – порядковый номер туриста
 +
*** '''AgeType''' – тип туриста (0 – взрослый, 1 – ребенок, 2 – инфант)
 +
*** '''MaleFemaleSex''' – пол (0 – мужской, 1 – женский)
 +
*** '''FirstName''' – имя (лат)
 +
*** '''LastName''' – фамилия (лат)
 +
*** '''Patronymic''' – отчество (лат)
 +
*** '''FirstNameRus''' – имя (рус)
 +
*** '''LastNameRus''' – фамилия (рус)
 +
*** '''PatronymicRus''' – отчество (рус)
 +
*** '''InternationalPassportSeries''' – серия загранпаспорта
 +
*** '''InternationalPassportNumber''' – номер загранпаспорта
 +
*** '''InternationalPassportDateOfIssue''' – дата выдачи загранпаспорта (YYYY-MM-DDThh:mm:ssz)
 +
*** '''InternationalPassportDateOfIssueString''' – дата выдачи загранпаспорта в строке (DD.MM.YYYY)
 +
*** '''InternationalPassportDateOfExpiry''' – дата окончания действия загранпаспорта (YYYY-MM-DDThh:mm:ssz)
 +
*** '''InternationalPassportDateOfExpiryString''' – дата окончания действия загранпаспорта в строке (DD.MM.YYYY)
 +
*** '''internationalPassportByWhom''' – кем выдан загранпаспорт
 +
*** '''PassportSeries''' – серия паспорта
 +
*** '''PassportNumber''' – номер паспорта
 +
*** '''PassportDateOfIssue''' – дата выдачи паспорта (YYYY-MM-DDThh:mm:ssz)
 +
*** '''PassportDateOfIssueString''' – дата выдачи паспорта в строке (DD.MM.YYYY)
 +
*** '''PassportByWhom''' – кем выдан паспорт
 +
*** '''Citizenship''' – название страны
 +
*** '''Phone''' – телефон
 +
*** '''Email''' – e-mail
 +
*** '''BirthDay''' – дата рождения (YYYY-MM-DDThh:mm:ssz)
 +
*** '''BirthDayString''' – дата рождения в строковом формате (DD.MM.YYYY)
 +
*** '''BirthPlace''' – место рождения
 +
*** '''CitizenID''' – гражданство
 +
*** '''Age''' – количество полных лет на момент окончания тура
 +
** '''tourDate''' – дата тура
 +
** '''tourCurrency''' – валюта тура
 +
** '''tourId''' – ключ программы тура
 +
** '''filterTariff''' – информация о тарифах
 +
** '''filterDeptime''' – информация о времени вылета
 +
** '''isCommission''' – признак комиссионной цены
 +
** '''baseFlightsParams''' – параметра авиаперелета
 +
*** '''CityArrival''' – город прибытия
 +
*** '''FlightCode''' – код авиаперелета
 +
*** '''TariffKey''' – ключ тарифа
 +
*** '''PartnerId''' – ключ партнера
 +
** '''isUpdated''' – информация об обновлении перелета
 +
** '''key''' – ключ запроса
 +
** '''tourDurationByDays''' – продолжительность перелета
 +
** '''langueCode''' – локализация
 +
 
 
* Возвращаемый результат:
 
* Возвращаемый результат:
** '''id''' – идентификатор категории отеля
+
** '''validationResult''' – информация о валидации
** '''name''' – название категории отеля
+
*** '''Errors''' – ошибки
 +
*** '''Warnings''' – предупреждения
 +
*** '''States''' – статус
 +
*** '''IsValid''' – информация о результате
 +
** '''flightsStartEndPointPatterns''' – информация о начале и окончании перелета
 +
*** '''fromPoint''' – информация о перелете отправления
 +
**** '''country''' – страна вылета
 +
***** '''id''' – ключ
 +
***** '''description''' – описание
 +
***** '''code''' – код
 +
**** '''city''' – город вылета
 +
***** '''id''' – ключ
 +
***** '''description''' – описание
 +
***** '''code''' – код
 +
**** '''airport''' – аэропорт вылета
 +
***** '''id''' – ключ
 +
***** '''description''' – описание
 +
***** '''code''' – код
 +
*** '''toPoint''' – информация о перелете прибытия
 +
**** '''country''' – страна прилета
 +
***** '''id''' – ключ
 +
***** '''description''' – описание
 +
***** '''code''' – код
 +
**** '''city''' – город прилета
 +
***** '''id''' – ключ
 +
***** '''description''' – описание
 +
***** '''code''' – код
 +
**** '''airport''' – аэропорт прилета
 +
***** '''id''' – ключ
 +
***** '''description''' – описание
 +
***** '''code''' – код
 +
** '''passengersAgeInfos''' – информация о возрасте пассажиров
 +
*** '''ageType''' – тип пассажира
 +
*** '''count''' – количество человек
 +
** '''flightsSequencies''' – информация о перелете
 +
*** '''flights''' – массив данных о перелете из внешнего поставщика
 +
**** – ...
 +
*** '''deltaPrice''' – разница в цене
 +
**** '''amount''' – стоимость
 +
**** '''currency''' – валюта
 +
*** '''timeForward''' – время вперед
 +
*** '''timeBackward''' – время обратно
 +
*** '''hasTariffFamily''' – имеется ли семейство тарифов
 +
*** '''rating''' – рейтинг
 +
** '''airTravelAdapterFilterValues''' – дополнительная информация
 +
*** '''LuggageFilterValue''' – багаж
 +
*** '''ClassAirTravelFilterValue''' – класс перелета
 +
*** '''ConnectionsFilterValue''' – пересадки
 +
*** '''SortFilterValue''' – сортировка
 +
*** '''AutomaticFlightSelection''' – подбор перелета
 +
** '''tariff''' – тариф
 +
** '''minFlightTimeForward''' – минимальное время в пути туда
 +
** '''maxFlightTimeForward''' – максимальное время в пути туда
 +
** '''minFlightTimeBackward''' – минимальное время в пути обратно
 +
** '''maxFlightTimeBackward''' – максимальное время в пути обратно
  
 
<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>
Вызов метода GetHotelCategories
+
Вызов метода GetGDSFlights
 
<syntaxhighlight lang="java" enclose="div">
 
<syntaxhighlight lang="java" enclose="div">
http://localhost:9000/TourSearchOwin/searchApi?action=GetHotelCategories
+
POST http://localhost:9000/TourSearchOwin/GetGDSFlights? HTTP/1.1
 +
Content-Type: application/json
 +
 
 +
{
 +
    "flightsSource": [{
 +
            "flightSettings": {
 +
                "templateId": 1,
 +
                "patternId": 0,
 +
                "serviceId": 0
 +
            },
 +
            "service": {
 +
                "serviceType": 1,
 +
                "code": 1084,
 +
                "subCode1": 67,
 +
                "subCode2": 1,
 +
                "countryId": 90,
 +
                "cityId": 35,
 +
                "packetId": 1037,
 +
                "partnerId": 12792,
 +
                "day": 1,
 +
                "durationInNight": 0
 +
            },
 +
            "price": 142.84,
 +
            "quotaInfo": {
 +
                "status": 4,
 +
                "freePlaces": 0,
 +
                "isFewPlaces": false
 +
            },
 +
            "flightDateTimeLimitationInterval": {
 +
                "startLimitation": null,
 +
                "finishLimitation": {
 +
                    "dateTimeString": "2021-01-30T21:40:00",
 +
                    "serviceType": 3,
 +
                    "serviceCode": 178
 +
                }
 +
            },
 +
            "flightSourceMode": 2
 +
        }
 +
    ],
 +
    "passengers": [{
 +
            "IsMain": true,
 +
            "Number": 1,
 +
            "AgeType": 0,
 +
            "MaleFemaleSex": 0,
 +
            "FirstName": "",
 +
            "LastName": "",
 +
            "Patronymic": "",
 +
            "FirstNameRus": "",
 +
            "LastNameRus": "",
 +
            "PatronymicRus": "",
 +
            "InternationalPassportSeries": "",
 +
            "InternationalPassportNumber": "",
 +
            "InternationalPassportDateOfIssue": "",
 +
            "InternationalPassportDateOfIssueString": "",
 +
            "InternationalPassportDateOfExpiry": "",
 +
            "InternationalPassportDateOfExpiryString": "",
 +
            "internationalPassportByWhom": "",
 +
            "PassportSeries": "",
 +
            "PassportNumber": "",
 +
            "PassportDateOfIssue": "",
 +
            "PassportDateOfIssueString": "",
 +
            "PassportByWhom": "",
 +
            "Citizenship": "",
 +
            "Phone": "",
 +
            "Email": "",
 +
            "BirthDay": "",
 +
            "BirthDayString": "",
 +
            "BirthPlace": "",
 +
            "CitizenID": "",
 +
            "Age": 17
 +
        }, {
 +
            "IsMain": false,
 +
            "Number": 2,
 +
            "AgeType": 0,
 +
            "MaleFemaleSex": 0,
 +
            "FirstName": "",
 +
            "LastName": "",
 +
            "Patronymic": "",
 +
            "FirstNameRus": "",
 +
            "LastNameRus": "",
 +
            "PatronymicRus": "",
 +
            "InternationalPassportSeries": "",
 +
            "InternationalPassportNumber": "",
 +
            "InternationalPassportDateOfIssue": "",
 +
            "InternationalPassportDateOfIssueString": "",
 +
            "InternationalPassportDateOfExpiry": "",
 +
            "InternationalPassportDateOfExpiryString": "",
 +
            "internationalPassportByWhom": "",
 +
            "PassportSeries": "",
 +
            "PassportNumber": "",
 +
            "PassportDateOfIssue": "",
 +
            "PassportDateOfIssueString": "",
 +
            "PassportByWhom": "",
 +
            "Citizenship": "",
 +
            "Phone": "",
 +
            "Email": "",
 +
            "BirthDay": "",
 +
            "BirthDayString": "",
 +
            "BirthPlace": "",
 +
            "CitizenID": "",
 +
            "Age": 17
 +
        }
 +
    ],
 +
    "tourDate": "2021-01-30T00:00:00",
 +
    "tourCurrency": "$",
 +
    "tourId": 100008958,
 +
    "filterTariff": {},
 +
    "filterDeptime": ["all"],
 +
    "isCommission": true,
 +
    "baseFlightsParams": [{
 +
            "CityArrival": 35,
 +
            "FlightCode": 1084,
 +
            "TariffKey": 67,
 +
            "PartnerId": 12792
 +
        }
 +
    ],
 +
    "isUpdated": false,
 +
    "key": 0,
 +
    "tourDurationByDays": "11",
 +
    "langueCode": "ru",
 +
    "isCanary": "false"
 +
}
 +
 
 
</syntaxhighlight>
 
</syntaxhighlight>
Возвращаемый результат метода GetHotelCategories (в формате JSON)
+
Возвращаемый результат метода GetGDSFlights (в формате JSON)
 
<syntaxhighlight lang="java" enclose="div">
 
<syntaxhighlight lang="java" enclose="div">
 +
[
 
{
 
{
  "version": "1.0",
+
    "validationResult": {
  "hotelCategories":   [
+
        "Errors": [],
             {
+
        "Warnings": null,
        "id": 59,
+
        "States": null,
        "name": "5*"
+
        "IsValid": true
 +
    },
 +
    "flightsStartEndPointPatterns": [{
 +
            "fromPoint": {
 +
                "country": {
 +
                    "id": 460,
 +
                    "description": "Россия",
 +
                    "code": "RU"
 +
                },
 +
                "city": {
 +
                    "id": 1,
 +
                    "description": "Москва",
 +
                    "code": "MOW"
 +
                },
 +
                "airport": {
 +
                    "id": 52,
 +
                    "description": "SVO4(Шереметьево-24)",
 +
                    "code": "SVO4"
 +
                }
 +
            },
 +
            "toPoint": {
 +
                "country": {
 +
                    "id": 90,
 +
                    "description": "Австрия",
 +
                    "code": "AUS"
 +
                },
 +
                "city": {
 +
                    "id": 35,
 +
                    "description": "Вена",
 +
                    "code": "VIE"
 +
                },
 +
                "airport": {
 +
                    "id": 58,
 +
                    "description": "VIE1(Vena1)",
 +
                    "code": "VIE1"
 +
                }
 +
            },
 +
            "departureDate": "2021-01-30T00:00:00",
 +
            "arrivalDate": "2021-01-30T23:59:59"
 +
        }
 +
    ],
 +
    "passengersAgeInfos": [{
 +
            "ageType": 0,
 +
            "count": 2
 +
        }
 +
    ],
 +
    "flightsSequencies": [{
 +
             "flights": [{
 +
                    "direction": 1,
 +
                    "commonPrice": 147,
 +
                    "remotePriceSource": {
 +
                        "providerId": 82,
 +
                        "flightId": "17554452020000"
 +
                    },
 +
                    "localPriceSource": {
 +
                        "packetId": 1037,
 +
                        "partnerId": 12792
 +
                    },
 +
                    "flightsSequenceSettings": [{
 +
                            "templateId": 1,
 +
                            "patternId": 0,
 +
                            "serviceId": 0
 +
                        }
 +
                    ],
 +
                    "segments": [{
 +
                            "segmentNumber": 1,
 +
                            "depratureCity": {
 +
                                "gdsItem": {
 +
                                    "serviceId": 4,
 +
                                    "languageId": 38,
 +
                                    "id": "524901",
 +
                                    "code": "MOW",
 +
                                    "name": "Moscow",
 +
                                    "automaticallyMappingValue": [
 +
                                        "Moscow"
 +
                                    ],
 +
                                    "requestValue": "MOW",
 +
                                    "displayedValue": "Moscow",
 +
                                    "dependencies": [{
 +
                                            "dictionaryId": 1,
 +
                                            "itemId": "643"
 +
                                        }
 +
                                    ],
 +
                                    "columnValues": [
 +
                                        "Moscow",
 +
                                        "Russia"
 +
                                    ]
 +
                                },
 +
                                "mtItem": {
 +
                                    "id": "1",
 +
                                    "code": "MOW",
 +
                                    "name": "Москва",
 +
                                    "automaticallyMappingValue": [
 +
                                        "Москва",
 +
                                        "Moscow"
 +
                                    ],
 +
                                    "requestValue": "",
 +
                                    "displayedValue": "Москва",
 +
                                    "dependencies": [{
 +
                                            "dictionaryId": 1,
 +
                                            "itemId": "460"
 +
                                        }
 +
                                    ],
 +
                                    "columnValues": [
 +
                                        "MOW",
 +
                                        "Москва",
 +
                                        "Россия"
 +
                                    ]
 +
                                },
 +
                                "mapping": {
 +
                                    "id": 5517,
 +
                                    "providerId": 82,
 +
                                    "dictionaryId": 2,
 +
                                    "providerDictionaryItemId": "524901",
 +
                                    "providerDictionaryItemName": null,
 +
                                    "mtDictionaryItemId": 1,
 +
                                    "mtDictionaryItemName": null
 +
                                }
 +
                            },
 +
                            "arrivalCity": {
 +
                                "gdsItem": {
 +
                                    "serviceId": 4,
 +
                                    "languageId": 38,
 +
                                    "id": "2761369",
 +
                                    "code": "VIE",
 +
                                    "name": "Vienna",
 +
                                    "automaticallyMappingValue": [
 +
                                        "Vienna"
 +
                                    ],
 +
                                    "requestValue": "VIE",
 +
                                    "displayedValue": "Vienna",
 +
                                    "dependencies": [{
 +
                                            "dictionaryId": 1,
 +
                                            "itemId": "40"
 +
                                        }
 +
                                    ],
 +
                                    "columnValues": [
 +
                                        "Vienna",
 +
                                        "Austria"
 +
                                    ]
 +
                                },
 +
                                "mtItem": {
 +
                                    "id": "35",
 +
                                    "code": "VIE",
 +
                                    "name": "Вена",
 +
                                    "automaticallyMappingValue": [
 +
                                        "Вена",
 +
                                        "Vienna"
 +
                                    ],
 +
                                    "requestValue": "",
 +
                                    "displayedValue": "Вена",
 +
                                    "dependencies": [{
 +
                                            "dictionaryId": 1,
 +
                                            "itemId": "90"
 +
                                        }
 +
                                    ],
 +
                                    "columnValues": [
 +
                                        "VIE",
 +
                                        "Вена",
 +
                                        "Австрия"
 +
                                    ]
 +
                                },
 +
                                "mapping": {
 +
                                    "id": 5361,
 +
                                    "providerId": 82,
 +
                                    "dictionaryId": 2,
 +
                                    "providerDictionaryItemId": "2761369",
 +
                                    "providerDictionaryItemName": null,
 +
                                    "mtDictionaryItemId": 35,
 +
                                    "mtDictionaryItemName": null
 +
                                }
 +
                            },
 +
                            "departureAirport": {
 +
                                "gdsItem": {
 +
                                    "serviceId": 4,
 +
                                    "languageId": 38,
 +
                                    "id": "5930",
 +
                                    "code": "VKO",
 +
                                    "name": "Moscow, Vnukovo",
 +
                                    "automaticallyMappingValue": [
 +
                                        "VKO"
 +
                                    ],
 +
                                    "requestValue": "VKO",
 +
                                    "displayedValue": "VKO Moscow, Vnukovo",
 +
                                    "dependencies": [{
 +
                                            "dictionaryId": 1,
 +
                                            "itemId": "643"
 +
                                        }, {
 +
                                            "dictionaryId": 2,
 +
                                            "itemId": "524901"
 +
                                        }
 +
                                    ],
 +
                                    "columnValues": [
 +
                                        "VKO Moscow, Vnukovo",
 +
                                        "Russia, Москва"
 +
                                    ]
 +
                                },
 +
                                "mtItem": {
 +
                                    "id": "59",
 +
                                    "code": "VKO",
 +
                                    "name": "Внуково",
 +
                                    "automaticallyMappingValue": [
 +
                                        "VKO"
 +
                                    ],
 +
                                    "requestValue": "",
 +
                                    "displayedValue": "VKO Внуково",
 +
                                    "dependencies": [{
 +
                                            "dictionaryId": 1,
 +
                                            "itemId": "460"
 +
                                        }, {
 +
                                            "dictionaryId": 2,
 +
                                            "itemId": "1"
 +
                                        }
 +
                                    ],
 +
                                    "columnValues": [
 +
                                        "VKO",
 +
                                        "VKO Внуково",
 +
                                        "Россия, Москва"
 +
                                    ]
 +
                                },
 +
                                "mapping": {
 +
                                    "id": 5734,
 +
                                    "providerId": 82,
 +
                                    "dictionaryId": 5,
 +
                                    "providerDictionaryItemId": "5930",
 +
                                    "providerDictionaryItemName": null,
 +
                                    "mtDictionaryItemId": 59,
 +
                                    "mtDictionaryItemName": null
 +
                                }
 +
                            },
 +
                            "arrivalAirport": {
 +
                                "gdsItem": {
 +
                                    "serviceId": 4,
 +
                                    "languageId": 38,
 +
                                    "id": "6625",
 +
                                    "code": "VIE",
 +
                                    "name": "Vienna International Airport",
 +
                                    "automaticallyMappingValue": [
 +
                                        "VIE"
 +
                                    ],
 +
                                    "requestValue": "VIE",
 +
                                    "displayedValue": "VIE Vienna International Airport",
 +
                                    "dependencies": [{
 +
                                            "dictionaryId": 1,
 +
                                            "itemId": "40"
 +
                                        }, {
 +
                                            "dictionaryId": 2,
 +
                                            "itemId": "2761369"
 +
                                        }
 +
                                    ],
 +
                                    "columnValues": [
 +
                                        "VIE Vienna International Airport",
 +
                                        "Austria, Вена"
 +
                                    ]
 +
                                },
 +
                                "mtItem": {
 +
                                    "id": "58",
 +
                                    "code": "VIE1",
 +
                                    "name": "Vena1",
 +
                                    "automaticallyMappingValue": [
 +
                                        "VIE1"
 +
                                    ],
 +
                                    "requestValue": "",
 +
                                    "displayedValue": "VIE1 Vena1",
 +
                                    "dependencies": [{
 +
                                            "dictionaryId": 1,
 +
                                            "itemId": "90"
 +
                                        }, {
 +
                                            "dictionaryId": 2,
 +
                                            "itemId": "35"
 +
                                        }
 +
                                    ],
 +
                                    "columnValues": [
 +
                                        "VIE1",
 +
                                        "VIE1 Vena1",
 +
                                        "Австрия, Вена"
 +
                                    ]
 +
                                },
 +
                                "mapping": {
 +
                                    "id": 5755,
 +
                                    "providerId": 82,
 +
                                    "dictionaryId": 5,
 +
                                    "providerDictionaryItemId": "6625",
 +
                                    "providerDictionaryItemName": null,
 +
                                    "mtDictionaryItemId": 58,
 +
                                    "mtDictionaryItemName": null
 +
                                }
 +
                            },
 +
                            "airline": {
 +
                                "gdsItem": {
 +
                                    "serviceId": 4,
 +
                                    "languageId": 38,
 +
                                    "id": "223",
 +
                                    "code": "UT",
 +
                                    "name": "UTair",
 +
                                    "automaticallyMappingValue": [
 +
                                        "UT"
 +
                                    ],
 +
                                    "requestValue": "UT",
 +
                                    "displayedValue": "UT UTair",
 +
                                    "dependencies": [],
 +
                                    "columnValues": [
 +
                                        "UT UTair",
 +
                                        ""
 +
                                    ]
 +
                                },
 +
                                "mtItem": {
 +
                                    "id": "12",
 +
                                    "code": "E9",
 +
                                    "name": "AJT",
 +
                                    "automaticallyMappingValue": [
 +
                                        "E9"
 +
                                    ],
 +
                                    "requestValue": "",
 +
                                    "displayedValue": "E9 AJT",
 +
                                    "dependencies": [],
 +
                                    "columnValues": [
 +
                                        "E9",
 +
                                        "E9 AJT",
 +
                                        ""
 +
                                    ]
 +
                                },
 +
                                "mapping": {
 +
                                    "id": 5831,
 +
                                    "providerId": 82,
 +
                                    "dictionaryId": 5,
 +
                                    "providerDictionaryItemId": "223",
 +
                                    "providerDictionaryItemName": null,
 +
                                    "mtDictionaryItemId": 12,
 +
                                    "mtDictionaryItemName": null
 +
                                }
 +
                            },
 +
                            "aircraft": {
 +
                                "gdsItem": {
 +
                                    "serviceId": 4,
 +
                                    "languageId": 38,
 +
                                    "id": "42",
 +
                                    "code": "738",
 +
                                    "name": "Boeing 737",
 +
                                    "automaticallyMappingValue": [
 +
                                        "738"
 +
                                    ],
 +
                                    "requestValue": "738",
 +
                                    "displayedValue": "738 Boeing 737",
 +
                                    "dependencies": [],
 +
                                    "columnValues": [
 +
                                        "738 Boeing 737",
 +
                                        ""
 +
                                    ]
 +
                                },
 +
                                "mtItem": {
 +
                                    "id": "24",
 +
                                    "code": "738",
 +
                                    "name": "Boeing",
 +
                                    "automaticallyMappingValue": [
 +
                                        "738"
 +
                                    ],
 +
                                    "requestValue": "",
 +
                                    "displayedValue": "738 Boeing",
 +
                                    "dependencies": [],
 +
                                    "columnValues": [
 +
                                        "738",
 +
                                        "738 Boeing",
 +
                                        ""
 +
                                    ]
 +
                                },
 +
                                "mapping": {
 +
                                    "id": 5809,
 +
                                    "providerId": 82,
 +
                                    "dictionaryId": 5,
 +
                                    "providerDictionaryItemId": "42",
 +
                                    "providerDictionaryItemName": null,
 +
                                    "mtDictionaryItemId": 24,
 +
                                    "mtDictionaryItemName": null
 +
                                }
 +
                            },
 +
                            "tariff": {
 +
                                "gdsItem": {
 +
                                    "id": "0",
 +
                                    "code": "P",
 +
                                    "name": "Экономический класс",
 +
                                    "automaticallyMappingValue": [],
 +
                                    "requestValue": "",
 +
                                    "displayedValue": "",
 +
                                    "dependencies": [],
 +
                                    "columnValues": []
 +
                                },
 +
                                "mtItem": null,
 +
                                "mapping": null
 +
                            },
 +
                            "flightNumber": "821",
 +
                            "baggageRestriction": [
 +
                                "Взрослые - 0 мест багажа"
 +
                            ],
 +
                            "caryyOn": [
 +
                                "5 кг (40x30x20 см)"
 +
                            ],
 +
                            "departureDate": "2021-01-30T16:00:00",
 +
                            "arrivalDate": "2021-01-30T17:55:00",
 +
                            "quotaInfo": {
 +
                                "status": 1,
 +
                                "freePlaces": 0,
 +
                                "isFewPlaces": false
 +
                            },
 +
                            "filterLuggageValue": [
 +
                                "withoutLuggage"
 +
                            ],
 +
                            "transferValue": "withoutDirect",
 +
                            "isLocalFlight": false,
 +
                            "fligthTime": 235,
 +
                            "timeLimit": "22.01.2021 18:59:00"
 +
                        }
 +
                    ]
 +
                }
 +
            ],
 +
            "deltaPrice": {
 +
                "amount": 4.16,
 +
                "currency": "$"
 +
            },
 +
            "timeForward": 235,
 +
            "timeBackward": 0,
 +
            "hasTariffFamily": true,
 +
            "rating": 9.3467
 +
        }
 +
    ],
 +
    "airTravelAdapterFilterValues": {
 +
        "LuggageFilterValue": "all",
 +
        "ClassAirTravelFilterValue": "economy",
 +
        "ConnectionsFilterValue": "all",
 +
        "SortFilterValue": "cheap",
 +
        "AutomaticFlightSelection": false
 +
    },
 +
    "tariff": "economy",
 +
    "minFlightTimeForward": 170,
 +
    "maxFlightTimeForward": 1675,
 +
    "minFlightTimeBackward": 0,
 +
    "maxFlightTimeBackward": 0
 +
}
 +
]
 +
</syntaxhighlight>
 +
</TD></TR></TABLE>
 +
</div></div><br />
 +
 
 +
===Выгрузка информации от внешнего поставщика по перелету (RebuildFlights)===
 +
<font style="color:red">''Внимание!''</font> Если в туре используется перелет из GDS, то перед этим методом вызывается [[Мастер-Тур(15):API для разработки онлайн поиска и бронирования#Поиск рейсов из внешней системы (GetGDSFlights)|GetGDSFlights]] в принимаемые параметры которого передается ответ из секции flightGDSRequest метода API [[Мастер-Тур(15):API для отдачи цен в поисковые системы#Актуализация тура (ActualizeTour)|ActualizeTour]]. Далее текущий метод [[Мастер-Тур(15):API для разработки онлайн поиска и бронирования#Выгрузка информации от внешнего поставщика по перелету (RebuildFlights)|RebuidFlights]] и далее [[Мастер-Тур(15):API для разработки онлайн поиска и бронирования#Расчет путевки (CalculateReservation)|CalculateReservation]]. <br />
 +
Метод возвращает информацию по выбранному перелету от внешнего поставщика.
 +
* Формат запроса:
 +
** POST .../TourSearchOwin/RebuildFlights
 +
* Принимаемые параметры headers ( '''*''' – обязательный):
 +
** '''Content-Type *''' – application/json
 +
 
 +
* Принимаемые параметры POST запроса ( '''*''' – обязательный):
 +
** '''flights''' – перелеты
 +
*** '''direction''' –
 +
*** '''commonPrice''' – общая стоимость перелета
 +
*** '''remotePriceSource''' – данные расчета локального перелета
 +
**** '''providerId''' – ID внешнего поставщика
 +
**** '''flightId''' – идентификатор внешнего перелета
 +
*** '''localPriceSource''' – данные расчета локального перелета
 +
**** '''packetId''' – ключ пакета
 +
**** '''partnerId''' – идентификатор партнера
 +
*** '''flightsSequenceSettings''' – описание параметров последовательности перелетов для которых действуют замены 
 +
**** '''templateId''' – идентификатор шаблона услуги
 +
**** '''patternId''' – идентификатор паттерна услуги
 +
**** '''serviceId''' – идентификатор класса услуги
 +
*** '''segments''' – сегменты авиаперелета
 +
**** '''segmentNumber''' – номер сегмента
 +
**** '''depratureCity''' – город отправления
 +
***** '''gdsItem''' – справочная информация внешней системы
 +
****** '''serviceId''' – идентификатор системы
 +
****** '''languageId''' – идентификатор языка
 +
****** '''id''' – идентификатор в системе внешнего поставщика
 +
****** '''code''' – код в системе внешнего поставщика
 +
****** '''name''' – имя в системе внешнего поставщика
 +
******* '''automaticallyMappingValue''' – выражение используемое для автоматического маппинга
 +
******* '''requestValue''' – значение поля справочника которое используется в запросе к внешнему поставщику
 +
****** '''displayedValue''' – значение поля справочника который используется для отображения
 +
****** '''dependencies''' – список зависимых сущностей
 +
******* '''dictionaryId''' – идентификатор справочника
 +
******* '''itemId''' –
 +
****** '''columnValues''' – наименование города и страны
 +
***** '''mtItem''' – справочная информации локальной системы
 +
****** '''id''' – идентификатор в локальной системе
 +
****** '''code''' – код в локальной системе
 +
****** '''name''' – имя в локальной системе
 +
****** '''automaticallyMappingValue''' – выражение используемое для автоматического маппинга
 +
****** '''requestValue''' – значение поля справочника которое используется в запросе к внешнему поставщику
 +
****** '''displayedValue''' – значение поля справочника который используется для отображения
 +
****** '''dependencies''' – список зависимых сущностей
 +
******* '''dictionaryId''' – идентификатор справочника
 +
******* '''itemId''' –
 +
****** '''columnValues''' – наименование страны и города
 +
***** '''mapping''' – связка
 +
****** '''id''' – Id маппинга
 +
****** '''providerId''' – Id провайдера
 +
****** '''dictionaryId''' – Id справочника
 +
****** '''providerDictionaryItemId''' – Id справочника внешнего поставщика
 +
****** '''providerDictionaryItemName''' – обозначение справочника внешнего поставщика
 +
****** '''mtDictionaryItemId''' – Id справочника МТ
 +
****** '''mtDictionaryItemName''' – обозначение справочника MT
 +
**** '''arrivalCity''' – город прибытия
 +
***** '''gdsItem''' – справочная информация внешней системы
 +
****** '''serviceId''' – идентификатор системы
 +
****** '''languageId''' – идентификатор языка
 +
****** '''id''' – идентификатор в системе внешнего поставщика
 +
****** '''code''' – код в системе внешнего поставщика
 +
****** '''name''' – имя в системе внешнего поставщика
 +
******* '''automaticallyMappingValue''' – выражение используемое для автоматического маппинга
 +
******* '''requestValue''' – значение поля справочника которое используется в запросе к внешнему поставщику
 +
****** '''displayedValue''' – значение поля справочника который используется для отображения
 +
****** '''dependencies''' – список зависимых сущностей
 +
******* '''dictionaryId''' – идентификатор справочника
 +
******* '''itemId''' –
 +
****** '''columnValues''' – наименование города и страны
 +
***** '''mtItem''' – справочная информации локальной системы
 +
****** '''id''' – идентификатор в локальной системе
 +
****** '''code''' – код в локальной системе
 +
****** '''name''' – имя в локальной системе
 +
****** '''automaticallyMappingValue''' – выражение используемое для автоматического маппинга
 +
****** '''requestValue''' – значение поля справочника которое используется в запросе к внешнему поставщику
 +
****** '''displayedValue''' – значение поля справочника который используется для отображения
 +
****** '''dependencies''' – список зависимых сущностей
 +
******* '''dictionaryId''' – идентификатор справочника
 +
******* '''itemId''' –
 +
****** '''columnValues''' – наименование страны и города
 +
***** '''mapping''' – связка
 +
****** '''id''' – Id маппинга
 +
****** '''providerId''' – Id провайдера
 +
****** '''dictionaryId''' – Id справочника
 +
****** '''providerDictionaryItemId''' – Id справочника внешнего поставщика
 +
****** '''providerDictionaryItemName''' – обозначение справочника внешнего поставщика
 +
****** '''mtDictionaryItemId''' – Id справочника МТ
 +
****** '''mtDictionaryItemName''' – обозначение справочника MT
 +
**** '''departureAirport''' – аэропорт вылета
 +
**** '''arrivalAirport''' – аэропорт прилета
 +
***** '''gdsItem''' –справочная информация внешней системы
 +
****** '''serviceId''' – идентификатор системы
 +
****** '''languageId''' – идентификатор языка
 +
****** '''id''' – идентификатор аэропорта вылета
 +
****** '''code''' – код аэропорта вылета
 +
****** '''name''' – наименование аэропорта
 +
******* '''automaticallyMappingValue''' – выражение используемое для автоматического маппинга
 +
******* '''requestValue''' – значение поля справочника которое используется в запросе к внешнему поставщику
 +
****** '''displayedValue''' – значение поля справочника который используется для отображения
 +
****** '''dependencies''' – список зависимых сущностей
 +
******* '''dictionaryId''' – идентификатор справочника
 +
******* '''itemId''' –
 +
****** '''columnValues''' – наименование аэропорта города страны
 +
***** '''mtItem''' – справочная информации из локальной системы
 +
****** '''id''' – идентификатор аэропорта в локальной системе
 +
****** '''code''' – код аэропорта в локальной системе
 +
****** '''name''' – имя аэропорта в локальной системе
 +
****** '''automaticallyMappingValue''' – выражение используемое для автоматического маппинга
 +
****** '''requestValue''' – значение поля справочника которое используется в запросе к внешнему поставщику
 +
****** '''displayedValue''' – значение поля справочника который используется для отображения
 +
****** '''dependencies''' – список зависимых сущностей
 +
******* '''dictionaryId''' – идентификатор справочника
 +
******* '''itemId''' –
 +
****** '''columnValues''' – наименование страны и города
 +
***** '''mapping''' – связка
 +
****** '''id''' – Id маппинга аэропорта
 +
****** '''providerId''' – Id провайдера аэропорта
 +
****** '''dictionaryId''' – Id справочника аэропорта
 +
****** '''providerDictionaryItemId''' – Id справочника аэропорта внешнего поставщика
 +
****** '''providerDictionaryItemName''' – обозначение справочника аэропорта внешнего поставщика
 +
****** '''mtDictionaryItemId''' – Id справочника аэропорта МТ
 +
****** '''mtDictionaryItemName''' – обозначение справочника аэропорта MT
 +
**** '''airline''' – авиакомпания
 +
***** '''gdsItem''' – справочная информация внешней системы
 +
****** '''serviceId''' – идентификатор авиакомпании внешней системы
 +
****** '''languageId''' – идентификатор языка
 +
****** '''id''' – идентификатор авиакомпании
 +
****** '''code''' – код авиакомпании
 +
****** '''name''' – наименование авиакомпании
 +
******* '''automaticallyMappingValue''' – выражение используемое для автоматического маппинга
 +
******* '''requestValue''' – значение поля справочника которое используется в запросе к внешнему поставщику
 +
****** '''displayedValue''' – значение поля справочника который используется для отображения
 +
****** '''dependencies''' – список зависимых сущностей
 +
****** '''columnValues''' – наименование авиакомпании
 +
***** '''mtItem''' – справочная информация из локальной системы
 +
****** '''id''' – идентификатор авиакомпании в локальной системе
 +
****** '''code''' – код авиакомпании в локальной системе
 +
****** '''name''' – наименование авиакомпании в локальной системе
 +
****** '''automaticallyMappingValue''' – выражение используемое для автоматического маппинга
 +
****** '''requestValue''' – значение поля справочника которое используется в запросе к внешнему поставщику
 +
****** '''displayedValue''' – значение поля справочника который используется для отображения
 +
****** '''dependencies''' – список зависимых сущностей
 +
****** '''columnValues''' – наименование авиакомпании
 +
***** '''mapping''' – связка
 +
****** '''id''' – Id маппинга авиакомпании
 +
****** '''providerId''' – Id провайдера авиакомпании
 +
****** '''dictionaryId''' – Id справочника авиакомпании
 +
****** '''providerDictionaryItemId''' – Id справочника авиакомпании внешнего поставщика
 +
****** '''providerDictionaryItemName''' – обозначение справочника авиакомпании внешнего поставщика
 +
****** '''mtDictionaryItemId''' – Id справочника авиакомпании МТ
 +
****** '''mtDictionaryItemName''' – обозначение справочника авиакомпании MT
 +
**** '''aircraft''' – воздушное судно
 +
***** '''gdsItem''' – справочная информация внешней системы
 +
****** '''serviceId''' – идентификатор воздушного судна внешней системы
 +
****** '''languageId''' – идентификатор языка
 +
****** '''id''' – идентификатор воздушного судна
 +
****** '''code''' – код воздушного судна
 +
****** '''name''' – наименование воздушного судна
 +
******* '''automaticallyMappingValue''' – выражение используемое для автоматического маппинга
 +
******* '''requestValue''' – значение поля справочника которое используется в запросе к внешнему поставщику
 +
****** '''displayedValue''' – значение поля справочника который используется для отображения
 +
****** '''dependencies''' – список зависимых сущностей
 +
****** '''columnValues''' – наименование воздушного судна
 +
***** '''mtItem''' – справочная информация из локальной системы
 +
****** '''id''' – идентификатор воздушного судна в локальной системе
 +
****** '''code''' – код воздушного судна в локальной системе
 +
****** '''name''' – наименование воздушного судна в локальной системе
 +
****** '''automaticallyMappingValue''' – выражение используемое для автоматического маппинга
 +
****** '''requestValue''' – значение поля справочника которое используется в запросе к внешнему поставщику
 +
****** '''displayedValue''' – значение поля справочника который используется для отображения
 +
****** '''dependencies''' – список зависимых сущностей
 +
****** '''columnValues''' – наименование воздушного судна
 +
***** '''mapping''' – связка
 +
****** '''id''' – Id маппинга воздушного судна
 +
****** '''providerId''' – Id провайдера воздушного судна
 +
****** '''dictionaryId''' – Id справочника воздушного судна
 +
****** '''providerDictionaryItemId''' – Id справочника воздушного судна внешнего поставщика
 +
****** '''providerDictionaryItemName''' – обозначение справочника воздушного судна внешнего поставщика
 +
****** '''mtDictionaryItemId''' – Id справочника воздушного судна МТ
 +
****** '''mtDictionaryItemName''' – обозначение справочника воздушного судна MT
 +
**** '''tariff''' – тариф
 +
***** '''gdsItem''' – справочная информация внешней системы
 +
****** '''id''' – идентификатор тарифа
 +
****** '''code''' – код тарифа
 +
****** '''name''' – наименование тарифа
 +
******* '''automaticallyMappingValue''' – выражение используемое для автоматического маппинга
 +
******* '''requestValue''' – значение поля справочника которое используется в запросе к внешнему поставщику
 +
****** '''displayedValue''' – значение поля справочника который используется для отображения
 +
****** '''dependencies''' – список зависимых сущностей
 +
****** '''columnValues''' – наименование тарифа
 +
***** '''mtItem''' – справочная информация из локальной системы
 +
***** '''mapping''' – связка
 +
**** '''flightNumber''' – номер перелета
 +
**** '''baggageRestriction''' – ограничение провоза багажа
 +
**** '''caryyOncarry''' – ограничение ручной клади
 +
**** '''departureDate''' – дата вылета
 +
**** '''arrivalDate''' – дата прилета
 +
**** '''quotaInfo''' – объект информация по квотам
 +
***** '''status''' – статус по квотам (есть места / нет мест / под запрос)
 +
***** '''freePlaces''' – количество свободных мест, если удовлетворяются условия, заданные в настройке "Мало" и включена настройка "Отображать числовое значение оставшихся мест". Иначе возвращается 0. Если в данном параметре 0, то руководствоваться следует значением, полученном в параметре PlacesStatus.
 +
***** '''isFewPlaces''' – выполнены ли условия, заданные в настройке "Мало": true – если заданы условия количества мест "Мало" и данные условия выполнены, false – если не заданы условия количества мест "Мало" или они заданы, но не выполнены.
 +
** '''tourDate''' – дата тура
 +
 
 +
* Возвращаемый результат:
 +
** '''flights''' – информация о рейсах
 +
*** '''remoteFlightId''' – идентификатор внешнего перелета
 +
*** '''flightsSettings''' – внутренняя информация о перелете
 +
**** '''templateId''' – идентификатор шаблона услуги
 +
**** '''patternId''' – идентификатор паттерна услуги
 +
**** '''serviceId''' – идентификатор класса услуги
 +
*** '''flightsPlains''' – планы полетов
 +
**** '''DepartureCity''' – город вылета
 +
***** '''Key''' – ключ города
 +
***** '''Value''' – наименование города
 +
**** '''DepartureCountry''' – страна вылета
 +
***** '''Key''' – ключ страны
 +
***** '''Value''' – наименование страны
 +
**** '''ArrivalCity''' – город прибытия
 +
***** '''Key''' – ключ города
 +
***** '''Value''' – наименование города
 +
**** '''ArrivalCountry''' – страна прибытия
 +
***** '''Key''' – ключ страны
 +
***** '''Value''' – наименование страны
 +
**** '''DepartureAirport''' – аэропорт вылета
 +
***** '''Key''' – ключ аэропорта
 +
***** '''Value''' – наименование аэропорта
 +
**** '''ArrivalAirport''' – аэропорт прилета
 +
***** '''Key''' – ключ аэропорта
 +
***** '''Value''' – наименование аэропорта
 +
**** '''Airline''' – авиакомпания
 +
***** '''Id''' – идентификатор авиакомпании
 +
***** '''"Value''' – наименование авиакомпании
 +
***** '''"Key''' – ключ авиакомпании
 +
**** '''Aircraft''' – воздушное судно
 +
***** '''Key''' – ключ воздушного судна
 +
***** '''Value''' – наименование воздушного судна
 +
**** '''Flight''' – рейс
 +
***** '''Key''' – ключ рейса
 +
***** '''Value''' – наименование рейса
 +
**** '''DepartureTime''' – время отправления
 +
**** '''ArrivalTime''' – время прибытия
 +
**** '''TotalTimeOfFlight''' – полное время перелета
 +
**** '''FlightDetails''' – детали авиаперелета
 +
***** '''Tariff''' – информация о тарифе перелета
 +
****** '''Key''' – идентификатор
 +
****** '''Code''' – код тарифа
 +
****** '''Name''' – наименование тарифа
 +
***** '''IsCommission''' – признак, комиссионная ли услуга
 +
***** '''Cost''' – разница в стоимости с самым дешевым вариантом
 +
***** '''QuotaStatus''' – информация о квоте
 +
****** '''PlacesStatus''' – статус по квотам (есть места-1 / нет мест-2 / под запрос-4)
 +
****** '''FreePlaces''' – количество свободных мест, если удовлетворяются условия, заданные в настройке "Мало" и включена настройка "Отображать числовое значение оставшихся мест". Иначе возвращается 0. Если в данном параметре 0, то руководствоваться следует значением, полученном в параметре PlacesStatus.
 +
****** '''IsFewPlaces''' – выполнены ли условия, заданные в настройке "Мало": true – если заданы условия количества мест "Мало" и данные условия выполнены, false – если не заданы условия количества мест "Мало" или они заданы, но не выполнены.
 +
***** '''PartnerId''' – ключ партнера
 +
***** '''ByPax''' – цена за человека (true/false)
 +
***** '''Partner''' – информация о партнере
 +
****** '''Key''' – идентификатор
 +
****** '''Value''' – наименование
 +
**** '''FlightSetting''' – информация о шаблоне услуги авиаперелета
 +
***** '''ServiceId''' – идентификатор класса услуги (внутренняя информация из программы туров)
 +
***** '''PatternId''' – идентификатор паттерна услуги (внутренняя информация из программы туров)
 +
***** '''FlightId''' – идентификатор внешнего перелета
 +
**** '''FlightSourceMode''' – локальный или внешний перелет (внутренняя информация из программы туров)
 +
**** '''Id''' – идентификатор базового шаблона услуги (внутренняя информация из программы туров)
 +
**** '''SvKey''' – ключ типа услуги
 +
**** '''IsSubCode1''' – признак наличия [[#Приложение 1: параметры услуги (ServiceType, Code, SubCode1, SubCode2)|доп. описания 1]]
 +
**** '''IsSubCode2''' – признак наличия [[#Приложение 1: параметры услуги (ServiceType, Code, SubCode1, SubCode2)|доп. описания 2]]
 +
**** '''IsPartnerBasedOn''' – признак услуга с приоритетным подбором поставщика
 +
**** '''Day''' – день предоставления услуги
 +
**** '''DurationInNight''' – продолжительность услуги в ночах
 +
**** '''BeginDateTime''' – дата предоставления услуги
 +
**** '''EndDateTime''' – дата окончания услуги
 +
**** '''IsHooded''' – признак скрытая услуга
 +
**** '''IsDeleted''' – признак удаляемая услуга
 +
**** '''IsNotCalculate''' – признак не рассчитываемая услуга
 +
**** '''PacketId''' – ключ пакета
 +
**** '''Index''' – порядковый номер услуги
 +
 
 +
<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>
 +
Вызов метода RebuildFlights
 +
<syntaxhighlight lang="java" enclose="div">
 +
POST http://localhost:9000/TourSearchOwin/RebuildFlights HTTP/1.1
 +
Content-Type: application/json
 +
{
 +
  "flights": [
 +
    {
 +
      "remotePriceSource": {
 +
        "providerId": 1,
 +
        "flightId": "111397601080000"
 
       },
 
       },
            {
+
      "localPriceSource": {
        "id": 58,
+
        "packetId": 197,
        "name": "4*"
+
        "partnerId": 10767
 
       },
 
       },
 +
      "flightsSequenceSettings": [
 +
        {
 +
          "templateId": 1,
 +
          "patternId": 0,
 +
          "serviceId": 0
 +
        }
 +
      ],
 +
      "segments": [
 +
        {
 +
          "segmentNumber": 1,
 +
          "depratureCity": {
 +
            "gdsItem": {
 +
              "id": "524901",
 +
              "code": "MOW",
 +
              "name": "Moscow",
 +
              "requestValue": "MOW",
 +
              "displayedValue": "Moscow",
 +
              "dependencies": [
 +
                {
 +
                  "dictionaryId": 1,
 +
                  "itemId": "643"
 +
                }
 +
              ]
 +
            },
 +
            "mtItem": {
 +
              "id": "1",
 +
              "code": "MOW",
 +
              "name": "Москва",
 +
              "requestValue": "",
 +
              "displayedValue": "Москва",
 +
              "dependencies": [
 +
                {
 +
                  "dictionaryId": 1,
 +
                  "itemId": "460"
 +
                }
 +
              ]
 +
            },
 +
            "mapping": {
 +
              "id": 143,
 +
              "providerId": 1,
 +
              "dictionaryId": 2,
 +
              "providerDictionaryItemId": "524901",
 +
              "providerDictionaryItemName": null
 +
            }
 +
          },
 +
          "arrivalCity": {
 +
            "gdsItem": {
 +
              "id": "2761369",
 +
              "code": "VIE",
 +
              "name": "Vienna",
 +
              "requestValue": "VIE",
 +
              "displayedValue": "Vienna",
 +
              "dependencies": [
 +
                {
 +
                  "dictionaryId": 1,
 +
                  "itemId": "40"
 +
                }
 +
              ]
 +
            },
 +
            "mtItem": {
 +
              "id": "35",
 +
              "code": "VIE",
 +
              "name": "Вена",
 +
              "requestValue": "",
 +
              "displayedValue": "Вена",
 +
              "dependencies": [
 +
                {
 +
                  "dictionaryId": 1,
 +
                  "itemId": "90"
 +
                }
 +
              ]
 +
            },
 +
            "mapping": {
 +
              "id": 41,
 +
              "providerId": 1,
 +
              "dictionaryId": 2,
 +
              "providerDictionaryItemId": "2761369",
 +
              "providerDictionaryItemName": null
 +
            }
 +
          },
 +
          "departureAirport": {
 +
            "gdsItem": {
 +
              "id": "5135",
 +
              "code": "SVO",
 +
              "name": "Moscow, Sheremetyevo",
 +
              "requestValue": "SVO",
 +
              "displayedValue": "SVO Moscow, Sheremetyevo",
 +
              "dependencies": [
 +
                {
 +
                  "dictionaryId": 1,
 +
                  "itemId": "643"
 +
                },
 +
                {
 +
                  "dictionaryId": 2,
 +
                  "itemId": "524901"
 +
                }
 +
              ]
 +
            },
 +
            "mtItem": {
 +
              "id": "52",
 +
              "code": "SVO",
 +
              "name": "Шереметьево-2",
 +
              "requestValue": "",
 +
              "displayedValue": "SVO Шереметьево-2",
 +
              "dependencies": [
 +
                {
 +
                  "dictionaryId": 1,
 +
                  "itemId": "460"
 +
                },
 +
                {
 +
                  "dictionaryId": 2,
 +
                  "itemId": "1"
 +
                }
 +
              ]
 +
            },
 +
            "mapping": {
 +
              "id": 1619,
 +
              "providerId": 1,
 +
              "dictionaryId": 5,
 +
              "providerDictionaryItemId": "5135",
 +
              "providerDictionaryItemName": null
 +
            }
 +
          },
 +
          "arrivalAirport": {
 +
            "gdsItem": {
 +
              "id": "6625",
 +
              "code": "VIE",
 +
              "name": "Vienna International Airport",
 +
              "requestValue": "VIE",
 +
              "displayedValue": "VIE Vienna International Airport",
 +
              "dependencies": [
 +
                {
 +
                  "dictionaryId": 1,
 +
                  "itemId": "40"
 +
                },
 +
                {
 +
                  "dictionaryId": 2,
 +
                  "itemId": "2761369"
 +
                }
 +
              ]
 +
            },
 +
            "mtItem": {
 +
              "id": "58",
 +
              "code": "VIE",
 +
              "name": "Vena",
 +
              "requestValue": "",
 +
              "displayedValue": "VIE Vena",
 +
              "dependencies": [
 +
                {
 +
                  "dictionaryId": 1,
 +
                  "itemId": "90"
 +
                },
 +
                {
 +
                  "dictionaryId": 2,
 +
                  "itemId": "35"
 +
                }
 +
              ]
 +
            },
 +
            "mapping": {
 +
              "id": 259,
 +
              "providerId": 1,
 +
              "dictionaryId": 5,
 +
              "providerDictionaryItemId": "6625",
 +
              "providerDictionaryItemName": null
 +
            }
 +
          },
 +
          "airline": {
 +
            "gdsItem": {
 +
              "id": "5",
 +
              "code": "SU",
 +
              "name": "Aeroflot",
 +
              "requestValue": "SU",
 +
              "displayedValue": "SU Aeroflot",
 +
              "dependencies": []
 +
            },
 +
            "mtItem": {
 +
              "id": "31",
 +
              "code": "SU",
 +
              "name": "Aeroflot-Russian International AirLines",
 +
              "requestValue": "",
 +
              "displayedValue": "SU Aeroflot-Russian International AirLines",
 +
              "dependencies": []
 +
            },
 +
            "mapping": {
 +
              "id": 265,
 +
              "providerId": 1,
 +
              "dictionaryId": 5,
 +
              "providerDictionaryItemId": "5",
 +
              "providerDictionaryItemName": null
 +
            }
 +
          },
 +
          "aircraft": {
 +
            "gdsItem": {
 +
              "id": "97",
 +
              "code": "73H",
 +
              "name": "Boeing 737",
 +
              "requestValue": "73H",
 +
              "displayedValue": "73H Boeing 737",
 +
              "dependencies": []
 +
            },
 +
            "mtItem": {
 +
              "id": "27",
 +
              "code": "73H",
 +
              "name": "73H",
 +
              "requestValue": "",
 +
              "displayedValue": "73H 73H",
 +
              "dependencies": []
 +
            },
 +
            "mapping": {
 +
              "id": 323,
 +
              "providerId": 1,
 +
              "dictionaryId": 5,tour
 +
              "providerDictionaryItemId": "97",
 +
              "providerDictionaryItemName": null
 +
            }
 +
          },
 +
          "tariff": {
 +
            "gdsItem": {
 +
              "id": "0",
 +
              "code": "N",
 +
              "name": "Экономический класс",
 +
              "requestValue": "",
 +
              "displayedValue": "",
 +
              "dependencies": []
 +
            },
 +
            "mtItem": null,
 +
            "mapping": null
 +
          },
 +
          "flightNumber": "2184",
 +
          "baggageRestriction": [],
 +
          "departureDate": "2021-10-25T09:00:00",
 +
          "arrivalDate": "2021-10-25T11:00:00",
 +
          "quotaInfo": {
 +
            "status": 1,
 +
            "freePlaces": 0,
 +
            "isFewPlaces": false
 +
          }
 +
        }
 +
      ],
 +
      "commonPrice": 313
 +
    }
 +
  ],
 +
  "tourDate": "2021-10-25T00:00:00"
 +
}
 +
</syntaxhighlight>
 +
Возвращаемый результат метода RebuildFlights (в формате JSON)
 +
<syntaxhighlight lang="java" enclose="div">
 +
{
 +
  "flights": [
 +
    {
 +
      "remoteFlightId": "111397601080000",
 +
      "flightsSettings": [
 +
        {
 +
          "templateId": 1,
 +
          "patternId": 0,
 +
          "serviceId": 0
 +
        }
 +
      ],
 +
      "flightsPlains": [
 +
        {
 +
          "DepartureCity": {
 +
            "Key": 1,
 +
            "Value": "Москва"
 +
          },
 +
          "DepartureCountry": {
 +
            "Key": 460,
 +
            "Value": "Россия"
 +
          },
 +
          "ArrivalCity": {
 +
            "Key": 35,
 +
            "Value": "Вена"
 +
          },
 +
          "ArrivalCountry": {
 +
            "Key": 90,
 +
            "Value": "Австрия"
 +
          },
 +
          "DepartureAirport": {
 +
            "Key": "SVO",
 +
            "Value": "Шереметьево-2"
 +
          },
 +
          "ArrivalAirport": {
 +
            "Key": "VIE",
 +
            "Value": "Vena"
 +
          },
 +
          "Airline": {
 +
            "Id": 31,
 +
            "Value": "Aeroflot-Russian International AirLines",
 +
            "Key": "SU"
 +
          },
 +
          "Aircraft": {
 +
            "Key": "73H",
 +
            "Value": "73H"
 +
          },
 +
          "Flight": {
 +
            "Key": 621,
 +
            "Value": "2184"
 +
          },
 +
          "DepartureTime": "09:00:00",
 +
          "ArrivalTime": "11:00:00",
 +
          "TotalTimeOfFlight": null,
 +
          "FlightDetails": [
 
             {
 
             {
        "id": 57,
+
              "Tariff": {
        "name": "3*"
+
                "Key": 113,
      }
+
                "Code": "NSU",
  ]
+
                "Name": "Экономический класс(внешняя система)"
 +
              },
 +
              "IsCommission": false,
 +
              "Cost": 313,
 +
              "QuotaStatus": {
 +
                "PlacesStatus": 1,
 +
                "FreePlaces": 0,
 +
                "IsFewPlaces": false
 +
              },
 +
              "PartnerId": 10767,
 +
              "ByPax": false,
 +
              "Partner": {
 +
                "Key": 0,
 +
                "Value": null
 +
              }
 +
            }
 +
          ],
 +
          "FlightSetting": {
 +
            "ServiceId": 1,
 +
            "PatternId": 0,
 +
            "FlightId": 0
 +
          },
 +
          "FlightSourceMode": 0,
 +
          "Id": 0,
 +
          "SvKey": 1,
 +
          "IsSubCode1": true,
 +
          "IsSubCode2": false,
 +
          "IsPartnerBasedOn": false,
 +
          "Day": 1,
 +
          "DurationInNight": 0,
 +
          "BeginDateTime": "2021-10-25T09:00:00",
 +
          "EndDateTime": "2021-10-25T11:00:00",
 +
          "IsHooded": false,
 +
          "IsDeleted": false,
 +
          "IsNotCalculate": false,
 +
          "PacketId": 197,
 +
          "Index": 0
 +
        }
 +
      ]
 +
    }
 +
  ]
 +
}
 +
</syntaxhighlight>
 +
</TD></TR></TABLE>
 +
</div></div><br />
 +
 
 +
===Получение семейств тарифов авиаперелетов из внешней системы (GetGDSFlightFareFamilies)===
 +
Метод получает семейства тарифов для авиаперелетов из внешней системы.
 +
* Формат запроса:
 +
** POST .../TourSearchOwin/GetGDSFlightFareFamilies?
 +
 
 +
* Принимаемые параметры headers ( '''*''' – обязательный):
 +
** '''Content-Type *''' – application/json
 +
 
 +
* Принимаемые параметры POST запроса ( '''*''' – обязательный):
 +
** '''flightId''' – ID внешнего перелета
 +
** '''providerId''' – ID внешнего провайдера
 +
** '''languageCode''' – код локализации
 +
** '''passengers''' – информация о пассажирах
 +
*** '''IsMain''' – главный турист
 +
*** '''Number''' – порядковый номер туриста
 +
*** '''AgeType''' – тип туриста (0 – взрослый, 1 – ребенок, 2 – инфант)
 +
*** '''MaleFemaleSex''' – пол (0 – мужской, 1 – женский)
 +
*** '''FirstName''' – имя (лат)
 +
*** '''LastName''' – фамилия (лат)
 +
*** '''Patronymic''' – отчество (лат)
 +
*** '''FirstNameRus''' – имя (рус)
 +
*** '''LastNameRus''' – фамилия (рус)
 +
*** '''PatronymicRus''' – отчество (рус)
 +
*** '''InternationalPassportSeries''' – серия загранпаспорта
 +
*** '''InternationalPassportNumber''' – номер загранпаспорта
 +
*** '''InternationalPassportDateOfIssue''' – дата выдачи загранпаспорта (YYYY-MM-DDThh:mm:ssz)
 +
*** '''InternationalPassportDateOfIssueString''' – дата выдачи загранпаспорта в строке (DD.MM.YYYY)
 +
*** '''InternationalPassportDateOfExpiry''' – дата окончания действия загранпаспорта (YYYY-MM-DDThh:mm:ssz)
 +
*** '''InternationalPassportDateOfExpiryString''' – дата окончания действия загранпаспорта в строке (DD.MM.YYYY)
 +
*** '''internationalPassportByWhom''' – кем выдан загранпаспорт
 +
*** '''PassportSeries''' – серия паспорта
 +
*** '''PassportNumber''' – номер паспорта
 +
*** '''PassportDateOfIssue''' – дата выдачи паспорта (YYYY-MM-DDThh:mm:ssz)
 +
*** '''PassportDateOfIssueString''' – дата выдачи паспорта в строке (DD.MM.YYYY)
 +
*** '''PassportByWhom''' – кем выдан паспорт
 +
*** '''Citizenship''' – название страны
 +
*** '''Phone''' – телефон
 +
*** '''Email''' – e-mail
 +
*** '''BirthDay''' – дата рождения (YYYY-MM-DDThh:mm:ssz)
 +
*** '''BirthDayString''' – дата рождения в строковом формате (DD.MM.YYYY)
 +
*** '''BirthPlace''' – место рождения
 +
*** '''CitizenID''' – гражданство
 +
*** '''Age''' – количество полных лет на момент окончания тура
 +
** '''currency''' – валюта
 +
** '''price''' – стоимость
 +
** '''param''' – параметры перелета
 +
*** '''flightsSource''' – параметры перелета
 +
**** '''flightSettings''' – информация о шаблоне услуги авиаперелета
 +
***** '''templateId''' – идентификатор шаблона услуги
 +
***** '''patternId''' – идентификатор паттерна услуги (внутренняя информация из программы туров)
 +
***** '''serviceId''' – идентификатор класса услуги (внутренняя информация из программы туров)
 +
**** '''service''' – информация об услуге авиаперелета
 +
***** '''ServiceType''' – тип услуги
 +
***** '''Code''' – ключ услуги
 +
***** '''SubCode1''' – [[#Приложение 1: параметры услуги (ServiceType, Code, SubCode1, SubCode2)|доп. описание 1]]
 +
***** '''SubCode2''' – [[#Приложение 1: параметры услуги (ServiceType, Code, SubCode1, SubCode2)|доп. описание 2]]
 +
***** '''CountryId''' – страна услуги
 +
***** '''CityId''' – город услуги
 +
***** '''PacketId''' – пакет услуги
 +
***** '''PartnerId''' – партнер услуги
 +
***** '''Day''' – день предоставления услуги
 +
***** '''DurationInNight''' – продолжительность услуги в ночах
 +
**** '''price''' – стоимость перелета
 +
**** '''quotaInfo''' – объект информация по квотам
 +
***** '''status''' – статус по квотам (есть места / нет мест / под запрос)
 +
***** '''freePlaces''' – количество свободных мест, если удовлетворяются условия, заданные в настройке "Мало" и включена настройка "Отображать числовое значение оставшихся мест". Иначе возвращается 0. Если в данном параметре 0, то руководствоваться следует значением, полученном в параметре '''PlacesStatus'''.
 +
***** '''isFewPlaces''' – выполнены ли условия, заданные в настройке "Мало": '''true''' – если заданы условия количества мест "Мало" и данные условия выполнены, '''false''' – если не заданы условия количества мест "Мало" или они заданы, но не выполнены.
 +
**** '''flightDateTimeLimitationInterval''' –
 +
***** '''startLimitation''' – начало тайм-лимита
 +
***** '''finishLimitation''' – объект тайм-лимита
 +
****** '''dateTimeString''' – дата окончания тайм-лимита
 +
****** '''serviceType''' – тип услуги
 +
****** '''serviceCode''' – код услуги
 +
**** '''flightSourceMode''' – тип перелета (1 – локальный, 2 – из внешний системы)
 +
*** '''passengers''' – информация о пассажирах
 +
**** '''IsMain''' – главный турист
 +
**** '''Number''' – порядковый номер туриста
 +
**** '''AgeType''' – тип туриста (0 – взрослый, 1 – ребенок, 2 – инфант)
 +
**** '''MaleFemaleSex''' – пол (0 – мужской, 1 – женский)
 +
**** '''FirstName''' – имя (лат)
 +
**** '''LastName''' – фамилия (лат)
 +
**** '''Patronymic''' – отчество (лат)
 +
**** '''FirstNameRus''' – имя (рус)
 +
**** '''LastNameRus''' – фамилия (рус)
 +
**** '''PatronymicRus''' – отчество (рус)
 +
**** '''InternationalPassportSeries''' – серия загранпаспорта
 +
**** '''InternationalPassportNumber''' – номер загранпаспорта
 +
**** '''InternationalPassportDateOfIssue''' – дата выдачи загранпаспорта (YYYY-MM-DDThh:mm:ssz)
 +
**** '''InternationalPassportDateOfIssueString''' – дата выдачи загранпаспорта в строковом формате (DD.MM.YYYY)
 +
**** '''InternationalPassportDateOfExpiry''' – дата окончания действия загранпаспорта (YYYY-MM-DDThh:mm:ssz)
 +
**** '''InternationalPassportDateOfExpiryString''' – дата окончания действия загранпаспорта в строковом формате (DD.MM.YYYY)
 +
**** '''internationalPassportByWhom''' – кем выдан загранпаспорт
 +
**** '''PassportSeries''' – серия паспорта
 +
**** '''PassportNumber''' – номер паспорта
 +
**** '''PassportDateOfIssue''' – дата выдачи паспорта (YYYY-MM-DDThh:mm:ssz)
 +
**** '''PassportDateOfIssueString''' – дата выдачи паспорта в строковом формате (DD.MM.YYYY)
 +
**** '''PassportByWhom''' – кем выдан паспорт
 +
**** '''Citizenship''' – название страны
 +
**** '''Phone''' – телефон
 +
**** '''Email''' – e-mail
 +
**** '''BirthDay''' – дата рождения (YYYY-MM-DDThh:mm:ssz)
 +
**** '''BirthDayString''' – дата рождения в строковом формате (DD.MM.YYYY)
 +
**** '''BirthPlace''' – место рождения
 +
**** '''CitizenID''' – гражданство
 +
**** '''Age''' – количество полных лет на момент окончания тура
 +
*** '''tourDate''' – дата тура
 +
*** '''tourCurrency''' – валюта тура
 +
*** '''tourId''' – ключ программы тура
 +
*** '''filterTariff''' – информация о тарифах
 +
*** '''filterDeptime''' – информация о времени вылета
 +
*** '''isCommission''' – признак комиссионной цены
 +
*** '''baseFlightsParams''' – параметра авиаперелета
 +
**** '''CityArrival''' – город прибытия
 +
**** '''FlightCode''' – код авиаперелета
 +
**** '''TariffKey''' – ключ тарифа
 +
**** '''PartnerId''' – ключ партнера
 +
*** '''isUpdated''' – информация об обновлении перелета
 +
*** '''key''' – ключ запроса
 +
*** '''tourDurationByDays''' – продолжительность перелета
 +
*** '''langueCode''' – локализация
 +
 
 +
* Возвращаемый результат:
 +
** '''validationResult''' – информация о валидации
 +
*** '''Errors''' – ошибки
 +
*** '''Warnings''' – предупреждения
 +
*** '''States''' – статус
 +
*** '''IsValid''' – информация о результате
 +
** '''tariffSequencies''' – информация тарифах
 +
*** '''flightId''' – идентификатор перелета
 +
*** '''universalParametrsSequence''' – параметры тарифов
 +
**** '''universalParametrs''' – массив параметров
 +
***** '''code''' – описание параметра тарифа
 +
***** '''priority''' – приоритет показа
 +
***** '''needToPay''' – нужна ли доплата
 +
***** '''shortDescriptions''' – краткое описание
 +
****** '''code''' – код
 +
****** '''value''' – значение
 +
*** '''price''' – стоимость
 +
*** '''deltaPrice''' – разница в цене
 +
*** '''timeLimit''' – тайм-лимит
 +
*** '''segments''' – сегменты
 +
*** '''depAirportCode''' – код аэропорта отправления
 +
*** '''depCityCode''' – код города отправления
 +
*** '''arrAirportCode''' – код аэропорта прибытия
 +
*** '''arrCityCode''' – код города прибытия
 +
 
 +
 
 +
<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>
 +
Вызов метода GetGDSFlightFareFamilies
 +
<syntaxhighlight lang="java" enclose="div">
 +
POST http://localhost:9000/TourSearchOwin/GetGDSFlightFareFamilies? HTTP/1.1
 +
Content-Type: application/json
 +
 
 +
{
 +
    "flightId": "17554943020000",
 +
    "providerId": 82,
 +
    "languageCode": "ru",
 +
    "passengers": [{
 +
            "IsMain": true,
 +
            "Number": 1,
 +
            "AgeType": 0,
 +
            "MaleFemaleSex": 0,
 +
            "FirstName": "",
 +
            "LastName": "",
 +
            "Patronymic": "",
 +
            "FirstNameRus": "",
 +
            "LastNameRus": "",
 +
            "PatronymicRus": "",
 +
            "InternationalPassportSeries": "",
 +
            "InternationalPassportNumber": "",
 +
            "InternationalPassportDateOfIssue": "",
 +
            "InternationalPassportDateOfIssueString": "",
 +
            "InternationalPassportDateOfExpiry": "",
 +
            "InternationalPassportDateOfExpiryString": "",
 +
            "internationalPassportByWhom": "",
 +
            "PassportSeries": "",
 +
            "PassportNumber": "",
 +
            "PassportDateOfIssue": "",
 +
            "PassportDateOfIssueString": "",
 +
            "PassportByWhom": "",
 +
            "Citizenship": "",
 +
            "Phone": "",
 +
            "Email": "",
 +
            "BirthDay": "",
 +
            "BirthDayString": "",
 +
            "BirthPlace": "",
 +
            "CitizenID": "",
 +
            "Age": 17
 +
        }, {
 +
            "IsMain": false,
 +
            "Number": 2,
 +
            "AgeType": 0,
 +
            "MaleFemaleSex": 0,
 +
            "FirstName": "",
 +
            "LastName": "",
 +
            "Patronymic": "",
 +
            "FirstNameRus": "",
 +
            "LastNameRus": "",
 +
            "PatronymicRus": "",
 +
            "InternationalPassportSeries": "",
 +
            "InternationalPassportNumber": "",
 +
            "InternationalPassportDateOfIssue": "",
 +
            "InternationalPassportDateOfIssueString": "",
 +
            "InternationalPassportDateOfExpiry": "",
 +
            "InternationalPassportDateOfExpiryString": "",
 +
            "internationalPassportByWhom": "",
 +
            "PassportSeries": "",
 +
            "PassportNumber": "",
 +
            "PassportDateOfIssue": "",
 +
            "PassportDateOfIssueString": "",
 +
            "PassportByWhom": "",
 +
            "Citizenship": "",
 +
            "Phone": "",
 +
            "Email": "",
 +
            "BirthDay": "",
 +
            "BirthDayString": "",
 +
            "BirthPlace": "",
 +
            "CitizenID": "",
 +
            "Age": 17
 +
        }
 +
    ],
 +
    "currency": "$",
 +
    "price": 147,
 +
    "param": {
 +
        "flightsSource": [{
 +
                "flightSettings": {
 +
                    "templateId": 1,
 +
                    "patternId": 0,
 +
                    "serviceId": 0
 +
                },
 +
                "service": {
 +
                    "serviceType": 1,
 +
                    "code": 1084,
 +
                    "subCode1": 67,
 +
                    "subCode2": 1,
 +
                    "countryId": 90,
 +
                    "cityId": 35,
 +
                    "packetId": 1037,
 +
                    "partnerId": 12792,
 +
                    "day": 1,
 +
                    "durationInNight": 0
 +
                },
 +
                "price": 146.44,
 +
                "quotaInfo": {
 +
                    "status": 4,
 +
                    "freePlaces": 0,
 +
                    "isFewPlaces": false
 +
                },
 +
                "flightDateTimeLimitationInterval": {
 +
                    "startLimitation": null,
 +
                    "finishLimitation": {
 +
                        "dateTimeString": "2021-01-30T21:40:00",
 +
                        "serviceType": 3,
 +
                        "serviceCode": 178
 +
                    }
 +
                },
 +
                "flightSourceMode": 2
 +
            }
 +
        ],
 +
        "passengers": [{
 +
                "IsMain": true,
 +
                "Number": 1,
 +
                "AgeType": 0,
 +
                "MaleFemaleSex": 0,
 +
                "FirstName": "",
 +
                "LastName": "",
 +
                "Patronymic": "",
 +
                "FirstNameRus": "",
 +
                "LastNameRus": "",
 +
                "PatronymicRus": "",
 +
                "InternationalPassportSeries": "",
 +
                "InternationalPassportNumber": "",
 +
                "InternationalPassportDateOfIssue": "",
 +
                "InternationalPassportDateOfIssueString": "",
 +
                "InternationalPassportDateOfExpiry": "",
 +
                "InternationalPassportDateOfExpiryString": "",
 +
                "internationalPassportByWhom": "",
 +
                "PassportSeries": "",
 +
                "PassportNumber": "",
 +
                "PassportDateOfIssue": "",
 +
                "PassportDateOfIssueString": "",
 +
                "PassportByWhom": "",
 +
                "Citizenship": "",
 +
                "Phone": "",
 +
                "Email": "",
 +
                "BirthDay": "",
 +
                "BirthDayString": "",
 +
                "BirthPlace": "",
 +
                "CitizenID": "",
 +
                "Age": 17
 +
            }, {
 +
                "IsMain": false,
 +
                "Number": 2,
 +
                "AgeType": 0,
 +
                "MaleFemaleSex": 0,
 +
                "FirstName": "",
 +
                "LastName": "",
 +
                "Patronymic": "",
 +
                "FirstNameRus": "",
 +
                "LastNameRus": "",
 +
                "PatronymicRus": "",
 +
                "InternationalPassportSeries": "",
 +
                "InternationalPassportNumber": "",
 +
                "InternationalPassportDateOfIssue": "",
 +
                "InternationalPassportDateOfIssueString": "",
 +
                "InternationalPassportDateOfExpiry": "",
 +
                "InternationalPassportDateOfExpiryString": "",
 +
                "internationalPassportByWhom": "",
 +
                "PassportSeries": "",
 +
                "PassportNumber": "",
 +
                "PassportDateOfIssue": "",
 +
                "PassportDateOfIssueString": "",
 +
                "PassportByWhom": "",
 +
                "Citizenship": "",
 +
                "Phone": "",
 +
                "Email": "",
 +
                "BirthDay": "",
 +
                "BirthDayString": "",
 +
                "BirthPlace": "",
 +
                "CitizenID": "",
 +
                "Age": 17
 +
            }
 +
        ],
 +
        "tourDate": "2021-01-30T00:00:00",
 +
        "tourCurrency": "$",
 +
        "tourId": 100008958,
 +
        "filterTariff": {},
 +
        "filterDeptime": ["all"],
 +
        "isCommission": true,
 +
        "baseFlightsParams": [{
 +
                "CityArrival": 35,
 +
                "FlightCode": 1084,
 +
                "TariffKey": 67,
 +
                "PartnerId": 12792
 +
            }
 +
        ],
 +
        "isUpdated": false,
 +
        "key": 0,
 +
        "tourDurationByDays": "11",
 +
        "langueCode": "ru"
 +
    }
 +
}
 +
 
 +
</syntaxhighlight>
 +
Возвращаемый результат метода GetGDSFlightFareFamilies (в формате JSON)
 +
<syntaxhighlight lang="java" enclose="div">
 +
[
 +
{
 +
    "validationResult": {
 +
        "Errors": [],
 +
        "Warnings": null,
 +
        "States": null,
 +
        "IsValid": true
 +
    },
 +
    "tariffSequencies": [{
 +
            "flightId": "17554961000000",
 +
            "universalParametrsSequence": [{
 +
                    "universalParametrs": [{
 +
                            "code": "description",
 +
                            "priority": 0,
 +
                            "needToPay": "Free",
 +
                            "shortDescriptions": [{
 +
                                    "code": "RU",
 +
                                    "value": "Минимум"
 +
                                }
 +
                            ]
 +
                        }, {
 +
                            "code": "carry_on",
 +
                            "priority": 1,
 +
                            "needToPay": "Free",
 +
                            "shortDescriptions": [{
 +
                                    "code": "RU",
 +
                                    "value": "5 кг (40x30x20 см)"
 +
                                }
 +
                            ]
 +
                        }, {
 +
                            "code": "carry_on",
 +
                            "priority": 2,
 +
                            "needToPay": "Charge",
 +
                            "shortDescriptions": [{