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

Материал из Megatec
Перейти к: навигация, поиск
[непроверенная версия][досмотренная версия]
(Поиск туров (Tour))
(Установка)
 
(не показано 147 промежуточных версий 8 участников)
Строка 12: Строка 12:
 
Для работы с 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''
  
 
==Список методов==
 
==Список методов==
Строка 17: Строка 20:
 
Последовательность вызова методов сервиса<br />
 
Последовательность вызова методов сервиса<br />
 
[[Файл:mb_273.png|1000px|Последовательность вызова методов сервиса]]
 
[[Файл:mb_273.png|1000px|Последовательность вызова методов сервиса]]
 +
 +
===Информация о состоянии службы поиска (statusCache)===
 +
Метод выводит информацию о состоянии службы поиска при ее загрузке.
 +
* Формат запроса:
 +
** GET .../TourSearchOwin/statusCache?
 +
* Принимаемые параметры:
 +
** нет принимаемых параметров
 +
* Возвращаемый результат:
 +
** '''Initialized''' – информация о том, загружена ли служба или нет ('''false''' – инициализация кешей не завершена, '''true''' – инициализация кешей завершена)
 +
** '''Status''' – состояние службы. Возможные значения: ''Запущена инициализация кэшей'', ''Инициализация кэшей завершена''
 +
** '''CacheName''' – информация о том, какой именно кеш сейчас считается (название)
 +
** '''Iteration''' – порядковый номер считаемого справочника кеша
 +
** '''CacheCount''' – общее количество кешей
 +
** '''ProcessMessage''' – детализация. Информацию можно разделить на 3 блока:
 +
*** Загрузка всех справочных данных, кроме расчета маршрутов и актуальных фильтров. В этом случае сообщение будет ''Загрузка кэшей из БД''
 +
*** Расчет маршрутов. ''CacheName'' – ''HotelScheme'', сообщение будет ''tours load: 956 / 1234''
 +
*** Расчет актуальных фильтров. ''CacheName'' – ''ActualFilters'', сообщение будет ''Actual filter processed: 783012 / 3865687"''
 +
 +
<div class="toccolours mw-collapsible mw-collapsed" style="width:900px">Пример
 +
<div class="mw-collapsible-content">
 +
<TABLE STYLE="border: 0.1em dashed #2F6FAB; margin: 8px; padding: 8px" WIDTH="99%"><TR><TD>
 +
Вызов метода Settings
 +
<syntaxhighlight lang="java" enclose="div">
 +
GET http://localhost:9000/TourSearchOwin/statusCache
 +
</syntaxhighlight>
 +
Возвращаемый результат метода statusCache (в формате JSON)
 +
<syntaxhighlight lang="java" enclose="div">
 +
{
 +
    "Initialized": false,
 +
    "Status": "Запущена инициализация кэшей",
 +
    "CacheName": "ToursSearchView",
 +
    "Iteration": 10,
 +
    "CacheCount": 112,
 +
    "ProcessMessage": "Загрузка кэшей из БД"
 +
}
 +
{
 +
    "Initialized": false,
 +
    "Status": "Запущена инициализация кэшей",
 +
    "CacheName": "HotelScheme",
 +
    "Iteration": 109,
 +
    "CacheCount": 112,
 +
    "ProcessMessage": "tours load: 956 / 1234"
 +
}
 +
{
 +
    "Initialized": false,
 +
    "Status": "Запущена инициализация кэшей",
 +
    "CacheName": "ActualFilters",
 +
    "Iteration": 112,
 +
    "CacheCount": 112,
 +
    "ProcessMessage": "Actual filter processed: 783012 / 3865687"
 +
}
 +
{
 +
    "Initialized": true,
 +
    "Status": "Инициализация кэшей завершена",
 +
    "CacheName": null,
 +
    "Iteration": 0,
 +
    "CacheCount": 0,
 +
    "ProcessMessage": null
 +
}
 +
</syntaxhighlight>
 +
</TD></TR></TABLE>
 +
</div></div><br />
  
 
===Авторизация (Token)===
 
===Авторизация (Token)===
Строка 105: Строка 170:
 
*** ''<add key="enableActualFilters" value="true" />'' - CacheReady: true = CacheReadyMessage: "Кеш инициализирован"; CacheReady: false = CacheReadyMessage: "Кеш еще не инициализирован"
 
*** ''<add key="enableActualFilters" value="true" />'' - CacheReady: true = CacheReadyMessage: "Кеш инициализирован"; CacheReady: false = CacheReadyMessage: "Кеш еще не инициализирован"
 
*** ''<add key="enableActualFilters" value="false" />'' - Служба актуальных фильтров недоступна (выключена, неверно указана ссылка на нее и т.п.) CacheReadyMessage: "Служба актуальных фильтров недоступна"; Служба актуальных фильтров доступна но не готова - CacheReadyMessage: "Кеш службы актуальных фильтров не инициализирован"; Служба актуальных фильтров готова, а основная служба не готова - CacheReadyMessage: "Кеш ещё не инициализирован"; Служба актуальных фильтров готова, и основная служба готова - 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">
Строка 182: Строка 253:
 
   "ShowHotelImagesInSearch": true
 
   "ShowHotelImagesInSearch": true
 
   "CacheReadyMessage": "Кеш инициализирован"
 
   "CacheReadyMessage": "Кеш инициализирован"
 +
    "nodeId": 2147483647,
 +
    "FullPaymentPeriod": null,
 +
    "FullPaymentCheckin": 5,
 +
    "PrePaymentPeriod": null,
 +
    "PrePaymentCheckin": 10,
 +
    "PrePaymentPercent": 50.0,
 +
    "PrePaymentCu": null
 
}
 
}
 
</syntaxhighlight>
 
</syntaxhighlight>
 
</TD></TR></TABLE>
 
</TD></TR></TABLE>
 
</div></div><br />
 
</div></div><br />
 
  
 
===Выгрузка списка валют в онлайне (Currency)===
 
===Выгрузка списка валют в онлайне (Currency)===
Строка 250: Строка 327:
 
</div></div><br />
 
</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)===
 
===Выгрузка списка всех валют (getAllCurrencies)===
Строка 462: Строка 595:
 
* Принимаемые параметры ( '''*''' – обязательный):
 
* Принимаемые параметры ( '''*''' – обязательный):
 
** '''departureCities *''' – идентификатор города(ов) отправления (из контроллера [[#Выгрузка актуальных городов отправления (departureCities)|''.../TourSearchOwin/departureCities?'']])
 
** '''departureCities *''' – идентификатор города(ов) отправления (из контроллера [[#Выгрузка актуальных городов отправления (departureCities)|''.../TourSearchOwin/departureCities?'']])
 +
** '''type''' – настройка easySearchFilter (0/не указано - настройка выключена, 1 - настройка включена)
 
** '''term''' – фильтрация результатов по контекстному поиску (по умолчанию параметр пустой)
 
** '''term''' – фильтрация результатов по контекстному поиску (по умолчанию параметр пустой)
 
* Возвращаемый результат:
 
* Возвращаемый результат:
 
** '''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">Пример
Строка 473: Строка 616:
 
Вызов метода Destination
 
Вызов метода Destination
 
<syntaxhighlight lang="java" enclose="div">
 
<syntaxhighlight lang="java" enclose="div">
 +
 
GET http://localhost:9000/TourSearchOwin/Destination?departureCities=1
 
GET http://localhost:9000/TourSearchOwin/Destination?departureCities=1
 
</syntaxhighlight>
 
</syntaxhighlight>
Строка 479: Строка 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>
Строка 544: Строка 782:
 
** '''departureCityKeys *''' – идентификатор города(ов) отправления (полученный из метода ''.../TourSearchOwin/departureCities?'')
 
** '''departureCityKeys *''' – идентификатор города(ов) отправления (полученный из метода ''.../TourSearchOwin/departureCities?'')
 
** '''Key *''' – идентификатор страны прибытия (полученный из метода ''.../TourSearchOwin/Destination?'')
 
** '''Key *''' – идентификатор страны прибытия (полученный из метода ''.../TourSearchOwin/Destination?'')
** '''Type *''' – тип результата (всегда возвращается в JSON = 1, в xml = country)
+
** '''Type *''' – тип результата (внутренний параметр, не изменяемый, всегда указывать значение = 1)
 
** '''destinationCity *''' – идентификатор города(ов) прибытия (полученный из метода ''.../TourSearchOwin/ActualizeCities?''), по умолчанию передается ''-1'', то есть все города в рамках данной страны
 
** '''destinationCity *''' – идентификатор города(ов) прибытия (полученный из метода ''.../TourSearchOwin/ActualizeCities?''), по умолчанию передается ''-1'', то есть все города в рамках данной страны
 
** '''terms''' – фильтрация результатов по контекстному поиску (по умолчанию параметр пустой)
 
** '''terms''' – фильтрация результатов по контекстному поиску (по умолчанию параметр пустой)
Строка 550: Строка 788:
 
** '''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">Пример
Строка 590: Строка 828:
 
** '''destinationCity *''' – идентификатор города(ов) прибытия (полученный из метода ''.../TourSearchOwin/ActualizeCities?''), по умолчанию передается ''-1'', то есть все города в рамках данной страны
 
** '''destinationCity *''' – идентификатор города(ов) прибытия (полученный из метода ''.../TourSearchOwin/ActualizeCities?''), по умолчанию передается ''-1'', то есть все города в рамках данной страны
 
** '''Key *''' – идентификатор страны прибытия (полученный из метода ''.../TourSearchOwin/Destination?'')
 
** '''Key *''' – идентификатор страны прибытия (полученный из метода ''.../TourSearchOwin/Destination?'')
** '''Type *''' – тип результата (всегда возвращается в JSON = 1, в xml = country)
+
** '''Type *''' – тип результата (внутренний параметр, не изменяемый, всегда указывать значение = 1)
 
** '''tourTypes *''' – идентификатор типа тура (полученный из метода ''.../TourSearchOwin/ActualizeTourType?''), по умолчанию передается ''-1'', то есть все типы тура в рамках данной страны
 
** '''tourTypes *''' – идентификатор типа тура (полученный из метода ''.../TourSearchOwin/ActualizeTourType?''), по умолчанию передается ''-1'', то есть все типы тура в рамках данной страны
 
* Возвращаемый результат:
 
* Возвращаемый результат:
Строка 626: Строка 864:
 
** '''destinationCity *''' – идентификатор города(ов) прибытия (полученный из метода ''.../TourSearchOwin/ActualizeCities?''), по умолчанию передается ''-1'', то есть все города в рамках данной страны
 
** '''destinationCity *''' – идентификатор города(ов) прибытия (полученный из метода ''.../TourSearchOwin/ActualizeCities?''), по умолчанию передается ''-1'', то есть все города в рамках данной страны
 
** '''Key *''' – идентификатор страны прибытия (полученный из метода ''.../TourSearchOwin/Destination?'')
 
** '''Key *''' – идентификатор страны прибытия (полученный из метода ''.../TourSearchOwin/Destination?'')
** '''Type *''' – тип результата (всегда возвращается в JSON = 1, в xml = country)
+
** '''Type *''' – тип результата (внутренний параметр, не изменяемый, всегда указывать значение = 1)
 
** '''tourDate *''' – массив дат заезда (полученные из метода ''.../TourSearchOwin/TourDate?''). Если параметры передаются через url, то каждое значение необходимо передавать отдельным параметром.
 
** '''tourDate *''' – массив дат заезда (полученные из метода ''.../TourSearchOwin/TourDate?''). Если параметры передаются через url, то каждое значение необходимо передавать отдельным параметром.
 
** '''tourTypes *''' – идентификатор типа(ов) тура (полученный из метода ''.../TourSearchOwin/ActualizeTourType?''), по умолчанию передается ''-1'', то есть все типы тура в рамках данной страны
 
** '''tourTypes *''' – идентификатор типа(ов) тура (полученный из метода ''.../TourSearchOwin/ActualizeTourType?''), по умолчанию передается ''-1'', то есть все типы тура в рамках данной страны
Строка 665: Строка 903:
 
** '''PageSize *''' – количество возвращаемых результатов на одной странице (возвращается 20)
 
** '''PageSize *''' – количество возвращаемых результатов на одной странице (возвращается 20)
 
** '''isFromBasket *''' – происходит ли обращение из корзины или из поиска туров (true/false)
 
** '''isFromBasket *''' – происходит ли обращение из корзины или из поиска туров (true/false)
** '''isFillSecondaryFilters *''' – заполнены ли дополнительные фильтры (по умолчанию всегда приходит true)
+
** '''isFillSecondaryFilters''' – заполнены ли дополнительные фильтры (по умолчанию всегда приходит true). Служебный внутренний параметр. При работе с API не используется.
** '''DestinationType *''' – тип результата (всегда возвращается в JSON = 1, в xml = country)
+
** '''DestinationType *''' – тип результата (внутренний параметр, не изменяемый, всегда указывать значение = 1)
 
** '''DestinationKey *''' – идентификатор страны прибытия (полученный из метода ''.../TourSearchOwin/Destination?'')
 
** '''DestinationKey *''' – идентификатор страны прибытия (полученный из метода ''.../TourSearchOwin/Destination?'')
 
** '''AdultCount *''' – количество взрослых
 
** '''AdultCount *''' – количество взрослых
Строка 678: Строка 916:
 
** '''Groups''' – группировка результатов (2 – по названию тура, 4 – по дате тура, 8 – по продолжительности тура, 16 – по городу вылета, 32 – по отелю, 64 – по городу отеля, 128 – по курорту отеля, 256 – по категории отеля)
 
** '''Groups''' – группировка результатов (2 – по названию тура, 4 – по дате тура, 8 – по продолжительности тура, 16 – по городу вылета, 32 – по отелю, 64 – по городу отеля, 128 – по курорту отеля, 256 – по категории отеля)
 
** '''HotelScheme''' – пустой по умолчанию. Заполняется при вызове вариантов размещений в рамках одного отеля. Передаются следующие параметры:  
 
** '''HotelScheme''' – пустой по умолчанию. Заполняется при вызове вариантов размещений в рамках одного отеля. Передаются следующие параметры:  
*** '''TemplateId''' – идентификатор шаблона услуги,  
+
*** '''TemplateId''' – идентификатор шаблона услуги (этот параметр можно взять из контроллера Tour->Result->MinCostServicesComposition->Key->TemplateId),  
*** '''DurationInNight''' – продолжительность отеля в ночах,  
+
*** '''DurationInNight''' – продолжительность отеля в ночах (этот параметр можно взять из контроллера Tour->Result->MinCostServicesComposition->Value->DurationInNight),  
*** '''Code''' – ключ отеля,  
+
*** '''Code''' – ключ отеля (этот параметр можно взять из контроллера Tour->Result->MinCostServicesComposition->Value->Code),  
*** '''PacketKey''' – ключ пакета,  
+
*** '''PacketKey''' – ключ пакета (этот параметр можно взять из контроллера Tour->Result->MinCostServicesComposition->Value->PacketId),
*** '''PartnerKey''' – ключ партнера
+
*** '''PartnerKey''' – ключ партнера (этот параметр можно взять из контроллера Tour->Result->MinCostServicesComposition->Value->PartnerId),
*** '''GDSProviderId''' – ключ провайдера из внешней системы
+
*** '''GDSProviderId''' – ключ провайдера из внешней системы (этот параметр можно взять из контроллера Tour->Result->MinCostServicesComposition->Value->GDSProviderId),
*** '''TotalTourDuration''' – общая продолжительность тура в днях
+
*** '''TotalTourDuration''' – общая продолжительность тура в днях (этот параметр можно взять из контроллера Tour->Result->Duration)
 
** '''BusTransferPointKeys''' – данный признак проставляется в ''true'' в том случае, когда происходит запрос вариантов проживания (кнопка ''Варианты'') в автобусных переездах
 
** '''BusTransferPointKeys''' – данный признак проставляется в ''true'' в том случае, когда происходит запрос вариантов проживания (кнопка ''Варианты'') в автобусных переездах
 
** '''TourKey''' – пустой по умолчанию. Заполняется при вызове вариантов размещений в рамках одного отеля: ключ программы тура
 
** '''TourKey''' – пустой по умолчанию. Заполняется при вызове вариантов размещений в рамках одного отеля: ключ программы тура
Строка 715: Строка 953:
 
** '''FlightCityDeparture''' – ключ город вылета в параметрах авиаперелета (дополнительный фильтр)
 
** '''FlightCityDeparture''' – ключ город вылета в параметрах авиаперелета (дополнительный фильтр)
 
** '''CityDeparture''' – ключ города начала поездки (дополнительный фильтр)
 
** '''CityDeparture''' – ключ города начала поездки (дополнительный фильтр)
** '''RemoteHotelMode''' – признак того, производится поиск только локальных отелей или и от внешних поставщиков тоже (только локальные отели – 0, только внешние отели – 2, локальные и внешние отели – 1). Если признак отсутствует поиск будет только по локальным отелям! Обрабатывается начиная с релиза 15.4.
+
** '''RemoteHotelMode''' – признак того, производится поиск только локальных отелей или и от внешних поставщиков тоже (только локальные отели – 0, только внешние отели – 2, локальные и внешние отели – 1). Если признак отсутствует поиск будет только по локальным отелям. Обрабатывается начиная с релиза 15.4.
** '''GroupGuid''' – используется для получения турпрограмм по уникальному ключу из кэша при использовании группировки. Примеры использования. ''GroupGuid=00000000-0000-0000-0000-000000000000'' – при первом запросе от локальной системы. ''GroupGuid=936DA01F-9ABD-4d9d-80C7-02AF85C822A8'' (уникальный ключ) – передается на клиент от первого запроса из внешней системы. С данным уникальным ключом осуществляется второй запрос от удаленной внешней системы. Далее происходит получение значений по данному уникальному ключу. Обрабатывается начиная с релиза 15.4.
+
** '''GroupGuid''' – используется для получения турпрограмм по уникальному ключу из кэша при использовании группировки. Примеры использования. ''GroupGuid=00000000-0000-0000-0000-000000000000'' – при первом запросе от локальной системы. ''GroupGuid=936DA01F-9ABD-4d9d-80C7-02AF85C822A8'' (уникальный ключ) – передается на клиент от первого запроса из внешней системы. С данным уникальным ключом осуществляется второй запрос от внешней системы. Далее происходит получение значений по данному уникальному ключу. Обрабатывается начиная с релиза 15.4.
** '''IsGroupingTourAlreadyMerge''' – определяет слияние данных турпрограмм от локальной системы с данными от внешней системы при использовании группировки. Примеры использования. ''IsGroupingTourAlreadyMerge=false'' – полученные данные от локальной системы не объединены с данными от внешней удаленной системы. На клиенте осуществляется объединение данных турпрограмм с последующей сортировкой по минимальной цене. ''IsGroupingTourAlreadyMerge=true'' – полученные данные от локальной системы уже объединены с данными от внешней удаленной системы. На клиенте осуществляется только сортировка по минимальной цене. Обрабатывается начиная с релиза 15.4.
+
** '''IsGroupingTourAlreadyMerge''' – определяет слияние данных турпрограмм от локальной системы с данными от внешней системы при использовании группировки. Примеры использования. ''IsGroupingTourAlreadyMerge=false'' – полученные данные от локальной системы не объединены с данными от внешней системы. На клиенте осуществляется объединение данных турпрограмм с последующей сортировкой по минимальной цене. ''IsGroupingTourAlreadyMerge=true'' – полученные данные от локальной системы уже объединены с данными от внешней системы. На клиенте осуществляется только сортировка по минимальной цене. Обрабатывается начиная с релиза 15.4.
 
** '''SearchId''' – уникальный идентификатор запроса поиска, передаваемый с клиентской части. Возвращается в ответе без изменений. Обрабатывается начиная с релиза 15.5.
 
** '''SearchId''' – уникальный идентификатор запроса поиска, передаваемый с клиентской части. Возвращается в ответе без изменений. Обрабатывается начиная с релиза 15.5.
 +
** '''nodeId''' – уникальный идентификатор узла в кластере балансировки нагрузки [[Мастер-Тур(15):Балансировщик нагрузки HaProxy|HaProxy]]
 
   
 
   
  
Строка 731: Строка 970:
 
*** '''TourUrl''' – ссылка на программу тура
 
*** '''TourUrl''' – ссылка на программу тура
 
*** '''BookingConditions''' – условия бронирования программы туров
 
*** '''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''' – дата начала тура
 
*** '''StartDate''' – дата начала тура
 +
*** '''MaxConnectionTime''' – длительность пересадок в индивидуальных настройках подбора перелетов в формате hh:mm
 +
*** '''FullPaymentPeriod''' – полная оплата с даты бронирования (может быть null)
 +
*** '''FullPaymentCheckin''' – полная оплата до даты заезда (может быть null)
 +
*** '''PrePaymentPeriod''' – предоплата с даты бронирования (может быть null)
 +
*** '''PrePaymentCheckin''' – предоплата до даты заезда (может быть null)
 +
*** '''PrePaymentCu"''' – значение предоплаты в y.e. (может быть null)
 +
*** '''PrePaymentPercent''' – значение предоплаты в процентах (может быть null)
 
*** '''Duration''' – продолжительность тура (в днях)
 
*** '''Duration''' – продолжительность тура (в днях)
 
*** '''DurationInNight''' – продолжительность проживания (в ночах)
 
*** '''DurationInNight''' – продолжительность проживания (в ночах)
 
*** '''Types''' – идентификатор типа туров
 
*** '''Types''' – идентификатор типа туров
*** '''Cost''' – цена тура
+
*** '''Price''' –  цена тура с учетом скидки в валюте поиска
 +
*** '''Cost''' – цена тура в валюте поиска
 
*** '''Rate''' – код валюты тура
 
*** '''Rate''' – код валюты тура
 +
*** '''Penalties''' – внутреннее поле, не используется
 
*** '''CityDepature''' – город отправления
 
*** '''CityDepature''' – город отправления
 
**** '''Key''' – идентификатор города отправления
 
**** '''Key''' – идентификатор города отправления
Строка 779: Строка 1045:
 
***** '''Cost''' – разница в стоимости с самым дешевым вариантом
 
***** '''Cost''' – разница в стоимости с самым дешевым вариантом
 
***** '''QuotaStatus''' – информация о квоте
 
***** '''QuotaStatus''' – информация о квоте
****** '''PlacesStatus''' – статус по квотам (есть места / нет мест / под запрос)  
+
****** '''PlacesStatus''' – статус по квотам (есть места-1 / нет мест-2 / под запрос-4)  
 
****** '''FreePlaces''' – количество свободных мест, если удовлетворяются условия, заданные в настройке "Мало" и включена настройка "Отображать числовое значение оставшихся мест". Иначе возвращается 0. Если в данном параметре 0, то руководствоваться следует значением, полученном в параметре '''PlacesStatus'''.
 
****** '''FreePlaces''' – количество свободных мест, если удовлетворяются условия, заданные в настройке "Мало" и включена настройка "Отображать числовое значение оставшихся мест". Иначе возвращается 0. Если в данном параметре 0, то руководствоваться следует значением, полученном в параметре '''PlacesStatus'''.
 
****** '''IsFewPlaces''' – выполнены ли условия, заданные в настройке "Мало": '''true''' – если заданы условия количества мест "Мало" и данные условия выполнены, '''false''' – если не заданы условия количества мест "Мало" или они заданы, но не выполнены.
 
****** '''IsFewPlaces''' – выполнены ли условия, заданные в настройке "Мало": '''true''' – если заданы условия количества мест "Мало" и данные условия выполнены, '''false''' – если не заданы условия количества мест "Мало" или они заданы, но не выполнены.
Строка 791: Строка 1057:
 
***** '''PatternId''' – идентификатор паттерна услуги (внутренняя информация из программы туров)
 
***** '''PatternId''' – идентификатор паттерна услуги (внутренняя информация из программы туров)
 
***** '''FlightId''' – идентификатор перелета (внутренняя информация из программы туров)
 
***** '''FlightId''' – идентификатор перелета (внутренняя информация из программы туров)
**** '''FlightSourceMode''' – локальный или удаленный перелет (внутренняя информация из программы туров)
+
**** '''FlightSourceMode''' – локальный или внешний перелет (внутренняя информация из программы туров)
 
**** '''Id''' – идентификатор базового шаблона услуги (внутренняя информация из программы туров)  
 
**** '''Id''' – идентификатор базового шаблона услуги (внутренняя информация из программы туров)  
 
**** '''SvKey''' – ключ типа услуги
 
**** '''SvKey''' – ключ типа услуги
Строка 810: Строка 1076:
 
***** '''Key''' – ключ города
 
***** '''Key''' – ключ города
 
***** '''Value''' – название города
 
***** '''Value''' – название города
**** '''Country''' – ключ страны
+
**** '''Country''' – объект страна
 +
***** '''Key''' – ключ страны
 +
***** '''Value''' – название страны
 
**** '''Code''' – объект код услуги
 
**** '''Code''' – объект код услуги
 
***** '''Key''' – ключ услуги
 
***** '''Key''' – ключ услуги
Строка 826: Строка 1094:
 
***** '''Cost''' – цена
 
***** '''Cost''' – цена
 
***** '''QuotaStatus''' – объект информация по квотам
 
***** '''QuotaStatus''' – объект информация по квотам
****** '''PlacesStatus''' – статус по квотам (есть места / нет мест / под запрос)  
+
****** '''PlacesStatus''' – статус по квотам (есть места-1 / нет мест-2 / под запрос-4)
 
****** '''FreePlaces''' – количество свободных мест, если удовлетворяются условия, заданные в настройке "Мало" и включена настройка "Отображать числовое значение оставшихся мест". Иначе возвращается 0. Если в данном параметре 0, то руководствоваться следует значением, полученном в параметре '''PlacesStatus'''.
 
****** '''FreePlaces''' – количество свободных мест, если удовлетворяются условия, заданные в настройке "Мало" и включена настройка "Отображать числовое значение оставшихся мест". Иначе возвращается 0. Если в данном параметре 0, то руководствоваться следует значением, полученном в параметре '''PlacesStatus'''.
 
****** '''IsFewPlaces''' – выполнены ли условия, заданные в настройке "Мало": '''true''' – если заданы условия количества мест "Мало" и данные условия выполнены, '''false''' – если не заданы условия количества мест "Мало" или они заданы, но не выполнены.
 
****** '''IsFewPlaces''' – выполнены ли условия, заданные в настройке "Мало": '''true''' – если заданы условия количества мест "Мало" и данные условия выполнены, '''false''' – если не заданы условия количества мест "Мало" или они заданы, но не выполнены.
Строка 916: Строка 1184:
 
***** '''enabled''' – флаг включен/выключен
 
***** '''enabled''' – флаг включен/выключен
 
*** '''RouteSubVariants''' – подварианты услуг (используется в основном поиске)
 
*** '''RouteSubVariants''' – подварианты услуг (используется в основном поиске)
 +
*** '''Routes''' – количество маршрутов для данного варианта поиска (к примеру, если будет несколько вариантов
 +
*** '''IsRemoteHotels''' – признак, есть ли внешние отели в данном варианте
 +
*** '''IsTourImages''' – признак, есть ли картинки тура
 +
*** '''MaskKeys''' – маска фильтра категории номеров
 
** '''SecondaryFiltersResult''' – результаты доп. фильтров
 
** '''SecondaryFiltersResult''' – результаты доп. фильтров
 
*** '''TourTypes''' – типы тура
 
*** '''TourTypes''' – типы тура
Строка 966: Строка 1238:
 
****** '''settings''' –
 
****** '''settings''' –
 
****** '''enabled''' –
 
****** '''enabled''' –
**** '''XmlSettings''' – строка xml для актуальных фильтров
 
 
**** '''Type''' – тип справочника (используется для внутренних целей)
 
**** '''Type''' – тип справочника (используется для внутренних целей)
 
*** '''TourDurations''' – продолжительность тура
 
*** '''TourDurations''' – продолжительность тура
Строка 994: Строка 1265:
 
**** '''HotelTypes''' – признаки отелей в дополнительных фильтрах  
 
**** '''HotelTypes''' – признаки отелей в дополнительных фильтрах  
 
***** '''''' –  
 
***** '''''' –  
 +
** '''nodeId''' – уникальный идентификатор узла в кластере балансировки нагрузки [[Мастер-Тур(15):Балансировщик нагрузки HaProxy|HaProxy]]
  
 
<div class="toccolours mw-collapsible mw-collapsed" style="width:900px">Пример
 
<div class="toccolours mw-collapsible mw-collapsed" style="width:900px">Пример
Строка 1021: Строка 1293:
 
         "TourUrl": "www.megatec.ru",
 
         "TourUrl": "www.megatec.ru",
 
         "BookingConditions": "<p>Условия бронирования тура.<\/p>",
 
         "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",
 
         "StartDate": "2018-02-25T00:00:00",
 +
        "MaxConnectionTime": 0
 +
        "FullPaymentPeriod": 5,
 +
        "FullPaymentCheckin": null,
 +
        "PrePaymentPeriod": null,
 +
        "PrePaymentCheckin": 5,
 +
        "PrePaymentCu": null,
 +
        "PrePaymentPercent": 10.0,
 
         "Duration": 4,
 
         "Duration": 4,
 
         "DurationInNight": 3,
 
         "DurationInNight": 3,
 
         "Types": [2],
 
         "Types": [2],
 +
        "Price": 260,
 
         "Cost": 260,
 
         "Cost": 260,
 +
        "Penalties": null,
 
         "Rate": "EU",
 
         "Rate": "EU",
 
         "CityDepature":          {
 
         "CityDepature":          {
Строка 1156: Строка 1455:
 
                     "Value": "Завтрак"
 
                     "Value": "Завтрак"
 
                   },
 
                   },
 +
                  "AbsolutePenalties": null,
 
                   "Cost": 19.47,
 
                   "Cost": 19.47,
 
                   "QuotaStatus":                  {
 
                   "QuotaStatus":                  {
Строка 1272: Строка 1572:
 
               "ServiceName": "страховка",
 
               "ServiceName": "страховка",
 
               "City": null,
 
               "City": null,
               "Country": 6245,
+
               "Country":               {
 +
                  "Key": 90,
 +
                  "Value": "Австрия"
 +
              },
 
               "Code":                {
 
               "Code":                {
 
                   "Key": 297,
 
                   "Key": 297,
Строка 1325: Строка 1628:
 
                   "Value": "Санто-Доминго"
 
                   "Value": "Санто-Доминго"
 
               },
 
               },
               "Country": 6245,
+
               "Country":               {
 +
                  "Key": 90,
 +
                  "Value": "Австрия"
 +
              },
 
               "Code":                {
 
               "Code":                {
 
                   "Key": 743,
 
                   "Key": 743,
Строка 1460: Строка 1766:
 
             }
 
             }
 
         },
 
         },
         "RouteSubVariants": []
+
         "RouteSubVariants": [],
 +
        "Routes": 1,
 +
        "IsRemoteHotels": false,
 +
        "IsTourImages": false,
 +
        "MaskKeys": null
 
       }
 
       }
 
   ],
 
   ],
Строка 1528: Строка 1838:
 
               }
 
               }
 
             },
 
             },
            "XmlSettings": "информация о туре в формате xml",
 
 
             "Type": "TourProgram"
 
             "Type": "TourProgram"
 
         }
 
         }
Строка 1979: Строка 2288:
 
</div></div><br />
 
</div></div><br />
  
===Выгрузка транспортного плана (TransportPlan)===
+
* Детализация параметра 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 включительно===
 
Метод производит выгрузку транспортного плана.
 
Метод производит выгрузку транспортного плана.
 
* Формат запроса:
 
* Формат запроса:
Строка 2067: Строка 2393:
 
</div></div><br />
 
</div></div><br />
  
===Выгрузка первоначального варианта в корзину для бронирования (Tour)===
+
===Выгрузка транспортного плана (TransportPlan) начиная с релиза 15.8===
Метод поиска, который возвращает варианты только по данной турпрограмме и схеме отеля.
+
Метод производит выгрузку транспортного плана.
 
* Формат запроса:
 
* Формат запроса:
** GET .../TourSearchOwin/Tour?
+
** GET .../TourSearchOwin/TransportPlan?
 
* Принимаемые параметры ( '''*''' – обязательный):
 
* Принимаемые параметры ( '''*''' – обязательный):
** '''DepartureCityKeys *''' – идентификатор города отправления (полученный из метода ''.../TourSearchOwin/departureCities?'')
+
** '''code''' – код услуги
** '''DestinationType *''' – тип результата (всегда возвращается в JSON = 1, в xml = country)
+
** '''dateBegin''' – дата услуги
** '''DestinationKey *''' – идентификатор страны прибытия (полученный из метода ''.../TourSearchOwin/Destination?'')
+
** '''serviceType''' – тип услуги
** '''Dates *''' – массив дат заезда (полученные из метода ''.../TourSearchOwin/TourDate?''). Если параметры передаются через url, то каждое значение необходимо передавать отдельным параметром.
+
** '''transportKey''' – ключ справочника транспорт
** '''Durations *''' – массив продолжительностей (полученные из метода ''.../TourSearchOwin/Duration?''). Если параметры передаются через url, то каждое значение необходимо передавать отдельным параметром.
 
** '''AdultCount *''' – количество взрослых
 
** '''ChildAges''' – возраст детей. Если детей несколько, и параметры передаются через url, то каждое значение необходимо передавать отдельным параметром.
 
** '''CurrencyName *''' – код валюты
 
** '''HotelQuota *''' – информация о квотах на отель (значения параметров: ''"1"'' — фильтр "Есть", ''"5"'' — фильтр "Есть+запрос", ''"7"'' — фильтр "Все")
 
** '''AviaQuota *''' – информация о квотах на авиаперелет (значения параметров: ''"1"'' — фильтр "Есть", ''"5"'' — фильтр "Есть+запрос", ''"7"'' — фильтр "Все")
 
** '''BusTransferQuota''' – информация о квотах на автобусный переезд (значения параметров: ''"1"'' — фильтр "Есть", ''"5"'' — фильтр "Есть+запрос", ''"7"'' — фильтр "Все")
 
** '''HotelScheme *''' – объект схемы отеля
 
*** '''TemplateId''' – идентификатор шаблона услуги
 
*** '''DurationInNight''' – продолжительность отеля в ночах
 
*** '''Code''' – ключ отеля
 
*** '''PacketKey''' – ключ пакета
 
*** '''PartnerKey''' – ключ партнера
 
*** '''GDSProviderId''' – ключ провайдера из внешней системы
 
*** '''TotalTourDuration''' – общая продолжительность тура в днях, обрабатывается начиная с релиза 15.6, обязательный параметр. Изменения связаны с возможностью работы поиска в ночах проживания в отеле, для перехода в корзину необходимо знать общую продолжительность тура. Взять значение для параметра ''TotalTourDuration'' для HotelScheme можно из свойства ''Duration'', пришедшего для данной цены в ответе метода поиск туров (''Tour'')
 
** '''PageNumber *''' – номер возвращаемой страницы (по умолчанию возвращается 1)
 
** '''PageSize *''' – количество возвращаемых результатов на одной странице (возвращается 20)
 
** '''isFromBasket *''' – происходит ли обращение из корзины или из поиска туров (true/false).
 
** '''isFillSecondaryFilters *''' – заполнены ли дополнительные фильтры (true/false)
 
** '''TourKey''' – пустой по умолчанию. Заполняется при вызове вариантов размещений в рамках одного отеля: ключ программы тура
 
** '''TourDuration''' – пустой по умолчанию. Заполняется при вызове вариантов размещений в рамках одного отеля: продолжительность тура в днях
 
** '''RemoteHotelMode''' – признак того, производится поиск только локальных отелей или и от внешних поставщиков тоже (только локальные отели – 0, только внешние отели – 2, локальные и внешние отели – 1). Обрабатывается начиная с релиза 15.4.
 
  
 
* Возвращаемый результат:
 
* Возвращаемый результат:
** '''CheckMessages''' – сообщения для логики проверки тура (не используется)
+
** '''VehiclePlans''' – массив параметров зон плана
** '''Message''' – сообщение об ошибке
+
*** '''Key''' – ключ зоны
*** '''Key''' – код ошибки
+
*** '''TransportKey''' – ключ из справочника транспорт
*** '''Value''' – сообщение об ошибке
+
*** '''Row''' – количество рядов
** '''Result''' – результаты поиска
+
*** '''AreaNumber''' – номер уровня
*** '''Key''' – идентификатор программы тура
+
*** '''Name''' – название уровня
*** '''Name''' – название программы тура
+
*** '''PlanOrientation''' – ориентация плана (''false'' - горизонтальная, ''true'' - вертикальная)
*** '''TourUrl''' – ссылка на программу тура
+
*** '''Column''' – количество столбцов
*** '''BookingConditions''' – условия бронирования программы туров
+
*** '''IsAirCraft''' – является ли планом самолета (''false'' - нет, ''true'' - является)
*** '''StartDate''' – дата начала тура
+
*** '''Type''' – не используется
*** '''Duration''' – продолжительность тура (в днях)
+
** '''Seats''' – массив параметров посадочного места
*** '''DurationInNight''' – продолжительность проживания (в ночах)
+
*** '''Key''' – ключ места
*** '''Types''' – идентификатор типа туров
+
*** '''SeatType''' – тип места (None = 0, Seat = 1, Pass/comment = 2, Block = 4, Busy = 5)
*** '''Cost''' – цена тура
+
*** '''Index''' – индекс места
*** '''Rate''' – код валюты тура
+
*** '''Number''' – название ячейки с местом
*** '''CityDepature''' – город отправления
+
*** '''Type''' – тип "место"
**** '''Key''' – идентификатор города отправления
+
*** '''VPKey''' – ключ зоны
**** '''Value''' – название города отправления
+
*** '''Border''' – обводка границы (комбинация цифр, где 0 - нет обводки, 1 - обводка в 1 px, 2 - обводка в 2 px)
*** '''CountryId''' – всегда возвращается ключ 0
+
 
*** '''Services''' – услуги в туре
+
<div class="toccolours mw-collapsible mw-collapsed" style="width:900px">Пример
**** '''DepartureCity''' – город отправления
+
<div class="mw-collapsible-content">
***** '''Key''' – идентификатор
+
<TABLE STYLE="border: 0.1em dashed #2F6FAB; margin: 8px; padding: 8px" WIDTH="99%"><TR><TD>
***** '''Value''' – название
+
Вызов метода TransportPlan
**** '''DepartureCountry''' – страна отправления
+
<syntaxhighlight lang="java" enclose="div">
***** '''Key''' – идентификатор
+
GET http://localhost:9000/TourSearchOwin/TransportPlan?code=1776&dateBegin=28.03.2022&serviceType=14&transportKey=35
***** '''Value''' – название
+
</syntaxhighlight>
**** '''ArrivalCity''' – город прибытия
+
Возвращаемый результат метода TransportPlan (в формате JSON)
***** '''Key''' – идентификатор
+
<syntaxhighlight lang="java" enclose="div">
***** '''Value''' – название
+
{
**** '''ArrivalCountry''' – страна прибытия
+
"VehiclePlans":
***** '''Key''' – идентификатор
+
[
***** '''Value''' – название
+
  {
**** '''DepartureAirport''' – аэропорт отправления
+
    "Key": 291,
***** '''Key''' – идентификатор
+
    "TransportKey": 35,
***** '''Value''' – название
+
    "Row": 2,
**** '''ArrivalAirport''' – аэропорт прибытия
+
    "AreaNumber": 1,
***** '''Key''' – идентификатор
+
    "Name": "Зона 1",
***** '''Value''' – название
+
    "PlanOrientation": false,
**** '''Airline''' – авиакомпания
+
    "Column": 3,
***** '''Key''' – идентификатор
+
    "IsAirCraft": false,
***** '''Value''' – название
+
    "Type": "VehiclePlans"
**** '''Aircraft''' – воздушное судно
+
  },
***** '''Key''' – идентификатор
+
  {
***** '''Value''' – название
+
    "Key": 292,
**** '''Flight''' – рейс
+
    "TransportKey": 35,
***** '''Key''' – идентификатор
+
    "Row": 3,
***** '''Value''' – название
+
    "AreaNumber": 2,
**** '''DepartureTime''' – время вылета
+
    "Name": "Зона 2",
**** '''ArrivalTime''' – время прилета
+
    "PlanOrientation": true,
**** '''EndDateTime''' – дата и время прилета
+
    "Column": 2,
**** '''FlightDetails''' – информация об авиаперелете
+
    "IsAirCraft": false,
***** '''Tariff''' – информация о тарифе перелета
+
    "Type": "VehiclePlans"
****** '''Key''' – идентификатор
+
  }
****** '''Code''' – код тарифа
+
],
****** '''Name''' – название тарифа
+
"Seats":
***** '''Cost''' – разница в стоимости с самым дешевым вариантом
+
[
***** '''QuotaStatus''' – информация о квоте
+
  {
****** '''PlacesStatus''' – статус по квотам (есть места / нет мест / под запрос)
+
    "Key": 332522,
****** '''FreePlaces''' – количество свободных мест, если удовлетворяются условия, заданные в настройке "Мало" и включена настройка "Отображать числовое значение оставшихся мест". Иначе возвращается 0. Если в данном параметре 0, то руководствоваться следует значением, полученном в параметре '''PlacesStatus'''.
+
    "SeatType": 1,
****** '''IsFewPlaces''' – выполнены ли условия, заданные в настройке "Мало": '''true''' – если заданы условия количества мест "Мало" и данные условия выполнены, '''false''' – если не заданы условия количества мест "Мало" или они заданы, но не выполнены.
+
    "Index": 0,
***** '''PartnerId''' – ключ партнера
+
    "Number": "1",
***** '''ByPax''' – цена за человека (true/false)
+
    "Type": "Seat",
***** '''Partner''' – информация о партнере
+
    "VPKey": 291,
****** '''Key''' – идентификатор
+
    "Border": "2002"
****** '''Value''' – название
+
  },
**** '''FlightSetting''' – внутренняя информация о перелете из программы туров
+
  {
***** '''ServiceId''' – идентификатор класса услуги (внутренняя информация из программы туров)
+
    "Key": 332523,
***** '''PatternId''' – идентификатор паттерна услуги (внутренняя информация из программы туров)
+
    "SeatType": 1,
***** '''FlightId''' – идентификатор перелета (внутренняя информация из программы туров)
+
    "Index": 1,
**** '''FlightSourceMode''' – локальный или удаленный перелет (внутренняя информация из программы туров)
+
    "Number": "2",
**** '''Id''' – идентификатор базового шаблона услуги (внутренняя информация из программы туров)
+
    "Type": "Seat",
**** '''SvKey''' – ключ типа услуги
+
    "VPKey": 291,
**** '''IsSubCode1''' – признак наличия [[#Приложение 1: параметры услуги (ServiceType, Code, SubCode1, SubCode2)|доп. описания 1]]
+
    "Border": "2100"
**** '''IsSubCode2''' – признак наличия [[#Приложение 1: параметры услуги (ServiceType, Code, SubCode1, SubCode2)|доп. описания 2]]
+
  },
**** '''IsPartnerBasedOn''' – признак услуга с приоритетным подбором поставщика
+
  {
**** '''Day''' – день предоставления услуги
+
    "Key": 332524,
**** '''DurationInNight''' – продолжительность услуги в ночах
+
    "SeatType": 2,
**** '''BeginDateTime''' – дата предоставления услуги
+
    "Index": 2,
**** '''IsHooded''' – признак скрытая услуга
+
    "Number": "П",
**** '''IsDeleted''' – признак удаляемая услуга
+
    "Type": "Seat",
**** '''IsNotCalculate''' – признак не рассчитываемая услуга
+
    "VPKey": 291,
**** '''PacketId''' – ключ пакета
+
    "Border": "2201"
**** '''Index''' – порядковый номер услуги
+
  },
*** '''NotRouteServices''' – массив коллекций немаршрутных услуг (например если две экскурсии будут являться одним элементом массива, то это будет говорить о том, что эти экскурсии можно будет выбрать в выпадающем списке)
+
  {
**** '''ServiceName''' – название типа услуги
+
    "Key": 332525,
**** '''City''' – объект город
+
    "SeatType": 1,
***** '''Key''' – ключ города
+
    "Index": 3,
***** '''Value''' – название города
+
    "Number": "3",
**** '''Country''' – ключ страны
+
    "Type": "Seat",
**** '''Code''' – объект код услуги
+
    "VPKey": 291,
***** '''Key''' – ключ услуги
+
    "Border": "0022"
***** '''Value''' – название услуги
+
  },
**** '''ByScheduler''' – флаг услуга по расписанию или нет
+
  {
**** '''Details''' – объект детализация услуги
+
    "Key": 332526,
***** '''SubCode1''' – объект [[#Приложение 1: параметры услуги (ServiceType, Code, SubCode1, SubCode2)|доп. описание 1]]
+
    "SeatType": 1,
****** '''Key''' – ключ доп. описания 1
+
    "Index": 4,
****** '''Value''' – название доп. описания 1
+
    "Number": "4",
***** '''SubCode2''' – объект [[#Приложение 1: параметры услуги (ServiceType, Code, SubCode1, SubCode2)|доп. описание 2]]
+
    "Type": "Seat",
****** '''Key''' – ключ доп. описания 2
+
    "VPKey": 291,
****** '''Value''' – название доп. описания 2
+
    "Border": "0120"
***** '''Date''' – дата услуги
+
  },
***** '''IsShowTransportPlan''' – признак показывать ли план рассадки (для автобусов)
+
  {
***** '''Cost''' – цена
+
    "Key": 332527,
***** '''QuotaStatus''' – объект информация по квотам
+
    "SeatType": 1,
****** '''PlacesStatus''' – статус по квотам (есть места / нет мест / под запрос)  
+
    "Index": 5,
****** '''FreePlaces''' – количество свободных мест, если удовлетворяются условия, заданные в настройке "Мало" и включена настройка "Отображать числовое значение оставшихся мест". Иначе возвращается 0. Если в данном параметре 0, то руководствоваться следует значением, полученном в параметре '''PlacesStatus'''.
+
    "Number": "5",
****** '''IsFewPlaces''' – выполнены ли условия, заданные в настройке "Мало": '''true''' – если заданы условия количества мест "Мало" и данные условия выполнены, '''false''' – если не заданы условия количества мест "Мало" или они заданы, но не выполнены.
+
    "Type": "Seat",
***** '''PartnerId''' – идентификатор партнера
+
    "VPKey": 291,
***** '''ByPax''' – признак цены за человека
+
    "Border": "0221"
***** '''Partner''' – объект партнер (не заполняется)
+
  },
****** '''Key''' – ключ (не заполняется)
+
  {
****** '''Value''' – название (не заполняется)
+
    "Key": 332528,
**** '''ParentId''' – идентификатор родительской услуги (для вложенных услуг)
+
    "SeatType": 1,
**** '''PartnerBasedOnServiceTemplateId''' – ключ шаблона услуги, по которой приоритетно выбирается партнер текущей услуги
+
    "Index": 0,
**** '''Id''' – идентификатор услуги
+
    "Number": "1",
**** '''SvKey''' – ключ типа услуги
+
    "Type": "Seat",
**** '''IsSubCode1''' – наличие [[#Приложение 1: параметры услуги (ServiceType, Code, SubCode1, SubCode2)|доп. описания 1]]
+
    "VPKey": 292,
**** '''IsSubCode2''' – наличие [[#Приложение 1: параметры услуги (ServiceType, Code, SubCode1, SubCode2)|доп. описания 2]]
+
    "Border": "2002"
**** '''IsPartnerBasedOn''' – услуга с подбором приоритетного поставщика услуги
+
  },
**** '''Day''' – день предоставления услуги
+
  {
**** '''DurationInNight''' – продолжительность услуги в ночах
+
    "Key": 332529,
**** '''BeginDateTime''' – дата предоставления услуги
+
    "SeatType": 1,
**** '''EndDateTime''' – дата окончания услуги
+
    "Index": 1,
**** '''IsHooded''' – скрытая ли услуга
+
    "Number": "2",
**** '''IsDeleted''' – удаляемая ли услуга
+
    "Type": "Seat",
**** '''IsNotCalculate''' – не рассчитываемая ли услуга
+
    "VPKey": 292,
**** '''PacketId''' – пакет услуги
+
    "Border": "2200"
**** '''Index''' – индекс услуги
+
  },
*** '''MinCostServicesComposition''' – массив состав услуг минимальной цены
+
  {
**** '''Key''' – ключ
+
    "Key": 332530,
***** '''TemplateId''' – идентификатор шаблона
+
    "SeatType": 1,
***** '''PatternId''' – идентификатор вкладки
+
    "Index": 2,
***** '''SettingId''' – идентификатор услуги
+
    "Number": "3",
**** '''Value''' – значение
+
    "Type": "Seat",
***** '''ServiceType''' – тип услуги
+
    "VPKey": 292,
***** '''Code''' – ключ услуги
+
    "Border": "0012"
***** '''SubCode1''' – [[#Приложение 1: параметры услуги (ServiceType, Code, SubCode1, SubCode2)|доп. описание 1]]
+
  },
***** '''SubCode2''' – [[#Приложение 1: параметры услуги (ServiceType, Code, SubCode1, SubCode2)|доп. описание 2]]
+
  {
***** '''PacketId''' – пакет услуги
+
    "Key": 332531,
***** '''PartnerId''' – партнер услуги
+
    "SeatType": 1,
***** '''CountryId''' – страна услуги
+
    "Index": 3,
***** '''CityId''' – город услуги
+
    "Number": "4",
***** '''Day''' – день предоставления услуги
+
    "Type": "Seat",
***** '''DurationInNight''' – продолжительность услуги в ночах
+
    "VPKey": 292,
**** '''COAndSpecialsInfo''' – формирует, фильтрует и выдаёт списки применённых акций и ценовых блоков
+
    "Border": "0210"
***** '''AppliedCostOffersKeys''' – коллекция идентификаторов всех применённых ценовых блоков к одной цене             
+
  },
***** '''AppliedSpeciasInfo''' – коллекция всех применённых акций к одной цене, содержит информацию об условиях, с которыми применилась каждая акция
+
  {
****** '''SpecialKey''' – ключ акции
+
    "Key": 332532,
****** '''SpecialName''' – название акции
+
    "SeatType": 1,
****** '''SpecialType''' – тип акции
+
    "Index": 4,
****** '''NewPrice''' – цена после применения акции
+
    "Number": "5",
****** '''OldPrice''' – цена до применения акции
+
    "Type": "Seat",
****** '''ShowOnline''' – нужно ли показывать акцию в поиске
+
    "VPKey": 292,
****** '''UntilDate''' – акция действует при совершении покупки до указанной даты
+
    "Border": "1000"
****** '''Condition''' – json форма условия применения акции. Данное поле включает в себя следующие значения в зависимости от типа акции:
+
  },
******* ''NightsFrom'' (для типа ''PayStay'') – ночей от
+
  {
******* ''NightsTo'' (для типа ''PayStay'') – ночей до
+
    "Key": 332533,
******* ''NightValue'' (для типа ''PayStay'') – значение ночи, которое соответствует заданному периоду
+
    "SeatType": 1,
******* ''OperationType'' (для типа ''PayStay'') – тип действия
+
    "Index": 5,
******* ''SpecialNightType'' (для типа ''PayStay'') – тип бесплатной ночи
+
    "Number": "6",
******* ''DurationFrom'' (для типа ''KickBack'') – ночей от
+
    "Type": "Seat",
******* ''DurationTo'' (для типа ''KickBack'') – ночей до
+
    "VPKey": 292,
******* ''Value'' (для типа ''KickBack'') – значение продолжительности, равное заданному периоду
+
    "Border": "1000"
******* ''OperationType'' (для типа ''KickBack'') – тип действия
+
  }
******* ''NightsFrom'' (для типа ''EarlyBird'') – ночей от
+
],
******* ''NightsTo'' (для типа ''EarlyBird'') – ночей до
+
}
******* ''Discount'' (для типа ''EarlyBird'') – размер скидки
+
</syntaxhighlight>
******* ''OperationType'' (для типа ''EarlyBird'') тип действия
+
</TD></TR></TABLE>
**** '''COBySubCode''' – список применённых идентификаторов ценовых блоков по SubCode1 и SubCode2
+
</div></div><br />
**** '''SpecialsBySubCode''' -  список применённых акций по SubCode1 и SubCode2
+
 
 +
===Получение дат заезда по турпрограмме===
 +
Работает начиная с релиза 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?'')
 +
** '''DestinationType *''' – тип результата (внутренний параметр, не изменяемый, всегда указывать значение = 1)
 +
** '''DestinationKey *''' – идентификатор страны прибытия (полученный из метода ''.../TourSearchOwin/Destination?'')
 +
** '''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)
 +
** '''isFromBasket *''' – происходит ли обращение из корзины или из поиска туров (true/false).
 +
** '''isFillSecondaryFilters''' – заполнены ли дополнительные фильтры (по умолчанию всегда приходит true). Служебный внутренний параметр. При работе с API не используется.
 +
** '''TourKey''' – ключ программы тура
 +
** '''TourDuration''' – продолжительность тура в днях
 +
** '''RemoteHotelMode''' – признак того, производится поиск только локальных отелей или и от внешних поставщиков тоже (только локальные отели – 0, только внешние отели – 2, локальные и внешние отели – 1). Если признак отсутствует – поиск будет только по локальным отелям. Обрабатывается начиная с релиза 15.4.
 +
** '''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''' – внутреннее поле, не используется
 +
*** '''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]]
 
***** '''SubCode1''' – объект [[#Приложение 1: параметры услуги (ServiceType, Code, SubCode1, SubCode2)|доп. описание 1]]
***** '''SubCode2''' – объект [[#Приложение 1: параметры услуги (ServiceType, Code, SubCode1, SubCode2)|доп. описание 2]]
+
****** '''Key''' – ключ доп. описания 1
*** '''FlightWeight''' –
+
****** '''Value''' – название доп. описания 1
*** '''LinkingFlightsRules''' – объект правил связывания
+
***** '''SubCode2''' – объект [[#Приложение 1: параметры услуги (ServiceType, Code, SubCode1, SubCode2)|доп. описание 2]]
**** '''notCombineDifferentAirlineRule''' – объект не скрещивать авиакомпании
+
****** '''Key''' – ключ доп. описания 2
***** '''airlines''' – авиакомпании
+
****** '''Value''' – название доп. описания 2
***** '''flightSettings''' – массив ключей ServiceId, PatternId, FlightId
+
***** '''Date''' – дата услуги
***** '''enabled''' – флаг включен/выключен
+
***** '''IsShowTransportPlan''' – признак показывать ли план рассадки (для автобусов)
**** '''checkPlusMinus1CharterRule''' – объект Отличие номера рейса на 1
+
***** '''Cost''' – цена
***** '''FlightSettingPairs''' – массив чартеров, для которых это правило будет выполняться
+
***** '''QuotaStatus''' – объект информация по квотам
***** '''enabled''' – флаг включен/выключен
+
****** '''PlacesStatus''' – статус по квотам (есть места-1 / нет мест-2 / под запрос-4)
**** '''notCombineDifferentTariffGroupRule''' – объект не комбинировать рейсы от разных классов перелетов
+
****** '''FreePlaces''' – количество свободных мест, если удовлетворяются условия, заданные в настройке "Мало" и включена настройка "Отображать числовое значение оставшихся мест". Иначе возвращается 0. Если в данном параметре 0, то руководствоваться следует значением, полученном в параметре '''PlacesStatus'''.
***** '''FlightSettings''' – массив ключей ServiceId, PatternId, FlightId
+
****** '''IsFewPlaces''' – выполнены ли условия, заданные в настройке "Мало": '''true''' – если заданы условия количества мест "Мало" и данные условия выполнены, '''false''' – если не заданы условия количества мест "Мало" или они заданы, но не выполнены.
***** '''enabled''' – флаг включен/выключен
+
***** '''PartnerId''' – идентификатор партнера
**** '''notCombineDifferentPartnerRule''' – объект не комбинировать рейсы от разных партнеров
+
***** '''ByPax''' – признак цены за человека
***** '''FlightSettings''' – массив ключей ServiceId, PatternId, FlightId
+
***** '''Partner''' – объект партнер (не заполняется)
***** '''enabled''' – флаг включен/выключен
+
****** '''Key''' – ключ (не заполняется)
**** '''departureCityEqualsArrivalCityRule''' – объект Город вылета = городу прилета
+
****** '''Value''' – название (не заполняется)
***** '''FlightSettingPairs''' – чартеры, для которых это будет выполняться
+
**** '''ParentId''' – идентификатор родительской услуги (для вложенных услуг)
***** '''enabled''' – флаг включен/выключен
+
**** '''PartnerBasedOnServiceTemplateId''' – ключ шаблона услуги, по которой приоритетно выбирается партнер текущей услуги
**** '''combineOnlySpecificChartersRule''' – объект не комбинировать различные классы перелетов
+
**** '''Id''' – идентификатор услуги
***** '''settings''' – массив ключей чартеров CharterIds и ServiceId, PatternId, FlightId
+
**** '''SvKey''' – ключ типа услуги
***** '''enabled''' – флаг включен/выключен
+
**** '''IsSubCode1''' – наличие [[#Приложение 1: параметры услуги (ServiceType, Code, SubCode1, SubCode2)|доп. описания 1]]
*** '''RouteSubVariants''' – подварианты услуг (используется в основном поиске)
+
**** '''IsSubCode2''' – наличие [[#Приложение 1: параметры услуги (ServiceType, Code, SubCode1, SubCode2)|доп. описания 2]]
** '''SecondaryFiltersResult''' – доп. фильтры (не используется при вызове из корзины)
+
**** '''IsPartnerBasedOn''' – услуга с подбором приоритетного поставщика услуги
 
+
**** '''Day''' – день предоставления услуги
 
+
**** '''DurationInNight''' – продолжительность услуги в ночах
<div class="toccolours mw-collapsible mw-collapsed" style="width:900px">Пример
+
**** '''BeginDateTime''' – дата предоставления услуги
<div class="mw-collapsible-content">
+
**** '''EndDateTime''' – дата окончания услуги
<TABLE STYLE="border: 0.1em dashed #2F6FAB; margin: 8px; padding: 8px" WIDTH="99%"><TR><TD>
+
**** '''IsHooded''' – скрытая ли услуга
Вызов метода Tour (первоначальный вариант Tour в корзине для бронирования)
+
**** '''IsDeleted''' – удаляемая ли услуга
<syntaxhighlight lang="java" enclose="div">
+
**** '''IsNotCalculate''' – не рассчитываемая ли услуга
GET http://localhost:9000/TourSearchOwin/Tour?DepartureCityKeys=1&DestinationType=1&DestinationKey=90
+
**** '''PacketId''' – пакет услуги
&Dates=31.03.18&Durations=8&AdultCount=2&CurrencyName=EU&HotelQuota=5&AviaQuota=5&BusTransferQuota=5
+
**** '''Index''' – индекс услуги
&HotelScheme=[{"TemplateId":"1","DurationInNight":"7","Code":"707","PacketKey":"779","PartnerKey":"12667"
+
*** '''MinCostServicesComposition''' – массив состав услуг минимальной цены
"GDSProviderId": "0","TotalTourDuration": "8"}]
+
**** '''Key''' – ключ
&TourKey=100003404&TourDuration=8&PageNumber=1&PageSize=20&IsFromBasket=true&isFillSecondaryFilters=false
+
***** '''TemplateId''' – идентификатор шаблона
</syntaxhighlight>
+
***** '''PatternId''' – идентификатор вкладки
Возвращаемый результат метода Tour (в формате JSON)
+
***** '''SettingId''' – идентификатор услуги
<syntaxhighlight lang="java" enclose="div">
+
**** '''Value''' – значение
{
+
***** '''ServiceType''' – тип услуги
  "CheckMessages": null,
+
***** '''Code''' – ключ услуги
  "Message":    {
+
***** '''SubCode1''' – [[#Приложение 1: параметры услуги (ServiceType, Code, SubCode1, SubCode2)|доп. описание 1]]
      "Key": 0,
+
***** '''SubCode2''' – [[#Приложение 1: параметры услуги (ServiceType, Code, SubCode1, SubCode2)|доп. описание 2]]
      "Value": null
+
***** '''PacketId''' – пакет услуги
  },
+
***** '''PartnerId''' – партнер услуги
  "Result":    [
+
***** '''CountryId''' – страна услуги
            {
+
***** '''CityId''' – город услуги
        "Key": 100003404,
+
***** '''Day''' – день предоставления услуги
        "Name": "Удалить этот тур",
+
***** '''DurationInNight''' – продолжительность услуги в ночах
        "TourUrl": "www.megatec.ru",
+
**** '''COAndSpecialsInfo''' – формирует, фильтрует и выдаёт списки применённых акций и ценовых блоков
        "BookingConditions": "Условия бронирования тура",
+
***** '''AppliedCostOffersKeys''' – коллекция идентификаторов всех применённых ценовых блоков к одной цене             
        "StartDate": "2018-03-31T00:00:00",
+
***** '''AppliedSpeciasInfo''' – коллекция всех применённых акций к одной цене, содержит информацию об условиях, с которыми применилась каждая акция
        "Duration": 8,
+
****** '''SpecialKey''' – ключ акции
        "DurationInNight": 7,
+
****** '''SpecialName''' – название акции
        "Types": [2],
+
****** '''SpecialType''' – тип акции
        "Cost": 122,
+
****** '''NewPrice''' – цена после применения акции
        "Rate": "EU",
+
****** '''OldPrice''' – цена до применения акции
        "CityDepature":          {
+
****** '''ShowOnline''' – нужно ли показывать акцию в поиске
            "Key": 1,
+
****** '''UntilDate''' – акция действует при совершении покупки до указанной даты
            "Value": "Москва"
+
****** '''Condition''' – json форма условия применения акции. Данное поле включает в себя следующие значения в зависимости от типа акции:
        },
+
******* ''NightsFrom'' (для типа ''PayStay'') – ночей от
        "CountryId": 90,
+
******* ''NightsTo'' (для типа ''PayStay'') – ночей до
        "Services":          [
+
******* ''NightValue'' (для типа ''PayStay'') – значение ночи, которое соответствует заданному периоду
                        {
+
******* ''OperationType'' (для типа ''PayStay'') – тип действия
              "DepartureCity":                {
+
******* ''SpecialNightType'' (для типа ''PayStay'') – тип бесплатной ночи
                  "Key": 1,
+
******* ''DurationFrom'' (для типа ''KickBack'') – ночей от
                  "Value": "Москва"
+
******* ''DurationTo'' (для типа ''KickBack'') – ночей до
              },
+
******* ''Value'' (для типа ''KickBack'') – значение продолжительности, равное заданному периоду
              "DepartureCountry":                {
+
******* ''OperationType'' (для типа ''KickBack'') – тип действия
                  "Key": 460,
+
******* ''NightsFrom'' (для типа ''EarlyBird'') – ночей от
                  "Value": "Россия"
+
******* ''NightsTo'' (для типа ''EarlyBird'') – ночей до
              },
+
******* ''Discount'' (для типа ''EarlyBird'') – размер скидки
              "ArrivalCity":                {
+
******* ''OperationType'' (для типа ''EarlyBird'') – тип действия
                  "Key": 35,
+
**** '''COBySubCode''' – список применённых идентификаторов ценовых блоков по SubCode1 и SubCode2
                  "Value": "Вена"
+
**** '''SpecialsBySubCode''' -  список применённых акций по SubCode1 и SubCode2
              },
+
***** '''SubCode1''' – объект [[#Приложение 1: параметры услуги (ServiceType, Code, SubCode1, SubCode2)|доп. описание 1]]
              "ArrivalCountry":                {
+
***** '''SubCode2''' – объект [[#Приложение 1: параметры услуги (ServiceType, Code, SubCode1, SubCode2)|доп. описание 2]]
                  "Key": 90,
+
*** '''FlightWeight''' –
                  "Value": "Австрия"
+
*** '''LinkingFlightsRules''' – объект правил связывания
              },
+
**** '''notCombineDifferentAirlineRule''' – объект не скрещивать авиакомпании
              "DepartureAirport":                {
+
***** '''airlines''' – авиакомпании
                  "Key": "DME",
+
***** '''flightSettings''' – массив ключей ServiceId, PatternId, FlightId
                  "Value": "Домодедово"
+
***** '''enabled''' – флаг включен/выключен
              },
+
**** '''checkPlusMinus1CharterRule''' – объект Отличие номера рейса на 1
              "ArrivalAirport":                {
+
***** '''FlightSettingPairs''' – массив чартеров, для которых это правило будет выполняться
                  "Key": "VIE1",
+
***** '''enabled''' – флаг включен/выключен
                  "Value": "Vena1"
+
**** '''notCombineDifferentTariffGroupRule''' – объект не комбинировать рейсы от разных классов перелетов
              },
+
***** '''FlightSettings''' – массив ключей ServiceId, PatternId, FlightId
              "Airline":                {
+
***** '''enabled''' – флаг включен/выключен
                  "Key": "3G",
+
**** '''notCombineDifferentPartnerRule''' – объект не комбинировать рейсы от разных партнеров
                   "Value": "Атлант Союз_d;kgmdlfkgnfdlkhndlfkhnlkfnh"
+
***** '''FlightSettings''' – массив ключей ServiceId, PatternId, FlightId
               },
+
***** '''enabled''' – флаг включен/выключен
               "Aircraft":                {
+
**** '''departureCityEqualsArrivalCityRule''' – объект Город вылета = городу прилета
                   "Key": "319",
+
***** '''FlightSettingPairs''' – чартеры, для которых это будет выполняться
                   "Value": "AIRBUS "
+
***** '''enabled''' – флаг включен/выключен
              },
+
**** '''combineOnlySpecificChartersRule''' – объект не комбинировать различные классы перелетов
              "Flight":                {
+
***** '''settings''' – массив ключей чартеров CharterIds и ServiceId, PatternId, FlightId
                  "Key": 858,
+
***** '''enabled''' – флаг включен/выключен
                  "Value": "1111"
+
*** '''RouteSubVariants''' – подварианты услуг (используется в основном поиске)
 +
** '''SecondaryFiltersResult''' – доп. фильтры (не используется при вызове из корзины)
 +
** '''nodeId''' – уникальный идентификатор узла в кластере балансировки нагрузки [[Мастер-Тур(15):Балансировщик нагрузки HaProxy|HaProxy]]
 +
 
 +
 
 +
<div class="toccolours mw-collapsible mw-collapsed" style="width:900px">Пример
 +
<div class="mw-collapsible-content">
 +
<TABLE STYLE="border: 0.1em dashed #2F6FAB; margin: 8px; padding: 8px" WIDTH="99%"><TR><TD>
 +
Вызов метода Tour (первоначальный вариант Tour в корзине для бронирования)
 +
<syntaxhighlight lang="java" enclose="div">
 +
GET http://localhost:9000/TourSearchOwin/Tour?DepartureCityKeys=1&DestinationType=1&DestinationKey=90
 +
&Dates=31.03.18&Durations=8&AdultCount=2&CurrencyName=EU&HotelQuota=5&AviaQuota=5&BusTransferQuota=5
 +
&HotelScheme=[{"TemplateId":"1","DurationInNight":"7","Code":"707","PacketKey":"779","PartnerKey":"12667"
 +
"GDSProviderId": "0","TotalTourDuration": "8"}]
 +
&TourKey=100003404&TourDuration=8&PageNumber=1&PageSize=20&IsFromBasket=true&isFillSecondaryFilters=false
 +
</syntaxhighlight>
 +
Возвращаемый результат метода Tour (в формате JSON)
 +
<syntaxhighlight lang="java" enclose="div">
 +
{
 +
  "CheckMessages": null,
 +
  "Message":    {
 +
      "Key": 0,
 +
      "Value": null
 +
  },
 +
  "Result":    [
 +
            {
 +
        "Key": 100003404,
 +
        "Name": "Удалить этот тур",
 +
        "TourUrl": "www.megatec.ru",
 +
        "BookingConditions": "Условия бронирования тура",
 +
        "DefaultManagers": [],
 +
        "Manager": 169,
 +
        "Branches": [],
 +
        "DetermineTheBranchOnCity": false,
 +
        "IndividualFlightSelection": true,
 +
        "RestrictionDateArrival": false,
 +
        "PriceUpdateForView": false,
 +
        "SelectFlightAutomatically": false,
 +
        "BaggageSearchOtherFares": false,
 +
        "Luggage": "withoutLuggage",
 +
        "LuggageForView": "all",
 +
        "LuggageForPrice": "all",
 +
        "FlightClass": "economy",
 +
        "Directs": "all",
 +
        "DirectsForView": "all",
 +
        "DirectsForPrice": "all",
 +
        "DepartureTimeLimit": "",
 +
        "SortingForView": "cheap",
 +
        "StartDate": "2018-02-25T00:00:00",
 +
        "MaxConnectionTime": 0
 +
        "FullPaymentPeriod": 5,
 +
        "FullPaymentCheckin": null,
 +
        "PrePaymentPeriod": null,
 +
        "PrePaymentCheckin": 5,
 +
        "PrePaymentCu": null,
 +
        "PrePaymentPercent": 10.0,
 +
        "Duration": 4,
 +
        "DurationInNight": 3,
 +
        "Types": [2],
 +
        "Price": 260,
 +
        "Cost": 260,
 +
        "Penalties": null,
 +
        "Rate": "EU",
 +
        "CityDepature":          {
 +
            "Key": 1,
 +
            "Value": "Москва"
 +
        },
 +
        "CountryId": 90,
 +
        "Services":          [
 +
                        {
 +
              "DepartureCity":                {
 +
                  "Key": 1,
 +
                   "Value": "Москва"
 +
               },
 +
               "DepartureCountry":                {
 +
                   "Key": 460,
 +
                   "Value": "Россия"
 
               },
 
               },
               "DepartureTime": "10:00:00",
+
              "ArrivalCity":                {
               "ArrivalTime": "11:59:00",
+
                  "Key": 35,
               "EndDateTime": "2018-03-31T11:59:00",
+
                  "Value": "Вена"
               "FlightDetails": [              {
+
              },
                   "Tariff":                  {
+
              "ArrivalCountry":                {
                     "Key": 67,
+
                  "Key": 90,
                     "Code": "C",
+
                  "Value": "Австрия"
                     "Name": "Бизнес класс"
+
              },
                   },
+
              "DepartureAirport":                {
                   "Cost": 6.45,
+
                  "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":                  {
 
                   "QuotaStatus":                  {
 
                     "PlacesStatus": 4,
 
                     "PlacesStatus": 4,
Строка 2758: Строка 3490:
 
* Принимаемые параметры ( '''*''' – обязательный):
 
* Принимаемые параметры ( '''*''' – обязательный):
 
** '''countryId *''' – ключ страны, для которой будут выгружаться настройки
 
** '''countryId *''' – ключ страны, для которой будут выгружаться настройки
 +
** '''nodeId''' – уникальный идентификатор узла в кластере балансировки нагрузки [[Мастер-Тур(15):Балансировщик нагрузки HaProxy|HaProxy]]
 +
 
* Возвращаемый результат:
 
* Возвращаемый результат:
 
** '''TouristFieldsSettings''' – массив полей с информацией о туристах (из админки Мастер-Web)  
 
** '''TouristFieldsSettings''' – массив полей с информацией о туристах (из админки Мастер-Web)  
 
*** '''lastname''' – объект фамилия туриста (лат)
 
*** '''lastname''' – объект фамилия туриста (лат)
 +
**** '''Index''' – порядковый индекс элемента
 
**** '''Code''' – код поля
 
**** '''Code''' – код поля
 +
**** '''ApiCode''' – имя поля, которое будет использоваться при бронировании (например при вызове метода CreateReservation)
 
**** '''HeaderText''' – название поля
 
**** '''HeaderText''' – название поля
**** '''IsVisible''' – видимость поля
+
**** '''IsEdit''' – признак редактируемости поля
 
**** '''IsRequired''' – признак обязательности заполнения поля
 
**** '''IsRequired''' – признак обязательности заполнения поля
**** '''IsEdit''' – признак редактируемости поля
+
**** '''IsVisible''' – видимость поля (видимое)
 +
**** '''IsDisabled''' – служебный внутренний параметр. При работе с API не используется
 
**** '''Translit''' – настройки транслитерации (0 – нет, 1 – транслитерация, 2 – латиница)  
 
**** '''Translit''' – настройки транслитерации (0 – нет, 1 – транслитерация, 2 – латиница)  
 
**** '''LetterCase''' – настройки регистра (0 – по умолчанию, 1 – с заглавной, 2 – большие, 3 – маленькие)
 
**** '''LetterCase''' – настройки регистра (0 – по умолчанию, 1 – с заглавной, 2 – большие, 3 – маленькие)
Строка 2794: Строка 3531:
 
** '''ChildAgeSetting''' – максимальный возраст ребенка, когда он считается ребенком (лет)
 
** '''ChildAgeSetting''' – максимальный возраст ребенка, когда он считается ребенком (лет)
 
** '''InfantAgeSetting''' – максимальный возраст младенца (месяцев)
 
** '''InfantAgeSetting''' – максимальный возраст младенца (месяцев)
 +
** '''nodeId''' – уникальный идентификатор узла в кластере балансировки нагрузки [[Мастер-Тур(15):Балансировщик нагрузки HaProxy|HaProxy]]
  
 
<div class="toccolours mw-collapsible mw-collapsed" style="width:900px">Пример
 
<div class="toccolours mw-collapsible mw-collapsed" style="width:900px">Пример
Строка 2805: Строка 3543:
 
<syntaxhighlight lang="java" enclose="div">
 
<syntaxhighlight lang="java" enclose="div">
 
{
 
{
  "TouristFieldsSettings":   {
+
  "TouristFieldsSettings": {
      "lastname":       {
+
        "number": {
        "Code": "lastname",
+
            "Index": 0,
        "HeaderText": "Фамилия<font color=\"red\">*<\/font>",
+
            "Code": "number",
        "IsVisible": true,
+
            "ApiCode": "Number",
        "IsRequired": true,
+
            "HeaderText": "",
        "IsEdit": true,
+
            "IsEdit": false,
        "Translit": 1,
+
            "IsRequired": false,
        "LetterCase": 2
+
            "IsVisible": false,
      },
+
            "IsDisabled": false,
      "patronymic":       {
+
            "Translit": 0,
        "Code": "patronymic",
+
            "LetterCase": 0
        "HeaderText": "Отчество",
+
        },
        "IsVisible": false,
+
        "ismain": {
        "IsRequired": false,
+
            "Index": 1,
        "IsEdit": true,
+
            "Code": "ismain",
        "Translit": 0,
+
            "ApiCode": "IsMain",
        "LetterCase": 2
+
            "HeaderText": "<img src=\"images/mw_main_tourist.gif\" border=\"0\" alt=\"Главный турист\" />",
      },
+
            "IsEdit": false,
      "sex":      {
+
            "IsRequired": true,
        "Code": "sex",
+
            "IsVisible": true,
        "HeaderText": "Пол<font color=\"red\">*<\/font>",
+
            "IsDisabled": true,
        "IsVisible": true,
+
            "Translit": 0,
        "IsRequired": false,
+
            "LetterCase": 0
        "IsEdit": true,
+
        },
        "Translit": 0,
+
        "sex": {
        "LetterCase": 0
+
            "Index": 2,
      },
+
            "Code": "sex",
      "firstname":       {
+
            "ApiCode": "Sex",
        "Code": "firstname",
+
            "HeaderText": "Пол<font color=\"red\">*</font>",
        "HeaderText": "Имя<font color=\"red\">*<\/font>",
+
            "IsEdit": true,
        "IsVisible": true,
+
            "IsRequired": false,
        "IsRequired": true,
+
            "IsVisible": true,
        "IsEdit": true,
+
            "IsDisabled": false,
        "Translit": 1,
+
            "Translit": 0,
        "LetterCase": 2
+
            "LetterCase": 0
      },
+
        },
      "passportbywhom":       {
+
        "birthdate": {
        "Code": "passportbywhom",
+
            "Index": 3,
        "HeaderText": "Кем выдан",
+
            "Code": "birthdate",
        "IsVisible": false,
+
            "ApiCode": "BirthDay",
        "IsRequired": false,
+
            "HeaderText": "Дата рождения<br />(dd.MM.yyyy)",
        "IsEdit": false,
+
            "IsEdit": false,
        "Translit": 0,
+
            "IsRequired": false,
        "LetterCase": 0
+
            "IsVisible": true,
      },
+
            "IsDisabled": false,
      "birthplace":       {
+
            "Translit": 0,
        "Code": "birthplace",
+
            "LetterCase": 0
        "HeaderText": "Место рождения",
+
        },
        "IsVisible": false,
+
        "birthplace": {
        "IsRequired": false,
+
            "Index": 4,
        "IsEdit": false,
+
            "Code": "birthplace",
        "Translit": 0,
+
            "ApiCode": "BirthPlace",
        "LetterCase": 0
+
            "HeaderText": "Место рождения",
      },
+
            "IsEdit": false,
      "birthdate":       {
+
            "IsRequired": false,
        "Code": "birthdate",
+
            "IsVisible": false,
        "HeaderText": "Дата рождения<br />(dd.MM.yyyy)",
+
            "IsDisabled": false,
        "IsVisible": true,
+
            "Translit": 0,
        "IsRequired": false,
+
            "LetterCase": 0
        "IsEdit": true,
+
        },
        "Translit": 0,
+
        "citizenship": {
        "LetterCase": 0
+
            "Index": 5,
      },
+
            "Code": "citizenship",
      "patronymicrus":       {
+
            "ApiCode": "Citizenship",
        "Code": "patronymicrus",
+
            "HeaderText": "Гражданство",
        "HeaderText": "Отчество",
+
            "IsEdit": false,
        "IsVisible": false,
+
            "IsRequired": false,
        "IsRequired": false,
+
            "IsVisible": true,
        "IsEdit": true,
+
            "IsDisabled": false,
        "Translit": 0,
+
            "Translit": 0,
        "LetterCase": 3
+
            "LetterCase": 0
      },
+
        },
      "lastnamerus":       {
+
        "lastname": {
        "Code": "lastnamerus",
+
            "Index": 6,
        "HeaderText": "Нац. паспорт: Фамилия",
+
            "Code": "lastname",
        "IsVisible": false,
+
            "ApiCode": "LastName",
        "IsRequired": true,
+
            "HeaderText": "Фамилия<font color=\"red\">*</font>",
        "IsEdit": true,
+
            "IsEdit": true,
        "Translit": 0,
+
            "IsRequired": true,
        "LetterCase": 0
+
            "IsVisible": true,
      },
+
            "IsDisabled": false,
      "citizenid":       {
+
            "Translit": 1,
        "Code": "citizenid",
+
            "LetterCase": 2
        "HeaderText": "ID туриста1",
+
        },
        "IsVisible": false,
+
        "firstname": {
        "IsRequired": false,
+
            "Index": 7,
        "IsEdit": true,
+
            "Code": "firstname",
        "Translit": 2,
+
            "ApiCode": "FirstName",
        "LetterCase": 2
+
            "HeaderText": "Имя<font color=\"red\">*</font>",
      },
+
            "IsEdit": true,
      "passport":       {
+
            "IsRequired": true,
        "Code": "passport",
+
            "IsVisible": true,
        "HeaderText": "Загран-паспорт: Паспорт<br />(серия/номер)",
+
            "IsDisabled": false,
        "IsVisible": true,
+
            "Translit": 1,
        "IsRequired": false,
+
            "LetterCase": 2
        "IsEdit": true,
+
        },
        "Translit": 0,
+
        "patronymic": {
        "LetterCase": 2
+
            "Index": 8,
      },
+
            "Code": "patronymic",
      "passportrus":       {
+
            "ApiCode": "Patronymic",
        "Code": "passportrus",
+
            "HeaderText": "Отчество",
        "HeaderText": "серия/номер",
+
            "IsEdit": false,
        "IsVisible": false,
+
            "IsRequired": false,
        "IsRequired": false,
+
            "IsVisible": false,
        "IsEdit": false,
+
            "IsDisabled": false,
        "Translit": 0,
+
            "Translit": 1,
        "LetterCase": 0
+
            "LetterCase": 2
      },
+
        },
      "ismain":       {
+
        "passport": {
        "Code": "ismain",
+
            "Index": 9,
        "HeaderText": "<img src=\"images/mw_main_tourist.gif\" border=\"0\" alt=\"Главный турист\" />",
+
            "Code": "passport",
        "IsVisible": true,
+
            "ApiCode": "InternationalPassportSeries/InternationalPassportNumber",
        "IsRequired": true,
+
            "HeaderText": "Загран-паспорт: Паспорт<br />(серия/номер)",
        "IsEdit": false,
+
            "IsEdit": false,
        "Translit": 0,
+
            "IsRequired": false,
        "LetterCase": 0
+
            "IsVisible": true,
      },
+
            "IsDisabled": false,
      "passportdate":       {
+
            "Translit": 1,
        "Code": "passportdate",
+
            "LetterCase": 2
        "HeaderText": "Загран-паспорт: дата выдачи",
+
        },
        "IsVisible": false,
+
        "passportdate": {
        "IsRequired": false,
+
            "Index": 10,
        "IsEdit": false,
+
            "Code": "passportdate",
        "Translit": 0,
+
            "ApiCode": "InternationalPassportDateOfIssue",
        "LetterCase": 0
+
            "HeaderText": "Загран-паспорт: дата выдачи",
      },
+
            "IsEdit": false,
      "firstnamerus":       {
+
            "IsRequired": false,
        "Code": "firstnamerus",
+
            "IsVisible": false,
        "HeaderText": "Нац. паспорт: Имя",
+
            "IsDisabled": false,
        "IsVisible": false,
+
            "Translit": 0,
        "IsRequired": true,
+
            "LetterCase": 0
        "IsEdit": true,
+
        },
        "Translit": 0,
+
        "passportdateend": {
        "LetterCase": 0
+
            "Index": 11,
      },
+
            "Code": "passportdateend",
      "passportbywhomrus":       {
+
            "ApiCode": "InternationalPassportDateOfExpiry",
        "Code": "passportbywhomrus",
+
            "HeaderText": "Действителен до<br />(dd.MM.yyyy)",
        "HeaderText": "Паспорт: кем выдан",
+
            "IsEdit": false,
        "IsVisible": false,
+
            "IsRequired": false,
        "IsRequired": false,
+
            "IsVisible": true,
        "IsEdit": false,
+
            "IsDisabled": false,
        "Translit": 0,
+
            "Translit": 0,
        "LetterCase": 0
+
            "LetterCase": 0
      },
+
        },
      "citizenship":       {
+
        "passportbywhom": {
        "Code": "citizenship",
+
            "Index": 12,
        "HeaderText": "Гражданство",
+
            "Code": "passportbywhom",
        "IsVisible": true,
+
            "ApiCode": "internationalPassportByWhom",
        "IsRequired": false,
+
            "HeaderText": "Кем выдан",
        "IsEdit": true,
+
            "IsEdit": false,
        "Translit": 0,
+
            "IsRequired": false,
        "LetterCase": 0
+
            "IsVisible": false,
      },
+
            "IsDisabled": false,
      "passportdaterus":       {
+
            "Translit": 0,
        "Code": "passportdaterus",
+
            "LetterCase": 0
        "HeaderText": "Нац. паспорт:дата выдачи",
+
        },
        "IsVisible": false,
+
        "lastnamerus": {
        "IsRequired": false,
+
            "Index": 13,
        "IsEdit": false,
+
            "Code": "lastnamerus",
        "Translit": 0,
+
            "ApiCode": "LastNameRus",
        "LetterCase": 0
+
            "HeaderText": "Нац. паспорт: Фамилия",
      },
+
            "IsEdit": false,
      "phone":      {
+
            "IsRequired": false,
        "Code": "phone",
+
            "IsVisible": false,
        "HeaderText": "Телефон",
+
            "IsDisabled": false,
        "IsVisible": false,
+
            "Translit": 0,
        "IsRequired": false,
+
            "LetterCase": 2
        "IsEdit": false,
+
        },
        "Translit": 0,
+
        "firstnamerus": {
        "LetterCase": 0
+
            "Index": 14,
      },
+
            "Code": "firstnamerus",
      "number":       {
+
            "ApiCode": "FirstNameRus",
        "Code": "number",
+
            "HeaderText": "Нац. паспорт: Имя",
        "HeaderText": "",
+
            "IsEdit": false,
        "IsVisible": false,
+
            "IsRequired": false,
        "IsRequired": false,
+
            "IsVisible": false,
        "IsEdit": false,
+
            "IsDisabled": false,
        "Translit": 0,
+
            "Translit": 0,
        "LetterCase": 0
+
            "LetterCase": 2
      },
+
        },
      "passportdateend":       {
+
        "patronymicrus": {
        "Code": "passportdateend",
+
            "Index": 15,
        "HeaderText": "Действителен до<br />(dd.MM.yyyy)",
+
            "Code": "patronymicrus",
        "IsVisible": true,
+
            "ApiCode": "PatronymicRus",
        "IsRequired": false,
+
            "HeaderText": "Нац. Отчество",
        "IsEdit": true,
+
            "IsEdit": false,
        "Translit": 0,
+
            "IsRequired": false,
        "LetterCase": 0
+
            "IsVisible": false,
      },
+
            "IsDisabled": false,
      "email":       {
+
            "Translit": 0,
        "Code": "email",
+
            "LetterCase": 2
        "HeaderText": "Email",
+
        },
        "IsVisible": false,
+
        "passportrus": {
        "IsRequired": false,
+
            "Index": 16,
        "IsEdit": false,
+
            "Code": "passportrus",
        "Translit": 0,
+
            "ApiCode": "PassportSeries/PassportNumber",
        "LetterCase": 0
+
            "HeaderText": "серия/номер",
      }
+
            "IsEdit": false,
  },
+
            "IsRequired": false,
  "PassportDurationOfExpiry":   {
+
            "IsVisible": false,
      "StartPoint": 0,
+
            "IsDisabled": false,
      "Duration": null
+
            "Translit": 0,
  },
+
            "LetterCase": 0
  "ChildAgeSetting": 16,
+
        },
  "InfantAgeSetting": 24
+
        "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>
 
</syntaxhighlight>
Строка 3019: Строка 3823:
 
Метод производит выгрузку услуг доплат к авиаперелетам.
 
Метод производит выгрузку услуг доплат к авиаперелетам.
 
* Формат запроса:
 
* Формат запроса:
** POST .../TourSearchOwin/GetFlightsAdditionalServices?
+
** POST .../TourSearchOwin/GetFlightsAdditionalServices?nodeId=2147483647
 +
, где ''nodeId'' – уникальный идентификатор узла в кластере балансировки нагрузки [[Мастер-Тур(15):Балансировщик нагрузки HaProxy|HaProxy]]
  
 
* Принимаемые параметры headers ( '''*''' – обязательный):
 
* Принимаемые параметры headers ( '''*''' – обязательный):
Строка 3052: Строка 3857:
 
**** '''ByPax''' – цена за человека
 
**** '''ByPax''' – цена за человека
 
**** '''QuotaStatus''' – объект статус квотирования
 
**** '''QuotaStatus''' – объект статус квотирования
***** '''PlacesStatus''' – статус по квотам (есть места / нет мест / под запрос)  
+
***** '''PlacesStatus''' – статус по квотам (есть места-1 / нет мест-2 / под запрос-4)
 
***** '''FreePlaces''' – количество свободных мест, если удовлетворяются условия, заданные в настройке "Мало" и включена настройка "Отображать числовое значение оставшихся мест". Иначе возвращается 0. Если в данном параметре 0, то руководствоваться следует значением, полученном в параметре '''PlacesStatus'''.
 
***** '''FreePlaces''' – количество свободных мест, если удовлетворяются условия, заданные в настройке "Мало" и включена настройка "Отображать числовое значение оставшихся мест". Иначе возвращается 0. Если в данном параметре 0, то руководствоваться следует значением, полученном в параметре '''PlacesStatus'''.
 
***** '''IsFewPlaces''' – выполнены ли условия, заданные в настройке "Мало": '''true''' – если заданы условия количества мест "Мало" и данные условия выполнены, '''false''' – если не заданы условия количества мест "Мало" или они заданы, но не выполнены.
 
***** '''IsFewPlaces''' – выполнены ли условия, заданные в настройке "Мало": '''true''' – если заданы условия количества мест "Мало" и данные условия выполнены, '''false''' – если не заданы условия количества мест "Мало" или они заданы, но не выполнены.
Строка 3072: Строка 3877:
 
*** '''InternationalPassportSeries''' – серия загранпаспорта
 
*** '''InternationalPassportSeries''' – серия загранпаспорта
 
*** '''InternationalPassportNumber''' – номер загранпаспорта
 
*** '''InternationalPassportNumber''' – номер загранпаспорта
*** '''InternationalPassportDateOfIssue''' – дата выдачи загранпаспорта
+
*** '''InternationalPassportDateOfIssue''' – дата выдачи загранпаспорта (YYYY-MM-DDThh:mm:ssz)
*** '''InternationalPassportDateOfIssueString''' – дата выдачи загранпаспорта в строке
+
*** '''InternationalPassportDateOfIssueString''' – дата выдачи загранпаспорта в строковом формате (DD.MM.YYYY)
*** '''InternationalPassportDateOfExpiry''' – дата окончания действия загранпаспорта
+
*** '''InternationalPassportDateOfExpiry''' – дата окончания действия загранпаспорта (YYYY-MM-DDThh:mm:ssz)
*** '''InternationalPassportDateOfExpiryString''' – дата окончания действия загранпаспорта в строке
+
*** '''InternationalPassportDateOfExpiryString''' – дата окончания действия загранпаспорта в строковом формате (DD.MM.YYYY)
 
*** '''internationalPassportByWhom''' – кем выдан загранпаспорт
 
*** '''internationalPassportByWhom''' – кем выдан загранпаспорт
 
*** '''PassportSeries''' – серия паспорта
 
*** '''PassportSeries''' – серия паспорта
 
*** '''PassportNumber''' – номер паспорта
 
*** '''PassportNumber''' – номер паспорта
*** '''PassportDateOfIssue''' – дата выдачи паспорта
+
*** '''PassportDateOfIssue''' – дата выдачи паспорта (YYYY-MM-DDThh:mm:ssz)
*** '''PassportDateOfIssueString''' – дата выдачи паспорта в строке
+
*** '''PassportDateOfIssueString''' – дата выдачи паспорта в строковом формате (DD.MM.YYYY)
 
*** '''PassportByWhom''' – кем выдан паспорт
 
*** '''PassportByWhom''' – кем выдан паспорт
 
*** '''Citizenship''' – название страны
 
*** '''Citizenship''' – название страны
Строка 3095: Строка 3900:
 
*** '''ServiceName''' – название услуги
 
*** '''ServiceName''' – название услуги
 
*** '''City''' – объект город
 
*** '''City''' – объект город
*** '''Country''' – ключ страны
+
*** '''Country''' – объект страна
 +
**** '''Key''' – ключ страны
 +
**** '''Value''' – название страны
 
*** '''Code''' – объект код услуги
 
*** '''Code''' – объект код услуги
 
**** '''Key''' – ключ услуги
 
**** '''Key''' – ключ услуги
Строка 3111: Строка 3918:
 
**** '''Cost''' – цена
 
**** '''Cost''' – цена
 
**** '''QuotaStatus''' – объект статус квотирования
 
**** '''QuotaStatus''' – объект статус квотирования
***** '''PlacesStatus''' – статус по квотам (есть места / нет мест / под запрос)  
+
***** '''PlacesStatus''' – статус по квотам (есть места-1 / нет мест-2 / под запрос-4)
 
***** '''FreePlaces''' – количество свободных мест, если удовлетворяются условия, заданные в настройке "Мало" и включена настройка "Отображать числовое значение оставшихся мест". Иначе возвращается 0. Если в данном параметре 0, то руководствоваться следует значением, полученном в параметре '''PlacesStatus'''.
 
***** '''FreePlaces''' – количество свободных мест, если удовлетворяются условия, заданные в настройке "Мало" и включена настройка "Отображать числовое значение оставшихся мест". Иначе возвращается 0. Если в данном параметре 0, то руководствоваться следует значением, полученном в параметре '''PlacesStatus'''.
 
***** '''IsFewPlaces''' – выполнены ли условия, заданные в настройке "Мало": '''true''' – если заданы условия количества мест "Мало" и данные условия выполнены, '''false''' – если не заданы условия количества мест "Мало" или они заданы, но не выполнены.
 
***** '''IsFewPlaces''' – выполнены ли условия, заданные в настройке "Мало": '''true''' – если заданы условия количества мест "Мало" и данные условия выполнены, '''false''' – если не заданы условия количества мест "Мало" или они заданы, но не выполнены.
Строка 3144: Строка 3951:
 
Вызов метода GetHotelsAdditionalServices
 
Вызов метода GetHotelsAdditionalServices
 
<syntaxhighlight lang="java" enclose="div">
 
<syntaxhighlight lang="java" enclose="div">
POST http://localhost:9000/TourSearchOwin/GetHotelsAdditionalServices? HTTP/1.1
+
POST http://localhost:9000/TourSearchOwin/GetFlightsAdditionalServices?nodeId=2147483647 HTTP/1.1
 
Content-Type: application/json
 
Content-Type: application/json
 
{
 
{
Строка 3285: Строка 4092:
 
}
 
}
 
</syntaxhighlight>
 
</syntaxhighlight>
Возвращаемый результат метода GetHotelsAdditionalServices (в формате JSON)
+
Возвращаемый результат метода GetFlightsAdditionalServices (в формате JSON)
 
<syntaxhighlight lang="java" enclose="div">
 
<syntaxhighlight lang="java" enclose="div">
 
[{
 
[{
 
"ServiceName": "Доплаты к авиаперелетам",
 
"ServiceName": "Доплаты к авиаперелетам",
 
"City": null,
 
"City": null,
"Country": 90,
+
        "Country":                {
 +
                  "Key": 90,
 +
                  "Value": "Австрия"
 +
},
 
"Code": {
 
"Code": {
 
"Key": 357,
 
"Key": 357,
Строка 3347: Строка 4157:
 
Метод производит выгрузку услуг доплат к отелям.
 
Метод производит выгрузку услуг доплат к отелям.
 
* Формат запроса:
 
* Формат запроса:
** POST .../TourSearchOwin/GetHotelsAdditionalServices?
+
** POST .../TourSearchOwin/GetHotelsAdditionalServices?nodeId=2147483647
 +
, где ''nodeId'' – уникальный идентификатор узла в кластере балансировки нагрузки [[Мастер-Тур(15):Балансировщик нагрузки HaProxy|HaProxy]]
  
 
* Принимаемые параметры headers ( '''*''' – обязательный):
 
* Принимаемые параметры headers ( '''*''' – обязательный):
Строка 3374: Строка 4185:
 
**** '''IsHooded''' – признак скрытая услуга
 
**** '''IsHooded''' – признак скрытая услуга
 
**** '''IsNotCalculated''' – признак не рассчитываемая услуга
 
**** '''IsNotCalculated''' – признак не рассчитываемая услуга
**** '''BeginDateTimeString''' – дата и время начала услуги
+
**** '''BeginDateTimeString''' – дата и время начала услуги (YYYY-MM-DDThh:mm:ss)
**** '''EndDateTimeString''' – дата и время окончания услуги
+
**** '''EndDateTimeString''' – дата и время окончания услуги (YYYY-MM-DDThh:mm:ss)
 
**** '''TemplateId''' – шаблон услуги
 
**** '''TemplateId''' – шаблон услуги
 
**** '''Cost''' – цена услуги
 
**** '''Cost''' – цена услуги
 
**** '''ByPax''' – цена за человека
 
**** '''ByPax''' – цена за человека
 
**** '''QuotaStatus''' – объект статус квотирования
 
**** '''QuotaStatus''' – объект статус квотирования
***** '''PlacesStatus''' – статус по квотам (есть места / нет мест / под запрос)  
+
***** '''PlacesStatus''' – статус по квотам (есть места-1 / нет мест-2 / под запрос-4)  
 
***** '''FreePlaces''' – количество свободных мест, если удовлетворяются условия, заданные в настройке "Мало" и включена настройка "Отображать числовое значение оставшихся мест". Иначе возвращается 0. Если в данном параметре 0, то руководствоваться следует значением, полученном в параметре '''PlacesStatus'''.
 
***** '''FreePlaces''' – количество свободных мест, если удовлетворяются условия, заданные в настройке "Мало" и включена настройка "Отображать числовое значение оставшихся мест". Иначе возвращается 0. Если в данном параметре 0, то руководствоваться следует значением, полученном в параметре '''PlacesStatus'''.
 
***** '''IsFewPlaces''' – выполнены ли условия, заданные в настройке "Мало": '''true''' – если заданы условия количества мест "Мало" и данные условия выполнены, '''false''' – если не заданы условия количества мест "Мало" или они заданы, но не выполнены.
 
***** '''IsFewPlaces''' – выполнены ли условия, заданные в настройке "Мало": '''true''' – если заданы условия количества мест "Мало" и данные условия выполнены, '''false''' – если не заданы условия количества мест "Мало" или они заданы, но не выполнены.
Строка 3401: Строка 4212:
 
*** '''InternationalPassportSeries''' – серия загранпаспорта
 
*** '''InternationalPassportSeries''' – серия загранпаспорта
 
*** '''InternationalPassportNumber''' – номер загранпаспорта
 
*** '''InternationalPassportNumber''' – номер загранпаспорта
*** '''InternationalPassportDateOfIssue''' – дата выдачи загранпаспорта
+
*** '''InternationalPassportDateOfIssue''' – дата выдачи загранпаспорта (YYYY-MM-DDThh:mm:ssz)
*** '''InternationalPassportDateOfIssueString''' – дата выдачи загранпаспорта в строке
+
*** '''InternationalPassportDateOfIssueString''' – дата выдачи загранпаспорта в строковом формате (DD.MM.YYYY)
*** '''InternationalPassportDateOfExpiry''' – дата окончания действия загранпаспорта
+
*** '''InternationalPassportDateOfExpiry''' – дата окончания действия загранпаспорта (YYYY-MM-DDThh:mm:ssz)
*** '''InternationalPassportDateOfExpiryString''' – дата окончания действия загранпаспорта в строке
+
*** '''InternationalPassportDateOfExpiryString''' – дата окончания действия загранпаспорта в строковом формате (DD.MM.YYYY)
 
*** '''internationalPassportByWhom''' – кем выдан загранпаспорт
 
*** '''internationalPassportByWhom''' – кем выдан загранпаспорт
 
*** '''PassportSeries''' – серия паспорта
 
*** '''PassportSeries''' – серия паспорта
 
*** '''PassportNumber''' – номер паспорта
 
*** '''PassportNumber''' – номер паспорта
*** '''PassportDateOfIssue''' – дата выдачи паспорта
+
*** '''PassportDateOfIssue''' – дата выдачи паспорта (YYYY-MM-DDThh:mm:ssz)
*** '''PassportDateOfIssueString''' – дата выдачи паспорта в строке
+
*** '''PassportDateOfIssueString''' – дата выдачи паспорта в строке (DD.MM.YYYY)
 
*** '''PassportByWhom''' – кем выдан паспорт
 
*** '''PassportByWhom''' – кем выдан паспорт
 
*** '''Citizenship''' – название страны
 
*** '''Citizenship''' – название страны
 
*** '''Phone''' – телефон
 
*** '''Phone''' – телефон
 
*** '''Email''' – e-mail
 
*** '''Email''' – e-mail
*** '''BirthDay''' – дата рождения
+
*** '''BirthDay''' – дата рождения (YYYY-MM-DDThh:mm:ssz)
*** '''BirthDayString''' – дата рождения в строковом формате
+
*** '''BirthDayString''' – дата рождения в строковом формате (DD.MM.YYYY)
 
*** '''BirthPlace''' – место рождения
 
*** '''BirthPlace''' – место рождения
 
*** '''CitizenID''' – гражданство
 
*** '''CitizenID''' – гражданство
Строка 3462: Строка 4273:
 
**** '''Cost''' – цена
 
**** '''Cost''' – цена
 
**** '''QuotaStatus''' – объект статус квотирования
 
**** '''QuotaStatus''' – объект статус квотирования
***** '''PlacesStatus''' – статус по квотам (есть места / нет мест / под запрос)  
+
***** '''PlacesStatus''' – статус по квотам (есть места-1 / нет мест-2 / под запрос-4)
 
***** '''FreePlaces''' – количество свободных мест, если удовлетворяются условия, заданные в настройке "Мало" и включена настройка "Отображать числовое значение оставшихся мест". Иначе возвращается 0. Если в данном параметре 0, то руководствоваться следует значением, полученном в параметре '''PlacesStatus'''.
 
***** '''FreePlaces''' – количество свободных мест, если удовлетворяются условия, заданные в настройке "Мало" и включена настройка "Отображать числовое значение оставшихся мест". Иначе возвращается 0. Если в данном параметре 0, то руководствоваться следует значением, полученном в параметре '''PlacesStatus'''.
 
***** '''IsFewPlaces''' – выполнены ли условия, заданные в настройке "Мало": '''true''' – если заданы условия количества мест "Мало" и данные условия выполнены, '''false''' – если не заданы условия количества мест "Мало" или они заданы, но не выполнены.
 
***** '''IsFewPlaces''' – выполнены ли условия, заданные в настройке "Мало": '''true''' – если заданы условия количества мест "Мало" и данные условия выполнены, '''false''' – если не заданы условия количества мест "Мало" или они заданы, но не выполнены.
Строка 3495: Строка 4306:
 
Вызов метода GetHotelsAdditionalServices
 
Вызов метода GetHotelsAdditionalServices
 
<syntaxhighlight lang="java" enclose="div">
 
<syntaxhighlight lang="java" enclose="div">
POST http://localhost:9000/TourSearchOwin/GetHotelsAdditionalServices? HTTP/1.1
+
POST http://localhost:9000/TourSearchOwin/GetHotelsAdditionalServices?nodeId=2147483647 HTTP/1.1
 
Content-Type: application/json
 
Content-Type: application/json
  
Строка 3631: Строка 4442:
 
"ServiceName": "Доплаты к отелям",
 
"ServiceName": "Доплаты к отелям",
 
"City": null,
 
"City": null,
"Country": 90,
+
                "Country":                {
 +
                  "Key": 90,
 +
                  "Value": "Австрия"
 +
},
 
"Code": {
 
"Code": {
 
"Key": 364,
 
"Key": 364,
Строка 3689: Строка 4503:
 
Метод производит расчет услуг с индивидуальным выбором у туристов.
 
Метод производит расчет услуг с индивидуальным выбором у туристов.
 
* Формат запроса:
 
* Формат запроса:
** POST .../TourSearchOwin/CalculateIndividualServiceCosts?
+
** POST .../TourSearchOwin/CalculateIndividualServiceCosts?nodeId=2147483647
 +
, где ''nodeId'' – уникальный идентификатор узла в кластере балансировки нагрузки [[Мастер-Тур(15):Балансировщик нагрузки HaProxy|HaProxy]]
  
 
* Принимаемые параметры headers ( '''*''' – обязательный):
 
* Принимаемые параметры headers ( '''*''' – обязательный):
Строка 3751: Строка 4566:
 
**** '''Brutto''' – брутто
 
**** '''Brutto''' – брутто
 
**** '''Discount''' – скидка
 
**** '''Discount''' – скидка
 +
** '''nodeId''' – уникальный идентификатор узла в кластере балансировки нагрузки [[Мастер-Тур(15):Балансировщик нагрузки HaProxy|HaProxy]]
  
 
<div class="toccolours mw-collapsible mw-collapsed" style="width:900px">Пример
 
<div class="toccolours mw-collapsible mw-collapsed" style="width:900px">Пример
Строка 3757: Строка 4573:
 
Вызов метода CalculateIndividualServiceCosts
 
Вызов метода CalculateIndividualServiceCosts
 
<syntaxhighlight lang="java" enclose="div">
 
<syntaxhighlight lang="java" enclose="div">
POST http://localhost:9000/TourSearchOwin/CalculateIndividualServiceCosts? HTTP/1.1
+
POST http://localhost:9000/TourSearchOwin/CalculateIndividualServiceCosts?nodeId=2147483647 HTTP/1.1
 
Content-Type: application/json
 
Content-Type: application/json
  
Строка 3837: Строка 4653:
  
 
* Принимаемые параметры POST запроса ( '''*''' – обязательный):
 
* Принимаемые параметры POST запроса ( '''*''' – обязательный):
 +
<font style="color:red">''Внимание!''</font> Если в туре используется перелет из GDS, то в параметр '''flightSettings''' передается ответ из секции '''flightGDSRequest''' метода API [[Мастер-Тур(15):API для отдачи цен в поисковые системы#Актуализация тура (ActualizeTour)|ActualizeTour]]. Далее для получения цены выполняем методы [[Мастер-Тур(15):API для разработки онлайн поиска и бронирования#Выгрузка информации от внешнего поставщика по перелету (RebuildFlights)|RebuidFlights]] и [[Мастер-Тур(15):API для разработки онлайн поиска и бронирования#Расчет путевки (CalculateReservation)|CalculateReservation]]. <br />
 
** '''flightSettings''' – информация о шаблоне услуги авиаперелета
 
** '''flightSettings''' – информация о шаблоне услуги авиаперелета
 
*** '''templateId''' – идентификатор шаблона услуги
 
*** '''templateId''' – идентификатор шаблона услуги
Строка 3877: Строка 4694:
 
*** '''InternationalPassportSeries''' – серия загранпаспорта
 
*** '''InternationalPassportSeries''' – серия загранпаспорта
 
*** '''InternationalPassportNumber''' – номер загранпаспорта
 
*** '''InternationalPassportNumber''' – номер загранпаспорта
*** '''InternationalPassportDateOfIssue''' – дата выдачи загранпаспорта
+
*** '''InternationalPassportDateOfIssue''' – дата выдачи загранпаспорта (YYYY-MM-DDThh:mm:ssz)
*** '''InternationalPassportDateOfIssueString''' – дата выдачи загранпаспорта в строке
+
*** '''InternationalPassportDateOfIssueString''' – дата выдачи загранпаспорта в строке (DD.MM.YYYY)
*** '''InternationalPassportDateOfExpiry''' – дата окончания действия загранпаспорта
+
*** '''InternationalPassportDateOfExpiry''' – дата окончания действия загранпаспорта (YYYY-MM-DDThh:mm:ssz)
*** '''InternationalPassportDateOfExpiryString''' – дата окончания действия загранпаспорта в строке
+
*** '''InternationalPassportDateOfExpiryString''' – дата окончания действия загранпаспорта в строке (DD.MM.YYYY)
 
*** '''internationalPassportByWhom''' – кем выдан загранпаспорт
 
*** '''internationalPassportByWhom''' – кем выдан загранпаспорт
 
*** '''PassportSeries''' – серия паспорта
 
*** '''PassportSeries''' – серия паспорта
 
*** '''PassportNumber''' – номер паспорта
 
*** '''PassportNumber''' – номер паспорта
*** '''PassportDateOfIssue''' – дата выдачи паспорта
+
*** '''PassportDateOfIssue''' – дата выдачи паспорта (YYYY-MM-DDThh:mm:ssz)
*** '''PassportDateOfIssueString''' – дата выдачи паспорта в строке
+
*** '''PassportDateOfIssueString''' – дата выдачи паспорта в строке (DD.MM.YYYY)
 
*** '''PassportByWhom''' – кем выдан паспорт
 
*** '''PassportByWhom''' – кем выдан паспорт
 
*** '''Citizenship''' – название страны
 
*** '''Citizenship''' – название страны
Строка 4093: Строка 4910:
 
     "key": 0,
 
     "key": 0,
 
     "tourDurationByDays": "11",
 
     "tourDurationByDays": "11",
     "langueCode": "ru"
+
     "langueCode": "ru",
 +
    "isCanary": "false"
 
}
 
}
  
Строка 4548: Строка 5366:
 
</div></div><br />
 
</div></div><br />
  
===Получение семейств тарифов авиаперелетов из внешней системы (GetGDSFlightFareFamilies)===
+
===Выгрузка информации от внешнего поставщика по перелету (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/GetGDSFlightFareFamilies?
+
** POST .../TourSearchOwin/RebuildFlights
 
 
 
* Принимаемые параметры headers ( '''*''' – обязательный):
 
* Принимаемые параметры headers ( '''*''' – обязательный):
 
** '''Content-Type *''' – application/json
 
** '''Content-Type *''' – application/json
  
 
* Принимаемые параметры POST запроса ( '''*''' – обязательный):
 
* Принимаемые параметры POST запроса ( '''*''' – обязательный):
** '''flightId''' – ID внешнего перелета
+
** '''flights''' – перелеты
** '''providerId''' – ID внешнего провайдера
+
*** '''direction''' –  
** '''languageCode''' – код локализации
+
*** '''commonPrice''' – общая стоимость перелета
** '''passengers''' – информация о пассажирах
+
*** '''remotePriceSource''' – данные расчета локального перелета
*** '''IsMain''' – главный турист
+
**** '''providerId''' – ID внешнего поставщика
*** '''Number''' – порядковый номер туриста
+
**** '''flightId''' – идентификатор внешнего перелета
*** '''AgeType''' – тип туриста (0 – взрослый, 1 – ребенок, 2 – инфант)
+
*** '''localPriceSource''' – данные расчета локального перелета
*** '''MaleFemaleSex''' – пол (0 – мужской, 1 – женский)
+
**** '''packetId''' – ключ пакета
*** '''FirstName''' – имя (лат)
+
**** '''partnerId''' – идентификатор партнера
*** '''LastName''' – фамилия (лат)
+
*** '''flightsSequenceSettings''' – описание параметров последовательности перелетов для которых действуют замены 
*** '''Patronymic''' – отчество (лат)
+
**** '''templateId''' – идентификатор шаблона услуги
*** '''FirstNameRus''' – имя (рус)
+
**** '''patternId''' – идентификатор паттерна услуги
*** '''LastNameRus''' – фамилия (рус)
+
**** '''serviceId''' – идентификатор класса услуги
*** '''PatronymicRus''' – отчество (рус)
+
*** '''segments''' – сегменты авиаперелета
*** '''InternationalPassportSeries''' – серия загранпаспорта
+
**** '''segmentNumber''' – номер сегмента
*** '''InternationalPassportNumber''' – номер загранпаспорта
+
**** '''depratureCity''' – город отправления
*** '''InternationalPassportDateOfIssue''' – дата выдачи загранпаспорта
+
***** '''gdsItem''' – справочная информация внешней системы
*** '''InternationalPassportDateOfIssueString''' – дата выдачи загранпаспорта в строке
+
****** '''serviceId''' – идентификатор системы
*** '''InternationalPassportDateOfExpiry''' – дата окончания действия загранпаспорта
+
****** '''languageId''' – идентификатор языка
*** '''InternationalPassportDateOfExpiryString''' – дата окончания действия загранпаспорта в строке
+
****** '''id''' – идентификатор в системе внешнего поставщика
*** '''internationalPassportByWhom''' – кем выдан загранпаспорт
+
****** '''code''' – код в системе внешнего поставщика
*** '''PassportSeries''' – серия паспорта
+
****** '''name''' – имя в системе внешнего поставщика
*** '''PassportNumber''' – номер паспорта
+
******* '''automaticallyMappingValue''' – выражение используемое для автоматического маппинга
*** '''PassportDateOfIssue''' – дата выдачи паспорта
+
******* '''requestValue''' – значение поля справочника которое используется в запросе к внешнему поставщику
*** '''PassportDateOfIssueString''' – дата выдачи паспорта в строке
+
****** '''displayedValue''' – значение поля справочника который используется для отображения
*** '''PassportByWhom''' – кем выдан паспорт
+
****** '''dependencies''' – список зависимых сущностей
*** '''Citizenship''' – название страны
+
******* '''dictionaryId''' – идентификатор справочника
*** '''Phone''' – телефон
+
******* '''itemId''' –  
*** '''Email''' – e-mail
+
****** '''columnValues''' – наименование города и страны
*** '''BirthDay''' – дата рождения (YYYY-MM-DDThh:mm:ssz)
+
***** '''mtItem''' – справочная информации локальной системы
*** '''BirthDayString''' – дата рождения в строковом формате (DD.MM.YYYY)
+
****** '''id''' – идентификатор в локальной системе
*** '''BirthPlace''' – место рождения
+
****** '''code''' – код в локальной системе
*** '''CitizenID''' – гражданство
+
****** '''name''' – имя в локальной системе
*** '''Age''' – количество полных лет на момент окончания тура
+
****** '''automaticallyMappingValue''' – выражение используемое для автоматического маппинга
** '''currency''' – валюта
+
****** '''requestValue''' – значение поля справочника которое используется в запросе к внешнему поставщику
** '''price''' – стоимость
+
****** '''displayedValue''' – значение поля справочника который используется для отображения
** '''param''' – параметры перелета
+
****** '''dependencies''' – список зависимых сущностей
*** '''flightsSource''' – параметры перелета
+
******* '''dictionaryId''' – идентификатор справочника
**** '''flightSettings''' – информация о шаблоне услуги авиаперелета
+
******* '''itemId''' –  
***** '''templateId''' – идентификатор шаблона услуги
+
****** '''columnValues''' – наименование страны и города
***** '''patternId''' – идентификатор паттерна услуги (внутренняя информация из программы туров)
+
***** '''mapping''' – связка
***** '''serviceId''' – идентификатор класса услуги (внутренняя информация из программы туров)
+
****** '''id''' – Id маппинга
**** '''service''' – информация об услуге авиаперелета
+
****** '''providerId''' – Id провайдера
***** '''ServiceType''' – тип услуги
+
****** '''dictionaryId''' – Id справочника
***** '''Code''' – ключ услуги
+
****** '''providerDictionaryItemId''' – Id справочника внешнего поставщика
***** '''SubCode1''' – [[#Приложение 1: параметры услуги (ServiceType, Code, SubCode1, SubCode2)|доп. описание 1]]
+
****** '''providerDictionaryItemName''' – обозначение справочника внешнего поставщика
***** '''SubCode2''' – [[#Приложение 1: параметры услуги (ServiceType, Code, SubCode1, SubCode2)|доп. описание 2]]
+
****** '''mtDictionaryItemId''' – Id справочника МТ
***** '''CountryId''' – страна услуги
+
****** '''mtDictionaryItemName''' – обозначение справочника MT
***** '''CityId''' – город услуги
+
**** '''arrivalCity''' – город прибытия
***** '''PacketId''' – пакет услуги
+
***** '''gdsItem''' – справочная информация внешней системы
***** '''PartnerId''' – партнер услуги
+
****** '''serviceId''' – идентификатор системы
***** '''Day''' – день предоставления услуги
+
****** '''languageId''' – идентификатор языка
***** '''DurationInNight''' – продолжительность услуги в ночах
+
****** '''id''' – идентификатор в системе внешнего поставщика
**** '''price''' – стоимость перелета
+
****** '''code''' – код в системе внешнего поставщика
**** '''quotaInfo''' – объект информация по квотам
+
****** '''name''' – имя в системе внешнего поставщика
***** '''status''' – статус по квотам (есть места / нет мест / под запрос)
+
******* '''automaticallyMappingValue''' – выражение используемое для автоматического маппинга
***** '''freePlaces''' – количество свободных мест, если удовлетворяются условия, заданные в настройке "Мало" и включена настройка "Отображать числовое значение оставшихся мест". Иначе возвращается 0. Если в данном параметре 0, то руководствоваться следует значением, полученном в параметре '''PlacesStatus'''.
+
******* '''requestValue''' – значение поля справочника которое используется в запросе к внешнему поставщику
***** '''isFewPlaces''' – выполнены ли условия, заданные в настройке "Мало": '''true''' – если заданы условия количества мест "Мало" и данные условия выполнены, '''false''' – если не заданы условия количества мест "Мало" или они заданы, но не выполнены.
+
****** '''displayedValue''' – значение поля справочника который используется для отображения
**** '''flightDateTimeLimitationInterval''' –  
+
****** '''dependencies''' – список зависимых сущностей
***** '''startLimitation''' – начало тайм-лимита
+
******* '''dictionaryId''' – идентификатор справочника
***** '''finishLimitation''' – объект тайм-лимита
+
******* '''itemId''' –  
****** '''dateTimeString''' – дата окончания тайм-лимита
+
****** '''columnValues''' – наименование города и страны
****** '''serviceType''' – тип услуги
+
***** '''mtItem''' – справочная информации локальной системы
****** '''serviceCode''' – код услуги
+
****** '''id''' – идентификатор в локальной системе
**** '''flightSourceMode''' – тип перелета (1 – локальный, 2 – из внешний системы)
+
****** '''code''' – код в локальной системе
*** '''passengers''' – информация о пассажирах
+
****** '''name''' – имя в локальной системе
**** '''IsMain''' – главный турист
+
****** '''automaticallyMappingValue''' – выражение используемое для автоматического маппинга
**** '''Number''' – порядковый номер туриста
+
****** '''requestValue''' – значение поля справочника которое используется в запросе к внешнему поставщику
**** '''AgeType''' – тип туриста (0 – взрослый, 1 – ребенок, 2 – инфант)
+
****** '''displayedValue''' – значение поля справочника который используется для отображения
**** '''MaleFemaleSex''' – пол (0 – мужской, 1 – женский)
+
****** '''dependencies''' – список зависимых сущностей
**** '''FirstName''' – имя (лат)
+
******* '''dictionaryId''' – идентификатор справочника
**** '''LastName''' – фамилия (лат)
+
******* '''itemId''' –  
**** '''Patronymic''' – отчество (лат)
+
****** '''columnValues''' – наименование страны и города
**** '''FirstNameRus''' – имя (рус)
+
***** '''mapping''' – связка
**** '''LastNameRus''' – фамилия (рус)
+
****** '''id''' – Id маппинга
**** '''PatronymicRus''' – отчество (рус)
+
****** '''providerId''' – Id провайдера
**** '''InternationalPassportSeries''' – серия загранпаспорта
+
****** '''dictionaryId''' – Id справочника
**** '''InternationalPassportNumber''' – номер загранпаспорта
+
****** '''providerDictionaryItemId''' – Id справочника внешнего поставщика
**** '''InternationalPassportDateOfIssue''' – дата выдачи загранпаспорта
+
****** '''providerDictionaryItemName''' – обозначение справочника внешнего поставщика
**** '''InternationalPassportDateOfIssueString''' – дата выдачи загранпаспорта в строке
+
****** '''mtDictionaryItemId''' – Id справочника МТ
**** '''InternationalPassportDateOfExpiry''' – дата окончания действия загранпаспорта
+
****** '''mtDictionaryItemName''' – обозначение справочника MT
**** '''InternationalPassportDateOfExpiryString''' – дата окончания действия загранпаспорта в строке
+
**** '''departureAirport''' – аэропорт вылета
**** '''internationalPassportByWhom''' – кем выдан загранпаспорт
+
**** '''arrivalAirport''' – аэропорт прилета
**** '''PassportSeries''' – серия паспорта
+
***** '''gdsItem''' –справочная информация внешней системы
**** '''PassportNumber''' – номер паспорта
+
****** '''serviceId''' – идентификатор системы
**** '''PassportDateOfIssue''' – дата выдачи паспорта
+
****** '''languageId''' – идентификатор языка
**** '''PassportDateOfIssueString''' – дата выдачи паспорта в строке
+
****** '''id''' – идентификатор аэропорта вылета
**** '''PassportByWhom''' – кем выдан паспорт
+
****** '''code''' – код аэропорта вылета
**** '''Citizenship''' – название страны
+
****** '''name''' – наименование аэропорта
**** '''Phone''' – телефон
+
******* '''automaticallyMappingValue''' – выражение используемое для автоматического маппинга
**** '''Email''' – e-mail
+
******* '''requestValue''' – значение поля справочника которое используется в запросе к внешнему поставщику
**** '''BirthDay''' – дата рождения (YYYY-MM-DDThh:mm:ssz)
+
****** '''displayedValue''' – значение поля справочника который используется для отображения
**** '''BirthDayString''' – дата рождения в строковом формате (DD.MM.YYYY)
+
****** '''dependencies''' – список зависимых сущностей
**** '''BirthPlace''' – место рождения
+
******* '''dictionaryId''' – идентификатор справочника
**** '''CitizenID''' – гражданство
+
******* '''itemId''' –  
**** '''Age''' – количество полных лет на момент окончания тура
+
****** '''columnValues''' – наименование аэропорта города страны
*** '''tourDate''' – дата тура
+
***** '''mtItem''' – справочная информации из локальной системы
*** '''tourCurrency''' – валюта тура
+
****** '''id''' – идентификатор аэропорта в локальной системе
*** '''tourId''' – ключ программы тура
+
****** '''code''' – код аэропорта в локальной системе
*** '''filterTariff''' – информация о тарифах
+
****** '''name''' – имя аэропорта в локальной системе
*** '''filterDeptime''' – информация о времени вылета
+
****** '''automaticallyMappingValue''' – выражение используемое для автоматического маппинга
*** '''isCommission''' – признак комиссионной цены
+
****** '''requestValue''' – значение поля справочника которое используется в запросе к внешнему поставщику
*** '''baseFlightsParams''' – параметра авиаперелета
+
****** '''displayedValue''' – значение поля справочника который используется для отображения
**** '''CityArrival''' – город прибытия
+
****** '''dependencies''' – список зависимых сущностей
**** '''FlightCode''' – код авиаперелета
+
******* '''dictionaryId''' – идентификатор справочника
**** '''TariffKey''' – ключ тарифа
+
******* '''itemId''' –  
**** '''PartnerId''' – ключ партнера
+
****** '''columnValues''' – наименование страны и города
*** '''isUpdated''' – информация об обновлении перелета
+
***** '''mapping''' – связка
*** '''key''' – ключ запроса
+
****** '''id''' – Id маппинга аэропорта
*** '''tourDurationByDays''' – продолжительность перелета
+
****** '''providerId''' – Id провайдера аэропорта
*** '''langueCode''' – локализация
+
****** '''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": {
 +
        "packetId": 197,
 +
        "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
 +
            }
 +