Мастер-Тур(15):API для разработки онлайн поиска и бронирования — различия между версиями
| [досмотренная версия] | [досмотренная версия] |
Biryukov (обсуждение | вклад) |
Biryukov (обсуждение | вклад) (→Установка) |
||
| (не показано 339 промежуточных версий 12 участников) | |||
| Строка 1: | Строка 1: | ||
| − | |||
| − | |||
Версия статьи от {{REVISIONDAY}}-{{REVISIONMONTH}}-{{REVISIONYEAR}}. | Версия статьи от {{REVISIONDAY}}-{{REVISIONMONTH}}-{{REVISIONYEAR}}. | ||
| Строка 9: | Строка 7: | ||
==Введение== | ==Введение== | ||
| − | Данный web-сервис | + | Данный web-сервис служит для разработки собственного сайта туроператору на основе API. |
==Установка== | ==Установка== | ||
| − | Для работы с web-сервисом необходимо установить [[Мастер-Тур(15):Установка#Установка службы поиска|службу поиска]].<br /> | + | Для работы с web-сервисом необходимо на отдающей стороне установить [[Мастер-Тур(15):Установка#Установка службы поиска|службу поиска]].<br /> |
После установки web-сервис будет доступен по адресу ''<nowiki>http://значение настройки "serviceAddress" в TourSearchOwin/"название метода"</nowiki>'' (пример: ''http://localhost:9000/TourSearchOwin/Settings'') | После установки web-сервис будет доступен по адресу ''<nowiki>http://значение настройки "serviceAddress" в TourSearchOwin/"название метода"</nowiki>'' (пример: ''http://localhost:9000/TourSearchOwin/Settings'') | ||
| + | |||
| + | ==Swagger== | ||
| + | Работу методов можно проверить с помощью Swagger по пути: ''http://localhost:9000/TourSearchOwin/SwaggerUI'' | ||
==Список методов== | ==Список методов== | ||
| + | |||
| + | Последовательность вызова методов сервиса<br /> | ||
| + | [[Файл:mb_273.png|1000px|Последовательность вызова методов сервиса]] | ||
| + | |||
| + | ===Информация о состоянии службы поиска (statusCache)=== | ||
| + | Метод выводит информацию о состоянии службы поиска при ее загрузке. | ||
| + | * Формат запроса: | ||
| + | ** GET .../TourSearchOwin/statusCache? | ||
| + | * Принимаемые параметры: | ||
| + | ** нет принимаемых параметров | ||
| + | * Возвращаемый результат: | ||
| + | ** '''Initialized''' – информация о том, загружена ли служба или нет ('''false''' – инициализация кешей не завершена, '''true''' – инициализация кешей завершена) | ||
| + | ** '''Status''' – состояние службы. Возможные значения: ''Запущена инициализация кэшей'', ''Инициализация кэшей завершена'' | ||
| + | ** '''CacheName''' – информация о том, какой именно кеш сейчас считается (название) | ||
| + | ** '''Iteration''' – порядковый номер считаемого справочника кеша | ||
| + | ** '''CacheCount''' – общее количество кешей | ||
| + | ** '''ProcessMessage''' – детализация. Информацию можно разделить на 3 блока: | ||
| + | *** Загрузка всех справочных данных, кроме расчета маршрутов и актуальных фильтров. В этом случае сообщение будет ''Загрузка кэшей из БД'' | ||
| + | *** Расчет маршрутов. ''CacheName'' – ''HotelScheme'', сообщение будет ''tours load: 956 / 1234'' | ||
| + | *** Расчет актуальных фильтров. ''CacheName'' – ''ActualFilters'', сообщение будет ''Actual filter processed: 783012 / 3865687"'' | ||
| + | |||
| + | <div class="toccolours mw-collapsible mw-collapsed" style="width:900px">Пример | ||
| + | <div class="mw-collapsible-content"> | ||
| + | <TABLE STYLE="border: 0.1em dashed #2F6FAB; margin: 8px; padding: 8px" WIDTH="99%"><TR><TD> | ||
| + | Вызов метода Settings | ||
| + | <syntaxhighlight lang="java" enclose="div"> | ||
| + | GET http://localhost:9000/TourSearchOwin/statusCache | ||
| + | </syntaxhighlight> | ||
| + | Возвращаемый результат метода statusCache (в формате JSON) | ||
| + | <syntaxhighlight lang="java" enclose="div"> | ||
| + | { | ||
| + | "Initialized": false, | ||
| + | "Status": "Запущена инициализация кэшей", | ||
| + | "CacheName": "ToursSearchView", | ||
| + | "Iteration": 10, | ||
| + | "CacheCount": 112, | ||
| + | "ProcessMessage": "Загрузка кэшей из БД" | ||
| + | } | ||
| + | { | ||
| + | "Initialized": false, | ||
| + | "Status": "Запущена инициализация кэшей", | ||
| + | "CacheName": "HotelScheme", | ||
| + | "Iteration": 109, | ||
| + | "CacheCount": 112, | ||
| + | "ProcessMessage": "tours load: 956 / 1234" | ||
| + | } | ||
| + | { | ||
| + | "Initialized": false, | ||
| + | "Status": "Запущена инициализация кэшей", | ||
| + | "CacheName": "ActualFilters", | ||
| + | "Iteration": 112, | ||
| + | "CacheCount": 112, | ||
| + | "ProcessMessage": "Actual filter processed: 783012 / 3865687" | ||
| + | } | ||
| + | { | ||
| + | "Initialized": true, | ||
| + | "Status": "Инициализация кэшей завершена", | ||
| + | "CacheName": null, | ||
| + | "Iteration": 0, | ||
| + | "CacheCount": 0, | ||
| + | "ProcessMessage": null | ||
| + | } | ||
| + | </syntaxhighlight> | ||
| + | </TD></TR></TABLE> | ||
| + | </div></div><br /> | ||
| + | |||
| + | ===Авторизация (Token)=== | ||
| + | Метод производит получение авторизационного токена ([https://tools.ietf.org/html/rfc6749#section-1.3.3 описание стандарта]). | ||
| + | * Формат запроса: | ||
| + | ** POST .../TourSearchOwin/Token? | ||
| + | * Принимаемые параметры headers ( '''*''' – обязательный): | ||
| + | ** '''Content-Type *''' – application/x-www-form-urlencoded | ||
| + | |||
| + | * Принимаемые параметры POST запроса ( '''*''' – обязательный): | ||
| + | ** '''grant_type *''' – текст ''password'' | ||
| + | ** '''username *''' – логин представителя партнера или частного лица | ||
| + | ** '''password *''' – пароль представителя партнера или частного лица | ||
| + | |||
| + | * Возвращаемый результат: | ||
| + | ** '''access_token''' – токен | ||
| + | ** '''token_type''' – тип токена | ||
| + | ** '''expires_in''' – код | ||
| + | ** '''userKey''' – ключ пользователя | ||
| + | ** '''userType''' – тип пользователя (0 – представитель партнера, 1 – частное лицо) | ||
| + | ** '''.issued''' – дата получения | ||
| + | ** '''.expires''' – дата действия до | ||
| + | |||
| + | <div class="toccolours mw-collapsible mw-collapsed" style="width:900px">Пример | ||
| + | <div class="mw-collapsible-content"> | ||
| + | <TABLE STYLE="border: 0.1em dashed #2F6FAB; margin: 8px; padding: 8px" WIDTH="99%"><TR><TD> | ||
| + | Вызов метода Token | ||
| + | <syntaxhighlight lang="java" enclose="div"> | ||
| + | POST http://localhost:9000/TourSearchOwin/Token HTTP/1.1 | ||
| + | Content-Type: application/x-www-form-urlencoded | ||
| + | |||
| + | grant_type=password&username=test&password=1 | ||
| + | </syntaxhighlight> | ||
| + | Возвращаемый результат метода Token (в формате JSON) | ||
| + | <syntaxhighlight lang="java" enclose="div"> | ||
| + | { | ||
| + | "access_token": "AQAAANCMnd8BFdERjHoAwE_Cl-sBAAAAdsCC8X7m9E-2bg0-uS0VfgAAAAAAAAADZgAAwAAAA- | ||
| + | EqAAAAAASAAACgAAAAEAAAAO4S-VrqBhQuhqliqrAKKfIgAQAAn-gfgP-rYjk-Krr1Ck2A-IGCw6FBhamUOzFxgTtk1hR- | ||
| + | GLMryFIH8VK5GmHdHubZWj4S7XcazGL1Kn5-VlbiYdW2ZVWpYlk638aV-XS2kpZ9YrKgViiM_x8RH5TPo4- | ||
| + | 9LhE7V-SjiB_CP_qs58DRKcyohq3Tz9QaiFgH1Ko7O2XKjTBG7SHyQPDPYjaqg9kDxmzq0UcIT6Fm4YkDxmm9- | ||
| + | CW7u3cEFWcpiqKOc2VvZFKPPHc07uDOO4w9FXPhpXZwOqrJBxzhbr73RuhzPs_e-hgxKaIlsMaK5b0v5ReAMy1kuY0ebXA",", | ||
| + | "token_type": "bearer", | ||
| + | "expires_in": 1209599, | ||
| + | "userKey": "333", | ||
| + | "userType": "0", | ||
| + | ".issued": "Thu, 05 Apr 2018 12:05:31 GMT", | ||
| + | ".expires": "Thu, 19 Apr 2018 12:05:31 GMT" | ||
| + | } | ||
| + | </syntaxhighlight> | ||
| + | </TD></TR></TABLE> | ||
| + | </div></div><br /> | ||
| + | |||
===Выгрузка настроек службы поиска (Settings)=== | ===Выгрузка настроек службы поиска (Settings)=== | ||
Метод производит выгрузку настроек службы поиска. | Метод производит выгрузку настроек службы поиска. | ||
* Формат запроса: | * Формат запроса: | ||
| − | ** .../TourSearchOwin/Settings? | + | ** GET .../TourSearchOwin/Settings? |
* Принимаемые параметры: | * Принимаемые параметры: | ||
** нет принимаемых параметров | ** нет принимаемых параметров | ||
* Возвращаемый результат: | * Возвращаемый результат: | ||
| − | ** '''ChildAgesSetting''' – регулируется настройкой [[Мастер-Тур(15):Программа туров. | + | ** '''ChildAgesSetting''' – регулируется настройкой [[Мастер-Тур(15):Программа туров. Настройки|максимальный возраст ребенка]] (массив возрастов, при которых турист будет считаться ребенком |
| − | ** '''DurationSetting''' – регулируется настройкой [[Мастер-Тур(15):Программа туров. | + | ** '''DurationSetting''' – регулируется настройкой [[Мастер-Тур(15):Программа туров. Настройки|максимальная продолжительность тура]] (массив продолжительностей, доступных в фильтрах для поиска) |
** '''RoundServiceSetting''' – признак округления цены (количество знаков после запятой) | ** '''RoundServiceSetting''' – признак округления цены (количество знаков после запятой) | ||
** '''CacheReady''' – статус готовности службы поиска к работе (true/false) | ** '''CacheReady''' – статус готовности службы поиска к работе (true/false) | ||
| Строка 45: | Строка 162: | ||
** '''MaxSearchDatesCountClient''' – максимальное количество дат, которое будет обрабатываться в клиенте поиска | ** '''MaxSearchDatesCountClient''' – максимальное количество дат, которое будет обрабатываться в клиенте поиска | ||
** '''MaxDurationsCountClient''' – максимальное количество продолжительностей, которое будет обрабатываться в клиенте поиска | ** '''MaxDurationsCountClient''' – максимальное количество продолжительностей, которое будет обрабатываться в клиенте поиска | ||
| − | + | ** '''UseHotelCategoryGlobalCodeInDopFilter''' – использовать глобальные коды категорий отелей в поиске | |
| + | ** '''UsePansionGlobalCodeInDopFilter''' – использовать глобальные коды питаний в поиске | ||
| + | ** '''CheckTouristDataInBasket''' – проверять корректность данных туристов | ||
| + | ** '''SimpleRegistration''' – упрощенная регистрация частного лица | ||
| + | ** '''ShowHotelImagesInSearch''' – показывать описание и изображения отелей в поиске | ||
| + | ** '''CacheReadyMessage''' – сообщение о готовности службы поиска или службы расчета актуальных фильтров. Варианты возвращаемых значений: | ||
| + | *** ''<add key="enableActualFilters" value="true" />'' - CacheReady: true = CacheReadyMessage: "Кеш инициализирован"; CacheReady: false = CacheReadyMessage: "Кеш еще не инициализирован" | ||
| + | *** ''<add key="enableActualFilters" value="false" />'' - Служба актуальных фильтров недоступна (выключена, неверно указана ссылка на нее и т.п.) CacheReadyMessage: "Служба актуальных фильтров недоступна"; Служба актуальных фильтров доступна но не готова - CacheReadyMessage: "Кеш службы актуальных фильтров не инициализирован"; Служба актуальных фильтров готова, а основная служба не готова - CacheReadyMessage: "Кеш ещё не инициализирован"; Служба актуальных фильтров готова, и основная служба готова - CacheReadyMessage: "Кеш ещё инициализирован". | ||
| + | ** '''nodeId''' – уникальный идентификатор узла в кластере балансировки нагрузки [[Мастер-Тур(15):Балансировщик нагрузки HaProxy|HaProxy]] | ||
| + | ** '''FullPaymentPeriod''' – полная оплата с даты бронирования (может быть null) | ||
| + | ** '''FullPaymentCheckin''' – полная оплата до даты заезда (может быть null) | ||
| + | ** '''PrePaymentPeriod''' – предоплата с даты бронирования (может быть null) | ||
| + | ** '''PrePaymentCheckin''' – предоплата до даты заезда (может быть null) | ||
| + | ** '''PrePaymentCu"''' – значение предоплаты в y.e. (может быть null) | ||
| + | ** '''PrePaymentPercent''' – значение предоплаты в процентах (может быть null) | ||
<div class="toccolours mw-collapsible mw-collapsed" style="width:900px">Пример | <div class="toccolours mw-collapsible mw-collapsed" style="width:900px">Пример | ||
<div class="mw-collapsible-content"> | <div class="mw-collapsible-content"> | ||
| Строка 51: | Строка 182: | ||
Вызов метода Settings | Вызов метода Settings | ||
<syntaxhighlight lang="java" enclose="div"> | <syntaxhighlight lang="java" enclose="div"> | ||
| − | http://localhost:9000/TourSearchOwin/Settings | + | GET http://localhost:9000/TourSearchOwin/Settings |
</syntaxhighlight> | </syntaxhighlight> | ||
Возвращаемый результат метода Settings (в формате JSON) | Возвращаемый результат метода Settings (в формате JSON) | ||
| Строка 116: | Строка 247: | ||
"MaxSearchDatesCountClient": 10, | "MaxSearchDatesCountClient": 10, | ||
"MaxDurationsCountClient": 14 | "MaxDurationsCountClient": 14 | ||
| + | "UseHotelCategoryGlobalCodeInDopFilter": false | ||
| + | "UsePansionGlobalCodeInDopFilter": false | ||
| + | "CheckTouristDataInBasket": true | ||
| + | "SimpleRegistration": false | ||
| + | "ShowHotelImagesInSearch": true | ||
| + | "CacheReadyMessage": "Кеш инициализирован" | ||
| + | "nodeId": 2147483647, | ||
| + | "FullPaymentPeriod": null, | ||
| + | "FullPaymentCheckin": 5, | ||
| + | "PrePaymentPeriod": null, | ||
| + | "PrePaymentCheckin": 10, | ||
| + | "PrePaymentPercent": 50.0, | ||
| + | "PrePaymentCu": null | ||
} | } | ||
</syntaxhighlight> | </syntaxhighlight> | ||
| Строка 121: | Строка 265: | ||
</div></div><br /> | </div></div><br /> | ||
| − | ===Выгрузка списка валют (Currency)=== | + | ===Выгрузка списка валют в онлайне (Currency)=== |
Метод возвращает список используемых валют. | Метод возвращает список используемых валют. | ||
* Формат запроса: | * Формат запроса: | ||
| − | ** .../TourSearchOwin/Currency | + | ** GET .../TourSearchOwin/Currency |
* Принимаемые параметры: | * Принимаемые параметры: | ||
** нет принимаемых параметров | ** нет принимаемых параметров | ||
| Строка 133: | Строка 277: | ||
** '''IsNational''' – признак валюты «Национальная» | ** '''IsNational''' – признак валюты «Национальная» | ||
** '''IsoCode''' – ISO код валюты | ** '''IsoCode''' – ISO код валюты | ||
| + | ** '''IsShowInSearch''' – признак показывать ли валюту в поиске | ||
| + | ** '''Symbol''' – символ валюты (обрабатывается с 15.7) | ||
** '''Key''' – идентификатор валюты | ** '''Key''' – идентификатор валюты | ||
| − | + | ||
<div class="toccolours mw-collapsible mw-collapsed" style="width:900px">Пример | <div class="toccolours mw-collapsible mw-collapsed" style="width:900px">Пример | ||
| Строка 141: | Строка 287: | ||
Вызов метода Currency | Вызов метода Currency | ||
<syntaxhighlight lang="java" enclose="div"> | <syntaxhighlight lang="java" enclose="div"> | ||
| − | http://localhost:9000/TourSearchOwin/Currency | + | GET http://localhost:9000/TourSearchOwin/Currency |
</syntaxhighlight> | </syntaxhighlight> | ||
Возвращаемый результат метода Currency (в формате JSON) | Возвращаемый результат метода Currency (в формате JSON) | ||
| Строка 152: | Строка 298: | ||
"IsNational": false, | "IsNational": false, | ||
"IsoCode": "EUR", | "IsoCode": "EUR", | ||
| − | "Key": 2, | + | "IsShowInSearch": true, |
| − | "IsShowInSearch": true | + | "Symbol": "€", |
| + | "Key": 2 | ||
| + | }, | ||
| + | { | ||
| + | "Code": "рб", | ||
| + | "Name": "Рубль", | ||
| + | "IsMain": false, | ||
| + | "IsNational": true, | ||
| + | "IsoCode": "RUR", | ||
| + | "IsShowInSearch": true, | ||
| + | "Symbol": "₽", | ||
| + | "Key": 14 | ||
| + | }, | ||
| + | { | ||
| + | "Code": "$", | ||
| + | "Name": "US Dollar", | ||
| + | "IsMain": true, | ||
| + | "IsNational": false, | ||
| + | "IsoCode": "USD", | ||
| + | "IsShowInSearch": true, | ||
| + | "Symbol": "$", | ||
| + | "Key": 1 | ||
| + | } | ||
| + | ] | ||
| + | </syntaxhighlight> | ||
| + | </TD></TR></TABLE> | ||
| + | </div></div><br /> | ||
| + | |||
| + | |||
| + | ===Выгрузка курсов валют (CurrencyRates) начиная с 15.7=== | ||
| + | Полный аналог метода [[Мастер-Тур(15):API для отдачи цен в поисковые системы#Выгрузка курсов валют (GetCurrencyRates)|Выгрузка курсов валют (GetCurrencyRates)]]<br /> | ||
| + | Метод возвращает список курсов валют, актуальных на дату запроса. Курсы отображаются только для тех валют, которые отмечены в справочнике признаком ''Отображать в онлайне'' | ||
| + | * Формат запроса: | ||
| + | ** GET .../TourSearchOwin/CurrencyRates | ||
| + | * Принимаемые параметры: | ||
| + | ** '''dateFrom''' – начальная дата, от которой вывести список курсов валют, в формате DD.MM.YYYY, необязательный параметр (если не указан, берется за текущий день) | ||
| + | ** '''dateTo''' – конечная дата, до которой вывести список курсов валют, в формате DD.MM.YYYY, необязательный параметр (если не указан, берется за текущий день) | ||
| + | ** '''otherBaseCurrencyId''' – идентификатор любой валюты, эмулирующей работу национальной валюты, необязательный параметр. Если заполнен, то в результатах выдачи параметр ''baseCurrencyId'' будет заменяться на валюту из параметра ''otherBaseCurrencyId'' (обрабатывается с релиза 15.9). | ||
| + | |||
| + | * Возвращаемый результат: | ||
| + | ** '''baseCurrencyId''' – идентификатор национальной валюты, либо произвольной валюты, указанной в настройке ''basketCurrency'' в конфигурационном файле (обрабатывается с релиза 15.6) | ||
| + | ** '''currencyId''' – идентификатор валюты, курс которой приводится | ||
| + | ** '''rate''' – курс валюты (отношение '''currencyId''' к '''baseCurrencyId''') | ||
| + | ** '''date''' – дата, на которую был зарегистрирован выводимый курс валюты | ||
| + | |||
| + | <div class="toccolours mw-collapsible mw-collapsed" style="width:900px">Пример | ||
| + | <div class="mw-collapsible-content"> | ||
| + | <TABLE STYLE="border: 0.1em dashed #2F6FAB; margin: 8px; padding: 8px" WIDTH="99%"><TR><TD> | ||
| + | Вызов метода CurrencyRates | ||
| + | <syntaxhighlight lang="java" enclose="div"> | ||
| + | http://localhost:9000/TourSearchOwin/CurrencyRates?dateFrom=18.09.2024&dateTo=19.09.2024 | ||
| + | </syntaxhighlight> | ||
| + | Возвращаемый результат метода CurrencyRates (в формате JSON) | ||
| + | <syntaxhighlight lang="java" enclose="div"> | ||
| + | [ | ||
| + | { | ||
| + | "BaseCurrencyId": 14, | ||
| + | "CurrencyId": 1, | ||
| + | "Rate": 91.429200, | ||
| + | "Date": "18.09.2024" | ||
| + | }, | ||
| + | { | ||
| + | "BaseCurrencyId": 14, | ||
| + | "CurrencyId": 2, | ||
| + | "Rate": 101.505700, | ||
| + | "Date": "18.09.2024" | ||
| + | }, | ||
| + | { | ||
| + | "BaseCurrencyId": 14, | ||
| + | "CurrencyId": 1, | ||
| + | "Rate": 91.671200, | ||
| + | "Date": "19.09.2024" | ||
| + | }, | ||
| + | { | ||
| + | "BaseCurrencyId": 14, | ||
| + | "CurrencyId": 2, | ||
| + | "Rate": 102.039000, | ||
| + | "Date": "19.09.2024" | ||
| + | } | ||
| + | ] | ||
| + | |||
| + | </syntaxhighlight> | ||
| + | </TD></TR></TABLE> | ||
| + | </div></div><br /> | ||
| + | |||
| + | ===Выгрузка списка всех валют (getAllCurrencies)=== | ||
| + | Метод возвращает список всех валют. | ||
| + | * Формат запроса: | ||
| + | ** GET .../TourSearchOwin/AllCurencies/getAllCurrencies | ||
| + | * Принимаемые параметры: | ||
| + | ** нет принимаемых параметров | ||
| + | * Возвращаемый результат: | ||
| + | ** '''Code''' – код валюты | ||
| + | ** '''Name''' – наименование валюты | ||
| + | ** '''IsMain''' – признак валюты «Главная» | ||
| + | ** '''IsNational''' – признак валюты «Национальная» | ||
| + | ** '''IsoCode''' – ISO код валюты | ||
| + | ** '''IsShowInSearch''' – признак показывать ли валюту в поиске | ||
| + | ** '''Symbol''' – символ валюты (обрабатывается с 15.7) | ||
| + | ** '''Key''' – идентификатор валюты | ||
| + | |||
| + | <div class="toccolours mw-collapsible mw-collapsed" style="width:900px">Пример | ||
| + | <div class="mw-collapsible-content"> | ||
| + | <TABLE STYLE="border: 0.1em dashed #2F6FAB; margin: 8px; padding: 8px" WIDTH="99%"><TR><TD> | ||
| + | Вызов метода getAllCurrencies | ||
| + | <syntaxhighlight lang="java" enclose="div"> | ||
| + | GET http://localhost:9000/TourSearchOwin/AllCurencies/getAllCurrencies | ||
| + | </syntaxhighlight> | ||
| + | Возвращаемый результат метода getAllCurrencies (в формате JSON) | ||
| + | <syntaxhighlight lang="java" enclose="div"> | ||
| + | [ | ||
| + | { | ||
| + | "Code": "EU", | ||
| + | "Name": "Euro", | ||
| + | "IsMain": false, | ||
| + | "IsNational": false, | ||
| + | "IsoCode": "EUR", | ||
| + | "IsShowInSearch": true, | ||
| + | "Symbol": "€", | ||
| + | "Key": 2 | ||
}, | }, | ||
{ | { | ||
| Строка 161: | Строка 426: | ||
"IsNational": true, | "IsNational": true, | ||
"IsoCode": "RUR", | "IsoCode": "RUR", | ||
| − | " | + | "IsShowInSearch": true, |
| − | " | + | "Symbol": "₽", |
| + | "Key": 14 | ||
}, | }, | ||
{ | { | ||
| Строка 170: | Строка 436: | ||
"IsNational": false, | "IsNational": false, | ||
"IsoCode": "USD", | "IsoCode": "USD", | ||
| − | "Key": 1, | + | "IsShowInSearch": true, |
| − | + | "Symbol": "$", | |
| + | "Key": 1 | ||
| + | }, | ||
| + | { | ||
| + | "Code": "гр", | ||
| + | "Name": "Гривна", | ||
| + | "IsMain": false, | ||
| + | "IsNational": false, | ||
| + | "IsoCode": "UAH", | ||
| + | "IsShowInSearch": true, | ||
| + | "Symbol": "₴", | ||
| + | "Key": 6 | ||
} | } | ||
] | ] | ||
| + | </syntaxhighlight> | ||
| + | </TD></TR></TABLE> | ||
| + | </div></div><br /> | ||
| + | |||
| + | |||
| + | ===Получение сконвертированных цен (convertFilterPrice)=== | ||
| + | Метод возвращает сконвертированные цен для допфильтра ''Цена'' (используется в canary) | ||
| + | * Формат запроса: | ||
| + | ** GET .../TourSearchOwin/AllCurencies/convertFilterPrice | ||
| + | * Принимаемые параметры ( '''*''' – обязательный): | ||
| + | ** '''SourceRateKey *''' – ключ исходной валюты конвертации | ||
| + | ** '''TargetRateKey *''' – ключ валюты, в которую будет произведена конвертация | ||
| + | ** '''MinPrice *''' – значение минимальной цены, которое будет участвовать в конвертации | ||
| + | ** '''MaxPrice *''' – значение максимальной цены, которое будет участвовать в конвертации | ||
| + | * Возвращаемый результат: | ||
| + | ** '''m_Item1''' – сконвертированная минимальная цена | ||
| + | ** '''m_Item12''' – сконвертированная максимальная цена | ||
| + | |||
| + | <div class="toccolours mw-collapsible mw-collapsed" style="width:900px">Пример | ||
| + | <div class="mw-collapsible-content"> | ||
| + | <TABLE STYLE="border: 0.1em dashed #2F6FAB; margin: 8px; padding: 8px" WIDTH="99%"><TR><TD> | ||
| + | Вызов метода convertFilterPrice | ||
| + | <syntaxhighlight lang="java" enclose="div"> | ||
| + | GET http://localhost:9000/TourSearchOwin/AllCurencies/convertFilterPrice?SourceRateKey=2&TargetRateKey=1&MinPrice=10&MaxPrice=200 | ||
| + | </syntaxhighlight> | ||
| + | Возвращаемый результат метода convertFilterPrice (в формате JSON) | ||
| + | <syntaxhighlight lang="java" enclose="div"> | ||
| + | { | ||
| + | "m_Item1": 12.035142616440004814057046576, | ||
| + | "m_Item2": 240.70285232880009628114093152 | ||
| + | } | ||
</syntaxhighlight> | </syntaxhighlight> | ||
</TD></TR></TABLE> | </TD></TR></TABLE> | ||
| Строка 181: | Строка 489: | ||
Метод производит выгрузку услуг с признаком «Квотируемая» | Метод производит выгрузку услуг с признаком «Квотируемая» | ||
* Формат запроса: | * Формат запроса: | ||
| − | ** .../TourSearchOwin/QuotedServices | + | ** GET .../TourSearchOwin/QuotedServices |
* Принимаемые параметры: | * Принимаемые параметры: | ||
** нет принимаемых параметров | ** нет принимаемых параметров | ||
| Строка 191: | Строка 499: | ||
** '''IsDuration''' – наличие продолжительности у услуги | ** '''IsDuration''' – наличие продолжительности у услуги | ||
** '''IsCity''' – наличие города у услуги | ** '''IsCity''' – наличие города у услуги | ||
| − | ** '''IsSubCode1''' – признак наличия | + | ** '''IsSubCode1''' – признак наличия [[#Приложение 1: параметры услуги (ServiceType, Code, SubCode1, SubCode2)|SubCode1]] у услуги |
| − | ** '''IsSubCode2''' – признак наличия | + | ** '''IsSubCode2''' – признак наличия [[#Приложение 1: параметры услуги (ServiceType, Code, SubCode1, SubCode2)|SubCode2]] у услуги |
** '''Quoted''' – признак квотируемости услуги | ** '''Quoted''' – признак квотируемости услуги | ||
** '''CheckGeoPoint''' – наличие геоточек у услуги | ** '''CheckGeoPoint''' – наличие геоточек у услуги | ||
** '''IsRoute''' – признак маршрутной услуги | ** '''IsRoute''' – признак маршрутной услуги | ||
| − | |||
| − | |||
| − | |||
** '''IsPartnerBasedOn''' – признак сопоставления партнера услуги в зависимости от отеля | ** '''IsPartnerBasedOn''' – признак сопоставления партнера услуги в зависимости от отеля | ||
** '''Control''' – идентификатор статуса услуги | ** '''Control''' – идентификатор статуса услуги | ||
| Строка 207: | Строка 512: | ||
Вызов метода QuotedServices | Вызов метода QuotedServices | ||
<syntaxhighlight lang="java" enclose="div"> | <syntaxhighlight lang="java" enclose="div"> | ||
| − | http://localhost:9000/TourSearchOwin/QuotedServices | + | GET http://localhost:9000/TourSearchOwin/QuotedServices |
</syntaxhighlight> | </syntaxhighlight> | ||
Возвращаемый результат метода QuotedServices (в формате JSON) | Возвращаемый результат метода QuotedServices (в формате JSON) | ||
| Строка 224: | Строка 529: | ||
"CheckGeoPoint": true, | "CheckGeoPoint": true, | ||
"IsRoute": true, | "IsRoute": true, | ||
| − | |||
| − | |||
| − | |||
"IsPartnerBasedOn": false, | "IsPartnerBasedOn": false, | ||
"Control": 1 | "Control": 1 | ||
| Строка 242: | Строка 544: | ||
"CheckGeoPoint": true, | "CheckGeoPoint": true, | ||
"IsRoute": true, | "IsRoute": true, | ||
| − | |||
| − | |||
| − | |||
"IsPartnerBasedOn": false, | "IsPartnerBasedOn": false, | ||
"Control": 1 | "Control": 1 | ||
| Строка 253: | Строка 552: | ||
</div></div><br /> | </div></div><br /> | ||
| − | ===Выгрузка городов отправления (departureCities)=== | + | ===Выгрузка актуальных городов отправления (departureCities)=== |
Метод производит выгрузку всех доступных городов отправления для поискового запроса. | Метод производит выгрузку всех доступных городов отправления для поискового запроса. | ||
* Формат запроса: | * Формат запроса: | ||
| − | ** .../TourSearchOwin/departureCities? | + | ** GET .../TourSearchOwin/departureCities? |
* Принимаемые параметры: | * Принимаемые параметры: | ||
** нет принимаемых параметров | ** нет принимаемых параметров | ||
| Строка 268: | Строка 567: | ||
Вызов метода departureCities | Вызов метода departureCities | ||
<syntaxhighlight lang="java" enclose="div"> | <syntaxhighlight lang="java" enclose="div"> | ||
| − | http://localhost:9000/TourSearchOwin/departureCities | + | GET http://localhost:9000/TourSearchOwin/departureCities |
</syntaxhighlight> | </syntaxhighlight> | ||
Возвращаемый результат метода departureCities (в формате JSON) | Возвращаемый результат метода departureCities (в формате JSON) | ||
| Строка 290: | Строка 589: | ||
</div></div><br /> | </div></div><br /> | ||
| − | ===Выгрузка | + | ===Выгрузка актуальных стран (Destination)=== |
Метод производит выгрузку всех доступных направлений туроператора. | Метод производит выгрузку всех доступных направлений туроператора. | ||
* Формат запроса: | * Формат запроса: | ||
| − | ** .../TourSearchOwin/Destination? | + | ** GET .../TourSearchOwin/Destination? |
* Принимаемые параметры ( '''*''' – обязательный): | * Принимаемые параметры ( '''*''' – обязательный): | ||
| − | ** ''' | + | ** '''departureCities *''' – идентификатор города(ов) отправления (из контроллера [[#Выгрузка актуальных городов отправления (departureCities)|''.../TourSearchOwin/departureCities?'']]) |
| − | + | ** '''type''' – настройка easySearchFilter (0/не указано - настройка выключена, 1 - настройка включена) | |
| − | ** ''' | + | ** '''term''' – фильтрация результатов по контекстному поиску (по умолчанию параметр пустой) |
| − | ** ''' | ||
* Возвращаемый результат: | * Возвращаемый результат: | ||
** '''Name''' – название страны | ** '''Name''' – название страны | ||
** '''Key''' – идентификатор страны | ** '''Key''' – идентификатор страны | ||
| − | ** '''DestinationType''' – | + | ** '''DestinationType''' – тип результата (внутренний параметр, не изменяемый, всегда возвращается значение = 1) |
| + | ** '''IsExist''' – не используется | ||
| + | ** '''Data''' – массив данных для контекстного поиска | ||
| + | *** '''CityKey''' – код города | ||
| + | *** '''CityName''' – Название | ||
| + | *** '''HotelKey''' – код отеля | ||
| + | *** '''HotelName''' – название отеля | ||
| + | *** '''ResortKey''' – код курорта | ||
| + | *** '''ResortName''' – название курорта | ||
| + | |||
<div class="toccolours mw-collapsible mw-collapsed" style="width:900px">Пример | <div class="toccolours mw-collapsible mw-collapsed" style="width:900px">Пример | ||
| Строка 309: | Строка 616: | ||
Вызов метода Destination | Вызов метода Destination | ||
<syntaxhighlight lang="java" enclose="div"> | <syntaxhighlight lang="java" enclose="div"> | ||
| − | http://localhost:9000/TourSearchOwin/Destination? | + | |
| + | GET http://localhost:9000/TourSearchOwin/Destination?departureCities=1 | ||
</syntaxhighlight> | </syntaxhighlight> | ||
Возвращаемый результат метода Destination (в формате JSON) | Возвращаемый результат метода Destination (в формате JSON) | ||
| Строка 315: | Строка 623: | ||
[ | [ | ||
{ | { | ||
| − | " | + | "Data": null, |
| − | "Key": | + | "DestinationType": 1, |
| − | " | + | "IsExist": false, |
| + | "Key": 90, | ||
| + | "Name": "Австрия" | ||
| + | |||
| + | |||
}, | }, | ||
{ | { | ||
| − | " | + | "Data": null, |
| − | "Key": | + | "DestinationType": 1, |
| − | " | + | "IsExist": false, |
| + | "Key": 53, | ||
| + | "Name": "Тайланд" | ||
| + | |||
| + | |||
}, | }, | ||
{ | { | ||
| − | " | + | "Data": null, |
| − | "Key": | + | "DestinationType": 1, |
| − | " | + | "IsExist": false, |
| + | "Key": 460, | ||
| + | "Name": "Россия" | ||
| + | |||
| + | |||
} | } | ||
| + | ] | ||
| + | GET http://localhost:9000/TourSearchOwin/Destination?departureCities=1&type=1 | ||
| + | </syntaxhighlight> | ||
| + | Возвращаемый результат метода Destination (в формате JSON) с включенной настройкой easySearchFilter | ||
| + | <syntaxhighlight lang="java" enclose="div"> | ||
| + | [ | ||
| + | { | ||
| + | "Name": "Австрия", | ||
| + | "Key": 90, | ||
| + | "DestinationType": 1, | ||
| + | "IsExist": false, | ||
| + | "Data": | ||
| + | [ | ||
| + | { | ||
| + | "CityKey": 35, | ||
| + | "CityName": "Вена", | ||
| + | "HotelKey": 178, | ||
| + | "HotelName": "Ananas, 5+++*", | ||
| + | "ResortKey": 232, | ||
| + | "ResortName": "Малина" | ||
| + | }, | ||
| + | { | ||
| + | "CityKey": 35, | ||
| + | "CityName": "Вена", | ||
| + | "HotelKey": 20748, | ||
| + | "HotelName": "Dev, 1-4*Boutique", | ||
| + | "ResortKey": 0, | ||
| + | "ResortName": "" | ||
| + | }, | ||
| + | ], | ||
| + | } | ||
| + | { | ||
| + | "Name": "Тайланд", | ||
| + | "Key": 53, | ||
| + | "DestinationType": 1, | ||
| + | "IsExist": false, | ||
| + | "Data": | ||
| + | [ | ||
| + | { | ||
| + | "CityKey": 415, | ||
| + | "CityName": "Пхукет", | ||
| + | "HotelKey": 5263, | ||
| + | "HotelName": "7Q Hotel, HV", | ||
| + | "ResortKey": 123, | ||
| + | "ResortName": "Пхукет" | ||
| + | } | ||
| + | ], | ||
| + | }, | ||
| + | { | ||
| + | "Name": "Россия", | ||
| + | "Key": 460, | ||
| + | "DestinationType": 1, | ||
| + | "IsExist": false, | ||
| + | "Data": | ||
| + | [ | ||
| + | { | ||
| + | "CityKey": 295, | ||
| + | "CityName": "Санкт-Петербург", | ||
| + | "HotelKey": 20365, | ||
| + | "HotelName": "Бристоль, 3*", | ||
| + | "ResortKey": 0, | ||
| + | "ResortName": "" | ||
| + | } | ||
| + | ], | ||
| + | }, | ||
| + | { | ||
| + | "Name": "ОАЭ", | ||
| + | "Key": 2, | ||
| + | "DestinationType": 1, | ||
| + | "IsExist": false, | ||
| + | "Data": | ||
| + | [ | ||
| + | { | ||
| + | "CityKey": 12, | ||
| + | "CityName": "ДУБАЙ", | ||
| + | "HotelKey": 1257, | ||
| + | "HotelName": "Avari, APTH3", | ||
| + | "ResortKey": 0, | ||
| + | "ResortName": "" | ||
| + | }, | ||
| + | ], | ||
| + | } | ||
] | ] | ||
</syntaxhighlight> | </syntaxhighlight> | ||
| Строка 334: | Строка 736: | ||
</div></div><br /> | </div></div><br /> | ||
| − | ===Выгрузка | + | ===Выгрузка актуальных городов (ActualizeCities)=== |
Метод возвращает список всех доступных городов по определенному городу отправления и стране прибытия. | Метод возвращает список всех доступных городов по определенному городу отправления и стране прибытия. | ||
* Формат запроса: | * Формат запроса: | ||
| − | ** .../TourSearchOwin/ActualizeCities? | + | ** GET .../TourSearchOwin/ActualizeCities? |
* Принимаемые параметры ( '''*''' – обязательный): | * Принимаемые параметры ( '''*''' – обязательный): | ||
| − | ** '''cityKeys *''' – идентификатор города отправления (полученный из метода ''.../TourSearchOwin/departureCities?'') | + | ** '''cityKeys *''' – идентификатор города(ов) отправления (полученный из метода ''.../TourSearchOwin/departureCities?'') |
** '''Key *''' – идентификатор страны прибытия (полученный из метода ''.../TourSearchOwin/Destination?'') | ** '''Key *''' – идентификатор страны прибытия (полученный из метода ''.../TourSearchOwin/Destination?'') | ||
| − | + | ** '''term''' – фильтрация результатов по контекстному поиску (по умолчанию параметр пустой) | |
| − | ** '''term | ||
* Возвращаемый результат: | * Возвращаемый результат: | ||
** '''Key''' – идентификатор города | ** '''Key''' – идентификатор города | ||
| Строка 352: | Строка 753: | ||
Вызов метода ActualizeCities | Вызов метода ActualizeCities | ||
<syntaxhighlight lang="java" enclose="div"> | <syntaxhighlight lang="java" enclose="div"> | ||
| − | http://localhost:9000/TourSearchOwin/ActualizeCities?cityKeys=1&Key=90 | + | GET http://localhost:9000/TourSearchOwin/ActualizeCities?cityKeys=1&Key=90 |
</syntaxhighlight> | </syntaxhighlight> | ||
Возвращаемый результат метода ActualizeCities (в формате JSON) | Возвращаемый результат метода ActualizeCities (в формате JSON) | ||
| Строка 374: | Строка 775: | ||
</div></div><br /> | </div></div><br /> | ||
| − | ===Выгрузка типов туров (ActualizeTourType)=== | + | ===Выгрузка актуальных типов туров (ActualizeTourType)=== |
Метод возвращает список типов туров по определенному городу отправления, стране и городу прибытия. | Метод возвращает список типов туров по определенному городу отправления, стране и городу прибытия. | ||
* Формат запроса: | * Формат запроса: | ||
| − | ** .../TourSearchOwin/ActualizeTourType? | + | ** GET .../TourSearchOwin/ActualizeTourType? |
* Принимаемые параметры ( '''*''' – обязательный): | * Принимаемые параметры ( '''*''' – обязательный): | ||
| − | ** '''departureCityKeys *''' – идентификатор города отправления (полученный из метода ''.../TourSearchOwin/departureCities?'') | + | ** '''departureCityKeys *''' – идентификатор города(ов) отправления (полученный из метода ''.../TourSearchOwin/departureCities?'') |
** '''Key *''' – идентификатор страны прибытия (полученный из метода ''.../TourSearchOwin/Destination?'') | ** '''Key *''' – идентификатор страны прибытия (полученный из метода ''.../TourSearchOwin/Destination?'') | ||
| − | + | ** '''Type *''' – тип результата (внутренний параметр, не изменяемый, всегда указывать значение = 1) | |
| − | ** '''Type *''' – | + | ** '''destinationCity *''' – идентификатор города(ов) прибытия (полученный из метода ''.../TourSearchOwin/ActualizeCities?''), по умолчанию передается ''-1'', то есть все города в рамках данной страны |
| − | ** '''destinationCity *''' – идентификатор города прибытия (полученный из метода ''.../TourSearchOwin/ActualizeCities?''), по умолчанию передается ''-1'', то есть все города в рамках данной страны | + | ** '''terms''' – фильтрация результатов по контекстному поиску (по умолчанию параметр пустой) |
| − | ** ''' | ||
* Возвращаемый результат: | * Возвращаемый результат: | ||
** '''Key''' – идентификатор типа тура | ** '''Key''' – идентификатор типа тура | ||
** '''Name''' – название типа тура | ** '''Name''' – название типа тура | ||
| − | ** '''ParentId''' – идентификатор группы, к которой относится данный | + | ** '''ParentId''' – идентификатор группы, к которой относится данный тип тура (если тип тура не относится к группе, то возвращается ''null'') |
<div class="toccolours mw-collapsible mw-collapsed" style="width:900px">Пример | <div class="toccolours mw-collapsible mw-collapsed" style="width:900px">Пример | ||
| Строка 395: | Строка 795: | ||
Вызов метода ActualizeTourType | Вызов метода ActualizeTourType | ||
<syntaxhighlight lang="java" enclose="div"> | <syntaxhighlight lang="java" enclose="div"> | ||
| − | http://localhost:9000/TourSearchOwin/ActualizeTourType?departureCityKeys=1&Key=90 | + | GET http://localhost:9000/TourSearchOwin/ActualizeTourType?departureCityKeys=1&Key=90&Type=1&destinationCity=-1 |
</syntaxhighlight> | </syntaxhighlight> | ||
Возвращаемый результат метода ActualizeTourType (в формате JSON) | Возвращаемый результат метода ActualizeTourType (в формате JSON) | ||
| Строка 423: | Строка 823: | ||
Метод производит выгрузку доступных дат заездов для поискового запроса. | Метод производит выгрузку доступных дат заездов для поискового запроса. | ||
* Формат запроса: | * Формат запроса: | ||
| − | ** .../TourSearchOwin/TourDate? | + | ** GET .../TourSearchOwin/TourDate? |
* Принимаемые параметры ( '''*''' – обязательный): | * Принимаемые параметры ( '''*''' – обязательный): | ||
| − | ** '''departureCity *''' – идентификатор города отправления (полученный из метода ''.../TourSearchOwin/departureCities?'') | + | ** '''departureCity *''' – идентификатор города(ов) отправления (полученный из метода ''.../TourSearchOwin/departureCities?'') |
| − | ** '''destinationCity *''' – идентификатор города прибытия (полученный из метода ''.../TourSearchOwin/ActualizeCities?''), по умолчанию передается ''-1'', то есть все города в рамках данной страны | + | ** '''destinationCity *''' – идентификатор города(ов) прибытия (полученный из метода ''.../TourSearchOwin/ActualizeCities?''), по умолчанию передается ''-1'', то есть все города в рамках данной страны |
** '''Key *''' – идентификатор страны прибытия (полученный из метода ''.../TourSearchOwin/Destination?'') | ** '''Key *''' – идентификатор страны прибытия (полученный из метода ''.../TourSearchOwin/Destination?'') | ||
| − | + | ** '''Type *''' – тип результата (внутренний параметр, не изменяемый, всегда указывать значение = 1) | |
| − | ** '''Type *''' – | ||
** '''tourTypes *''' – идентификатор типа тура (полученный из метода ''.../TourSearchOwin/ActualizeTourType?''), по умолчанию передается ''-1'', то есть все типы тура в рамках данной страны | ** '''tourTypes *''' – идентификатор типа тура (полученный из метода ''.../TourSearchOwin/ActualizeTourType?''), по умолчанию передается ''-1'', то есть все типы тура в рамках данной страны | ||
| − | |||
* Возвращаемый результат: | * Возвращаемый результат: | ||
** массив дат | ** массив дат | ||
| Строка 440: | Строка 838: | ||
Вызов метода TourDate | Вызов метода TourDate | ||
<syntaxhighlight lang="java" enclose="div"> | <syntaxhighlight lang="java" enclose="div"> | ||
| − | http://localhost:9000/TourSearchOwin/TourDate?departureCity=1&destinationCity=-1&Key=90 | + | GET http://localhost:9000/TourSearchOwin/TourDate?departureCity=1&destinationCity=-1&Key=90&Type=1&tourTypes=-1 |
</syntaxhighlight> | </syntaxhighlight> | ||
Возвращаемый результат метода TourDate (в формате JSON) | Возвращаемый результат метода TourDate (в формате JSON) | ||
| Строка 461: | Строка 859: | ||
Метод производит выгрузку доступных продолжительностей для поискового запроса. | Метод производит выгрузку доступных продолжительностей для поискового запроса. | ||
* Формат запроса: | * Формат запроса: | ||
| − | ** .../TourSearchOwin/Duration? | + | ** GET .../TourSearchOwin/Duration? |
* Принимаемые параметры ( '''*''' – обязательный): | * Принимаемые параметры ( '''*''' – обязательный): | ||
| − | ** '''departureCity *''' – идентификатор города отправления (полученный из метода ''.../TourSearchOwin/departureCities?'') | + | ** '''departureCity *''' – идентификатор города(ов) отправления (полученный из метода ''.../TourSearchOwin/departureCities?'') |
| − | ** '''destinationCity *''' – идентификатор города прибытия (полученный из метода ''.../TourSearchOwin/ActualizeCities?''), по умолчанию передается ''-1'', то есть все города в рамках данной страны | + | ** '''destinationCity *''' – идентификатор города(ов) прибытия (полученный из метода ''.../TourSearchOwin/ActualizeCities?''), по умолчанию передается ''-1'', то есть все города в рамках данной страны |
** '''Key *''' – идентификатор страны прибытия (полученный из метода ''.../TourSearchOwin/Destination?'') | ** '''Key *''' – идентификатор страны прибытия (полученный из метода ''.../TourSearchOwin/Destination?'') | ||
| − | + | ** '''Type *''' – тип результата (внутренний параметр, не изменяемый, всегда указывать значение = 1) | |
| − | ** '''Type *''' – | + | ** '''tourDate *''' – массив дат заезда (полученные из метода ''.../TourSearchOwin/TourDate?''). Если параметры передаются через url, то каждое значение необходимо передавать отдельным параметром. |
| − | ** '''tourDate *''' – | + | ** '''tourTypes *''' – идентификатор типа(ов) тура (полученный из метода ''.../TourSearchOwin/ActualizeTourType?''), по умолчанию передается ''-1'', то есть все типы тура в рамках данной страны |
| − | ** '''tourTypes *''' – идентификатор типа тура (полученный из метода ''.../TourSearchOwin/ActualizeTourType?''), по умолчанию передается ''-1'', то есть все типы тура в рамках данной страны | ||
| − | |||
* Возвращаемый результат: | * Возвращаемый результат: | ||
| − | ** массив продолжительностей | + | ** массив продолжительностей (в днях) |
<div class="toccolours mw-collapsible mw-collapsed" style="width:900px">Пример | <div class="toccolours mw-collapsible mw-collapsed" style="width:900px">Пример | ||
| Строка 479: | Строка 875: | ||
Вызов метода Duration | Вызов метода Duration | ||
<syntaxhighlight lang="java" enclose="div"> | <syntaxhighlight lang="java" enclose="div"> | ||
| − | http://localhost:9000/TourSearchOwin/Duration?departureCity=1&destinationCity=-1&Key=90 | + | GET http://localhost:9000/TourSearchOwin/Duration?departureCity=1&destinationCity=-1 |
| + | &Key=90&Type=1&tourDate=25.02.2018&tourDate=26.02.2018&tourTypes=-1 | ||
</syntaxhighlight> | </syntaxhighlight> | ||
Возвращаемый результат метода Duration (в формате JSON) | Возвращаемый результат метода Duration (в формате JSON) | ||
| Строка 498: | Строка 895: | ||
Метод поиска туров использует множество параметров для поиска и фильтрации туров. Метод возвращает наиболее дешевые предложения, найденные по предоставленным параметрам и сгруппированные по отелям в порядке возрастания цены. | Метод поиска туров использует множество параметров для поиска и фильтрации туров. Метод возвращает наиболее дешевые предложения, найденные по предоставленным параметрам и сгруппированные по отелям в порядке возрастания цены. | ||
* Формат запроса: | * Формат запроса: | ||
| − | ** .../TourSearchOwin/Tour? | + | ** GET .../TourSearchOwin/Tour? |
| + | * Принимаемые параметры ( '''*''' – обязательный): | ||
| + | ** '''DepartureCityKeys *''' – идентификатор города(ов) отправления (полученный из метода ''.../TourSearchOwin/departureCities?'') | ||
| + | ** '''Dates *''' – массив дат заезда (полученные из метода ''.../TourSearchOwin/TourDate?''). Если параметры передаются через url, то каждое значение необходимо передавать отдельным параметром. | ||
| + | ** '''Durations *''' – массив продолжительностей (полученные из метода ''.../TourSearchOwin/Duration?''). Если параметры передаются через url, то каждое значение необходимо передавать отдельным параметром. | ||
| + | ** '''PageNumber *''' – номер возвращаемой страницы (по умолчанию возвращается 1) | ||
| + | ** '''PageSize *''' – количество возвращаемых результатов на одной странице (возвращается 20) | ||
| + | ** '''isFromBasket *''' – происходит ли обращение из корзины или из поиска туров (true/false) | ||
| + | ** '''isFillSecondaryFilters''' – заполнены ли дополнительные фильтры (по умолчанию всегда приходит true). Служебный внутренний параметр. При работе с API не используется. | ||
| + | ** '''DestinationType *''' – тип результата (внутренний параметр, не изменяемый, всегда указывать значение = 1) | ||
| + | ** '''DestinationKey *''' – идентификатор страны прибытия (полученный из метода ''.../TourSearchOwin/Destination?'') | ||
| + | ** '''AdultCount *''' – количество взрослых | ||
| + | ** '''ChildAges''' – возраст детей. Если детей несколько, и параметры передаются через url, то каждое значение необходимо передавать отдельным параметром. | ||
| + | ** '''CurrencyName *''' – код валюты | ||
| + | ** '''AviaQuota *''' – информация о квотах на авиаперелет (значения параметров: ''"1"'' — фильтр "Есть", ''"5"'' — фильтр "Есть+запрос", ''"7"'' — фильтр "Все") | ||
| + | ** '''HotelQuota *''' – информация о квотах на отель (значения параметров: ''"1"'' — фильтр "Есть", ''"5"'' — фильтр "Есть+запрос", ''"7"'' — фильтр "Все") | ||
| + | ** '''BusTransferQuota''' – информация о квотах на автобусный переезд (значения параметров: ''"1"'' — фильтр "Есть", ''"5"'' — фильтр "Есть+запрос", ''"7"'' — фильтр "Все") | ||
| + | ** '''MinPrice *''' – минимальная цена (по умолчанию не задана, передается ''NaN'') | ||
| + | ** '''MaxPrice''' – максимальная цена (по умолчанию не передается) | ||
| + | ** '''Groups''' – группировка результатов (2 – по названию тура, 4 – по дате тура, 8 – по продолжительности тура, 16 – по городу вылета, 32 – по отелю, 64 – по городу отеля, 128 – по курорту отеля, 256 – по категории отеля) | ||
| + | ** '''HotelScheme''' – пустой по умолчанию. Заполняется при вызове вариантов размещений в рамках одного отеля. Передаются следующие параметры: | ||
| + | *** '''TemplateId''' – идентификатор шаблона услуги (этот параметр можно взять из контроллера Tour->Result->MinCostServicesComposition->Key->TemplateId), | ||
| + | *** '''DurationInNight''' – продолжительность отеля в ночах (этот параметр можно взять из контроллера Tour->Result->MinCostServicesComposition->Value->DurationInNight), | ||
| + | *** '''Code''' – ключ отеля (этот параметр можно взять из контроллера Tour->Result->MinCostServicesComposition->Value->Code), | ||
| + | *** '''PacketKey''' – ключ пакета (этот параметр можно взять из контроллера Tour->Result->MinCostServicesComposition->Value->PacketId), | ||
| + | *** '''PartnerKey''' – ключ партнера (этот параметр можно взять из контроллера Tour->Result->MinCostServicesComposition->Value->PartnerId), | ||
| + | *** '''GDSProviderId''' – ключ провайдера из внешней системы (этот параметр можно взять из контроллера Tour->Result->MinCostServicesComposition->Value->GDSProviderId), | ||
| + | *** '''TotalTourDuration''' – общая продолжительность тура в днях (этот параметр можно взять из контроллера Tour->Result->Duration) | ||
| + | ** '''BusTransferPointKeys''' – данный признак проставляется в ''true'' в том случае, когда происходит запрос вариантов проживания (кнопка ''Варианты'') в автобусных переездах | ||
| + | ** '''TourKey''' – пустой по умолчанию. Заполняется при вызове вариантов размещений в рамках одного отеля: ключ программы тура | ||
| + | ** '''TourDuration''' – пустой по умолчанию. Заполняется при вызове вариантов размещений в рамках одного отеля: продолжительность тура в днях | ||
| + | ** '''TourType''' – идентификатор типа(ов) тура (полученный из метода ''.../TourSearchOwin/ActualizeTourType?''), по умолчанию передается ''-1'', то есть все типы тура в рамках данной страны. Возможна множественная передача параметров. | ||
| + | ** '''Tour''' – ключ программы тура (дополнительный фильтр) | ||
| + | ** '''Duration''' – продолжительность тура (дополнительный фильтр) | ||
| + | ** '''DateTour''' – дата тура (дополнительный фильтр) | ||
| + | ** '''HotelResort''' – ключ курорта отеля (дополнительный фильтр) | ||
| + | ** '''HotelCity''' – ключ города отеля (дополнительный фильтр) | ||
| + | ** '''HotelType''' – ключ признака отеля (дополнительный фильтр) | ||
| + | ** '''HotelStars''' – ключ категории отеля (дополнительный фильтр) | ||
| + | ** '''Hotel''' – ключ отеля (дополнительный фильтр) | ||
| + | ** '''Pansions''' – ключ питания (дополнительный фильтр) | ||
| + | ** '''Airline''' – ключ авиакомпании (дополнительный фильтр) | ||
| + | ** '''AirportDeparture''' – ключ аэропорта вылета (дополнительный фильтр) | ||
| + | ** '''AirportArrival''' – ключ аэропорта прилета (дополнительный фильтр) | ||
| + | ** '''CityIds''' – идентификатор города(ов) прибытия (полученный из метода ''.../TourSearchOwin/ActualizeCities?''), по умолчанию передается ''-1'', то есть все города в рамках данной страны. Возможна множественная передача параметров. | ||
| + | ** '''TimeDepartureFrom''' – время отправления с (по умолчанию возвращается 00:00) | ||
| + | ** '''TimeDepartureTo''' – время отправления по (по умолчанию возвращается 23:59) | ||
| + | ** '''TimeArrivalFrom''' – время прибытия с (по умолчанию возвращается 00:00) | ||
| + | ** '''TimeArrivalTo''' – время прибытия по (по умолчанию возвращается 23:59) | ||
| + | ** '''ArrivalFlightNoTransfer''' – производить поиск без пересадок в прямом направлении (true/false, по умолчанию false) | ||
| + | ** '''DepartureFlightNoTransfer''' – производить поиск без пересадок в обратном направлении (true/false, по умолчанию false) | ||
| + | ** '''DepartureFlightNumberTransfer''' – наличие пересадок в прямом направлении (1 – одна пересадка, 2 – две пересадки и более, 3 – одна пересадка совместно с двумя пересадками и более). Обрабатывается начиная с релиза 15.3. | ||
| + | ** '''ArrivalFlightNumberTransfer''' – наличие пересадок в обратном направлении (1 – одна пересадка, 2 – две пересадки и более, 3 – одна пересадка совместно с двумя пересадками и более). Обрабатывается начиная с релиза 15.3. | ||
| + | ** '''Tariff''' – ключ класса авиаперелета (дополнительный фильтр) | ||
| + | ** '''CombineAirlines''' — разрешить комбинировать авиаперелеты (дополнительный фильтр). Параметр применяется только при наличии параметра '''airline'''. Обрабатывается начиная с релиза 15.3. | ||
| + | ** '''CombineTariffs''' — разрешить комбинировать классы перелета (дополнительный фильтр). Параметр применяется только при наличии параметра '''tariff'''. Обрабатывается начиная с релиза 15.3. | ||
| + | ** '''FlightCityDeparture''' – ключ город вылета в параметрах авиаперелета (дополнительный фильтр) | ||
| + | ** '''CityDeparture''' – ключ города начала поездки (дополнительный фильтр) | ||
| + | ** '''RemoteHotelMode''' – признак того, производится поиск только локальных отелей или и от внешних поставщиков тоже (только локальные отели – 0, только внешние отели – 2, локальные и внешние отели – 1). Если признак отсутствует – поиск будет только по локальным отелям. Обрабатывается начиная с релиза 15.4. | ||
| + | ** '''GroupGuid''' – используется для получения турпрограмм по уникальному ключу из кэша при использовании группировки. Примеры использования. ''GroupGuid=00000000-0000-0000-0000-000000000000'' – при первом запросе от локальной системы. ''GroupGuid=936DA01F-9ABD-4d9d-80C7-02AF85C822A8'' (уникальный ключ) – передается на клиент от первого запроса из внешней системы. С данным уникальным ключом осуществляется второй запрос от внешней системы. Далее происходит получение значений по данному уникальному ключу. Обрабатывается начиная с релиза 15.4. | ||
| + | ** '''IsGroupingTourAlreadyMerge''' – определяет слияние данных турпрограмм от локальной системы с данными от внешней системы при использовании группировки. Примеры использования. ''IsGroupingTourAlreadyMerge=false'' – полученные данные от локальной системы не объединены с данными от внешней системы. На клиенте осуществляется объединение данных турпрограмм с последующей сортировкой по минимальной цене. ''IsGroupingTourAlreadyMerge=true'' – полученные данные от локальной системы уже объединены с данными от внешней системы. На клиенте осуществляется только сортировка по минимальной цене. Обрабатывается начиная с релиза 15.4. | ||
| + | ** '''SearchId''' – уникальный идентификатор запроса поиска, передаваемый с клиентской части. Возвращается в ответе без изменений. Обрабатывается начиная с релиза 15.5. | ||
| + | ** '''nodeId''' – уникальный идентификатор узла в кластере балансировки нагрузки [[Мастер-Тур(15):Балансировщик нагрузки HaProxy|HaProxy]] | ||
| + | |||
| + | |||
| + | * Возвращаемый результат: | ||
| + | ** '''CheckMessages''' – сообщения для логики проверки тура (не используется) | ||
| + | ** '''Message''' – сообщение об ошибке | ||
| + | *** '''Key''' – код ошибки | ||
| + | *** '''Value''' – сообщение об ошибке | ||
| + | ** '''Result''' – результаты поиска | ||
| + | *** '''Key''' – идентификатов программы тура | ||
| + | *** '''Name''' – название программы тура | ||
| + | *** '''TourUrl''' – ссылка на программу тура | ||
| + | *** '''BookingConditions''' – условия бронирования программы туров | ||
| + | *** '''DefaultManagers''' – список выбранных менеджеров в туре | ||
| + | *** '''Manager''' – ключ менеджера по умолчанию в туре | ||
| + | *** '''Branches''' – список ключей филиалов бронирования | ||
| + | *** '''DetermineTheBranchOnCity''' – признак, определять филиал в зависимости от города начала поездки | ||
| + | *** '''IndividualFlightSelection''' – признак, включены ли индивидуальные настройки подбора перелетов | ||
| + | *** '''RestrictionDateArrival''' – признак, ограничение даты прилета по базовому рейсу в индивидуальных настройках подбора перелетов | ||
| + | *** '''PriceUpdateForView''' – признак обновления цен в индивидуальных настройках подбора перелетов (true – включен, false – выключен) | ||
| + | *** '''SelectFlightAutomatically''' – признак выбирать рейс автоматически, если не выбран пользователем в индивидуальных настройках подбора перелетов | ||
| + | *** '''BaggageSearchOtherFares''' – признак поиска багажа в других тарифах в индивидуальных настройках подбора перелетов | ||
| + | *** '''Luggage''' – значение багажа в блоке настроек, влияющих на формирование запроса в индивидуальных настройках подбора перелетов (all – все, withLuggage – багаж и ручная кладь, withoutLuggage – без багажа) | ||
| + | *** '''LuggageForView''' – значение багажа в блоке настроек, влияющих на отображение информации в индивидуальных настройках подбора перелетов (all – все, withLuggage – багаж и ручная кладь, withoutLuggage – без багажа) | ||
| + | *** '''LuggageForPrice''' – значение багажа в блоке фильтров для обновления цен в индивидуальных настройках подбора перелетов (all – все, withLuggage – багаж и ручная кладь, withoutLuggage – без багажа) | ||
| + | *** '''FlightClass''' – класс перелета в индивидуальных настройках подбора перелетов (economy – Эконом, premiumEconomy 2 Премиум-эконом, business – Бизнес, first – Первый) | ||
| + | *** '''Directs''' – значение пересадок в блоке настроек, влияющих на формирование запроса в индивидуальных настройках подбора перелетов (all – все, onlyDirectFlights – только прямые рейсы) | ||
| + | *** '''DirectsForView''' – значение пересадок в блоке влияющих на отображение информации в индивидуальных настройках подбора перелетов (all – все, без пересадок – withoutDirect, с 1 пересадкой – oneDirect, с 2 пересадками и более – twoOrMoreDirect) | ||
| + | *** '''DirectsForPrice''' – значение пересадок в блоке фильтров для обновления цен в индивидуальных настройках подбора перелетов (all – все, без пересадок – withoutDirect, с 1 пересадкой – oneDirect, с 2 пересадками и более – twoOrMoreDirect) | ||
| + | *** '''DepartureTimeLimit''' – ограничение времени вылета: «Вылет не позже» в формате hh:mm | ||
| + | *** '''SortingForView''' – сортировка в индивидуальных настройках подбора перелетов (cheap – сначала дешевые, fast – сначала быстрые, optimal – оптимальные) | ||
| + | *** '''StartDate''' – дата начала тура | ||
| + | *** '''MaxConnectionTime''' – длительность пересадок в индивидуальных настройках подбора перелетов в формате hh:mm | ||
| + | *** '''FullPaymentPeriod''' – полная оплата с даты бронирования (может быть null) | ||
| + | *** '''FullPaymentCheckin''' – полная оплата до даты заезда (может быть null) | ||
| + | *** '''PrePaymentPeriod''' – предоплата с даты бронирования (может быть null) | ||
| + | *** '''PrePaymentCheckin''' – предоплата до даты заезда (может быть null) | ||
| + | *** '''PrePaymentCu"''' – значение предоплаты в y.e. (может быть null) | ||
| + | *** '''PrePaymentPercent''' – значение предоплаты в процентах (может быть null) | ||
| + | *** '''Duration''' – продолжительность тура (в днях) | ||
| + | *** '''DurationInNight''' – продолжительность проживания (в ночах) | ||
| + | *** '''Types''' – идентификатор типа туров | ||
| + | *** '''Price''' – цена тура с учетом скидки в валюте поиска | ||
| + | *** '''Cost''' – цена тура в валюте поиска | ||
| + | *** '''Rate''' – код валюты тура | ||
| + | *** '''Penalties''' – внутреннее поле, не используется | ||
| + | *** '''CityDepature''' – город отправления | ||
| + | **** '''Key''' – идентификатор города отправления | ||
| + | **** '''Value''' – название города отправления | ||
| + | *** '''CountryId''' – всегда возвращается ключ 0 | ||
| + | *** '''Services''' – услуги в туре | ||
| + | **** '''DepartureCity''' – город отправления | ||
| + | ***** '''Key''' – идентификатор | ||
| + | ***** '''Value''' – название | ||
| + | **** '''DepartureCountry''' – страна отправления | ||
| + | ***** '''Key''' – идентификатор | ||
| + | ***** '''Value''' – название | ||
| + | **** '''ArrivalCity''' – город прибытия | ||
| + | ***** '''Key''' – идентификатор | ||
| + | ***** '''Value''' – название | ||
| + | **** '''ArrivalCountry''' – страна прибытия | ||
| + | ***** '''Key''' – идентификатор | ||
| + | ***** '''Value''' – название | ||
| + | **** '''DepartureAirport''' – аэропорт отправления | ||
| + | ***** '''Key''' – идентификатор | ||
| + | ***** '''Value''' – название | ||
| + | **** '''ArrivalAirport''' – аэропорт прибытия | ||
| + | ***** '''Key''' – идентификатор | ||
| + | ***** '''Value''' – название | ||
| + | **** '''Airline''' – авиакомпания | ||
| + | ***** '''Key''' – идентификатор | ||
| + | ***** '''Value''' – название | ||
| + | **** '''Aircraft''' – воздушное судно | ||
| + | ***** '''Key''' – идентификатор | ||
| + | ***** '''Value''' – название | ||
| + | **** '''Flight''' – рейс | ||
| + | ***** '''Key''' – идентификатор | ||
| + | ***** '''Value''' – название | ||
| + | **** '''DepartureTime''' – время вылета | ||
| + | **** '''ArrivalTime''' – время прилета | ||
| + | **** '''EndDateTime''' – дата и время прилета | ||
| + | **** '''FlightDetails''' – информация об авиаперелете | ||
| + | ***** '''Tariff''' – информация о тарифе перелета | ||
| + | ****** '''Key''' – идентификатор | ||
| + | ****** '''Code''' – код тарифа | ||
| + | ****** '''Name''' – название тарифа | ||
| + | ***** '''Cost''' – разница в стоимости с самым дешевым вариантом | ||
| + | ***** '''QuotaStatus''' – информация о квоте | ||
| + | ****** '''PlacesStatus''' – статус по квотам (есть места-1 / нет мест-2 / под запрос-4) | ||
| + | ****** '''FreePlaces''' – количество свободных мест, если удовлетворяются условия, заданные в настройке "Мало" и включена настройка "Отображать числовое значение оставшихся мест". Иначе возвращается 0. Если в данном параметре 0, то руководствоваться следует значением, полученном в параметре '''PlacesStatus'''. | ||
| + | ****** '''IsFewPlaces''' – выполнены ли условия, заданные в настройке "Мало": '''true''' – если заданы условия количества мест "Мало" и данные условия выполнены, '''false''' – если не заданы условия количества мест "Мало" или они заданы, но не выполнены. | ||
| + | ***** '''PartnerId''' – ключ партнера | ||
| + | ***** '''ByPax''' – цена за человека (true/false) | ||
| + | ***** '''Partner''' – информация о партнере | ||
| + | ****** '''Key''' – идентификатор | ||
| + | ****** '''Value''' – название | ||
| + | **** '''FlightSetting''' – внутренняя информация о перелете из программы туров | ||
| + | ***** '''ServiceId''' – идентификатор класса услуги (внутренняя информация из программы туров) | ||
| + | ***** '''PatternId''' – идентификатор паттерна услуги (внутренняя информация из программы туров) | ||
| + | ***** '''FlightId''' – идентификатор перелета (внутренняя информация из программы туров) | ||
| + | **** '''FlightSourceMode''' – локальный или внешний перелет (внутренняя информация из программы туров) | ||
| + | **** '''Id''' – идентификатор базового шаблона услуги (внутренняя информация из программы туров) | ||
| + | **** '''SvKey''' – ключ типа услуги | ||
| + | **** '''IsSubCode1''' – признак наличия [[#Приложение 1: параметры услуги (ServiceType, Code, SubCode1, SubCode2)|доп. описания 1]] | ||
| + | **** '''IsSubCode2''' – признак наличия [[#Приложение 1: параметры услуги (ServiceType, Code, SubCode1, SubCode2)|доп. описания 2]] | ||
| + | **** '''IsPartnerBasedOn''' – признак услуга с приоритетным подбором поставщика | ||
| + | **** '''Day''' – день предоставления услуги | ||
| + | **** '''DurationInNight''' – продолжительность услуги в ночах | ||
| + | **** '''BeginDateTime''' – дата предоставления услуги | ||
| + | **** '''IsHooded''' – признак скрытая услуга | ||
| + | **** '''IsDeleted''' – признак удаляемая услуга | ||
| + | **** '''IsNotCalculate''' – признак не рассчитываемая услуга | ||
| + | **** '''PacketId''' – ключ пакета | ||
| + | **** '''Index''' – порядковый номер услуги | ||
| + | *** '''NotRouteServices''' – массив коллекций немаршрутных услуг (например если две экскурсии будут являться одним элементом массива, то это будет говорить о том, что эти экскурсии можно будет выбрать в выпадающем списке) | ||
| + | **** '''ServiceName''' – название типа услуги | ||
| + | **** '''City''' – объект город | ||
| + | ***** '''Key''' – ключ города | ||
| + | ***** '''Value''' – название города | ||
| + | **** '''Country''' – объект страна | ||
| + | ***** '''Key''' – ключ страны | ||
| + | ***** '''Value''' – название страны | ||
| + | **** '''Code''' – объект код услуги | ||
| + | ***** '''Key''' – ключ услуги | ||
| + | ***** '''Value''' – название услуги | ||
| + | **** '''ByScheduler''' – флаг услуга по расписанию или нет | ||
| + | **** '''Details''' – объект детализация услуги | ||
| + | ***** '''SubCode1''' – объект [[#Приложение 1: параметры услуги (ServiceType, Code, SubCode1, SubCode2)|доп. описание 1]] | ||
| + | ****** '''Key''' – ключ доп. описания 1 | ||
| + | ****** '''Value''' – название доп. описания 1 | ||
| + | ***** '''SubCode2''' – объект [[#Приложение 1: параметры услуги (ServiceType, Code, SubCode1, SubCode2)|доп. описание 2]] | ||
| + | ****** '''Key''' – ключ доп. описания 2 | ||
| + | ****** '''Value''' – название доп. описания 2 | ||
| + | ***** '''Date''' – дата услуги | ||
| + | ***** '''IsShowTransportPlan''' – признак показывать ли план рассадки (для автобусов) | ||
| + | ***** '''Cost''' – цена | ||
| + | ***** '''QuotaStatus''' – объект информация по квотам | ||
| + | ****** '''PlacesStatus''' – статус по квотам (есть места-1 / нет мест-2 / под запрос-4) | ||
| + | ****** '''FreePlaces''' – количество свободных мест, если удовлетворяются условия, заданные в настройке "Мало" и включена настройка "Отображать числовое значение оставшихся мест". Иначе возвращается 0. Если в данном параметре 0, то руководствоваться следует значением, полученном в параметре '''PlacesStatus'''. | ||
| + | ****** '''IsFewPlaces''' – выполнены ли условия, заданные в настройке "Мало": '''true''' – если заданы условия количества мест "Мало" и данные условия выполнены, '''false''' – если не заданы условия количества мест "Мало" или они заданы, но не выполнены. | ||
| + | ***** '''PartnerId''' – идентификатор партнера | ||
| + | ***** '''ByPax''' – признак цены за человека | ||
| + | ***** '''Partner''' – объект партнер (не заполняется) | ||
| + | ****** '''Key''' – ключ (не заполняется) | ||
| + | ****** '''Value''' – название (не заполняется) | ||
| + | **** '''ParentId''' – идентификатор родительской услуги (для вложенных услуг) | ||
| + | **** '''PartnerBasedOnServiceTemplateId''' – ключ шаблона услуги, по которой приоритетно выбирается партнер текущей услуги | ||
| + | **** '''Id''' – идентификатор услуги | ||
| + | **** '''SvKey''' – ключ типа услуги | ||
| + | **** '''IsSubCode1''' – наличие [[#Приложение 1: параметры услуги (ServiceType, Code, SubCode1, SubCode2)|доп. описания 1]] | ||
| + | **** '''IsSubCode2''' – наличие [[#Приложение 1: параметры услуги (ServiceType, Code, SubCode1, SubCode2)|доп. описания 2]] | ||
| + | **** '''IsPartnerBasedOn''' – услуга с подбором приоритетного поставщика услуги | ||
| + | **** '''Day''' – день предоставления услуги | ||
| + | **** '''DurationInNight''' – продолжительность услуги в ночах | ||
| + | **** '''BeginDateTime''' – дата предоставления услуги | ||
| + | **** '''EndDateTime''' – дата окончания услуги | ||
| + | **** '''IsHooded''' – скрытая ли услуга | ||
| + | **** '''IsDeleted''' – удаляемая ли услуга | ||
| + | **** '''IsNotCalculate''' – не рассчитываемая ли услуга | ||
| + | **** '''PacketId''' – пакет услуги | ||
| + | **** '''Index''' – индекс услуги | ||
| + | *** '''MinCostServicesComposition''' – массив состав услуг минимальной цены | ||
| + | **** '''Key''' – ключ | ||
| + | ***** '''TemplateId''' – идентификатор шаблона | ||
| + | ***** '''PatternId''' – идентификатор вкладки | ||
| + | ***** '''SettingId''' – идентификатор услуги | ||
| + | **** '''Value''' – значение | ||
| + | ***** '''ServiceType''' – тип услуги | ||
| + | ***** '''Code''' – ключ услуги | ||
| + | ***** '''SubCode1''' – [[#Приложение 1: параметры услуги (ServiceType, Code, SubCode1, SubCode2)|доп. описание 1]] | ||
| + | ***** '''SubCode2''' – [[#Приложение 1: параметры услуги (ServiceType, Code, SubCode1, SubCode2)|доп. описание 2]] | ||
| + | ***** '''PacketId''' – пакет услуги | ||
| + | ***** '''PartnerId''' – партнер услуги | ||
| + | ***** '''CountryId''' – страна услуги | ||
| + | ***** '''CityId''' – город услуги | ||
| + | ***** '''Day''' – день предоставления услуги | ||
| + | ***** '''DurationInNight''' – продолжительность услуги в ночах | ||
| + | **** '''COAndSpecialsInfo''' – формирует, фильтрует и выдаёт списки применённых акций и ценовых блоков | ||
| + | ***** '''AppliedCostOffersKeys''' – коллекция идентификаторов всех применённых ценовых блоков к одной цене | ||
| + | ***** '''AppliedSpeciasInfo''' – коллекция всех применённых акций к одной цене, содержит информацию об условиях, с которыми применилась каждая акция | ||
| + | ****** '''SpecialKey''' – ключ акции | ||
| + | ****** '''SpecialName''' – название акции | ||
| + | ****** '''SpecialType''' – тип акции | ||
| + | ****** '''NewPrice''' – цена после применения акции | ||
| + | ****** '''OldPrice''' – цена до применения акции | ||
| + | ****** '''ShowOnline''' – нужно ли показывать акцию в поиске | ||
| + | ****** '''UntilDate''' – акция действует при совершении покупки до указанной даты | ||
| + | ****** '''Condition''' – json форма условия применения акции. Данное поле включает в себя следующие значения в зависимости от типа акции: | ||
| + | ******* ''NightsFrom'' (для типа ''PayStay'') – ночей от | ||
| + | ******* ''NightsTo'' (для типа ''PayStay'') – ночей до | ||
| + | ******* ''NightValue'' (для типа ''PayStay'') – значение ночи, которое соответствует заданному периоду | ||
| + | ******* ''OperationType'' (для типа ''PayStay'') – тип действия | ||
| + | ******* ''SpecialNightType'' (для типа ''PayStay'') – тип бесплатной ночи | ||
| + | ******* ''DurationFrom'' (для типа ''KickBack'') – ночей от | ||
| + | ******* ''DurationTo'' (для типа ''KickBack'') – ночей до | ||
| + | ******* ''Value'' (для типа ''KickBack'') – значение продолжительности, равное заданному периоду | ||
| + | ******* ''OperationType'' (для типа ''KickBack'') – тип действия | ||
| + | ******* ''NightsFrom'' (для типа ''EarlyBird'') – ночей от | ||
| + | ******* ''NightsTo'' (для типа ''EarlyBird'') – ночей до | ||
| + | ******* ''Discount'' (для типа ''EarlyBird'') – размер скидки | ||
| + | ******* ''OperationType'' (для типа ''EarlyBird'') – тип действия | ||
| + | **** '''COBySubCode''' – список применённых идентификаторов ценовых блоков по SubCode1 и SubCode2 | ||
| + | **** '''SpecialsBySubCode''' – список применённых акций по SubCode1 и SubCode2 | ||
| + | ***** '''SubCode1''' – объект [[#Приложение 1: параметры услуги (ServiceType, Code, SubCode1, SubCode2)|доп. описание 1]] | ||
| + | ***** '''SubCode2''' – объект [[#Приложение 1: параметры услуги (ServiceType, Code, SubCode1, SubCode2)|доп. описание 2]] | ||
| + | *** '''FlightWeight''' – | ||
| + | *** '''LinkingFlightsRules''' – объект правил связывания | ||
| + | **** '''notCombineDifferentAirlineRule''' – объект не скрещивать авиакомпании | ||
| + | ***** '''airlines''' – авиакомпании | ||
| + | ***** '''flightSettings''' – массив ключей ServiceId, PatternId, FlightId | ||
| + | ***** '''enabled''' – флаг включен/выключен | ||
| + | **** '''checkPlusMinus1CharterRule''' – объект Отличие номера рейса на 1 | ||
| + | ***** '''FlightSettingPairs''' – массив чартеров, для которых это правило будет выполняться | ||
| + | ***** '''enabled''' – флаг включен/выключен | ||
| + | **** '''notCombineDifferentTariffGroupRule''' – объект не комбинировать рейсы от разных классов перелетов | ||
| + | ***** '''FlightSettings''' – массив ключей ServiceId, PatternId, FlightId | ||
| + | ***** '''enabled''' – флаг включен/выключен | ||
| + | **** '''notCombineDifferentPartnerRule''' – объект не комбинировать рейсы от разных партнеров | ||
| + | ***** '''FlightSettings''' – массив ключей ServiceId, PatternId, FlightId | ||
| + | ***** '''enabled''' – флаг включен/выключен | ||
| + | **** '''departureCityEqualsArrivalCityRule''' – объект Город вылета = городу прилета | ||
| + | ***** '''FlightSettingPairs''' – чартеры, для которых это будет выполняться | ||
| + | ***** '''enabled''' – флаг включен/выключен | ||
| + | **** '''combineOnlySpecificChartersRule''' – объект не комбинировать различные классы перелетов | ||
| + | ***** '''settings''' – массив ключей чартеров CharterIds и ServiceId, PatternId, FlightId | ||
| + | ***** '''enabled''' – флаг включен/выключен | ||
| + | *** '''RouteSubVariants''' – подварианты услуг (используется в основном поиске) | ||
| + | *** '''Routes''' – количество маршрутов для данного варианта поиска (к примеру, если будет несколько вариантов | ||
| + | *** '''IsRemoteHotels''' – признак, есть ли внешние отели в данном варианте | ||
| + | *** '''IsTourImages''' – признак, есть ли картинки тура | ||
| + | *** '''MaskKeys''' – маска фильтра категории номеров | ||
| + | ** '''SecondaryFiltersResult''' – результаты доп. фильтров | ||
| + | *** '''TourTypes''' – типы тура | ||
| + | **** '''Id''' – ключ типа тура | ||
| + | **** '''Name''' – название типа тура | ||
| + | **** '''ParentId''' – родительский элемент типа тура (если есть) | ||
| + | **** '''Type''' – тип справочника (используется для внутренних целей) | ||
| + | *** '''TourPrograms''' – информация по каждой турпрограмме | ||
| + | **** '''Key''' – ключ турпрограммы | ||
| + | **** '''Name''' – название турпрограммы | ||
| + | **** '''TourUrl''' – ссылка на тур | ||
| + | **** '''BookingConditions''' – условия бронирования | ||
| + | **** '''IsLandOnly''' – признак только наземное обслуживание | ||
| + | **** '''IsRestrictMultiHotels''' – ограничивать ли расчёт многоотельных туров категориями отелей | ||
| + | **** '''IsHotelTemplates''' – есть ли вообще отели в данной турпрограмме | ||
| + | **** '''IsRouteServices''' – есть ли маршрутные услуги | ||
| + | **** '''MultiHotelDelta''' – Значение отклонения звездности последующих отелей от первого отеля в многоотельном туре. По умолчанию 0. Звездность определяется числом, заданном в поле порядок при печати. | ||
| + | **** '''Rate''' – валюта тура | ||
| + | **** '''DateStart''' – нижняя граница дат заезда по программе тура | ||
| + | **** '''DateEnd''' – верхняя граница дат заеда по программе тура | ||
| + | **** '''Status''' – статус турпрограммы | ||
| + | ***** '''Key''' – ключ | ||
| + | ***** '''Value''' – значение | ||
| + | **** '''Templates''' – шаблоны услуг | ||
| + | ***** '''$id''' – шаблон 1 | ||
| + | ***** '''$id''' – шаблон 2 | ||
| + | **** '''Types''' – типы тура | ||
| + | ***** '''Id''' – ключ типа тура | ||
| + | ***** '''Name''' – название типа тура | ||
| + | ***** '''ParentId''' – родительский элемент типа тура (если есть) | ||
| + | ***** '''Type''' – тип справочника (используется для внутренних целей) | ||
| + | **** '''LinkingFlightsRules''' – правила связывания перелетов | ||
| + | ***** '''notCombineDifferentAirlineRule''' – | ||
| + | ****** '''airlines''' – | ||
| + | ****** '''flightSettings''' – | ||
| + | ****** '''enabled''' – | ||
| + | ***** '''checkPlusMinus1CharterRule''' – | ||
| + | ****** '''FlightSettingPairs''' – | ||
| + | ****** '''enabled''' – | ||
| + | ***** '''notCombineDifferentTariffGroupRule''' – | ||
| + | ****** '''FlightSettings''' – | ||
| + | ****** '''enabled''' – | ||
| + | ***** '''notCombineDifferentPartnerRule''' – | ||
| + | ****** '''FlightSettings''' – | ||
| + | ****** '''enabled''' – | ||
| + | ***** '''departureCityEqualsArrivalCityRule''' – | ||
| + | ****** '''FlightSettingPairs''' – | ||
| + | ****** '''enabled''' – | ||
| + | ***** '''combineOnlySpecificChartersRule''' – | ||
| + | ****** '''settings''' – | ||
| + | ****** '''enabled''' – | ||
| + | **** '''Type''' – тип справочника (используется для внутренних целей) | ||
| + | *** '''TourDurations''' – продолжительность тура | ||
| + | *** '''TourDates''' – список дат заездов в турпрограмме | ||
| + | **** '''HotelCities''' – город в дополнительных фильтрах | ||
| + | ***** '''''' – | ||
| + | **** '''HotelResorts''' – курорты в дополнительных фильтрах | ||
| + | ***** '''''' – | ||
| + | **** '''HotelCategories''' – категории отеля в дополнительных фильтрах | ||
| + | ***** '''''' – | ||
| + | **** '''Hotels''' – отели в дополнительных фильтрах | ||
| + | ***** '''''' – | ||
| + | **** '''Pansions''' – питания в дополнительных фильтрах | ||
| + | ***** '''''' – | ||
| + | **** '''Airlines''' – авиакомпании в дополнительных фильтрах | ||
| + | ***** '''''' – | ||
| + | **** '''FlightTariffs''' – класс перелета в дополнительных фильтрах | ||
| + | ***** '''''' – | ||
| + | **** '''DepartureCities''' – города вылета в дополнительных фильтрах | ||
| + | ***** '''''' – | ||
| + | **** '''DepartureAirports''' – аэропорты вылета в дополнительных фильтрах | ||
| + | ***** '''''' – | ||
| + | **** '''ArrivalCities''' – города прибытия в дополнительных фильтрах | ||
| + | ***** '''''' – | ||
| + | **** '''ArrivalAirports''' – аэропорты прибытия в дополнительных фильтрах | ||
| + | ***** '''''' – | ||
| + | **** '''HotelTypes''' – признаки отелей в дополнительных фильтрах | ||
| + | ***** '''''' – | ||
| + | ** '''nodeId''' – уникальный идентификатор узла в кластере балансировки нагрузки [[Мастер-Тур(15):Балансировщик нагрузки HaProxy|HaProxy]] | ||
| + | |||
| + | <div class="toccolours mw-collapsible mw-collapsed" style="width:900px">Пример | ||
| + | <div class="mw-collapsible-content"> | ||
| + | <TABLE STYLE="border: 0.1em dashed #2F6FAB; margin: 8px; padding: 8px" WIDTH="99%"><TR><TD> | ||
| + | Вызов метода Tour | ||
| + | <syntaxhighlight lang="java" enclose="div"> | ||
| + | GET http://localhost:9000/TourSearchOwin/Tour?DepartureCityKeys=1&Dates=25.02.2018&Durations=4 | ||
| + | &PageNumber=1&PageSize=20&HotelScheme=&TourKey=&TourDuration=&isFromBasket=false | ||
| + | &isFillSecondaryFilters=true&DestinationType=1&DestinationKey=90&AdultCount=2&ChildAges=2 | ||
| + | &ChildAges=2&CurrencyName=EU&AviaQuota=5&HotelQuota=5&BusTransferQuota=5&MinPrice=NaN&TourType=-1 | ||
| + | &CityIds=-1&TimeDepartureFrom=00%3A00&TimeDepartureTo=23%3A59&TimeArrivalFrom=00%3A00 | ||
| + | &TimeArrivalTo=23%3A59&ArrivalFlightNoTransfer=false&DepartureFlightNoTransfer=false | ||
| + | </syntaxhighlight> | ||
| + | Возвращаемый результат метода Tour (в формате JSON) | ||
| + | <syntaxhighlight lang="java" enclose="div"> | ||
| + | { | ||
| + | "CheckMessages": null, | ||
| + | "Message": { | ||
| + | "Key": 0, | ||
| + | "Value": null | ||
| + | }, | ||
| + | "Result": [ | ||
| + | { | ||
| + | "Key": 100000004, | ||
| + | "Name": "Общая проверка системы", | ||
| + | "TourUrl": "www.megatec.ru", | ||
| + | "BookingConditions": "<p>Условия бронирования тура.<\/p>", | ||
| + | "DefaultManagers": [], | ||
| + | "Manager": 169, | ||
| + | "Branches": [], | ||
| + | "DetermineTheBranchOnCity": false, | ||
| + | "IndividualFlightSelection": true, | ||
| + | "RestrictionDateArrival": false, | ||
| + | "PriceUpdateForView": false, | ||
| + | "SelectFlightAutomatically": false, | ||
| + | "BaggageSearchOtherFares": false, | ||
| + | "Luggage": "withoutLuggage", | ||
| + | "LuggageForView": "all", | ||
| + | "LuggageForPrice": "all", | ||
| + | "FlightClass": "economy", | ||
| + | "Directs": "all", | ||
| + | "DirectsForView": "all", | ||
| + | "DirectsForPrice": "all", | ||
| + | "DepartureTimeLimit": "", | ||
| + | "SortingForView": "cheap", | ||
| + | "StartDate": "2018-02-25T00:00:00", | ||
| + | "MaxConnectionTime": 0 | ||
| + | "FullPaymentPeriod": 5, | ||
| + | "FullPaymentCheckin": null, | ||
| + | "PrePaymentPeriod": null, | ||
| + | "PrePaymentCheckin": 5, | ||
| + | "PrePaymentCu": null, | ||
| + | "PrePaymentPercent": 10.0, | ||
| + | "Duration": 4, | ||
| + | "DurationInNight": 3, | ||
| + | "Types": [2], | ||
| + | "Price": 260, | ||
| + | "Cost": 260, | ||
| + | "Penalties": null, | ||
| + | "Rate": "EU", | ||
| + | "CityDepature": { | ||
| + | "Key": 1, | ||
| + | "Value": "Москва" | ||
| + | }, | ||
| + | "CountryId": 0, | ||
| + | "Services": [ | ||
| + | { | ||
| + | "DepartureCity": { | ||
| + | "Key": 1, | ||
| + | "Value": "Москва" | ||
| + | }, | ||
| + | "DepartureCountry": { | ||
| + | "Key": 460, | ||
| + | "Value": "Россия" | ||
| + | }, | ||
| + | "ArrivalCity": { | ||
| + | "Key": 35, | ||
| + | "Value": "Вена" | ||
| + | }, | ||
| + | "ArrivalCountry": { | ||
| + | "Key": 90, | ||
| + | "Value": "Австрия" | ||
| + | }, | ||
| + | "DepartureAirport": { | ||
| + | "Key": "SVO4", | ||
| + | "Value": "Шереметьево-24" | ||
| + | }, | ||
| + | "ArrivalAirport": { | ||
| + | "Key": "VIE1", | ||
| + | "Value": "Vena1" | ||
| + | }, | ||
| + | "Airline": { | ||
| + | "Key": "BA7", | ||
| + | "Value": "BRITISH AIRWAYS" | ||
| + | }, | ||
| + | "Aircraft": { | ||
| + | "Key": "319", | ||
| + | "Value": "AIRBUS " | ||
| + | }, | ||
| + | "Flight": { | ||
| + | "Key": 882, | ||
| + | "Value": "4444" | ||
| + | }, | ||
| + | "DepartureTime": "10:00:00", | ||
| + | "ArrivalTime": "12:00:00", | ||
| + | "EndDateTime": "2018-02-25T12:00:00", | ||
| + | "FlightDetails": [ { | ||
| + | "Tariff": { | ||
| + | "Key": 89, | ||
| + | "Code": "Y", | ||
| + | "Name": "Экономический класс" | ||
| + | }, | ||
| + | "Cost": 10, | ||
| + | "QuotaStatus": { | ||
| + | "PlacesStatus": 4, | ||
| + | "FreePlaces": 0, | ||
| + | "IsFewPlaces": false | ||
| + | }, | ||
| + | "PartnerId": 12668, | ||
| + | "ByPax": true, | ||
| + | "Partner": { | ||
| + | "Key": 0, | ||
| + | "Value": null | ||
| + | } | ||
| + | }], | ||
| + | "FlightSetting": { | ||
| + | "ServiceId": 3, | ||
| + | "PatternId": 13, | ||
| + | "FlightId": 13 | ||
| + | }, | ||
| + | "FlightSourceMode": 1, | ||
| + | "Id": 3, | ||
| + | "SvKey": 1, | ||
| + | "IsSubCode1": true, | ||
| + | "IsSubCode2": false, | ||
| + | "IsPartnerBasedOn": false, | ||
| + | "Day": 1, | ||
| + | "DurationInNight": 0, | ||
| + | "BeginDateTime": "2018-02-25T10:00:00", | ||
| + | "IsHooded": false, | ||
| + | "IsDeleted": false, | ||
| + | "IsNotCalculate": false, | ||
| + | "PacketId": 779, | ||
| + | "Index": 0 | ||
| + | }, | ||
| + | { | ||
| + | "Hotel": { | ||
| + | "Key": 709, | ||
| + | "Value": "Am Brilliantengrund" | ||
| + | }, | ||
| + | "City": { | ||
| + | "Key": 35, | ||
| + | "Value": "Вена" | ||
| + | }, | ||
| + | "Stars": { | ||
| + | "Key": -1, | ||
| + | "Value": null | ||
| + | }, | ||
| + | "Resort": { | ||
| + | "Key": -1, | ||
| + | "Value": null | ||
| + | }, | ||
| + | "ImageURL": "", | ||
| + | "Http": null, | ||
| + | "Description": "", | ||
| + | "Country": { | ||
| + | "Key": 90, | ||
| + | "Value": "Австрия" | ||
| + | }, | ||
| + | "HotelDetails": [ { | ||
| + | "HotelRoom": 46463, | ||
| + | "Room": { | ||
| + | "Key": 129, | ||
| + | "Value": "DBL" | ||
| + | }, | ||
| + | "RoomCategory": { | ||
| + | "Key": 3493, | ||
| + | "Value": "Cosy" | ||
| + | }, | ||
| + | "AccomodationType": { | ||
| + | "Key": 1256, | ||
| + | "Value": "2+1_K", | ||
| + | "AdultCount": 2, | ||
| + | "ChildCount": 1 | ||
| + | }, | ||
| + | "Pansion": { | ||
| + | "Key": 4, | ||
| + | "Value": "Завтрак" | ||
| + | }, | ||
| + | "AbsolutePenalties": null, | ||
| + | "Cost": 19.47, | ||
| + | "QuotaStatus": { | ||
| + | "PlacesStatus": 4, | ||
| + | "FreePlaces": 0, | ||
| + | "IsFewPlaces": false | ||
| + | }, | ||
| + | "PartnerId": 12667, | ||
| + | "ByPax": false, | ||
| + | "Partner": { | ||
| + | "Key": 12667, | ||
| + | "Value": "Партнер-покупатель1" | ||
| + | } | ||
| + | }], | ||
| + | "HotelTypes": [ { | ||
| + | "Key": 5, | ||
| + | "Value": "Рекомендуемые" | ||
| + | }], | ||
| + | "Id": 1, | ||
| + | "SvKey": 3, | ||
| + | "IsSubCode1": true, | ||
| + | "IsSubCode2": true, | ||
| + | "IsPartnerBasedOn": false, | ||
| + | "Day": 1, | ||
| + | "DurationInNight": 3, | ||
| + | "BeginDateTime": "2018-02-25T12:00:00", | ||
| + | "EndDateTime": "2018-02-28T12:00:00", | ||
| + | "IsHooded": false, | ||
| + | "IsDeleted": false, | ||
| + | "IsNotCalculate": false, | ||
| + | "PacketId": 779, | ||
| + | "Index": 1 | ||
| + | }, | ||
| + | { | ||
| + | "DepartureCity": { | ||
| + | "Key": 35, | ||
| + | "Value": "Вена" | ||
| + | }, | ||
| + | "DepartureCountry": { | ||
| + | "Key": 90, | ||
| + | "Value": "Австрия" | ||
| + | }, | ||
| + | "ArrivalCity": { | ||
| + | "Key": 1, | ||
| + | "Value": "Москва" | ||
| + | }, | ||
| + | "ArrivalCountry": { | ||
| + | "Key": 460, | ||
| + | "Value": "Россия" | ||
| + | }, | ||
| + | "DepartureAirport": { | ||
| + | "Key": "VIE1", | ||
| + | "Value": "Vena1" | ||
| + | }, | ||
| + | "ArrivalAirport": { | ||
| + | "Key": "DME", | ||
| + | "Value": "Домодедово" | ||
| + | }, | ||
| + | "Airline": { | ||
| + | "Key": "7U", | ||
| + | "Value": "Авиаэнерго" | ||
| + | }, | ||
| + | "Aircraft": { | ||
| + | "Key": "727", | ||
| + | "Value": "Boeing" | ||
| + | }, | ||
| + | "Flight": { | ||
| + | "Key": 774, | ||
| + | "Value": "222" | ||
| + | }, | ||
| + | "DepartureTime": "00:00:00", | ||
| + | "ArrivalTime": "00:00:00", | ||
| + | "EndDateTime": "2018-02-28T00:00:00", | ||
| + | "FlightDetails": [ { | ||
| + | "Tariff": { | ||
| + | "Key": 89, | ||
| + | "Code": "Y", | ||
| + | "Name": "Экономический класс" | ||
| + | }, | ||
| + | "Cost": 0, | ||
| + | "QuotaStatus": { | ||
| + | "PlacesStatus": 4, | ||
| + | "FreePlaces": 0, | ||
| + | "IsFewPlaces": false | ||
| + | }, | ||
| + | "PartnerId": 10760, | ||
| + | "ByPax": true, | ||
| + | "Partner": { | ||
| + | "Key": 0, | ||
| + | "Value": null | ||
| + | } | ||
| + | }], | ||
| + | "FlightSetting": { | ||
| + | "ServiceId": 4, | ||
| + | "PatternId": 5, | ||
| + | "FlightId": 4 | ||
| + | }, | ||
| + | "FlightSourceMode": 1, | ||
| + | "Id": 4, | ||
| + | "SvKey": 1, | ||
| + | "IsSubCode1": true, | ||
| + | "IsSubCode2": false, | ||
| + | "IsPartnerBasedOn": false, | ||
| + | "Day": 4, | ||
| + | "DurationInNight": 0, | ||
| + | "BeginDateTime": "2018-02-28T00:00:00", | ||
| + | "IsHooded": false, | ||
| + | "IsDeleted": false, | ||
| + | "IsNotCalculate": false, | ||
| + | "PacketId": 779, | ||
| + | "Index": 4 | ||
| + | } | ||
| + | ], | ||
| + | "NotRouteServices": [ | ||
| + | [ { | ||
| + | "ServiceName": "страховка", | ||
| + | "City": null, | ||
| + | "Country": { | ||
| + | "Key": 90, | ||
| + | "Value": "Австрия" | ||
| + | }, | ||
| + | "Code": { | ||
| + | "Key": 297, | ||
| + | "Value": "Страховка от несчастного случая" | ||
| + | }, | ||
| + | "ByScheduler": false, | ||
| + | "Details": [ { | ||
| + | "SubCode1": { | ||
| + | "Key": 18, | ||
| + | "Value": "2" | ||
| + | }, | ||
| + | "SubCode2": { | ||
| + | "Key": null, | ||
| + | "Value": "" | ||
| + | }, | ||
| + | "Date": null, | ||
| + | "IsShowTransportPlan": true, | ||
| + | "Cost": 16, | ||
| + | "QuotaStatus": { | ||
| + | "PlacesStatus": 1, | ||
| + | "FreePlaces": 0, | ||
| + | "IsFewPlaces": false | ||
| + | }, | ||
| + | "PartnerId": 12668, | ||
| + | "ByPax": true, | ||
| + | "Partner": { | ||
| + | "Key": 0, | ||
| + | "Value": null | ||
| + | } | ||
| + | }], | ||
| + | "ParentId": null, | ||
| + | "PartnerBasedOnServiceTemplateId": null, | ||
| + | "Id": 10, | ||
| + | "SvKey": 6, | ||
| + | "IsSubCode1": true, | ||
| + | "IsSubCode2": true, | ||
| + | "IsPartnerBasedOn": false, | ||
| + | "Day": 1, | ||
| + | "DurationInNight": 3, | ||
| + | "BeginDateTime": "2018-02-25T00:00:00", | ||
| + | "EndDateTime": "2018-02-28T00:00:00", | ||
| + | "IsHooded": false, | ||
| + | "IsDeleted": true, | ||
| + | "IsNotCalculate": true, | ||
| + | "PacketId": 882, | ||
| + | "Index": 2 | ||
| + | }], | ||
| + | [ { | ||
| + | "ServiceName": "экскурсия", | ||
| + | "City": { | ||
| + | "Key": 1046, | ||
| + | "Value": "Санто-Доминго" | ||
| + | }, | ||
| + | "Country": { | ||
| + | "Key": 90, | ||
| + | "Value": "Австрия" | ||
| + | }, | ||
| + | "Code": { | ||
| + | "Key": 743, | ||
| + | "Value": "4" | ||
| + | }, | ||
| + | "ByScheduler": false, | ||
| + | "Details": [ { | ||
| + | "SubCode1": { | ||
| + | "Key": 37, | ||
| + | "Value": "Мини-автобус 10 чел." | ||
| + | }, | ||
| + | "SubCode2": { | ||
| + | "Key": null, | ||
| + | "Value": "" | ||
| + | }, | ||
| + | "Date": null, | ||
| + | "IsShowTransportPlan": false, | ||
| + | "Cost": 85.22, | ||
| + | "QuotaStatus": { | ||
| + | "PlacesStatus": 1, | ||
| + | "FreePlaces": 0, | ||
| + | "IsFewPlaces": false | ||
| + | }, | ||
| + | "PartnerId": 12667, | ||
| + | "ByPax": true, | ||
| + | "Partner": { | ||
| + | "Key": 0, | ||
| + | "Value": null | ||
| + | } | ||
| + | }], | ||
| + | "ParentId": null, | ||
| + | "PartnerBasedOnServiceTemplateId": null, | ||
| + | "Id": 7, | ||
| + | "SvKey": 4, | ||
| + | "IsSubCode1": true, | ||
| + | "IsSubCode2": false, | ||
| + | "IsPartnerBasedOn": true, | ||
| + | "Day": 1, | ||
| + | "DurationInNight": 0, | ||
| + | "BeginDateTime": "2018-02-25T00:00:00", | ||
| + | "EndDateTime": "2018-02-26T00:00:00", | ||
| + | "IsHooded": false, | ||
| + | "IsDeleted": true, | ||
| + | "IsNotCalculate": true, | ||
| + | "PacketId": 779, | ||
| + | "Index": 3 | ||
| + | }] | ||
| + | ], | ||
| + | "MinCostServicesComposition": [ | ||
| + | { | ||
| + | "Key": { | ||
| + | "TemplateId": 3, | ||
| + | "PatternId": 13, | ||
| + | "SettingId": 13 | ||
| + | }, | ||
| + | "Value": { | ||
| + | "ServiceType": 1, | ||
| + | "Code": 882, | ||
| + | "SubCode1": 89, | ||
| + | "SubCode2": 1, | ||
| + | "PacketId": 779, | ||
| + | "PartnerId": 12668, | ||
| + | "CountryId": 90, | ||
| + | "CityId": 35, | ||
| + | "Day": 1, | ||
| + | "DurationInNight": 0 | ||
| + | } | ||
| + | }, | ||
| + | { | ||
| + | "Key": { | ||
| + | "TemplateId": 1, | ||
| + | "PatternId": 0, | ||
| + | "SettingId": 0 | ||
| + | }, | ||
| + | "Value": { | ||
| + | "ServiceType": 3, | ||
| + | "Code": 709, | ||
| + | "SubCode1": 46463, | ||
| + | "SubCode2": 4, | ||
| + | "PacketId": 779, | ||
| + | "PartnerId": 12667, | ||
| + | "CountryId": 90, | ||
| + | "CityId": 35, | ||
| + | "Day": 1, | ||
| + | "DurationInNight": 3 | ||
| + | } | ||
| + | }, | ||
| + | { | ||
| + | "Key": { | ||
| + | "TemplateId": 4, | ||
| + | "PatternId": 5, | ||
| + | "SettingId": 4 | ||
| + | }, | ||
| + | "Value": { | ||
| + | "ServiceType": 1, | ||
| + | "Code": 774, | ||
| + | "SubCode1": 89, | ||
| + | "SubCode2": 35, | ||
| + | "PacketId": 779, | ||
| + | "PartnerId": 10760, | ||
| + | "CountryId": 460, | ||
| + | "CityId": 1, | ||
| + | "Day": 4, | ||
| + | "DurationInNight": 0 | ||
| + | } | ||
| + | } | ||
| + | ], | ||
| + | "FlightWeight": 2, | ||
| + | "LinkingFlightsRules": { | ||
| + | "notCombineDifferentAirlineRule": { | ||
| + | "airlines": ["AY2"], | ||
| + | "flightSettings": [], | ||
| + | "enabled": true | ||
| + | }, | ||
| + | "checkPlusMinus1CharterRule": { | ||
| + | "FlightSettingPairs": [], | ||
| + | "enabled": false | ||
| + | }, | ||
| + | "notCombineDifferentTariffGroupRule": { | ||
| + | "FlightSettings": [], | ||
| + | "enabled": true | ||
| + | }, | ||
| + | "notCombineDifferentPartnerRule": { | ||
| + | "FlightSettings": [], | ||
| + | "enabled": false | ||
| + | }, | ||
| + | "departureCityEqualsArrivalCityRule": { | ||
| + | "FlightSettingPairs": [], | ||
| + | "enabled": false | ||
| + | }, | ||
| + | "combineOnlySpecificChartersRule": { | ||
| + | "settings": [], | ||
| + | "enabled": false | ||
| + | } | ||
| + | }, | ||
| + | "RouteSubVariants": [], | ||
| + | "Routes": 1, | ||
| + | "IsRemoteHotels": false, | ||
| + | "IsTourImages": false, | ||
| + | "MaskKeys": null | ||
| + | } | ||
| + | ], | ||
| + | "SecondaryFiltersResult": { | ||
| + | "TourTypes": [ { | ||
| + | "Id": 2, | ||
| + | "Name": "Стандартный тур", | ||
| + | "ParentId": null, | ||
| + | "Type": "TourType" | ||
| + | }], | ||
| + | "TourPrograms": [ | ||
| + | { | ||
| + | "Key": 100000004, | ||
| + | "Name": "Общая проверка системы", | ||
| + | "TourUrl": "www.megatec.ru", | ||
| + | "BookingConditions": "<p>Условия бронирования тура.<\/p>", | ||
| + | "IsLandOnly": false, | ||
| + | "IsRestrictMultiHotels": false, | ||
| + | "IsHotelTemplates": true, | ||
| + | "IsRouteServices": true, | ||
| + | "MultiHotelDelta": 0, | ||
| + | "Rate": "EU", | ||
| + | "DateStart": "2018-01-30T00:00:00Z", | ||
| + | "DateEnd": "2018-02-27T00:00:00Z", | ||
| + | "Status": { | ||
| + | "Key": 3, | ||
| + | "Value": "Доступен для продажи" | ||
| + | }, | ||
| + | "Templates": [ | ||
| + | {"$id": "5"}, | ||
| + | {"$id": "6"}, | ||
| + | {"$id": "7"}, | ||
| + | {"$id": "8"}, | ||
| + | {"$id": "9"} | ||
| + | ], | ||
| + | "Types": [ { | ||
| + | "Id": 2, | ||
| + | "Name": "Стандартный тур", | ||
| + | "ParentId": null, | ||
| + | "Type": "TourType" | ||
| + | }], | ||
| + | "LinkingFlightsRules": { | ||
| + | "notCombineDifferentAirlineRule": { | ||
| + | "airlines": ["AY2"], | ||
| + | "flightSettings": [], | ||
| + | "enabled": true | ||
| + | }, | ||
| + | "checkPlusMinus1CharterRule": { | ||
| + | "FlightSettingPairs": [], | ||
| + | "enabled": false | ||
| + | }, | ||
| + | "notCombineDifferentTariffGroupRule": { | ||
| + | "FlightSettings": [], | ||
| + | "enabled": true | ||
| + | }, | ||
| + | "notCombineDifferentPartnerRule": { | ||
| + | "FlightSettings": [], | ||
| + | "enabled": false | ||
| + | }, | ||
| + | "departureCityEqualsArrivalCityRule": { | ||
| + | "FlightSettingPairs": [], | ||
| + | "enabled": false | ||
| + | }, | ||
| + | "combineOnlySpecificChartersRule": { | ||
| + | "settings": [], | ||
| + | "enabled": false | ||
| + | } | ||
| + | }, | ||
| + | "Type": "TourProgram" | ||
| + | } | ||
| + | ], | ||
| + | "TourDurations": [4], | ||
| + | "TourDates": ["2018-02-25T00:00:00"], | ||
| + | "HotelCities": [ { | ||
| + | "key": 35, | ||
| + | "Country": { | ||
| + | "key": 90, | ||
| + | "name": "Австрия", | ||
| + | "Code": "AUS", | ||
| + | "CitizenName": "Австрия", | ||
| + | "CitizenNameLat": "AUSTRIA", | ||
| + | "PassportMinDurCheckFrom": 0, | ||
| + | "CheckINN": false, | ||
| + | "PassportMinDur": null, | ||
| + | "INNName": "ИНН", | ||
| + | "Web": 1, | ||
| + | "WebImage": "/pics/animate/austria.gif", | ||
| + | "WebHTTP": "", | ||
| + | "AnkLang": 0, | ||
| + | "Type": "Country" | ||
| + | }, | ||
| + | "name": "Вена", | ||
| + | "Code": "VIE", | ||
| + | "Web": 0, | ||
| + | "RSKey": 0, | ||
| + | "WebImage": null, | ||
| + | "IsDeparture": 1, | ||
| + | "Type": "City" | ||
| + | }], | ||
| + | "HotelResorts": [ { | ||
| + | "Key": -1, | ||
| + | "CountryKey": 0, | ||
| + | "Name": "Не указан", | ||
| + | "NameLat": null, | ||
| + | "Type": "Resort" | ||
| + | }], | ||
| + | "HotelCategories": [ | ||
| + | { | ||
| + | "Key": 23, | ||
| + | "Name": "1*", | ||
| + | "PrintNumber": 1, | ||
| + | "Type": "HotelCatigory" | ||
| + | }, | ||
| + | { | ||
| + | "Key": 56, | ||
| + | "Name": "2*", | ||
| + | "PrintNumber": 2, | ||
| + | "Type": "HotelCatigory" | ||
| + | }, | ||
| + | { | ||
| + | "Key": 66, | ||
| + | "Name": "4*Boutique", | ||
| + | "PrintNumber": null, | ||
| + | "Type": "HotelCatigory" | ||
| + | } | ||
| + | ], | ||
| + | "Hotels": [ | ||
| + | { | ||
| + | "Key": 705, | ||
| + | "Country": { | ||
| + | "key": 90, | ||
| + | "name": "Австрия", | ||
| + | "Code": "AUS", | ||
| + | "CitizenName": "Австрия", | ||
| + | "CitizenNameLat": "AUSTRIA", | ||
| + | "PassportMinDurCheckFrom": 0, | ||
| + | "CheckINN": false, | ||
| + | "PassportMinDur": null, | ||
| + | "INNName": "ИНН", | ||
| + | "Web": 1, | ||
| + | "WebImage": "/pics/animate/austria.gif", | ||
| + | "WebHTTP": "", | ||
| + | "AnkLang": 0, | ||
| + | "Type": "Country" | ||
| + | }, | ||
| + | "City": { | ||
| + | "key": 35, | ||
| + | "Country": { | ||
| + | "key": 90, | ||
| + | "name": "Австрия", | ||
| + | "Code": "AUS", | ||
| + | "CitizenName": "Австрия", | ||
| + | "CitizenNameLat": "AUSTRIA", | ||
| + | "PassportMinDurCheckFrom": 0, | ||
| + | "CheckINN": false, | ||
| + | "PassportMinDur": null, | ||
| + | "INNName": "ИНН", | ||
| + | "Web": 1, | ||
| + | "WebImage": "/pics/animate/austria.gif", | ||
| + | "WebHTTP": "", | ||
| + | "AnkLang": 0, | ||
| + | "Type": "Country" | ||
| + | }, | ||
| + | "name": "Вена", | ||
| + | "Code": "VIE", | ||
| + | "Web": 0, | ||
| + | "RSKey": 0, | ||
| + | "WebImage": null, | ||
| + | "IsDeparture": 1, | ||
| + | "Type": "City" | ||
| + | }, | ||
| + | "Resort": null, | ||
| + | "Name": "Continental", | ||
| + | "Category": { | ||
| + | "Key": 23, | ||
| + | "Name": "1*", | ||
| + | "PrintNumber": 1, | ||
| + | "Type": "HotelCatigory" | ||
| + | }, | ||
| + | "TimeFrom": null, | ||
| + | "TimeTo": null, | ||
| + | "HTTP": null, | ||
| + | "Stars": "1*", | ||
| + | "TimeIsEmpty": true, | ||
| + | "NameLat": "Continental", | ||
| + | "Address": null, | ||
| + | "IsCruise": 0, | ||
| + | "Phone": null, | ||
| + | "Code": null, | ||
| + | "Type": "Hotel" | ||
| + | }, | ||
| + | { | ||
| + | "Key": 178, | ||
| + | "Country": { | ||
| + | "key": 90, | ||
| + | "name": "Австрия", | ||
| + | "Code": "AUS", | ||
| + | "CitizenName": "Австрия", | ||
| + | "CitizenNameLat": "AUSTRIA", | ||
| + | "PassportMinDurCheckFrom": 0, | ||
| + | "CheckINN": false, | ||
| + | "PassportMinDur": null, | ||
| + | "INNName": "ИНН", | ||
| + | "Web": 1, | ||
| + | "WebImage": "/pics/animate/austria.gif", | ||
| + | "WebHTTP": "", | ||
| + | "AnkLang": 0, | ||
| + | "Type": "Country" | ||
| + | }, | ||
| + | "City": { | ||
| + | "key": 35, | ||
| + | "Country": { | ||
| + | "key": 90, | ||
| + | "name": "Австрия", | ||
| + | "Code": "AUS", | ||
| + | "CitizenName": "Австрия", | ||
| + | "CitizenNameLat": "AUSTRIA", | ||
| + | "PassportMinDurCheckFrom": 0, | ||
| + | "CheckINN": false, | ||
| + | "PassportMinDur": null, | ||
| + | "INNName": "ИНН", | ||
| + | "Web": 1, | ||
| + | "WebImage": "/pics/animate/austria.gif", | ||
| + | "WebHTTP": "", | ||
| + | "AnkLang": 0, | ||
| + | "Type": "Country" | ||
| + | }, | ||
| + | "name": "Вена", | ||
| + | "Code": "VIE", | ||
| + | "Web": 0, | ||
| + | "RSKey": 0, | ||
| + | "WebImage": null, | ||
| + | "IsDeparture": 1, | ||
| + | "Type": "City" | ||
| + | }, | ||
| + | "Resort": null, | ||
| + | "Name": "Ananas", | ||
| + | "Category": { | ||
| + | "Key": 56, | ||
| + | "Name": "2*", | ||
| + | "PrintNumber": 2, | ||
| + | "Type": "HotelCatigory" | ||
| + | }, | ||
| + | "TimeFrom": "1900-01-01T11:00:00", | ||
| + | "TimeTo": "1900-01-01T12:00:00", | ||
| + | "HTTP": "http://booking.panteon.ru/TourPrograms/Home/Tour/?tourKey=100000007", | ||
| + | "Stars": "2*", | ||
| + | "TimeIsEmpty": false, | ||
| + | "NameLat": "Ananas", | ||
| + | "Address": null, | ||
| + | "IsCruise": 0, | ||
| + | "Phone": "(+43/1) 546200", | ||
| + | "Code": null, | ||
| + | "Type": "Hotel" | ||
| + | }, | ||
| + | { | ||
| + | "Key": 707, | ||
| + | "Country": { | ||
| + | "key": 90, | ||
| + | "name": "Австрия", | ||
| + | "Code": "AUS", | ||
| + | "CitizenName": "Австрия", | ||
| + | "CitizenNameLat": "AUSTRIA", | ||
| + | "PassportMinDurCheckFrom": 0, | ||
| + | "CheckINN": false, | ||
| + | "PassportMinDur": null, | ||
| + | "INNName": "ИНН", | ||
| + | "Web": 1, | ||
| + | "WebImage": "/pics/animate/austria.gif", | ||
| + | "WebHTTP": "", | ||
| + | "AnkLang": 0, | ||
| + | "Type": "Country" | ||
| + | }, | ||
| + | "City": { | ||
| + | "key": 35, | ||
| + | "Country": { | ||
| + | "key": 90, | ||
| + | "name": "Австрия", | ||
| + | "Code": "AUS", | ||
| + | "CitizenName": "Австрия", | ||
| + | "CitizenNameLat": "AUSTRIA", | ||
| + | "PassportMinDurCheckFrom": 0, | ||
| + | "CheckINN": false, | ||
| + | "PassportMinDur": null, | ||
| + | "INNName": "ИНН", | ||
| + | "Web": 1, | ||
| + | "WebImage": "/pics/animate/austria.gif", | ||
| + | "WebHTTP": "", | ||
| + | "AnkLang": 0, | ||
| + | "Type": "Country" | ||
| + | }, | ||
| + | "name": "Вена", | ||
| + | "Code": "VIE", | ||
| + | "Web": 0, | ||
| + | "RSKey": 0, | ||
| + | "WebImage": null, | ||
| + | "IsDeparture": 1, | ||
| + | "Type": "City" | ||
| + | }, | ||
| + | "Resort": null, | ||
| + | "Name": "Beim Theresianum", | ||
| + | "Category": { | ||
| + | "Key": 66, | ||
| + | "Name": "4*Boutique", | ||
| + | "PrintNumber": null, | ||
| + | "Type": "HotelCatigory" | ||
| + | }, | ||
| + | "TimeFrom": null, | ||
| + | "TimeTo": null, | ||
| + | "HTTP": null, | ||
| + | "Stars": "4*Boutique", | ||
| + | "TimeIsEmpty": true, | ||
| + | "NameLat": "Beim Theresianum", | ||
| + | "Address": null, | ||
| + | "IsCruise": 0, | ||
| + | "Phone": null, | ||
| + | "Code": null, | ||
| + | "Type": "Hotel" | ||
| + | }, | ||
| + | { | ||
| + | "Key": 709, | ||
| + | "Country": { | ||
| + | "key": 90, | ||
| + | "name": "Австрия", | ||
| + | "Code": "AUS", | ||
| + | "CitizenName": "Австрия", | ||
| + | "CitizenNameLat": "AUSTRIA", | ||
| + | "PassportMinDurCheckFrom": 0, | ||
| + | "CheckINN": false, | ||
| + | "PassportMinDur": null, | ||
| + | "INNName": "ИНН", | ||
| + | "Web": 1, | ||
| + | "WebImage": "/pics/animate/austria.gif", | ||
| + | "WebHTTP": "", | ||
| + | "AnkLang": 0, | ||
| + | "Type": "Country" | ||
| + | }, | ||
| + | "City": { | ||
| + | "key": 35, | ||
| + | "Country": { | ||
| + | "key": 90, | ||
| + | "name": "Австрия", | ||
| + | "Code": "AUS", | ||
| + | "CitizenName": "Австрия", | ||
| + | "CitizenNameLat": "AUSTRIA", | ||
| + | "PassportMinDurCheckFrom": 0, | ||
| + | "CheckINN": false, | ||
| + | "PassportMinDur": null, | ||
| + | "INNName": "ИНН", | ||
| + | "Web": 1, | ||
| + | "WebImage": "/pics/animate/austria.gif", | ||
| + | "WebHTTP": "", | ||
| + | "AnkLang": 0, | ||
| + | "Type": "Country" | ||
| + | }, | ||
| + | "name": "Вена", | ||
| + | "Code": "VIE", | ||
| + | "Web": 0, | ||
| + | "RSKey": 0, | ||
| + | "WebImage": null, | ||
| + | "IsDeparture": 1, | ||
| + | "Type": "City" | ||
| + | }, | ||
| + | "Resort": null, | ||
| + | "Name": "Am Brilliantengrund", | ||
| + | "Category": null, | ||
| + | "TimeFrom": null, | ||
| + | "TimeTo": null, | ||
| + | "HTTP": null, | ||
| + | "Stars": "", | ||
| + | "TimeIsEmpty": true, | ||
| + | "NameLat": "Am Brilliantengrund", | ||
| + | "Address": null, | ||
| + | "IsCruise": 0, | ||
| + | "Phone": null, | ||
| + | "Code": null, | ||
| + | "Type": "Hotel" | ||
| + | } | ||
| + | ], | ||
| + | "Pansions": [ | ||
| + | { | ||
| + | "Key": 46, | ||
| + | "Code": "RO", | ||
| + | "Name": "RO", | ||
| + | "NameLat": null, | ||
| + | "Type": "Pansion" | ||
| + | }, | ||
| + | { | ||
| + | "Key": 4, | ||
| + | "Code": "BB2", | ||
| + | "Name": "Завтрак", | ||
| + | "NameLat": null, | ||
| + | "Type": "Pansion" | ||
| + | }, | ||
| + | { | ||
| + | "Key": 2, | ||
| + | "Code": "HB", | ||
| + | "Name": "Полупансион", | ||
| + | "NameLat": null, | ||
| + | "Type": "Pansion" | ||
| + | } | ||
| + | ], | ||
| + | "Airlines": [ | ||
| + | { | ||
| + | "Key": 8, | ||
| + | "Code": "BA7", | ||
| + | "Name": "BRITISH AIRWAYS", | ||
| + | "NameLat": "en_BRITISH AIRWAYS", | ||
| + | "Type": "AirLine" | ||
| + | }, | ||
| + | { | ||
| + | "Key": 3, | ||
| + | "Code": "7U", | ||
| + | "Name": "Авиаэнерго", | ||
| + | "NameLat": "en_Авиаэнерго", | ||
| + | "Type": "AirLine" | ||
| + | } | ||
| + | ], | ||
| + | "FlightTariffs": [ { | ||
| + | "Key": 89, | ||
| + | "Code": "Y", | ||
| + | "Name": "Экономический класс", | ||
| + | "NameLat": "Coach economy", | ||
| + | "Group": null, | ||
| + | "Type": "AirService" | ||
| + | }], | ||
| + | "DepartureCities": [ { | ||
| + | "key": 1, | ||
| + | "Country": { | ||
| + | "key": 460, | ||
| + | "name": "Россия", | ||
| + | "Code": null, | ||
| + | "CitizenName": "Россия", | ||
| + | "CitizenNameLat": "Russia", | ||
| + | "PassportMinDurCheckFrom": 0, | ||
| + | "CheckINN": true, | ||
| + | "PassportMinDur": null, | ||
| + | "INNName": "ИНН", | ||
| + | "Web": 0, | ||
| + | "WebImage": "", | ||
| + | "WebHTTP": "", | ||
| + | "AnkLang": 0, | ||
| + | "Type": "Country" | ||
| + | }, | ||
| + | "name": "Москва", | ||
| + | "Code": "MOW", | ||
| + | "Web": 0, | ||
| + | "RSKey": 0, | ||
| + | "WebImage": null, | ||
| + | "IsDeparture": 1, | ||
| + | "Type": "City" | ||
| + | }], | ||
| + | "DepartureAirports": [ { | ||
| + | "Key": 52, | ||
| + | "Code": "SVO4", | ||
| + | "Name": "Шереметьево-24", | ||
| + | "NameLat": "Шереметьево-", | ||
| + | "CityKey": 1, | ||
| + | "CountryKey": 460, | ||
| + | "Letter": "S", | ||
| + | "Site": 0, | ||
| + | "Type": "Airport" | ||
| + | }], | ||
| + | "ArrivalCities": [ { | ||
| + | "key": 1, | ||
| + | "Country": { | ||
| + | "key": 460, | ||
| + | "name": "Россия", | ||
| + | "Code": null, | ||
| + | "CitizenName": "Россия", | ||
| + | "CitizenNameLat": "Russia", | ||
| + | "PassportMinDurCheckFrom": 0, | ||
| + | "CheckINN": true, | ||
| + | "PassportMinDur": null, | ||
| + | "INNName": "ИНН", | ||
| + | "Web": 0, | ||
| + | "WebImage": "", | ||
| + | "WebHTTP": "", | ||
| + | "AnkLang": 0, | ||
| + | "Type": "Country" | ||
| + | }, | ||
| + | "name": "Москва", | ||
| + | "Code": "MOW", | ||
| + | "Web": 0, | ||
| + | "RSKey": 0, | ||
| + | "WebImage": null, | ||
| + | "IsDeparture": 1, | ||
| + | "Type": "City" | ||
| + | }], | ||
| + | "ArrivalAirports": [ { | ||
| + | "Key": 12, | ||
| + | "Code": "DME", | ||
| + | "Name": "Домодедово", | ||
| + | "NameLat": "Домодедово", | ||
| + | "CityKey": 1, | ||
| + | "CountryKey": 460, | ||
| + | "Letter": "D", | ||
| + | "Site": 0, | ||
| + | "Type": "Airport" | ||
| + | }], | ||
| + | "HotelTypes": [ | ||
| + | { | ||
| + | "key": 94, | ||
| + | "name": "Молодежный отдых", | ||
| + | "Type": "HotelType" | ||
| + | }, | ||
| + | { | ||
| + | "key": 5, | ||
| + | "name": "Рекомендуемые", | ||
| + | "Type": "HotelType" | ||
| + | } | ||
| + | ] | ||
| + | } | ||
| + | } | ||
| + | </syntaxhighlight> | ||
| + | </TD></TR></TABLE> | ||
| + | </div></div><br /> | ||
| + | |||
| + | * Детализация параметра serviceDescriptions из url: | ||
| + | ** '''TemplateId''' – идентификатор шаблона услуги (этот параметр можно взять из контроллера Tour->Result->RouteSubVariants->CostServicesComposition->Key->TemplateId) | ||
| + | ** '''PatternId''' – идентификатор паттерна услуги (этот параметр можно взять из контроллера Tour->Result->RouteSubVariants->CostServicesComposition->Key->PatternId) | ||
| + | ** '''SettingId''' – идентификатор услуги (этот параметр можно взять из контроллера Tour->Result->RouteSubVariants->CostServicesComposition->Key->SettingId) | ||
| + | ** '''ServiceType''' – тип услуги (этот параметр можно взять из контроллера Tour->Result->RouteSubVariants->CostServicesComposition->Value->ServiceType) | ||
| + | ** '''Code''' – код услуги (этот параметр можно взять из контроллера Tour->Result->RouteSubVariants->CostServicesComposition->Value->Code) | ||
| + | ** '''SubCode1''' – доп. описание 1 услуги (этот параметр можно взять из контроллера Tour->Result->RouteSubVariants->CostServicesComposition->Value->SubCode1) | ||
| + | ** '''SubCode2''' – доп. описание 2 услуги (этот параметр можно взять из контроллера Tour->Result->RouteSubVariants->CostServicesComposition->Value->SubCode2) | ||
| + | ** '''CountryId''' – ключ страны (этот параметр можно взять из контроллера Tour->Result->RouteSubVariants->CostServicesComposition->Value->CountryId) | ||
| + | ** '''CityId''' – ключ города (этот параметр можно взять из контроллера Tour->Result->RouteSubVariants->CostServicesComposition->Value->CityId) | ||
| + | ** '''PacketId''' – ключ пакета (этот параметр можно взять из контроллера Tour->Result->RouteSubVariants->CostServicesComposition->Value->PacketId) | ||
| + | ** '''PartnerId''' – ключ партнера (этот параметр можно взять из контроллера Tour->Result->RouteSubVariants->CostServicesComposition->Value->PartnerId) | ||
| + | ** '''Day''' – день предоставления (этот параметр можно взять из контроллера Tour->Result->RouteSubVariants->CostServicesComposition->Value->Day) | ||
| + | ** '''DurationInNight''' – продолжительность в ночах (этот параметр можно взять из контроллера Tour->Result->RouteSubVariants->CostServicesComposition->Value->DurationInNight) | ||
| + | |||
| + | Пример: serviceDescriptions=1_0_0_3_107274_1400134_1526_460_1_1830_14752_1_8 | ||
| + | |||
| + | ===Выгрузка транспортного плана (TransportPlan) до релиза 15.7 включительно=== | ||
| + | Метод производит выгрузку транспортного плана. | ||
| + | * Формат запроса: | ||
| + | ** GET .../TourSearchOwin/TransportPlan? | ||
| + | * Принимаемые параметры ( '''*''' – обязательный): | ||
| + | ** '''code''' – код услуги | ||
| + | ** '''dateBegin''' – дата услуги | ||
| + | ** '''serviceType''' – тип услуги | ||
| + | ** '''transportKey''' – ключ справочника транспорт | ||
| + | |||
| + | * Возвращаемый результат: | ||
| + | ** '''TransportKey''' – ключ справочника транспорт | ||
| + | ** '''Title''' – описание | ||
| + | ** '''AreasCount''' – количество уровней | ||
| + | ** '''RowsCount''' – количество рядов | ||
| + | ** '''ColumnsCount''' – количество мест в ряду | ||
| + | ** '''BusySeats''' – не используется | ||
| + | ** '''Cells''' – массив описаний всех мест | ||
| + | *** '''Row''' – ряд | ||
| + | *** '''Column''' – место в ряду | ||
| + | *** '''Area''' – уровень места | ||
| + | *** '''Type''' – тип (None = 0, Seat = 1, Block = 4, Busy = 5) | ||
| + | *** '''Name''' – название/номер | ||
| + | ** '''UserSeats''' – не используется | ||
| + | ** '''BlockSeat''' – не используется | ||
| + | |||
| + | <div class="toccolours mw-collapsible mw-collapsed" style="width:900px">Пример | ||
| + | <div class="mw-collapsible-content"> | ||
| + | <TABLE STYLE="border: 0.1em dashed #2F6FAB; margin: 8px; padding: 8px" WIDTH="99%"><TR><TD> | ||
| + | Вызов метода TransportPlan | ||
| + | <syntaxhighlight lang="java" enclose="div"> | ||
| + | GET http://localhost:9000/TourSearchOwin/TransportPlan?code=1311&dateBegin=17.04.2018&serviceType=14&transportKey=39 | ||
| + | </syntaxhighlight> | ||
| + | Возвращаемый результат метода TransportPlan (в формате JSON) | ||
| + | <syntaxhighlight lang="java" enclose="div"> | ||
| + | { | ||
| + | "TransportKey": 39, | ||
| + | "Title": "__", | ||
| + | "AreasCount": 1, | ||
| + | "RowsCount": 12, | ||
| + | "ColumnsCount": 5, | ||
| + | "BusySeats": [], | ||
| + | "Cells": [{ | ||
| + | "Row": 5, | ||
| + | "Column": 0, | ||
| + | "Area": 0, | ||
| + | "Type": 4, | ||
| + | "Name": "21" | ||
| + | }, | ||
| + | { | ||
| + | "Row": 5, | ||
| + | "Column": 1, | ||
| + | "Area": 0, | ||
| + | "Type": 1, | ||
| + | "Name": "22" | ||
| + | }, | ||
| + | { | ||
| + | "Row": 5, | ||
| + | "Column": 2, | ||
| + | "Area": 0, | ||
| + | "Type": 2, | ||
| + | "Name": "" | ||
| + | }, | ||
| + | { | ||
| + | "Row": 5, | ||
| + | "Column": 3, | ||
| + | "Area": 0, | ||
| + | "Type": 1, | ||
| + | "Name": "23" | ||
| + | }, | ||
| + | { | ||
| + | "Row": 5, | ||
| + | "Column": 4, | ||
| + | "Area": 0, | ||
| + | "Type": 1, | ||
| + | "Name": "24" | ||
| + | }], | ||
| + | "UserSeats": { | ||
| + | |||
| + | }, | ||
| + | "BlockSeat": { | ||
| + | |||
| + | } | ||
| + | } | ||
| + | </syntaxhighlight> | ||
| + | </TD></TR></TABLE> | ||
| + | </div></div><br /> | ||
| + | |||
| + | ===Выгрузка транспортного плана (TransportPlan) начиная с релиза 15.8=== | ||
| + | Метод производит выгрузку транспортного плана. | ||
| + | * Формат запроса: | ||
| + | ** GET .../TourSearchOwin/TransportPlan? | ||
| + | * Принимаемые параметры ( '''*''' – обязательный): | ||
| + | ** '''code''' – код услуги | ||
| + | ** '''dateBegin''' – дата услуги | ||
| + | ** '''serviceType''' – тип услуги | ||
| + | ** '''transportKey''' – ключ справочника транспорт | ||
| + | |||
| + | * Возвращаемый результат: | ||
| + | ** '''VehiclePlans''' – массив параметров зон плана | ||
| + | *** '''Key''' – ключ зоны | ||
| + | *** '''TransportKey''' – ключ из справочника транспорт | ||
| + | *** '''Row''' – количество рядов | ||
| + | *** '''AreaNumber''' – номер уровня | ||
| + | *** '''Name''' – название уровня | ||
| + | *** '''PlanOrientation''' – ориентация плана (''false'' - горизонтальная, ''true'' - вертикальная) | ||
| + | *** '''Column''' – количество столбцов | ||
| + | *** '''IsAirCraft''' – является ли планом самолета (''false'' - нет, ''true'' - является) | ||
| + | *** '''Type''' – не используется | ||
| + | ** '''Seats''' – массив параметров посадочного места | ||
| + | *** '''Key''' – ключ места | ||
| + | *** '''SeatType''' – тип места (None = 0, Seat = 1, Pass/comment = 2, Block = 4, Busy = 5) | ||
| + | *** '''Index''' – индекс места | ||
| + | *** '''Number''' – название ячейки с местом | ||
| + | *** '''Type''' – тип "место" | ||
| + | *** '''VPKey''' – ключ зоны | ||
| + | *** '''Border''' – обводка границы (комбинация цифр, где 0 - нет обводки, 1 - обводка в 1 px, 2 - обводка в 2 px) | ||
| + | |||
| + | <div class="toccolours mw-collapsible mw-collapsed" style="width:900px">Пример | ||
| + | <div class="mw-collapsible-content"> | ||
| + | <TABLE STYLE="border: 0.1em dashed #2F6FAB; margin: 8px; padding: 8px" WIDTH="99%"><TR><TD> | ||
| + | Вызов метода TransportPlan | ||
| + | <syntaxhighlight lang="java" enclose="div"> | ||
| + | GET http://localhost:9000/TourSearchOwin/TransportPlan?code=1776&dateBegin=28.03.2022&serviceType=14&transportKey=35 | ||
| + | </syntaxhighlight> | ||
| + | Возвращаемый результат метода TransportPlan (в формате JSON) | ||
| + | <syntaxhighlight lang="java" enclose="div"> | ||
| + | { | ||
| + | "VehiclePlans": | ||
| + | [ | ||
| + | { | ||
| + | "Key": 291, | ||
| + | "TransportKey": 35, | ||
| + | "Row": 2, | ||
| + | "AreaNumber": 1, | ||
| + | "Name": "Зона 1", | ||
| + | "PlanOrientation": false, | ||
| + | "Column": 3, | ||
| + | "IsAirCraft": false, | ||
| + | "Type": "VehiclePlans" | ||
| + | }, | ||
| + | { | ||
| + | "Key": 292, | ||
| + | "TransportKey": 35, | ||
| + | "Row": 3, | ||
| + | "AreaNumber": 2, | ||
| + | "Name": "Зона 2", | ||
| + | "PlanOrientation": true, | ||
| + | "Column": 2, | ||
| + | "IsAirCraft": false, | ||
| + | "Type": "VehiclePlans" | ||
| + | } | ||
| + | ], | ||
| + | "Seats": | ||
| + | [ | ||
| + | { | ||
| + | "Key": 332522, | ||
| + | "SeatType": 1, | ||
| + | "Index": 0, | ||
| + | "Number": "1", | ||
| + | "Type": "Seat", | ||
| + | "VPKey": 291, | ||
| + | "Border": "2002" | ||
| + | }, | ||
| + | { | ||
| + | "Key": 332523, | ||
| + | "SeatType": 1, | ||
| + | "Index": 1, | ||
| + | "Number": "2", | ||
| + | "Type": "Seat", | ||
| + | "VPKey": 291, | ||
| + | "Border": "2100" | ||
| + | }, | ||
| + | { | ||
| + | "Key": 332524, | ||
| + | "SeatType": 2, | ||
| + | "Index": 2, | ||
| + | "Number": "П", | ||
| + | "Type": "Seat", | ||
| + | "VPKey": 291, | ||
| + | "Border": "2201" | ||
| + | }, | ||
| + | { | ||
| + | "Key": 332525, | ||
| + | "SeatType": 1, | ||
| + | "Index": 3, | ||
| + | "Number": "3", | ||
| + | "Type": "Seat", | ||
| + | "VPKey": 291, | ||
| + | "Border": "0022" | ||
| + | }, | ||
| + | { | ||
| + | "Key": 332526, | ||
| + | "SeatType": 1, | ||
| + | "Index": 4, | ||
| + | "Number": "4", | ||
| + | "Type": "Seat", | ||
| + | "VPKey": 291, | ||
| + | "Border": "0120" | ||
| + | }, | ||
| + | { | ||
| + | "Key": 332527, | ||
| + | "SeatType": 1, | ||
| + | "Index": 5, | ||
| + | "Number": "5", | ||
| + | "Type": "Seat", | ||
| + | "VPKey": 291, | ||
| + | "Border": "0221" | ||
| + | }, | ||
| + | { | ||
| + | "Key": 332528, | ||
| + | "SeatType": 1, | ||
| + | "Index": 0, | ||
| + | "Number": "1", | ||
| + | "Type": "Seat", | ||
| + | "VPKey": 292, | ||
| + | "Border": "2002" | ||
| + | }, | ||
| + | { | ||
| + | "Key": 332529, | ||
| + | "SeatType": 1, | ||
| + | "Index": 1, | ||
| + | "Number": "2", | ||
| + | "Type": "Seat", | ||
| + | "VPKey": 292, | ||
| + | "Border": "2200" | ||
| + | }, | ||
| + | { | ||
| + | "Key": 332530, | ||
| + | "SeatType": 1, | ||
| + | "Index": 2, | ||
| + | "Number": "3", | ||
| + | "Type": "Seat", | ||
| + | "VPKey": 292, | ||
| + | "Border": "0012" | ||
| + | }, | ||
| + | { | ||
| + | "Key": 332531, | ||
| + | "SeatType": 1, | ||
| + | "Index": 3, | ||
| + | "Number": "4", | ||
| + | "Type": "Seat", | ||
| + | "VPKey": 292, | ||
| + | "Border": "0210" | ||
| + | }, | ||
| + | { | ||
| + | "Key": 332532, | ||
| + | "SeatType": 1, | ||
| + | "Index": 4, | ||
| + | "Number": "5", | ||
| + | "Type": "Seat", | ||
| + | "VPKey": 292, | ||
| + | "Border": "1000" | ||
| + | }, | ||
| + | { | ||
| + | "Key": 332533, | ||
| + | "SeatType": 1, | ||
| + | "Index": 5, | ||
| + | "Number": "6", | ||
| + | "Type": "Seat", | ||
| + | "VPKey": 292, | ||
| + | "Border": "1000" | ||
| + | } | ||
| + | ], | ||
| + | } | ||
| + | </syntaxhighlight> | ||
| + | </TD></TR></TABLE> | ||
| + | </div></div><br /> | ||
| + | |||
| + | ===Получение дат заезда по турпрограмме=== | ||
| + | Работает начиная с релиза 15.8. | ||
| + | Метод возвращает даты заезда по ключу турпрограммы. | ||
| + | * Формат запроса: | ||
| + | ** GET .../TourSearchOwin/TransportPlan? | ||
| + | * Принимаемые параметры ( '''*''' – обязательный): | ||
| + | ** '''tourProgramKey *''' – ключ турпрограммы | ||
| + | |||
| + | * Возвращаемый результат: | ||
| + | ** '''Массив дат заезда по туру''' | ||
| + | |||
| + | <div class="toccolours mw-collapsible mw-collapsed" style="width:900px">Пример | ||
| + | <div class="mw-collapsible-content"> | ||
| + | <TABLE STYLE="border: 0.1em dashed #2F6FAB; margin: 8px; padding: 8px" WIDTH="99%"><TR><TD> | ||
| + | Вызов метода | ||
| + | <syntaxhighlight lang="java" enclose="div"> | ||
| + | GET http://localhost:9000/TourSearchOwin/TransportPlan?tourProgramKey=100001277 | ||
| + | </syntaxhighlight> | ||
| + | Возвращаемый результат метода (в формате JSON) | ||
| + | <syntaxhighlight lang="java" enclose="div"> | ||
| + | [ | ||
| + | "2022-02-21T00:00:00Z", | ||
| + | "2022-02-22T00:00:00Z", | ||
| + | "2022-02-23T00:00:00Z", | ||
| + | "2022-02-24T00:00:00Z", | ||
| + | "2022-02-25T00:00:00Z", | ||
| + | "2022-02-26T00:00:00Z", | ||
| + | ] | ||
| + | </syntaxhighlight> | ||
| + | </TD></TR></TABLE> | ||
| + | </div></div><br /> | ||
| + | |||
| + | ===Получение плана транспортного средства (TransportPlan) по ключу турпрограммы и дате услуги=== | ||
| + | Работает начиная с релиза 15.8. | ||
| + | Метод возвращает даты заезда по ключу турпрограммы и дате услуги. | ||
| + | * Формат запроса: | ||
| + | ** GET .../TourSearchOwin/TransportPlan? | ||
| + | * Принимаемые параметры ( '''*''' – обязательный): | ||
| + | ** '''tourProgramKey *''' – ключ турпрограммы | ||
| + | ** '''dateBegin *''' – дата услуги | ||
| + | ** '''serviceType *''' – тип услуги | ||
| + | |||
| + | * Возвращаемый результат: | ||
| + | * '''plan''' – массив данных план | ||
| + | ** '''VehiclePlans''' – массив параметров зон плана | ||
| + | *** '''Key''' – ключ зоны | ||
| + | *** '''TransportKey''' – ключ из справочника транспорт | ||
| + | *** '''Row''' – количество рядов | ||
| + | *** '''AreaNumber''' – номер уровня | ||
| + | *** '''Name''' – название уровня | ||
| + | *** '''PlanOrientation''' – ориентация плана (''false'' - горизонтальная, ''true'' - вертикальная) | ||
| + | *** '''Column''' – количество столбцов | ||
| + | *** '''IsAirCraft''' – является ли планом самолета (''false'' - нет, ''true'' - является) | ||
| + | *** '''Dates''' – не используется | ||
| + | *** '''Type''' – не используется | ||
| + | ** '''Seats''' – массив параметров посадочного места | ||
| + | *** '''Key''' – ключ места | ||
| + | *** '''SeatType''' – тип места (None = 0, Seat = 1, Pass/comment = 2, Block = 4, Busy = 5) | ||
| + | *** '''Index''' – индекс места | ||
| + | *** '''Number''' – название ячейки с местом | ||
| + | *** '''Type''' – тип "место" | ||
| + | *** '''VPKey''' – ключ зоны | ||
| + | *** '''Border''' – обводка границы (комбинация цифр, где 0 - нет обводки, 1 - обводка в 1 px, 2 - обводка в 2 px) | ||
| + | * '''routeCity''' – направление автобусного переезда | ||
| + | <div class="toccolours mw-collapsible mw-collapsed" style="width:900px">Пример | ||
| + | <div class="mw-collapsible-content"> | ||
| + | <TABLE STYLE="border: 0.1em dashed #2F6FAB; margin: 8px; padding: 8px" WIDTH="99%"><TR><TD> | ||
| + | Вызов метода | ||
| + | <syntaxhighlight lang="java" enclose="div"> | ||
| + | GET http://localhost:9000/TourSearchOwin/TransportPlan?tourProgramKey=100001221&dateBegin=06.09.2023&serviceType=14 | ||
| + | </syntaxhighlight> | ||
| + | Возвращаемый результат метода (в формате JSON) | ||
| + | <syntaxhighlight lang="java" enclose="div"> | ||
| + | { | ||
| + | "plan": { | ||
| + | "VehiclePlans": [ | ||
| + | { | ||
| + | "Key": 10, | ||
| + | "TransportKey": 24, | ||
| + | "Row": 10, | ||
| + | "AreaNumber": 1, | ||
| + | "Name": "12345678901234567890", | ||
| + | "PlanOrientation": true, | ||
| + | "Column": 5, | ||
| + | "IsAirCraft": false, | ||
| + | "Dates": null, | ||
| + | "Type": "VehiclePlans" | ||
| + | } | ||
| + | ], | ||
| + | "Seats": [ | ||
| + | { | ||
| + | "Key": 406, | ||
| + | "SeatType": 1, | ||
| + | "Index": 0, | ||
| + | "Number": "1", | ||
| + | "Type": "Seat", | ||
| + | "VPKey": 10, | ||
| + | "Border": "0000" | ||
| + | }, | ||
| + | { | ||
| + | "Key": 407, | ||
| + | "SeatType": 1, | ||
| + | "Index": 1, | ||
| + | "Number": "2", | ||
| + | "Type": "Seat", | ||
| + | "VPKey": 10, | ||
| + | "Border": "0000" | ||
| + | }, | ||
| + | { | ||
| + | "Key": 408, | ||
| + | "SeatType": 0, | ||
| + | "Index": 2, | ||
| + | "Number": "", | ||
| + | "Type": "Seat", | ||
| + | "VPKey": 10, | ||
| + | "Border": "0000" | ||
| + | }, | ||
| + | { | ||
| + | "Key": 409, | ||
| + | "SeatType": 1, | ||
| + | "Index": 3, | ||
| + | "Number": "3", | ||
| + | "Type": "Seat", | ||
| + | "VPKey": 10, | ||
| + | "Border": "0000" | ||
| + | }, | ||
| + | { | ||
| + | "Key": 410, | ||
| + | "SeatType": 1, | ||
| + | "Index": 4, | ||
| + | "Number": "4", | ||
| + | "Type": "Seat", | ||
| + | "VPKey": 10, | ||
| + | "Border": "0000" | ||
| + | }, | ||
| + | { | ||
| + | "Key": 411, | ||
| + | "SeatType": 1, | ||
| + | "Index": 5, | ||
| + | "Number": "5", | ||
| + | "Type": "Seat", | ||
| + | "VPKey": 10, | ||
| + | "Border": "0000" | ||
| + | }, | ||
| + | { | ||
| + | "Key": 412, | ||
| + | "SeatType": 1, | ||
| + | "Index": 6, | ||
| + | "Number": "6", | ||
| + | "Type": "Seat", | ||
| + | "VPKey": 10, | ||
| + | "Border": "0000" | ||
| + | } | ||
| + | ] | ||
| + | }, | ||
| + | "routeCity": "Москва - Казань" | ||
| + | } | ||
| + | </syntaxhighlight> | ||
| + | </TD></TR></TABLE> | ||
| + | </div></div><br /> | ||
| + | |||
| + | ===Выгрузка первоначального варианта в корзину для бронирования (Tour)=== | ||
| + | Метод поиска, который возвращает варианты только по данной турпрограмме и схеме отеля. | ||
| + | * Формат запроса: | ||
| + | ** GET .../TourSearchOwin/Tour? | ||
* Принимаемые параметры ( '''*''' – обязательный): | * Принимаемые параметры ( '''*''' – обязательный): | ||
** '''DepartureCityKeys *''' – идентификатор города отправления (полученный из метода ''.../TourSearchOwin/departureCities?'') | ** '''DepartureCityKeys *''' – идентификатор города отправления (полученный из метода ''.../TourSearchOwin/departureCities?'') | ||
| − | ** ''' | + | ** '''DestinationType *''' – тип результата (внутренний параметр, не изменяемый, всегда указывать значение = 1) |
| − | ** '''Durations *''' – | + | ** '''DestinationKey *''' – идентификатор страны прибытия (полученный из метода ''.../TourSearchOwin/Destination?'') |
| − | ** '''PageNumber *''' – | + | ** '''Dates *''' – массив дат заезда (полученные из метода ''.../TourSearchOwin/TourDate?''). Если параметры передаются через url, то каждое значение необходимо передавать отдельным параметром. |
| + | ** '''Durations *''' – массив продолжительностей (полученные из метода ''.../TourSearchOwin/Duration?''). Если параметры передаются через url, то каждое значение необходимо передавать отдельным параметром. | ||
| + | ** '''AdultCount *''' – количество взрослых | ||
| + | ** '''ChildAges''' – возраст детей. Если детей несколько, и параметры передаются через url, то каждое значение необходимо передавать отдельным параметром. | ||
| + | ** '''CurrencyName *''' – код валюты | ||
| + | ** '''HotelQuota *''' – информация о квотах на отель (значения параметров: ''"1"'' — фильтр "Есть", ''"5"'' — фильтр "Есть+запрос", ''"7"'' — фильтр "Все") | ||
| + | ** '''AviaQuota *''' – информация о квотах на авиаперелет (значения параметров: ''"1"'' — фильтр "Есть", ''"5"'' — фильтр "Есть+запрос", ''"7"'' — фильтр "Все") | ||
| + | ** '''BusTransferQuota''' – информация о квотах на автобусный переезд (значения параметров: ''"1"'' — фильтр "Есть", ''"5"'' — фильтр "Есть+запрос", ''"7"'' — фильтр "Все") | ||
| + | ** '''HotelScheme *''' – объект схемы отеля (при работе с авиабукингом передается конструкция такого вида ''HotelScheme=[{"TemplateId":"}]'') | ||
| + | *** '''TemplateId''' – идентификатор шаблона услуги | ||
| + | *** '''DurationInNight''' – продолжительность отеля в ночах | ||
| + | *** '''Code''' – ключ отеля | ||
| + | *** '''PacketKey''' – ключ пакета | ||
| + | *** '''PartnerKey''' – ключ партнера | ||
| + | *** '''GDSProviderId''' – ключ провайдера из внешней системы | ||
| + | *** '''TotalTourDuration''' – общая продолжительность тура в днях, обрабатывается начиная с релиза 15.6, обязательный параметр. Изменения связаны с возможностью работы поиска в ночах проживания в отеле, для перехода в корзину необходимо знать общую продолжительность тура. Взять значение для параметра ''TotalTourDuration'' для HotelScheme можно из свойства ''Duration'', пришедшего для данной цены в ответе метода поиск туров (''Tour'') | ||
| + | ** '''PageNumber *''' – номер возвращаемой страницы (по умолчанию возвращается 1) | ||
** '''PageSize *''' – количество возвращаемых результатов на одной странице (возвращается 20) | ** '''PageSize *''' – количество возвращаемых результатов на одной странице (возвращается 20) | ||
| − | ** ''' | + | ** '''isFromBasket *''' – происходит ли обращение из корзины или из поиска туров (true/false). |
| − | + | ** '''isFillSecondaryFilters''' – заполнены ли дополнительные фильтры (по умолчанию всегда приходит true). Служебный внутренний параметр. При работе с API не используется. | |
| − | + | ** '''TourKey''' – ключ программы тура | |
| − | * | + | ** '''TourDuration''' – продолжительность тура в днях |
| − | ** '''isFillSecondaryFilters''' – | + | ** '''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]] | ||
| + | ****** '''Key''' – ключ доп. описания 1 | ||
| + | ****** '''Value''' – название доп. описания 1 | ||
| + | ***** '''SubCode2''' – объект [[#Приложение 1: параметры услуги (ServiceType, Code, SubCode1, SubCode2)|доп. описание 2]] | ||
| + | ****** '''Key''' – ключ доп. описания 2 | ||
| + | ****** '''Value''' – название доп. описания 2 | ||
| + | ***** '''Date''' – дата услуги | ||
| + | ***** '''IsShowTransportPlan''' – признак показывать ли план рассадки (для автобусов) | ||
| + | ***** '''Cost''' – цена | ||
| + | ***** '''QuotaStatus''' – объект информация по квотам | ||
| + | ****** '''PlacesStatus''' – статус по квотам (есть места-1 / нет мест-2 / под запрос-4) | ||
| + | ****** '''FreePlaces''' – количество свободных мест, если удовлетворяются условия, заданные в настройке "Мало" и включена настройка "Отображать числовое значение оставшихся мест". Иначе возвращается 0. Если в данном параметре 0, то руководствоваться следует значением, полученном в параметре '''PlacesStatus'''. | ||
| + | ****** '''IsFewPlaces''' – выполнены ли условия, заданные в настройке "Мало": '''true''' – если заданы условия количества мест "Мало" и данные условия выполнены, '''false''' – если не заданы условия количества мест "Мало" или они заданы, но не выполнены. | ||
| + | ***** '''PartnerId''' – идентификатор партнера | ||
| + | ***** '''ByPax''' – признак цены за человека | ||
| + | ***** '''Partner''' – объект партнер (не заполняется) | ||
| + | ****** '''Key''' – ключ (не заполняется) | ||
| + | ****** '''Value''' – название (не заполняется) | ||
| + | **** '''ParentId''' – идентификатор родительской услуги (для вложенных услуг) | ||
| + | **** '''PartnerBasedOnServiceTemplateId''' – ключ шаблона услуги, по которой приоритетно выбирается партнер текущей услуги | ||
| + | **** '''Id''' – идентификатор услуги | ||
| + | **** '''SvKey''' – ключ типа услуги | ||
| + | **** '''IsSubCode1''' – наличие [[#Приложение 1: параметры услуги (ServiceType, Code, SubCode1, SubCode2)|доп. описания 1]] | ||
| + | **** '''IsSubCode2''' – наличие [[#Приложение 1: параметры услуги (ServiceType, Code, SubCode1, SubCode2)|доп. описания 2]] | ||
| + | **** '''IsPartnerBasedOn''' – услуга с подбором приоритетного поставщика услуги | ||
| + | **** '''Day''' – день предоставления услуги | ||
| + | **** '''DurationInNight''' – продолжительность услуги в ночах | ||
| + | **** '''BeginDateTime''' – дата предоставления услуги | ||
| + | **** '''EndDateTime''' – дата окончания услуги | ||
| + | **** '''IsHooded''' – скрытая ли услуга | ||
| + | **** '''IsDeleted''' – удаляемая ли услуга | ||
| + | **** '''IsNotCalculate''' – не рассчитываемая ли услуга | ||
| + | **** '''PacketId''' – пакет услуги | ||
| + | **** '''Index''' – индекс услуги | ||
| + | *** '''MinCostServicesComposition''' – массив состав услуг минимальной цены | ||
| + | **** '''Key''' – ключ | ||
| + | ***** '''TemplateId''' – идентификатор шаблона | ||
| + | ***** '''PatternId''' – идентификатор вкладки | ||
| + | ***** '''SettingId''' – идентификатор услуги | ||
| + | **** '''Value''' – значение | ||
| + | ***** '''ServiceType''' – тип услуги | ||
| + | ***** '''Code''' – ключ услуги | ||
| + | ***** '''SubCode1''' – [[#Приложение 1: параметры услуги (ServiceType, Code, SubCode1, SubCode2)|доп. описание 1]] | ||
| + | ***** '''SubCode2''' – [[#Приложение 1: параметры услуги (ServiceType, Code, SubCode1, SubCode2)|доп. описание 2]] | ||
| + | ***** '''PacketId''' – пакет услуги | ||
| + | ***** '''PartnerId''' – партнер услуги | ||
| + | ***** '''CountryId''' – страна услуги | ||
| + | ***** '''CityId''' – город услуги | ||
| + | ***** '''Day''' – день предоставления услуги | ||
| + | ***** '''DurationInNight''' – продолжительность услуги в ночах | ||
| + | **** '''COAndSpecialsInfo''' – формирует, фильтрует и выдаёт списки применённых акций и ценовых блоков | ||
| + | ***** '''AppliedCostOffersKeys''' – коллекция идентификаторов всех применённых ценовых блоков к одной цене | ||
| + | ***** '''AppliedSpeciasInfo''' – коллекция всех применённых акций к одной цене, содержит информацию об условиях, с которыми применилась каждая акция | ||
| + | ****** '''SpecialKey''' – ключ акции | ||
| + | ****** '''SpecialName''' – название акции | ||
| + | ****** '''SpecialType''' – тип акции | ||
| + | ****** '''NewPrice''' – цена после применения акции | ||
| + | ****** '''OldPrice''' – цена до применения акции | ||
| + | ****** '''ShowOnline''' – нужно ли показывать акцию в поиске | ||
| + | ****** '''UntilDate''' – акция действует при совершении покупки до указанной даты | ||
| + | ****** '''Condition''' – json форма условия применения акции. Данное поле включает в себя следующие значения в зависимости от типа акции: | ||
| + | ******* ''NightsFrom'' (для типа ''PayStay'') – ночей от | ||
| + | ******* ''NightsTo'' (для типа ''PayStay'') – ночей до | ||
| + | ******* ''NightValue'' (для типа ''PayStay'') – значение ночи, которое соответствует заданному периоду | ||
| + | ******* ''OperationType'' (для типа ''PayStay'') – тип действия | ||
| + | ******* ''SpecialNightType'' (для типа ''PayStay'') – тип бесплатной ночи | ||
| + | ******* ''DurationFrom'' (для типа ''KickBack'') – ночей от | ||
| + | ******* ''DurationTo'' (для типа ''KickBack'') – ночей до | ||
| + | ******* ''Value'' (для типа ''KickBack'') – значение продолжительности, равное заданному периоду | ||
| + | ******* ''OperationType'' (для типа ''KickBack'') – тип действия | ||
| + | ******* ''NightsFrom'' (для типа ''EarlyBird'') – ночей от | ||
| + | ******* ''NightsTo'' (для типа ''EarlyBird'') – ночей до | ||
| + | ******* ''Discount'' (для типа ''EarlyBird'') – размер скидки | ||
| + | ******* ''OperationType'' (для типа ''EarlyBird'') – тип действия | ||
| + | **** '''COBySubCode''' – список применённых идентификаторов ценовых блоков по SubCode1 и SubCode2 | ||
| + | **** '''SpecialsBySubCode''' - список применённых акций по SubCode1 и SubCode2 | ||
| + | ***** '''SubCode1''' – объект [[#Приложение 1: параметры услуги (ServiceType, Code, SubCode1, SubCode2)|доп. описание 1]] | ||
| + | ***** '''SubCode2''' – объект [[#Приложение 1: параметры услуги (ServiceType, Code, SubCode1, SubCode2)|доп. описание 2]] | ||
| + | *** '''FlightWeight''' – | ||
| + | *** '''LinkingFlightsRules''' – объект правил связывания | ||
| + | **** '''notCombineDifferentAirlineRule''' – объект не скрещивать авиакомпании | ||
| + | ***** '''airlines''' – авиакомпании | ||
| + | ***** '''flightSettings''' – массив ключей ServiceId, PatternId, FlightId | ||
| + | ***** '''enabled''' – флаг включен/выключен | ||
| + | **** '''checkPlusMinus1CharterRule''' – объект Отличие номера рейса на 1 | ||
| + | ***** '''FlightSettingPairs''' – массив чартеров, для которых это правило будет выполняться | ||
| + | ***** '''enabled''' – флаг включен/выключен | ||
| + | **** '''notCombineDifferentTariffGroupRule''' – объект не комбинировать рейсы от разных классов перелетов | ||
| + | ***** '''FlightSettings''' – массив ключей ServiceId, PatternId, FlightId | ||
| + | ***** '''enabled''' – флаг включен/выключен | ||
| + | **** '''notCombineDifferentPartnerRule''' – объект не комбинировать рейсы от разных партнеров | ||
| + | ***** '''FlightSettings''' – массив ключей ServiceId, PatternId, FlightId | ||
| + | ***** '''enabled''' – флаг включен/выключен | ||
| + | **** '''departureCityEqualsArrivalCityRule''' – объект Город вылета = городу прилета | ||
| + | ***** '''FlightSettingPairs''' – чартеры, для которых это будет выполняться | ||
| + | ***** '''enabled''' – флаг включен/выключен | ||
| + | **** '''combineOnlySpecificChartersRule''' – объект не комбинировать различные классы перелетов | ||
| + | ***** '''settings''' – массив ключей чартеров CharterIds и ServiceId, PatternId, FlightId | ||
| + | ***** '''enabled''' – флаг включен/выключен | ||
| + | *** '''RouteSubVariants''' – подварианты услуг (используется в основном поиске) | ||
| + | ** '''SecondaryFiltersResult''' – доп. фильтры (не используется при вызове из корзины) | ||
| + | ** '''nodeId''' – уникальный идентификатор узла в кластере балансировки нагрузки [[Мастер-Тур(15):Балансировщик нагрузки HaProxy|HaProxy]] | ||
| − | |||
| − | http:// | + | <div class="toccolours mw-collapsible mw-collapsed" style="width:900px">Пример |
| + | <div class="mw-collapsible-content"> | ||
| + | <TABLE STYLE="border: 0.1em dashed #2F6FAB; margin: 8px; padding: 8px" WIDTH="99%"><TR><TD> | ||
| + | Вызов метода Tour (первоначальный вариант Tour в корзине для бронирования) | ||
| + | <syntaxhighlight lang="java" enclose="div"> | ||
| + | GET http://localhost:9000/TourSearchOwin/Tour?DepartureCityKeys=1&DestinationType=1&DestinationKey=90 | ||
| + | &Dates=31.03.18&Durations=8&AdultCount=2&CurrencyName=EU&HotelQuota=5&AviaQuota=5&BusTransferQuota=5 | ||
| + | &HotelScheme=[{"TemplateId":"1","DurationInNight":"7","Code":"707","PacketKey":"779","PartnerKey":"12667" | ||
| + | "GDSProviderId": "0","TotalTourDuration": "8"}] | ||
| + | &TourKey=100003404&TourDuration=8&PageNumber=1&PageSize=20&IsFromBasket=true&isFillSecondaryFilters=false | ||
| + | </syntaxhighlight> | ||
| + | Возвращаемый результат метода Tour (в формате JSON) | ||
| + | <syntaxhighlight lang="java" enclose="div"> | ||
| + | { | ||
| + | "CheckMessages": null, | ||
| + | "Message": { | ||
| + | "Key": 0, | ||
| + | "Value": null | ||
| + | }, | ||
| + | "Result": [ | ||
| + | { | ||
| + | "Key": 100003404, | ||
| + | "Name": "Удалить этот тур", | ||
| + | "TourUrl": "www.megatec.ru", | ||
| + | "BookingConditions": "Условия бронирования тура", | ||
| + | "DefaultManagers": [], | ||
| + | "Manager": 169, | ||
| + | "Branches": [], | ||
| + | "DetermineTheBranchOnCity": false, | ||
| + | "IndividualFlightSelection": true, | ||
| + | "RestrictionDateArrival": false, | ||
| + | "PriceUpdateForView": false, | ||
| + | "SelectFlightAutomatically": false, | ||
| + | "BaggageSearchOtherFares": false, | ||
| + | "Luggage": "withoutLuggage", | ||
| + | "LuggageForView": "all", | ||
| + | "LuggageForPrice": "all", | ||
| + | "FlightClass": "economy", | ||
| + | "Directs": "all", | ||
| + | "DirectsForView": "all", | ||
| + | "DirectsForPrice": "all", | ||
| + | "DepartureTimeLimit": "", | ||
| + | "SortingForView": "cheap", | ||
| + | "StartDate": "2018-02-25T00:00:00", | ||
| + | "MaxConnectionTime": 0 | ||
| + | "FullPaymentPeriod": 5, | ||
| + | "FullPaymentCheckin": null, | ||
| + | "PrePaymentPeriod": null, | ||
| + | "PrePaymentCheckin": 5, | ||
| + | "PrePaymentCu": null, | ||
| + | "PrePaymentPercent": 10.0, | ||
| + | "Duration": 4, | ||
| + | "DurationInNight": 3, | ||
| + | "Types": [2], | ||
| + | "Price": 260, | ||
| + | "Cost": 260, | ||
| + | "Penalties": null, | ||
| + | "Rate": "EU", | ||
| + | "CityDepature": { | ||
| + | "Key": 1, | ||
| + | "Value": "Москва" | ||
| + | }, | ||
| + | "CountryId": 90, | ||
| + | "Services": [ | ||
| + | { | ||
| + | "DepartureCity": { | ||
| + | "Key": 1, | ||
| + | "Value": "Москва" | ||
| + | }, | ||
| + | "DepartureCountry": { | ||
| + | "Key": 460, | ||
| + | "Value": "Россия" | ||
| + | }, | ||
| + | "ArrivalCity": { | ||
| + | "Key": 35, | ||
| + | "Value": "Вена" | ||
| + | }, | ||
| + | "ArrivalCountry": { | ||
| + | "Key": 90, | ||
| + | "Value": "Австрия" | ||
| + | }, | ||
| + | "DepartureAirport": { | ||
| + | "Key": "DME", | ||
| + | "Value": "Домодедово" | ||
| + | }, | ||
| + | "ArrivalAirport": { | ||
| + | "Key": "VIE1", | ||
| + | "Value": "Vena1" | ||
| + | }, | ||
| + | "Airline": { | ||
| + | "Key": "3G", | ||
| + | "Value": "Атлант Союз_d;kgmdlfkgnfdlkhndlfkhnlkfnh" | ||
| + | }, | ||
| + | "Aircraft": { | ||
| + | "Key": "319", | ||
| + | "Value": "AIRBUS " | ||
| + | }, | ||
| + | "Flight": { | ||
| + | "Key": 858, | ||
| + | "Value": "1111" | ||
| + | }, | ||
| + | "DepartureTime": "10:00:00", | ||
| + | "ArrivalTime": "11:59:00", | ||
| + | "EndDateTime": "2018-03-31T11:59:00", | ||
| + | "FlightDetails": [ { | ||
| + | "Tariff": { | ||
| + | "Key": 67, | ||
| + | "Code": "C", | ||
| + | "Name": "Бизнес класс" | ||
| + | }, | ||
| + | "Cost": 6.45, | ||
| + | "QuotaStatus": { | ||
| + | "PlacesStatus": 4, | ||
| + | "FreePlaces": 0, | ||
| + | "IsFewPlaces": false | ||
| + | }, | ||
| + | "PartnerId": 10760, | ||
| + | "ByPax": true, | ||
| + | "Partner": { | ||
| + | "Key": 0, | ||
| + | "Value": null | ||
| + | } | ||
| + | }], | ||
| + | "FlightSetting": { | ||
| + | "ServiceId": 3, | ||
| + | "PatternId": 14, | ||
| + | "FlightId": 14 | ||
| + | }, | ||
| + | "FlightSourceMode": 1, | ||
| + | "Id": 3, | ||
| + | "SvKey": 1, | ||
| + | "IsSubCode1": true, | ||
| + | "IsSubCode2": false, | ||
| + | "IsPartnerBasedOn": false, | ||
| + | "Day": 1, | ||
| + | "DurationInNight": 0, | ||
| + | "BeginDateTime": "2018-03-31T10:00:00", | ||
| + | "IsHooded": false, | ||
| + | "IsDeleted": false, | ||
| + | "IsNotCalculate": false, | ||
| + | "PacketId": 779, | ||
| + | "Index": 0 | ||
| + | }, | ||
| + | { | ||
| + | "Hotel": { | ||
| + | "Key": 707, | ||
| + | "Value": "Beim Theresianum" | ||
| + | }, | ||
| + | "City": { | ||
| + | "Key": 35, | ||
| + | "Value": "Вена" | ||
| + | }, | ||
| + | "Stars": { | ||
| + | "Key": 66, | ||
| + | "Value": "4*Boutique" | ||
| + | }, | ||
| + | "Resort": { | ||
| + | "Key": -1, | ||
| + | "Value": null | ||
| + | }, | ||
| + | "ImageURL": "", | ||
| + | "Http": null, | ||
| + | "Description": "", | ||
| + | "Country": { | ||
| + | "Key": 90, | ||
| + | "Value": "Австрия" | ||
| + | }, | ||
| + | "HotelDetails": [ | ||
| + | { | ||
| + | "HotelRoom": 10468, | ||
| + | "Room": { | ||
| + | "Key": 2, | ||
| + | "Value": "Double" | ||
| + | }, | ||
| + | "RoomCategory": { | ||
| + | "Key": 776, | ||
| + | "Value": "Standart133" | ||
| + | }, | ||
| + | "AccomodationType": { | ||
| + | "Key": 328, | ||
| + | "Value": "2Ad", | ||
| + | "AdultCount": 2, | ||
| + | "ChildCount": 0 | ||
| + | }, | ||
| + | "Pansion": { | ||
| + | "Key": 4, | ||
| + | "Value": "Завтрак" | ||
| + | }, | ||
| + | "Cost": 112.96, | ||
| + | "QuotaStatus": { | ||
| + | "PlacesStatus": 4, | ||
| + | "FreePlaces": 0, | ||
| + | "IsFewPlaces": false | ||
| + | }, | ||
| + | "PartnerId": 12667, | ||
| + | "ByPax": false, | ||
| + | "Partner": { | ||
| + | "Key": 12667, | ||
| + | "Value": "Партнер-покупатель1" | ||
| + | } | ||
| + | }, | ||
| + | { | ||
| + | "HotelRoom": 38636, | ||
| + | "Room": { | ||
| + | "Key": 2, | ||
| + | "Value": "Double" | ||
| + | }, | ||
| + | "RoomCategory": { | ||
| + | "Key": 3764, | ||
| + | "Value": "Standart Without window" | ||
| + | }, | ||
| + | "AccomodationType": { | ||
| + | "Key": 328, | ||
| + | "Value": "2Ad", | ||
| + | "AdultCount": 2, | ||
| + | "ChildCount": 0 | ||
| + | }, | ||
| + | "Pansion": { | ||
| + | "Key": 4, | ||
| + | "Value": "Завтрак" | ||
| + | }, | ||
| + | "Cost": 338.9, | ||
| + | "QuotaStatus": { | ||
| + | "PlacesStatus": 4, | ||
| + | "FreePlaces": 0, | ||
| + | "IsFewPlaces": false | ||
| + | }, | ||
| + | "PartnerId": 12667, | ||
| + | "ByPax": false, | ||
| + | "Partner": { | ||
| + | "Key": 12667, | ||
| + | "Value": "Партнер-покупатель1" | ||
| + | } | ||
| + | } | ||
| + | ], | ||
| + | "HotelTypes": [], | ||
| + | "Id": 1, | ||
| + | "SvKey": 3, | ||
| + | "IsSubCode1": true, | ||
| + | "IsSubCode2": true, | ||
| + | "IsPartnerBasedOn": false, | ||
| + | "Day": 1, | ||
| + | "DurationInNight": 7, | ||
| + | "BeginDateTime": "2018-03-31T11:59:00", | ||
| + | "EndDateTime": "2018-04-07T11:59:00", | ||
| + | "IsHooded": false, | ||
| + | "IsDeleted": false, | ||
| + | "IsNotCalculate": false, | ||
| + | "PacketId": 779, | ||
| + | "Index": 1 | ||
| + | }, | ||
| + | { | ||
| + | "DepartureCity": { | ||
| + | "Key": 35, | ||
| + | "Value": "Вена" | ||
| + | }, | ||
| + | "DepartureCountry": { | ||
| + | "Key": 90, | ||
| + | "Value": "Австрия" | ||
| + | }, | ||
| + | "ArrivalCity": { | ||
| + | "Key": 1, | ||
| + | "Value": "Москва" | ||
| + | }, | ||
| + | "ArrivalCountry": { | ||
| + | "Key": 460, | ||
| + | "Value": "Россия" | ||
| + | }, | ||
| + | "DepartureAirport": { | ||
| + | "Key": "VIE1", | ||
| + | "Value": "Vena1" | ||
| + | }, | ||
| + | "ArrivalAirport": { | ||
| + | "Key": "DME", | ||
| + | "Value": "Домодедово" | ||
| + | }, | ||
| + | "Airline": { | ||
| + | "Key": "7U", | ||
| + | "Value": "Авиаэнерго" | ||
| + | }, | ||
| + | "Aircraft": { | ||
| + | "Key": "727", | ||
| + | "Value": "Boeing" | ||
| + | }, | ||
| + | "Flight": { | ||
| + | "Key": 774, | ||
| + | "Value": "222" | ||
| + | }, | ||
| + | "DepartureTime": "00:00:00", | ||
| + | "ArrivalTime": "00:00:00", | ||
| + | "EndDateTime": "2018-04-07T00:00:00", | ||
| + | "FlightDetails": [ { | ||
| + | "Tariff": { | ||
| + | "Key": 67, | ||
| + | "Code": "C", | ||
| + | "Name": "Бизнес класс" | ||
| + | }, | ||
| + | "Cost": 1.61, | ||
| + | "QuotaStatus": { | ||
| + | "PlacesStatus": 4, | ||
| + | "FreePlaces": 0, | ||
| + | "IsFewPlaces": false | ||
| + | }, | ||
| + | "PartnerId": 10760, | ||
| + | "ByPax": true, | ||
| + | "Partner": { | ||
| + | "Key": 0, | ||
| + | "Value": null | ||
| + | } | ||
| + | }], | ||
| + | "FlightSetting": { | ||
| + | "ServiceId": 4, | ||
| + | "PatternId": 5, | ||
| + | "FlightId": 4 | ||
| + | }, | ||
| + | "FlightSourceMode": 1, | ||
| + | "Id": 4, | ||
| + | "SvKey": 1, | ||
| + | "IsSubCode1": true, | ||
| + | "IsSubCode2": false, | ||
| + | "IsPartnerBasedOn": false, | ||
| + | "Day": 8, | ||
| + | "DurationInNight": 0, | ||
| + | "BeginDateTime": "2018-04-07T00:00:00", | ||
| + | "IsHooded": false, | ||
| + | "IsDeleted": false, | ||
| + | "IsNotCalculate": false, | ||
| + | "PacketId": 779, | ||
| + | "Index": 3 | ||
| + | } | ||
| + | ], | ||
| + | "NotRouteServices": [ [ | ||
| + | { | ||
| + | "ServiceName": "экскурсия", | ||
| + | "City": { | ||
| + | "Key": 1046, | ||
| + | "Value": "Санто-Доминго" | ||
| + | }, | ||
| + | "Country": 6245, | ||
| + | "Code": { | ||
| + | "Key": 743, | ||
| + | "Value": "4" | ||
| + | }, | ||
| + | "ByScheduler": false, | ||
| + | "Details": [ { | ||
| + | "SubCode1": { | ||
| + | "Key": 37, | ||
| + | "Value": "Мини-автобус 10 чел." | ||
| + | }, | ||
| + | "SubCode2": { | ||
| + | "Key": null, | ||
| + | "Value": "" | ||
| + | }, | ||
| + | "Date": null, | ||
| + | "IsShowTransportPlan": false, | ||
| + | "Cost": 56.48, | ||
| + | "QuotaStatus": { | ||
| + | "PlacesStatus": 1, | ||
| + | "FreePlaces": 0, | ||
| + | "IsFewPlaces": false | ||
| + | }, | ||
| + | "PartnerId": 12667, | ||
| + | "ByPax": true, | ||
| + | "Partner": { | ||
| + | "Key": 0, | ||
| + | "Value": null | ||
| + | } | ||
| + | }], | ||
| + | "ParentId": null, | ||
| + | "PartnerBasedOnServiceTemplateId": null, | ||
| + | "Id": 7, | ||
| + | "SvKey": 4, | ||
| + | "IsSubCode1": true, | ||
| + | "IsSubCode2": false, | ||
| + | "IsPartnerBasedOn": true, | ||
| + | "Day": 1, | ||
| + | "DurationInNight": 0, | ||
| + | "BeginDateTime": "2018-03-31T00:00:00", | ||
| + | "EndDateTime": "2018-04-01T00:00:00", | ||
| + | "IsHooded": false, | ||
| + | "IsDeleted": true, | ||
| + | "IsNotCalculate": true, | ||
| + | "PacketId": 779, | ||
| + | "Index": 2 | ||
| + | } | ||
| + | ]], | ||
| + | "MinCostServicesComposition": [ | ||
| + | { | ||
| + | "Key": { | ||
| + | "TemplateId": 3, | ||
| + | "PatternId": 14, | ||
| + | "SettingId": 14 | ||
| + | }, | ||
| + | "Value": { | ||
| + | "ServiceType": 1, | ||
| + | "Code": 858, | ||
| + | "SubCode1": 67, | ||
| + | "SubCode2": 1, | ||
| + | "PacketId": 779, | ||
| + | "PartnerId": 10760, | ||
| + | "CountryId": 90, | ||
| + | "CityId": 35, | ||
| + | "Day": 1, | ||
| + | "DurationInNight": 0 | ||
| + | } | ||
| + | }, | ||
| + | { | ||
| + | "Key": { | ||
| + | "TemplateId": 1, | ||
| + | "PatternId": 0, | ||
| + | "SettingId": 0 | ||
| + | }, | ||
| + | "Value": { | ||
| + | "ServiceType": 3, | ||
| + | "Code": 707, | ||
| + | "SubCode1": 10468, | ||
| + | "SubCode2": 4, | ||
| + | "PacketId": 779, | ||
| + | "PartnerId": 12667, | ||
| + | "CountryId": 90, | ||
| + | "CityId": 35, | ||
| + | "Day": 1, | ||
| + | "DurationInNight": 7 | ||
| + | } | ||
| + | }, | ||
| + | { | ||
| + | "Key": { | ||
| + | "TemplateId": 4, | ||
| + | "PatternId": 5, | ||
| + | "SettingId": 4 | ||
| + | }, | ||
| + | "Value": { | ||
| + | "ServiceType": 1, | ||
| + | "Code": 774, | ||
| + | "SubCode1": 67, | ||
| + | "SubCode2": 35, | ||
| + | "PacketId": 779, | ||
| + | "PartnerId": 10760, | ||
| + | "CountryId": 460, | ||
| + | "CityId": 1, | ||
| + | "Day": 8, | ||
| + | "DurationInNight": 0 | ||
| + | } | ||
| + | } | ||
| + | ], | ||
| + | "FlightWeight": 2, | ||
| + | "LinkingFlightsRules": { | ||
| + | "notCombineDifferentAirlineRule": { | ||
| + | "airlines": ["AY2"], | ||
| + | "flightSettings": [], | ||
| + | "enabled": true | ||
| + | }, | ||
| + | "checkPlusMinus1CharterRule": { | ||
| + | "FlightSettingPairs": [], | ||
| + | "enabled": false | ||
| + | }, | ||
| + | "notCombineDifferentTariffGroupRule": { | ||
| + | "FlightSettings": [], | ||
| + | "enabled": true | ||
| + | }, | ||
| + | "notCombineDifferentPartnerRule": { | ||
| + | "FlightSettings": [], | ||
| + | "enabled": false | ||
| + | }, | ||
| + | "departureCityEqualsArrivalCityRule": { | ||
| + | "FlightSettingPairs": [], | ||
| + | "enabled": false | ||
| + | }, | ||
| + | "combineOnlySpecificChartersRule": { | ||
| + | "settings": [], | ||
| + | "enabled": false | ||
| + | } | ||
| + | }, | ||
| + | "RouteSubVariants": [] | ||
| + | } | ||
| + | ], | ||
| + | "SecondaryFiltersResult": null | ||
| + | } | ||
| + | </syntaxhighlight> | ||
| + | </TD></TR></TABLE> | ||
| + | </div></div><br /> | ||
| + | |||
| + | ===Выгрузка настройки отображения полей по туристам (TouristDataSettings)=== | ||
| + | Метод производит выгрузку настроек отображения полей по туристам. | ||
| + | * Формат запроса: | ||
| + | ** GET .../TourSearchOwin/TouristDataSettings? | ||
| + | * Принимаемые параметры ( '''*''' – обязательный): | ||
| + | ** '''countryId *''' – ключ страны, для которой будут выгружаться настройки | ||
| + | ** '''nodeId''' – уникальный идентификатор узла в кластере балансировки нагрузки [[Мастер-Тур(15):Балансировщик нагрузки HaProxy|HaProxy]] | ||
| + | |||
| + | * Возвращаемый результат: | ||
| + | ** '''TouristFieldsSettings''' – массив полей с информацией о туристах (из админки Мастер-Web) | ||
| + | *** '''lastname''' – объект фамилия туриста (лат) | ||
| + | **** '''Index''' – порядковый индекс элемента | ||
| + | **** '''Code''' – код поля | ||
| + | **** '''ApiCode''' – имя поля, которое будет использоваться при бронировании (например при вызове метода CreateReservation) | ||
| + | **** '''HeaderText''' – название поля | ||
| + | **** '''IsEdit''' – признак редактируемости поля | ||
| + | **** '''IsRequired''' – признак обязательности заполнения поля | ||
| + | **** '''IsVisible''' – видимость поля (видимое) | ||
| + | **** '''IsDisabled''' – служебный внутренний параметр. При работе с API не используется | ||
| + | **** '''Translit''' – настройки транслитерации (0 – нет, 1 – транслитерация, 2 – латиница) | ||
| + | **** '''LetterCase''' – настройки регистра (0 – по умолчанию, 1 – с заглавной, 2 – большие, 3 – маленькие) | ||
| + | *** '''patronymic''' – объект отчество туриста (лат) | ||
| + | *** '''sex''' – объект пол туриста | ||
| + | *** '''firstname''' – объект имя туриста (лат) | ||
| + | *** '''passportbywhom''' – объект кем выдан заграничный паспорт | ||
| + | *** '''birthplace''' – объект место рождения | ||
| + | *** '''birthdate''' – объект дата рождения | ||
| + | *** '''patronymicrus''' – объект отчество (рус) | ||
| + | *** '''lastnamerus''' – объект фамилия туриста (рус) | ||
| + | *** '''citizenid''' – объект ID туриста | ||
| + | *** '''passport''' – объект серия и номер заграничного паспорта | ||
| + | *** '''passportrus''' – объект серия и номер национального паспорт а | ||
| + | *** '''ismain''' – объект признак главного туриста | ||
| + | *** '''passportdate''' – объект дата выдачи заграничного паспорта | ||
| + | *** '''firstnamerus''' – объект имя туриста (рус) | ||
| + | *** '''passportbywhomrus''' – объект кем выдан национальный паспорт | ||
| + | *** '''citizenship''' – объект гражданство | ||
| + | *** '''passportdaterus''' – объект дата выдачи национального паспорта | ||
| + | *** '''phone''' – объект телефон | ||
| + | *** '''number''' – объект порядковый номер | ||
| + | *** '''passportdateend''' – объект дата окончания заграничного паспорта | ||
| + | *** '''email''' – объект e-mail туриста | ||
| + | ** '''PassportDurationOfExpiry''' – объект минимальный срок действия загранпаспорта туриста | ||
| + | *** '''StartPoint''' – точка отсчета | ||
| + | *** '''Duration''' – минимальная продолжительность | ||
| + | ** '''ChildAgeSetting''' – максимальный возраст ребенка, когда он считается ребенком (лет) | ||
| + | ** '''InfantAgeSetting''' – максимальный возраст младенца (месяцев) | ||
| + | ** '''nodeId''' – уникальный идентификатор узла в кластере балансировки нагрузки [[Мастер-Тур(15):Балансировщик нагрузки HaProxy|HaProxy]] | ||
| + | |||
| + | <div class="toccolours mw-collapsible mw-collapsed" style="width:900px">Пример | ||
| + | <div class="mw-collapsible-content"> | ||
| + | <TABLE STYLE="border: 0.1em dashed #2F6FAB; margin: 8px; padding: 8px" WIDTH="99%"><TR><TD> | ||
| + | Вызов метода TouristDataSettings | ||
| + | <syntaxhighlight lang="java" enclose="div"> | ||
| + | GET http://localhost:9000/TourSearchOwin/TouristDataSettings?countryId=90 | ||
| + | </syntaxhighlight> | ||
| + | Возвращаемый результат метода TouristDataSettings (в формате JSON) | ||
| + | <syntaxhighlight lang="java" enclose="div"> | ||
| + | { | ||
| + | "TouristFieldsSettings": { | ||
| + | "number": { | ||
| + | "Index": 0, | ||
| + | "Code": "number", | ||
| + | "ApiCode": "Number", | ||
| + | "HeaderText": "№", | ||
| + | "IsEdit": false, | ||
| + | "IsRequired": false, | ||
| + | "IsVisible": false, | ||
| + | "IsDisabled": false, | ||
| + | "Translit": 0, | ||
| + | "LetterCase": 0 | ||
| + | }, | ||
| + | "ismain": { | ||
| + | "Index": 1, | ||
| + | "Code": "ismain", | ||
| + | "ApiCode": "IsMain", | ||
| + | "HeaderText": "<img src=\"images/mw_main_tourist.gif\" border=\"0\" alt=\"Главный турист\" />", | ||
| + | "IsEdit": false, | ||
| + | "IsRequired": true, | ||
| + | "IsVisible": true, | ||
| + | "IsDisabled": true, | ||
| + | "Translit": 0, | ||
| + | "LetterCase": 0 | ||
| + | }, | ||
| + | "sex": { | ||
| + | "Index": 2, | ||
| + | "Code": "sex", | ||
| + | "ApiCode": "Sex", | ||
| + | "HeaderText": "Пол<font color=\"red\">*</font>", | ||
| + | "IsEdit": true, | ||
| + | "IsRequired": false, | ||
| + | "IsVisible": true, | ||
| + | "IsDisabled": false, | ||
| + | "Translit": 0, | ||
| + | "LetterCase": 0 | ||
| + | }, | ||
| + | "birthdate": { | ||
| + | "Index": 3, | ||
| + | "Code": "birthdate", | ||
| + | "ApiCode": "BirthDay", | ||
| + | "HeaderText": "Дата рождения<br />(dd.MM.yyyy)", | ||
| + | "IsEdit": false, | ||
| + | "IsRequired": false, | ||
| + | "IsVisible": true, | ||
| + | "IsDisabled": false, | ||
| + | "Translit": 0, | ||
| + | "LetterCase": 0 | ||
| + | }, | ||
| + | "birthplace": { | ||
| + | "Index": 4, | ||
| + | "Code": "birthplace", | ||
| + | "ApiCode": "BirthPlace", | ||
| + | "HeaderText": "Место рождения", | ||
| + | "IsEdit": false, | ||
| + | "IsRequired": false, | ||
| + | "IsVisible": false, | ||
| + | "IsDisabled": false, | ||
| + | "Translit": 0, | ||
| + | "LetterCase": 0 | ||
| + | }, | ||
| + | "citizenship": { | ||
| + | "Index": 5, | ||
| + | "Code": "citizenship", | ||
| + | "ApiCode": "Citizenship", | ||
| + | "HeaderText": "Гражданство", | ||
| + | "IsEdit": false, | ||
| + | "IsRequired": false, | ||
| + | "IsVisible": true, | ||
| + | "IsDisabled": false, | ||
| + | "Translit": 0, | ||
| + | "LetterCase": 0 | ||
| + | }, | ||
| + | "lastname": { | ||
| + | "Index": 6, | ||
| + | "Code": "lastname", | ||
| + | "ApiCode": "LastName", | ||
| + | "HeaderText": "Фамилия<font color=\"red\">*</font>", | ||
| + | "IsEdit": true, | ||
| + | "IsRequired": true, | ||
| + | "IsVisible": true, | ||
| + | "IsDisabled": false, | ||
| + | "Translit": 1, | ||
| + | "LetterCase": 2 | ||
| + | }, | ||
| + | "firstname": { | ||
| + | "Index": 7, | ||
| + | "Code": "firstname", | ||
| + | "ApiCode": "FirstName", | ||
| + | "HeaderText": "Имя<font color=\"red\">*</font>", | ||
| + | "IsEdit": true, | ||
| + | "IsRequired": true, | ||
| + | "IsVisible": true, | ||
| + | "IsDisabled": false, | ||
| + | "Translit": 1, | ||
| + | "LetterCase": 2 | ||
| + | }, | ||
| + | "patronymic": { | ||
| + | "Index": 8, | ||
| + | "Code": "patronymic", | ||
| + | "ApiCode": "Patronymic", | ||
| + | "HeaderText": "Отчество", | ||
| + | "IsEdit": false, | ||
| + | "IsRequired": false, | ||
| + | "IsVisible": false, | ||
| + | "IsDisabled": false, | ||
| + | "Translit": 1, | ||
| + | "LetterCase": 2 | ||
| + | }, | ||
| + | "passport": { | ||
| + | "Index": 9, | ||
| + | "Code": "passport", | ||
| + | "ApiCode": "InternationalPassportSeries/InternationalPassportNumber", | ||
| + | "HeaderText": "Загран-паспорт: Паспорт<br />(серия/номер)", | ||
| + | "IsEdit": false, | ||
| + | "IsRequired": false, | ||
| + | "IsVisible": true, | ||
| + | "IsDisabled": false, | ||
| + | "Translit": 1, | ||
| + | "LetterCase": 2 | ||
| + | }, | ||
| + | "passportdate": { | ||
| + | "Index": 10, | ||
| + | "Code": "passportdate", | ||
| + | "ApiCode": "InternationalPassportDateOfIssue", | ||
| + | "HeaderText": "Загран-паспорт: дата выдачи", | ||
| + | "IsEdit": false, | ||
| + | "IsRequired": false, | ||
| + | "IsVisible": false, | ||
| + | "IsDisabled": false, | ||
| + | "Translit": 0, | ||
| + | "LetterCase": 0 | ||
| + | }, | ||
| + | "passportdateend": { | ||
| + | "Index": 11, | ||
| + | "Code": "passportdateend", | ||
| + | "ApiCode": "InternationalPassportDateOfExpiry", | ||
| + | "HeaderText": "Действителен до<br />(dd.MM.yyyy)", | ||
| + | "IsEdit": false, | ||
| + | "IsRequired": false, | ||
| + | "IsVisible": true, | ||
| + | "IsDisabled": false, | ||
| + | "Translit": 0, | ||
| + | "LetterCase": 0 | ||
| + | }, | ||
| + | "passportbywhom": { | ||
| + | "Index": 12, | ||
| + | "Code": "passportbywhom", | ||
| + | "ApiCode": "internationalPassportByWhom", | ||
| + | "HeaderText": "Кем выдан", | ||
| + | "IsEdit": false, | ||
| + | "IsRequired": false, | ||
| + | "IsVisible": false, | ||
| + | "IsDisabled": false, | ||
| + | "Translit": 0, | ||
| + | "LetterCase": 0 | ||
| + | }, | ||
| + | "lastnamerus": { | ||
| + | "Index": 13, | ||
| + | "Code": "lastnamerus", | ||
| + | "ApiCode": "LastNameRus", | ||
| + | "HeaderText": "Нац. паспорт: Фамилия", | ||
| + | "IsEdit": false, | ||
| + | "IsRequired": false, | ||
| + | "IsVisible": false, | ||
| + | "IsDisabled": false, | ||
| + | "Translit": 0, | ||
| + | "LetterCase": 2 | ||
| + | }, | ||
| + | "firstnamerus": { | ||
| + | "Index": 14, | ||
| + | "Code": "firstnamerus", | ||
| + | "ApiCode": "FirstNameRus", | ||
| + | "HeaderText": "Нац. паспорт: Имя", | ||
| + | "IsEdit": false, | ||
| + | "IsRequired": false, | ||
| + | "IsVisible": false, | ||
| + | "IsDisabled": false, | ||
| + | "Translit": 0, | ||
| + | "LetterCase": 2 | ||
| + | }, | ||
| + | "patronymicrus": { | ||
| + | "Index": 15, | ||
| + | "Code": "patronymicrus", | ||
| + | "ApiCode": "PatronymicRus", | ||
| + | "HeaderText": "Нац. Отчество", | ||
| + | "IsEdit": false, | ||
| + | "IsRequired": false, | ||
| + | "IsVisible": false, | ||
| + | "IsDisabled": false, | ||
| + | "Translit": 0, | ||
| + | "LetterCase": 2 | ||
| + | }, | ||
| + | "passportrus": { | ||
| + | "Index": 16, | ||
| + | "Code": "passportrus", | ||
| + | "ApiCode": "PassportSeries/PassportNumber", | ||
| + | "HeaderText": "серия/номер", | ||
| + | "IsEdit": false, | ||
| + | "IsRequired": false, | ||
| + | "IsVisible": false, | ||
| + | "IsDisabled": false, | ||
| + | "Translit": 0, | ||
| + | "LetterCase": 0 | ||
| + | }, | ||
| + | "passportdaterus": { | ||
| + | "Index": 17, | ||
| + | "Code": "passportdaterus", | ||
| + | "ApiCode": "PassportDateOfIssue", | ||
| + | "HeaderText": "Нац. паспорт:дата выдачи", | ||
| + | "IsEdit": false, | ||
| + | "IsRequired": false, | ||
| + | "IsVisible": false, | ||
| + | "IsDisabled": false, | ||
| + | "Translit": 0, | ||
| + | "LetterCase": 0 | ||
| + | }, | ||
| + | "passportbywhomrus": { | ||
| + | "Index": 18, | ||
| + | "Code": "passportbywhomrus", | ||
| + | "ApiCode": "PassportByWhom", | ||
| + | "HeaderText": "Паспорт: кем выдан", | ||
| + | "IsEdit": false, | ||
| + | "IsRequired": false, | ||
| + | "IsVisible": false, | ||
| + | "IsDisabled": false, | ||
| + | "Translit": 0, | ||
| + | "LetterCase": 0 | ||
| + | }, | ||
| + | "phone": { | ||
| + | "Index": 19, | ||
| + | "Code": "phone", | ||
| + | "ApiCode": "Phone", | ||
| + | "HeaderText": "Телефон", | ||
| + | "IsEdit": false, | ||
| + | "IsRequired": false, | ||
| + | "IsVisible": true, | ||
| + | "IsDisabled": false, | ||
| + | "Translit": 0, | ||
| + | "LetterCase": 0 | ||
| + | }, | ||
| + | "email": { | ||
| + | "Index": 20, | ||
| + | "Code": "email", | ||
| + | "ApiCode": "Email", | ||
| + | "HeaderText": "Email", | ||
| + | "IsEdit": false, | ||
| + | "IsRequired": false, | ||
| + | "IsVisible": true, | ||
| + | "IsDisabled": false, | ||
| + | "Translit": 0, | ||
| + | "LetterCase": 0 | ||
| + | }, | ||
| + | "citizenid": { | ||
| + | "Index": 21, | ||
| + | "Code": "citizenid", | ||
| + | "ApiCode": "CitizenID", | ||
| + | "HeaderText": "ID туриста1", | ||
| + | "IsEdit": false, | ||
| + | "IsRequired": false, | ||
| + | "IsVisible": false, | ||
| + | "IsDisabled": false, | ||
| + | "Translit": 2, | ||
| + | "LetterCase": 2 | ||
| + | } | ||
| + | }, | ||
| + | "PassportDurationOfExpiry": { | ||
| + | "StartPoint": 0, | ||
| + | "Duration": 0 | ||
| + | }, | ||
| + | "ChildAgeSetting": 16, | ||
| + | "InfantAgeSetting": 24 | ||
| + | } | ||
| + | </syntaxhighlight> | ||
| + | </TD></TR></TABLE> | ||
| + | </div></div><br /> | ||
| + | |||
| + | ===Выгрузка услуг доплат к авиаперелетам (GetFlightsAdditionalServices)=== | ||
| + | Метод производит выгрузку услуг доплат к авиаперелетам. | ||
| + | * Формат запроса: | ||
| + | ** POST .../TourSearchOwin/GetFlightsAdditionalServices?nodeId=2147483647 | ||
| + | , где ''nodeId'' – уникальный идентификатор узла в кластере балансировки нагрузки [[Мастер-Тур(15):Балансировщик нагрузки HaProxy|HaProxy]] | ||
| + | |||
| + | * Принимаемые параметры headers ( '''*''' – обязательный): | ||
| + | ** '''Content-Type *''' – application/json | ||
| + | |||
| + | * Принимаемые параметры POST запроса ( '''*''' – обязательный): | ||
| + | ** '''TourProgramId''' – ключ турпрограммы | ||
| + | ** '''BeginDate''' – дата начала тура | ||
| + | ** '''Duration''' – продолжительность тура | ||
| + | ** '''Currency''' – код валюты | ||
| + | ** '''Services''' – массив услуг авиаперелетов для получения доплат | ||
| + | *** '''Service''' – объект услуга авиаперелет | ||
| + | **** '''ServiceType''' – тип услуги | ||
| + | **** '''Code''' – код услуги | ||
| + | **** '''SubCode1''' – [[#Приложение 1: параметры услуги (ServiceType, Code, SubCode1, SubCode2)|доп. описание 1]] услуги | ||
| + | **** '''SubCode2''' – [[#Приложение 1: параметры услуги (ServiceType, Code, SubCode1, SubCode2)|доп. описание 2]] услуги | ||
| + | **** '''Packet''' – ключ пакета услуги | ||
| + | **** '''Partner''' – ключ партнера услуги | ||
| + | **** '''Day''' – день предоставления услуги | ||
| + | **** '''DurationInNight''' – продолжительность услуги в ночах | ||
| + | **** '''City''' – ключ города | ||
| + | **** '''Country''' – страна услуги | ||
| + | **** '''Attributes''' – битовая маска атрибутов услуг | ||
| + | **** '''IsRemovable''' – (не обрабатывается) | ||
| + | **** '''Type''' – тип услуги в путевке (базовая дополнительная) | ||
| + | **** '''IsHooded''' – признак скрытая услуга | ||
| + | **** '''IsNotCalculated''' – признак не рассчитываемая услуга | ||
| + | **** '''BeginDateTimeString''' – дата и время начала услуги | ||
| + | **** '''EndDateTimeString''' – дата и время окончания услуги | ||
| + | **** '''TemplateId''' – шаблон услуги | ||
| + | **** '''Cost''' – цена услуги | ||
| + | **** '''ByPax''' – цена за человека | ||
| + | **** '''QuotaStatus''' – объект статус квотирования | ||
| + | ***** '''PlacesStatus''' – статус по квотам (есть места-1 / нет мест-2 / под запрос-4) | ||
| + | ***** '''FreePlaces''' – количество свободных мест, если удовлетворяются условия, заданные в настройке "Мало" и включена настройка "Отображать числовое значение оставшихся мест". Иначе возвращается 0. Если в данном параметре 0, то руководствоваться следует значением, полученном в параметре '''PlacesStatus'''. | ||
| + | ***** '''IsFewPlaces''' – выполнены ли условия, заданные в настройке "Мало": '''true''' – если заданы условия количества мест "Мало" и данные условия выполнены, '''false''' – если не заданы условия количества мест "Мало" или они заданы, но не выполнены. | ||
| + | **** '''Index''' – индекс услуги | ||
| + | **** '''IsRoute''' – признак маршрутная услуга | ||
| + | **** '''ServiceTemplateIndex''' – индекс шаблона услуги | ||
| + | *** '''TouristNumbersList''' – массив туристов, привязанных к услуге | ||
| + | ** '''Tourists''' – массив туристов | ||
| + | *** '''IsMain''' – главный турист | ||
| + | *** '''Number''' – порядковый номер туриста | ||
| + | *** '''AgeType''' – тип туриста (0 – взрослый, 1 – ребенок, 2 – инфант) | ||
| + | *** '''MaleFemaleSex''' – пол (0 – мужской, 1 – женский) | ||
| + | *** '''FirstName''' – имя (лат) | ||
| + | *** '''LastName''' – фамилия (лат) | ||
| + | *** '''Patronymic''' – отчество (лат) | ||
| + | *** '''FirstNameRus''' – имя (рус) | ||
| + | *** '''LastNameRus''' – фамилия (рус) | ||
| + | *** '''PatronymicRus''' – отчество (рус) | ||
| + | *** '''InternationalPassportSeries''' – серия загранпаспорта | ||
| + | *** '''InternationalPassportNumber''' – номер загранпаспорта | ||
| + | *** '''InternationalPassportDateOfIssue''' – дата выдачи загранпаспорта (YYYY-MM-DDThh:mm:ssz) | ||
| + | *** '''InternationalPassportDateOfIssueString''' – дата выдачи загранпаспорта в строковом формате (DD.MM.YYYY) | ||
| + | *** '''InternationalPassportDateOfExpiry''' – дата окончания действия загранпаспорта (YYYY-MM-DDThh:mm:ssz) | ||
| + | *** '''InternationalPassportDateOfExpiryString''' – дата окончания действия загранпаспорта в строковом формате (DD.MM.YYYY) | ||
| + | *** '''internationalPassportByWhom''' – кем выдан загранпаспорт | ||
| + | *** '''PassportSeries''' – серия паспорта | ||
| + | *** '''PassportNumber''' – номер паспорта | ||
| + | *** '''PassportDateOfIssue''' – дата выдачи паспорта (YYYY-MM-DDThh:mm:ssz) | ||
| + | *** '''PassportDateOfIssueString''' – дата выдачи паспорта в строковом формате (DD.MM.YYYY) | ||
| + | *** '''PassportByWhom''' – кем выдан паспорт | ||
| + | *** '''Citizenship''' – название страны | ||
| + | *** '''Phone''' – телефон | ||
| + | *** '''Email''' – e-mail | ||
| + | *** '''BirthDay''' – дата рождения (YYYY-MM-DDThh:mm:ssz) | ||
| + | *** '''BirthDayString''' – дата рождения в строковом формате (DD.MM.YYYY) | ||
| + | *** '''BirthPlace''' – место рождения | ||
| + | *** '''CitizenID''' – гражданство | ||
| + | *** '''Age''' – количество полных лет на момент окончания тура | ||
| + | |||
| + | * Возвращаемый результат: | ||
| + | ** '''Массив''' – массив объектов доплат к авиаперелетам | ||
| + | *** '''ServiceName''' – название услуги | ||
| + | *** '''City''' – объект город | ||
| + | *** '''Country''' – объект страна | ||
| + | **** '''Key''' – ключ страны | ||
| + | **** '''Value''' – название страны | ||
| + | *** '''Code''' – объект код услуги | ||
| + | **** '''Key''' – ключ услуги | ||
| + | **** '''Value''' – название услуги | ||
| + | *** '''ByScheduler''' – признак по расписанию | ||
| + | *** '''Details''' - объект детализация | ||
| + | **** '''SubCode1''' – объект [[#Приложение 1: параметры услуги (ServiceType, Code, SubCode1, SubCode2)|доп. описание 1]] | ||
| + | ***** '''Key''' – ключ | ||
| + | ***** '''Value''' – название | ||
| + | **** '''SubCode2''' – объект [[#Приложение 1: параметры услуги (ServiceType, Code, SubCode1, SubCode2)|доп. описание 2]] | ||
| + | ***** '''Key''' – ключ | ||
| + | ***** '''Value''' – название | ||
| + | **** '''Date''' – дата услуги | ||
| + | **** '''IsShowTransportPlan''' – признак показать транспортный план (для автобусов) | ||
| + | **** '''Cost''' – цена | ||
| + | **** '''QuotaStatus''' – объект статус квотирования | ||
| + | ***** '''PlacesStatus''' – статус по квотам (есть места-1 / нет мест-2 / под запрос-4) | ||
| + | ***** '''FreePlaces''' – количество свободных мест, если удовлетворяются условия, заданные в настройке "Мало" и включена настройка "Отображать числовое значение оставшихся мест". Иначе возвращается 0. Если в данном параметре 0, то руководствоваться следует значением, полученном в параметре '''PlacesStatus'''. | ||
| + | ***** '''IsFewPlaces''' – выполнены ли условия, заданные в настройке "Мало": '''true''' – если заданы условия количества мест "Мало" и данные условия выполнены, '''false''' – если не заданы условия количества мест "Мало" или они заданы, но не выполнены. | ||
| + | **** '''PartnerId''' – ключ партнера | ||
| + | **** '''ByPax''' – признак за человека | ||
| + | **** '''Partner''' – объект партнер (не заполняется) | ||
| + | ***** '''Key''' – ключ (не заполняется) | ||
| + | ***** '''Value''' – название (не заполняется) | ||
| + | *** '''ParentId''' – ключ родительской услуги | ||
| + | *** '''PartnerBasedOnServiceTemplateId''' – шаблон услуги для подбора поставщика | ||
| + | *** '''ShowOrder''' – порядок при печати (сортировка) по услуге | ||
| + | *** '''ShowOrderAddDescript1''' – порядок при печати (сортировка) по доп. описанию 1 | ||
| + | *** '''ShowOrderAddDescript2''' – порядок при печати (сортировка) по доп. описанию 2 | ||
| + | *** '''Id''' – идентификатор услуги | ||
| + | *** '''SvKey''' – тип услуги | ||
| + | *** '''IsSubCode1''' – признак наличия [[#Приложение 1: параметры услуги (ServiceType, Code, SubCode1, SubCode2)|доп. описания 1]] | ||
| + | *** '''IsSubCode2''' – признак наличия [[#Приложение 1: параметры услуги (ServiceType, Code, SubCode1, SubCode2)|доп. описания 2]] | ||
| + | *** '''IsPartnerBasedOn''' – признак услуга с приоритетным подбором поставщика | ||
| + | *** '''Day''' – день предоставления услуги | ||
| + | *** '''DurationInNight''' – продолжительность услуги в ночах | ||
| + | *** '''BeginDateTime''' – дата начала услуги | ||
| + | *** '''EndDateTime''' – дата окончания | ||
| + | *** '''IsHooded''' – признак скрытая | ||
| + | *** '''IsDeleted''' – признак удаляемая | ||
| + | *** '''IsNotCalculate''' – признак не рассчитываемая | ||
| + | *** '''PacketId''' – ключ пакета | ||
| + | *** '''Index''' – индекс шаблона услуги | ||
<div class="toccolours mw-collapsible mw-collapsed" style="width:900px">Пример | <div class="toccolours mw-collapsible mw-collapsed" style="width:900px">Пример | ||
<div class="mw-collapsible-content"> | <div class="mw-collapsible-content"> | ||
<TABLE STYLE="border: 0.1em dashed #2F6FAB; margin: 8px; padding: 8px" WIDTH="99%"><TR><TD> | <TABLE STYLE="border: 0.1em dashed #2F6FAB; margin: 8px; padding: 8px" WIDTH="99%"><TR><TD> | ||
| − | Вызов метода Duration | + | Вызов метода GetHotelsAdditionalServices |
| + | <syntaxhighlight lang="java" enclose="div"> | ||
| + | POST http://localhost:9000/TourSearchOwin/GetFlightsAdditionalServices?nodeId=2147483647 HTTP/1.1 | ||
| + | Content-Type: application/json | ||
| + | { | ||
| + | "TourProgramId": 100003404, | ||
| + | "BeginDate": "2018-04-16T00:00:00", | ||
| + | "Duration": 8, | ||
| + | "Currency": "EU", | ||
| + | "Services": [{ | ||
| + | "Service": { | ||
| + | "ServiceType": 1, | ||
| + | "Code": 858, | ||
| + | "SubCode1": 67, | ||
| + | "SubCode2": 1, | ||
| + | "Packet": 779, | ||
| + | "Partner": 10760, | ||
| + | "Day": 1, | ||
| + | "DurationInNight": 0, | ||
| + | "City": 35, | ||
| + | "Country": 90, | ||
| + | "Attributes": 0, | ||
| + | "IsRemovable": false, | ||
| + | "Type": 1, | ||
| + | "IsHooded": false, | ||
| + | "IsNotCalculated": false, | ||
| + | "BeginDateTimeString": "2018-04-16T10:00:00", | ||
| + | "EndDateTimeString": "2018-04-16T11:59:00", | ||
| + | "TemplateId": 3, | ||
| + | "Cost": 6, | ||
| + | "ByPax": true, | ||
| + | "QuotaStatus": { | ||
| + | "PlacesStatus": 4, | ||
| + | "FreePlaces": 0, | ||
| + | "IsFewPlaces": false | ||
| + | }, | ||
| + | "Index": 0, | ||
| + | "IsRoute": true, | ||
| + | "ServiceTemplateIndex": 0 | ||
| + | }, | ||
| + | "TouristNumbersList": [1, | ||
| + | 2] | ||
| + | }, | ||
| + | { | ||
| + | "Service": { | ||
| + | "ServiceType": 1, | ||
| + | "Code": 774, | ||
| + | "SubCode1": 67, | ||
| + | "SubCode2": 35, | ||
| + | "Packet": 779, | ||
| + | "Partner": 10760, | ||
| + | "Day": 8, | ||
| + | "DurationInNight": 0, | ||
| + | "City": 1, | ||
| + | "Country": 460, | ||
| + | "Attributes": 0, | ||
| + | "IsRemovable": false, | ||
| + | "Type": 1, | ||
| + | "IsHooded": false, | ||
| + | "IsNotCalculated": false, | ||
| + | "BeginDateTimeString": "2018-04-23T00:00:00", | ||
| + | "EndDateTimeString": "2018-04-23T00:00:00", | ||
| + | "TemplateId": 4, | ||
| + | "Cost": 2, | ||
| + | "ByPax": true, | ||
| + | "QuotaStatus": { | ||
| + | "PlacesStatus": 4, | ||
| + | "FreePlaces": 0, | ||
| + | "IsFewPlaces": false | ||
| + | }, | ||
| + | "Index": 3, | ||
| + | "IsRoute": true, | ||
| + | "ServiceTemplateIndex": 3 | ||
| + | }, | ||
| + | "TouristNumbersList": [1, | ||
| + | 2] | ||
| + | }], | ||
| + | "Tourists": [{ | ||
| + | "IsMain": true, | ||
| + | "Number": 1, | ||
| + | "AgeType": 0, | ||
| + | "MaleFemaleSex": 0, | ||
| + | "FirstName": "", | ||
| + | "LastName": "", | ||
| + | "Patronymic": "", | ||
| + | "FirstNameRus": "", | ||
| + | "LastNameRus": "", | ||
| + | "PatronymicRus": "", | ||
| + | "InternationalPassportSeries": "", | ||
| + | "InternationalPassportNumber": "", | ||
| + | "InternationalPassportDateOfIssue": "", | ||
| + | "InternationalPassportDateOfIssueString": "", | ||
| + | "InternationalPassportDateOfExpiry": "", | ||
| + | "InternationalPassportDateOfExpiryString": "", | ||
| + | "internationalPassportByWhom": "", | ||
| + | "PassportSeries": "", | ||
| + | "PassportNumber": "", | ||
| + | "PassportDateOfIssue": "", | ||
| + | "PassportDateOfIssueString": "", | ||
| + | "PassportByWhom": "", | ||
| + | "Citizenship": "", | ||
| + | "Phone": "", | ||
| + | "Email": "", | ||
| + | "BirthDay": null, | ||
| + | "BirthDayString": "", | ||
| + | "BirthPlace": "", | ||
| + | "CitizenID": "", | ||
| + | "Age": null | ||
| + | }, | ||
| + | { | ||
| + | "IsMain": false, | ||
| + | "Number": 2, | ||
| + | "AgeType": 0, | ||
| + | "MaleFemaleSex": 0, | ||
| + | "FirstName": "", | ||
| + | "LastName": "", | ||
| + | "Patronymic": "", | ||
| + | "FirstNameRus": "", | ||
| + | "LastNameRus": "", | ||
| + | "PatronymicRus": "", | ||
| + | "InternationalPassportSeries": "", | ||
| + | "InternationalPassportNumber": "", | ||
| + | "InternationalPassportDateOfIssue": "", | ||
| + | "InternationalPassportDateOfIssueString": "", | ||
| + | "InternationalPassportDateOfExpiry": "", | ||
| + | "InternationalPassportDateOfExpiryString": "", | ||
| + | "internationalPassportByWhom": "", | ||
| + | "PassportSeries": "", | ||
| + | "PassportNumber": "", | ||
| + | "PassportDateOfIssue": "", | ||
| + | "PassportDateOfIssueString": "", | ||
| + | "PassportByWhom": "", | ||
| + | "Citizenship": "", | ||
| + | "Phone": "", | ||
| + | "Email": "", | ||
| + | "BirthDay": null, | ||
| + | "BirthDayString": "", | ||
| + | "BirthPlace": "", | ||
| + | "CitizenID": "", | ||
| + | "Age": null | ||
| + | }] | ||
| + | } | ||
| + | </syntaxhighlight> | ||
| + | Возвращаемый результат метода GetFlightsAdditionalServices (в формате JSON) | ||
| + | <syntaxhighlight lang="java" enclose="div"> | ||
| + | [{ | ||
| + | "ServiceName": "Доплаты к авиаперелетам", | ||
| + | "City": null, | ||
| + | "Country": { | ||
| + | "Key": 90, | ||
| + | "Value": "Австрия" | ||
| + | }, | ||
| + | "Code": { | ||
| + | "Key": 357, | ||
| + | "Value": "Топливный сбор" | ||
| + | }, | ||
| + | "ByScheduler": false, | ||
| + | "Details": [{ | ||
| + | "SubCode1": { | ||
| + | "Key": 41, | ||
| + | "Value": "3G1111 DME-VIE1 ()" | ||
| + | }, | ||
| + | "SubCode2": { | ||
| + | "Key": null, | ||
| + | "Value": "" | ||
| + | }, | ||
| + | "Date": "2018-04-16T10:00:00", | ||
| + | "IsShowTransportPlan": false, | ||
| + | "Cost": 24, | ||
| + | "QuotaStatus": { | ||
| + | "PlacesStatus": 0, | ||
| + | "FreePlaces": 0, | ||
| + | "IsFewPlaces": false | ||
| + | }, | ||
| + | "PartnerId": 10760, | ||
| + | "ByPax": false, | ||
| + | "Partner": { | ||
| + | "Key": 0, | ||
| + | "Value": null | ||
| + | } | ||
| + | }], | ||
| + | "ParentId": null, | ||
| + | "PartnerBasedOnServiceTemplateId": null, | ||
| + | "ShowOrder": 0, | ||
| + | "ShowOrderAddDescript1": 0, | ||
| + | "ShowOrderAddDescript2": 0, | ||
| + | "Id": -1, | ||
| + | "SvKey": 12, | ||
| + | "IsSubCode1": false, | ||
| + | "IsSubCode2": false, | ||
| + | "IsPartnerBasedOn": false, | ||
| + | "Day": 1, | ||
| + | "DurationInNight": 0, | ||
| + | "BeginDateTime": "2018-04-16T10:00:00", | ||
| + | "EndDateTime": "0001-01-01T00:00:00", | ||
| + | "IsHooded": false, | ||
| + | "IsDeleted": false, | ||
| + | "IsNotCalculate": true, | ||
| + | "PacketId": 777, | ||
| + | "Index": 0 | ||
| + | }] | ||
| + | </syntaxhighlight> | ||
| + | </TD></TR></TABLE> | ||
| + | </div></div><br /> | ||
| + | |||
| + | ===Выгрузка услуг доплат к отелям (GetHotelsAdditionalServices)=== | ||
| + | Метод производит выгрузку услуг доплат к отелям. | ||
| + | * Формат запроса: | ||
| + | ** POST .../TourSearchOwin/GetHotelsAdditionalServices?nodeId=2147483647 | ||
| + | , где ''nodeId'' – уникальный идентификатор узла в кластере балансировки нагрузки [[Мастер-Тур(15):Балансировщик нагрузки HaProxy|HaProxy]] | ||
| + | |||
| + | * Принимаемые параметры headers ( '''*''' – обязательный): | ||
| + | ** '''Content-Type *''' – application/json | ||
| + | |||
| + | * Принимаемые параметры POST запроса ( '''*''' – обязательный): | ||
| + | ** '''TourProgramId''' – ключ турпрограммы | ||
| + | ** '''BeginDate''' – дата начала тура | ||
| + | ** '''Duration''' – продолжительность тура | ||
| + | ** '''Currency''' – код валюты | ||
| + | ** '''Services''' – массив услуг отелей для получения доплат | ||
| + | *** '''Service''' – объект услуга отель | ||
| + | **** '''ServiceType''' – тип услуги | ||
| + | **** '''Code''' – код услуги | ||
| + | **** '''SubCode1''' – [[#Приложение 1: параметры услуги (ServiceType, Code, SubCode1, SubCode2)|доп. описание 1]] услуги | ||
| + | **** '''SubCode2''' – [[#Приложение 1: параметры услуги (ServiceType, Code, SubCode1, SubCode2)|доп. описание 2]] услуги | ||
| + | **** '''Packet''' – ключ пакета услуги | ||
| + | **** '''Partner''' – ключ партнера услуги | ||
| + | **** '''Day''' – день предоставления услуги | ||
| + | **** '''DurationInNight''' – продолжительность услуги в ночах | ||
| + | **** '''City''' – ключ города | ||
| + | **** '''Country''' – страна услуги | ||
| + | **** '''Attributes''' – битовая маска атрибутов услуг | ||
| + | **** '''IsRemovable''' – (не обрабатывается) | ||
| + | **** '''Type''' – тип услуги в путевке (базовая дополнительная) | ||
| + | **** '''IsHooded''' – признак скрытая услуга | ||
| + | **** '''IsNotCalculated''' – признак не рассчитываемая услуга | ||
| + | **** '''BeginDateTimeString''' – дата и время начала услуги (YYYY-MM-DDThh:mm:ss) | ||
| + | **** '''EndDateTimeString''' – дата и время окончания услуги (YYYY-MM-DDThh:mm:ss) | ||
| + | **** '''TemplateId''' – шаблон услуги | ||
| + | **** '''Cost''' – цена услуги | ||
| + | **** '''ByPax''' – цена за человека | ||
| + | **** '''QuotaStatus''' – объект статус квотирования | ||
| + | ***** '''PlacesStatus''' – статус по квотам (есть места-1 / нет мест-2 / под запрос-4) | ||
| + | ***** '''FreePlaces''' – количество свободных мест, если удовлетворяются условия, заданные в настройке "Мало" и включена настройка "Отображать числовое значение оставшихся мест". Иначе возвращается 0. Если в данном параметре 0, то руководствоваться следует значением, полученном в параметре '''PlacesStatus'''. | ||
| + | ***** '''IsFewPlaces''' – выполнены ли условия, заданные в настройке "Мало": '''true''' – если заданы условия количества мест "Мало" и данные условия выполнены, '''false''' – если не заданы условия количества мест "Мало" или они заданы, но не выполнены. | ||
| + | **** '''Index''' – индекс услуги | ||
| + | **** '''IsRoute''' – признак маршрутная услуга | ||
| + | **** '''ServiceTemplateIndex''' – индекс шаблона услуги | ||
| + | **** '''RemoteId''' – (в доплатах не используется) | ||
| + | *** '''TouristNumbersList''' – массив туристов, привязанных к услуге | ||
| + | ** '''Tourists''' – массив туристов | ||
| + | *** '''IsMain''' – главный турист | ||
| + | *** '''Number''' – порядковый номер туриста | ||
| + | *** '''AgeType''' – тип туриста (0 – взрослый, 1 – ребенок, 2 – инфант) | ||
| + | *** '''MaleFemaleSex''' – пол (0 – мужской, 1 – женский) | ||
| + | *** '''FirstName''' – имя (лат) | ||
| + | *** '''LastName''' – фамилия (лат) | ||
| + | *** '''Patronymic''' – отчество (лат) | ||
| + | *** '''FirstNameRus''' – имя (рус) | ||
| + | *** '''LastNameRus''' – фамилия (рус) | ||
| + | *** '''PatronymicRus''' – отчество (рус) | ||
| + | *** '''InternationalPassportSeries''' – серия загранпаспорта | ||
| + | *** '''InternationalPassportNumber''' – номер загранпаспорта | ||
| + | *** '''InternationalPassportDateOfIssue''' – дата выдачи загранпаспорта (YYYY-MM-DDThh:mm:ssz) | ||
| + | *** '''InternationalPassportDateOfIssueString''' – дата выдачи загранпаспорта в строковом формате (DD.MM.YYYY) | ||
| + | *** '''InternationalPassportDateOfExpiry''' – дата окончания действия загранпаспорта (YYYY-MM-DDThh:mm:ssz) | ||
| + | *** '''InternationalPassportDateOfExpiryString''' – дата окончания действия загранпаспорта в строковом формате (DD.MM.YYYY) | ||
| + | *** '''internationalPassportByWhom''' – кем выдан загранпаспорт | ||
| + | *** '''PassportSeries''' – серия паспорта | ||
| + | *** '''PassportNumber''' – номер паспорта | ||
| + | *** '''PassportDateOfIssue''' – дата выдачи паспорта (YYYY-MM-DDThh:mm:ssz) | ||
| + | *** '''PassportDateOfIssueString''' – дата выдачи паспорта в строке (DD.MM.YYYY) | ||
| + | *** '''PassportByWhom''' – кем выдан паспорт | ||
| + | *** '''Citizenship''' – название страны | ||
| + | *** '''Phone''' – телефон | ||
| + | *** '''Email''' – e-mail | ||
| + | *** '''BirthDay''' – дата рождения (YYYY-MM-DDThh:mm:ssz) | ||
| + | *** '''BirthDayString''' – дата рождения в строковом формате (DD.MM.YYYY) | ||
| + | *** '''BirthPlace''' – место рождения | ||
| + | *** '''CitizenID''' – гражданство | ||
| + | *** '''Age''' – количество полных лет на момент окончания тура | ||
| + | |||
| + | * Возвращаемый результат: | ||
| + | ** '''Массив''' – массив объектов связок Возраст-Отель-Доп. услуги | ||
| + | *** '''Age''' – возраст туриста | ||
| + | *** '''Hotel''' – объект отель | ||
| + | **** '''ServiceType''' – тип услуги | ||
| + | **** '''Code''' – код услуги | ||
| + | **** '''SubCode1''' – [[#Приложение 1: параметры услуги (ServiceType, Code, SubCode1, SubCode2)|доп. описание 1]] | ||
| + | **** '''SubCode2''' – [[#Приложение 1: параметры услуги (ServiceType, Code, SubCode1, SubCode2)|доп. описание 2]] | ||
| + | **** '''PacketId''' – ключ пакета | ||
| + | **** '''PartnerId''' – ключ партнера | ||
| + | **** '''Day''' – день предоставления услуги | ||
| + | **** '''BeginTime''' – время начала услуги | ||
| + | **** '''EndTime''' – время окончания услуги | ||
| + | **** '''DurationInNight''' – продолжительность услуги в ночах | ||
| + | **** '''Attributes''' – маска атрибутов услуги | ||
| + | **** '''CountryId''' – ключ страны услуги | ||
| + | **** '''CityId''' – ключ города | ||
| + | **** '''Type''' – тип услуги в путевке | ||
| + | **** '''ShowOrder''' – порядок при печати (сортировка) по услуге | ||
| + | **** '''ShowOrderAddDescript1''' – порядок при печати (сортировка) по доп. описанию 1 | ||
| + | **** '''ShowOrderAddDescript2''' – порядок при печати (сортировка) по доп. описанию 2 | ||
| + | **** '''IsCommission''' – признак, комиссионная ли услуга | ||
| + | **** '''BaseFlightsParams''' – параметр не обрабатывается | ||
| + | *** '''AdditionalServices''' – массив доплат | ||
| + | *** '''ServiceName''' – название услуги | ||
| + | *** '''City''' – объект город | ||
| + | *** '''Country''' – ключ страны | ||
| + | *** '''Code''' – объект код услуги | ||
| + | **** '''Key''' – ключ услуги | ||
| + | **** '''Value''' – название услуги | ||
| + | *** '''ByScheduler''' – признак по расписанию | ||
| + | *** '''Details''' - объект детализация | ||
| + | **** '''SubCode1''' – объект [[#Приложение 1: параметры услуги (ServiceType, Code, SubCode1, SubCode2)|доп. описание 1]] | ||
| + | ***** '''Key''' – ключ | ||
| + | ***** '''Value''' – название | ||
| + | **** '''SubCode2''' – объект [[#Приложение 1: параметры услуги (ServiceType, Code, SubCode1, SubCode2)|доп. описание 2]] | ||
| + | ***** '''Key''' – ключ | ||
| + | ***** '''Value''' – название | ||
| + | **** '''Date''' – дата услуги | ||
| + | **** '''IsShowTransportPlan''' – признак показать транспортный план (для автобусов) | ||
| + | **** '''Cost''' – цена | ||
| + | **** '''QuotaStatus''' – объект статус квотирования | ||
| + | ***** '''PlacesStatus''' – статус по квотам (есть места-1 / нет мест-2 / под запрос-4) | ||
| + | ***** '''FreePlaces''' – количество свободных мест, если удовлетворяются условия, заданные в настройке "Мало" и включена настройка "Отображать числовое значение оставшихся мест". Иначе возвращается 0. Если в данном параметре 0, то руководствоваться следует значением, полученном в параметре '''PlacesStatus'''. | ||
| + | ***** '''IsFewPlaces''' – выполнены ли условия, заданные в настройке "Мало": '''true''' – если заданы условия количества мест "Мало" и данные условия выполнены, '''false''' – если не заданы условия количества мест "Мало" или они заданы, но не выполнены. | ||
| + | **** '''PartnerId''' – ключ партнера | ||
| + | **** '''ByPax''' – признак за человека | ||
| + | **** '''Partner''' – объект партнер (не заполняется) | ||
| + | ***** '''Key''' – ключ (не заполняется) | ||
| + | ***** '''Value''' – название (не заполняется) | ||
| + | *** '''ParentId''' – ключ родительской услуги | ||
| + | *** '''PartnerBasedOnServiceTemplateId''' – шаблон услуги для подбора поставщика | ||
| + | *** '''ShowOrder''' – порядок при печати (сортировка) по услуге | ||
| + | *** '''ShowOrderAddDescript1''' – порядок при печати (сортировка) по доп. описанию 1 | ||
| + | *** '''ShowOrderAddDescript2''' – порядок при печати (сортировка) по доп. описанию 2 | ||
| + | *** '''Id''' – идентификатор услуги | ||
| + | *** '''SvKey''' – тип услуги | ||
| + | *** '''IsSubCode1''' – признак наличия [[#Приложение 1: параметры услуги (ServiceType, Code, SubCode1, SubCode2)|доп. описания 1]] | ||
| + | *** '''IsSubCode2''' – признак наличия [[#Приложение 1: параметры услуги (ServiceType, Code, SubCode1, SubCode2)|доп. описания 2]] | ||
| + | *** '''IsPartnerBasedOn''' – признак услуга с приоритетным подбором поставщика | ||
| + | *** '''Day''' – день предоставления услуги | ||
| + | *** '''DurationInNight''' – продолжительность услуги в ночах | ||
| + | *** '''BeginDateTime''' – дата начала услуги | ||
| + | *** '''EndDateTime''' – дата окончания | ||
| + | *** '''IsHooded''' – признак скрытая | ||
| + | *** '''IsDeleted''' – признак удаляемая | ||
| + | *** '''IsNotCalculate''' – признак не рассчитываемая | ||
| + | *** '''PacketId''' – ключ пакета | ||
| + | *** '''Index''' – индекс шаблона услуги | ||
| + | |||
| + | <div class="toccolours mw-collapsible mw-collapsed" style="width:900px">Пример | ||
| + | <div class="mw-collapsible-content"> | ||
| + | <TABLE STYLE="border: 0.1em dashed #2F6FAB; margin: 8px; padding: 8px" WIDTH="99%"><TR><TD> | ||
| + | Вызов метода GetHotelsAdditionalServices | ||
<syntaxhighlight lang="java" enclose="div"> | <syntaxhighlight lang="java" enclose="div"> | ||
| − | http://localhost:9000/TourSearchOwin/ | + | POST http://localhost:9000/TourSearchOwin/GetHotelsAdditionalServices?nodeId=2147483647 HTTP/1.1 |
| + | Content-Type: application/json | ||
| + | |||
| + | { "TourProgramId": 100003404, | ||
| + | "BeginDate": "2018-04-16T00:00:00", | ||
| + | "Duration": 8, | ||
| + | "Currency": "EU", | ||
| + | "Services": [{ | ||
| + | "Service": { | ||
| + | "ServiceType": 3, | ||
| + | "Code": 178, | ||
| + | "SubCode1": 46387, | ||
| + | "SubCode2": 57, | ||
| + | "Packet": 779, | ||
| + | "Partner": 12667, | ||
| + | "Day": 1, | ||
| + | "DurationInNight": 7, | ||
| + | "City": 35, | ||
| + | "Country": 90, | ||
| + | "Attributes": 0, | ||
| + | "IsRemovable": false, | ||
| + | "Type": 1, | ||
| + | "IsHooded": false, | ||
| + | "IsNotCalculated": false | ||
| + | "BeginDateTimeString": "2018-04-16T11:59:00" | ||
| + | "EndDateTimeString": "2018-04-23T11:59:00", | ||
| + | "TemplateId": 1, | ||
| + | "Cost": 122, | ||
| + | "ByPax": false, | ||
| + | "QuotaStatus": { | ||
| + | "PlacesStatus": 4, | ||
| + | "FreePlaces": 0, | ||
| + | "IsFewPlaces": false | ||
| + | }, | ||
| + | "Index": 1, | ||
| + | "IsRoute": true, | ||
| + | "ServiceTemplateIndex": 1, | ||
| + | "RemoteId": null | ||
| + | }, | ||
| + | "TouristNumbersList": [1, | ||
| + | 2 | ||
| + | }], | ||
| + | "Tourists": [{ | ||
| + | "IsMain": true, | ||
| + | "Number": 1, | ||
| + | "AgeType": 0, | ||
| + | "MaleFemaleSex": 0, | ||
| + | "FirstName": "", | ||
| + | "LastName": "", | ||
| + | "Patronymic": "", | ||
| + | "FirstNameRus": "", | ||
| + | "LastNameRus": "", | ||
| + | "PatronymicRus": "", | ||
| + | "InternationalPassportSeries": "", | ||
| + | "InternationalPassportNumber": "", | ||
| + | "InternationalPassportDateOfIssue": "", | ||
| + | "InternationalPassportDateOfIssueString": "", | ||
| + | "InternationalPassportDateOfExpiry": "", | ||
| + | "InternationalPassportDateOfExpiryString": "", | ||
| + | "internationalPassportByWhom": "", | ||
| + | "PassportSeries": "", | ||
| + | "PassportNumber": "", | ||
| + | "PassportDateOfIssue": "", | ||
| + | "PassportDateOfIssueString": "", | ||
| + | "PassportByWhom": "", | ||
| + | "Citizenship": "", | ||
| + | "Phone": "", | ||
| + | "Email": "", | ||
| + | "BirthDay": null, | ||
| + | "BirthDayString": "", | ||
| + | "BirthPlace": "", | ||
| + | "CitizenID": "", | ||
| + | "Age": null | ||
| + | }, | ||
| + | { | ||
| + | "IsMain": false, | ||
| + | "Number": 2, | ||
| + | "AgeType": 0, | ||
| + | "MaleFemaleSex": 0, | ||
| + | "FirstName": "", | ||
| + | "LastName": "", | ||
| + | "Patronymic": "", | ||
| + | "FirstNameRus": "", | ||
| + | "LastNameRus": "", | ||
| + | "PatronymicRus": "", | ||
| + | "InternationalPassportSeries": "", | ||
| + | "InternationalPassportNumber": "", | ||
| + | "InternationalPassportDateOfIssue": "", | ||
| + | "InternationalPassportDateOfIssueString": "", | ||
| + | "InternationalPassportDateOfExpiry": "", | ||
| + | "InternationalPassportDateOfExpiryString": "", | ||
| + | "internationalPassportByWhom": "", | ||
| + | "PassportSeries": "", | ||
| + | "PassportNumber": "", | ||
| + | "PassportDateOfIssue": "", | ||
| + | "PassportDateOfIssueString": "", | ||
| + | "PassportByWhom": "", | ||
| + | "Citizenship": "", | ||
| + | "Phone": "", | ||
| + | "Email": "", | ||
| + | "BirthDay": null, | ||
| + | "BirthDayString": "", | ||
| + | "BirthPlace": "", | ||
| + | "CitizenID": "", | ||
| + | "Age": null | ||
| + | }] | ||
| + | } | ||
</syntaxhighlight> | </syntaxhighlight> | ||
| − | Возвращаемый результат метода | + | Возвращаемый результат метода GetHotelsAdditionalServices (в формате JSON) |
<syntaxhighlight lang="java" enclose="div"> | <syntaxhighlight lang="java" enclose="div"> | ||
| − | [ | + | [{ |
| − | + | "Age": 17, | |
| − | + | "Hotel": { | |
| − | + | "ServiceType": 3, | |
| − | + | "Code": 178, | |
| − | + | "SubCode1": 46387, | |
| − | + | "SubCode2": 57, | |
| − | ] | + | "PacketId": 779, |
| + | "PartnerId": 12667, | ||
| + | "Day": 1, | ||
| + | "BeginTime": "11:59:00", | ||
| + | "EndTime": "11:59:00", | ||
| + | "DurationInNight": 7, | ||
| + | "Attributes": 0, | ||
| + | "CountryId": 90, | ||
| + | "CityId": 35, | ||
| + | "Type": 1, | ||
| + | "ShowOrder": 1, | ||
| + | "ShowOrderAddDescript1": 0, | ||
| + | "ShowOrderAddDescript2": 0, | ||
| + | "IsCommission": false, | ||
| + | "BaseFlightsParams": null | ||
| + | }, | ||
| + | "AdditionalServices": [{ | ||
| + | "ServiceName": "Доплаты к отелям", | ||
| + | "City": null, | ||
| + | "Country": { | ||
| + | "Key": 90, | ||
| + | "Value": "Австрия" | ||
| + | }, | ||
| + | "Code": { | ||
| + | "Key": 364, | ||
| + | "Value": "Праздник" | ||
| + | }, | ||
| + | "ByScheduler": false, | ||
| + | "Details": [{ | ||
| + | "SubCode1": { | ||
| + | "Key": 109, | ||
| + | "Value": "Ananas" | ||
| + | }, | ||
| + | "SubCode2": { | ||
| + | "Key": null, | ||
| + | "Value": "" | ||
| + | }, | ||
| + | "Date": "2018-04-16T11:59:00", | ||
| + | "IsShowTransportPlan": false, | ||
| + | "Cost": 2, | ||
| + | "QuotaStatus": { | ||
| + | "PlacesStatus": 0, | ||
| + | "FreePlaces": 0, | ||
| + | "IsFewPlaces": false | ||
| + | }, | ||
| + | "PartnerId": 12667, | ||
| + | "ByPax": false, | ||
| + | "Partner": { | ||
| + | "Key": 0, | ||
| + | "Value": null | ||
| + | } | ||
| + | }], | ||
| + | "ParentId": null, | ||
| + | "PartnerBasedOnServiceTemplateId": null, | ||
| + | "ShowOrder": 0, | ||
| + | "ShowOrderAddDescript1": 0, | ||
| + | "ShowOrderAddDescript2": 0, | ||
| + | "Id": -1, | ||
| + | "SvKey": 13, | ||
| + | "IsSubCode1": false, | ||
| + | "IsSubCode2": false, | ||
| + | "IsPartnerBasedOn": false, | ||
| + | "Day": 1, | ||
| + | "DurationInNight": 0, | ||
| + | "BeginDateTime": "2018-04-16T11:59:00", | ||
| + | "EndDateTime": "0001-01-01T00:00:00", | ||
| + | "IsHooded": false, | ||
| + | "IsDeleted": false, | ||
| + | "IsNotCalculate": true, | ||
| + | "PacketId": 879, | ||
| + | "Index": 1 | ||
| + | }] | ||
| + | }] | ||
</syntaxhighlight> | </syntaxhighlight> | ||
</TD></TR></TABLE> | </TD></TR></TABLE> | ||
</div></div><br /> | </div></div><br /> | ||
| + | ===Расчет индивидуальных услуг (CalculateIndividualServiceCosts)=== | ||
| + | Метод производит расчет услуг с индивидуальным выбором у туристов. | ||
| + | * Формат запроса: | ||
| + | ** POST .../TourSearchOwin/CalculateIndividualServiceCosts?nodeId=2147483647 | ||
| + | , где ''nodeId'' – уникальный идентификатор узла в кластере балансировки нагрузки [[Мастер-Тур(15):Балансировщик нагрузки HaProxy|HaProxy]] | ||
| + | * Принимаемые параметры headers ( '''*''' – обязательный): | ||
| + | ** '''Content-Type *''' – application/json | ||
| + | * Принимаемые параметры POST запроса ( '''*''' – обязательный): | ||
| + | ** '''TourProgramId''' – ключ тура | ||
| + | ** '''TourDate''' – дата тура | ||
| + | ** '''TourDuration''' – продолжительность тура | ||
| + | ** '''Currency''' – код валюты | ||
| + | ** '''Services''' – массив индивидуальных услуг | ||
| + | *** '''ServiceType''' – тип услуги | ||
| + | *** '''Code''' – код услуги | ||
| + | *** '''SubCode1''' – [[#Приложение 1: параметры услуги (ServiceType, Code, SubCode1, SubCode2)|доп. описание 1]] | ||
| + | *** '''SubCode2''' – [[#Приложение 1: параметры услуги (ServiceType, Code, SubCode1, SubCode2)|доп. описание 2]] | ||
| + | *** '''Packet''' – ключ пакета | ||
| + | *** '''Partner''' – ключ партнера | ||
| + | *** '''Day''' – день предоставления услуги | ||
| + | *** '''DurationInNight''' – продолжительность услуги в ночах | ||
| + | *** '''City''' – объект город | ||
| + | *** '''Country''' – страна услуги | ||
| + | *** '''Attributes''' – маска атрибутов услуги | ||
| + | *** '''Type''' – тип услуги | ||
| + | *** '''IsHooded''' – признак скрытая | ||
| + | *** '''IsNotCalculated''' – признак не рассчитываемая | ||
| + | *** '''BeginDateTimeString''' – дата начала услуги в строке | ||
| + | *** '''EndDateTimeString''' – дата начала услуги в строке | ||
| + | *** '''TemplateId''' – номер шаблона услуги | ||
| + | *** '''Cost''' – цена услуги | ||
| + | *** '''ByPax''' – цена за человека | ||
| + | *** '''QuotaStatus''' – объект статус квотирования | ||
| + | **** '''PlacesStatus''' – статус по квотам (есть места / нет мест / под запрос) | ||
| + | **** '''FreePlaces''' – количество свободных мест, если удовлетворяются условия, заданные в настройке "Мало" и включена настройка "Отображать числовое значение оставшихся мест". Иначе возвращается 0. Если в данном параметре 0, то руководствоваться следует значением, полученном в параметре '''PlacesStatus'''. | ||
| + | **** '''IsFewPlaces''' – выполнены ли условия, заданные в настройке "Мало": '''true''' – если заданы условия количества мест "Мало" и данные условия выполнены, '''false''' – если не заданы условия количества мест "Мало" или они заданы, но не выполнены. | ||
| + | *** '''Index''' – индекс услуги | ||
| + | *** '''IsRoute''' – признак маршрутная услуга | ||
| + | *** '''ServiceTemplateIndex''' – индекс шаблона услуги | ||
| + | *** '''RemoteId''' – (не используется) | ||
| + | ** '''Ages''' – массив возрастов туристов | ||
| − | + | * Возвращаемый результат: | |
| + | ** '''Массив''' – массив связок Возраст-Услуга-Цена | ||
| + | *** '''Age''' – возраст | ||
| + | *** '''Service''' – объект услуга | ||
| + | **** '''ServiceType''' – тип услуги | ||
| + | **** '''Code''' – код услуги | ||
| + | **** '''SubCode1''' – [[#Приложение 1: параметры услуги (ServiceType, Code, SubCode1, SubCode2)|доп. описание 1]] | ||
| + | **** '''SubCode2''' – [[#Приложение 1: параметры услуги (ServiceType, Code, SubCode1, SubCode2)|доп. описание 2]] | ||
| + | **** '''PacketId''' – ключ пакета услуги | ||
| + | **** '''PartnerId''' – ключ партнера | ||
| + | **** '''Day''' – день предоставления услуги | ||
| + | **** '''BeginTime''' – время начала услуги | ||
| + | **** '''EndTime''' – время окончания услуги | ||
| + | **** '''DurationInNight''' – продолжительность услуги в ночах | ||
| + | **** '''Attributes''' – маска атрибутов услуги | ||
| + | **** '''CountryId''' – ключ страны | ||
| + | **** '''CityId''' – ключ города | ||
| + | **** '''Type''' – тип услуги | ||
| + | **** '''ShowOrder''' – порядковый номер | ||
| + | *** '''SimpleServiceCost''' – объект цена | ||
| + | **** '''Brutto''' – брутто | ||
| + | **** '''Discount''' – скидка | ||
| + | ** '''nodeId''' – уникальный идентификатор узла в кластере балансировки нагрузки [[Мастер-Тур(15):Балансировщик нагрузки HaProxy|HaProxy]] | ||
| + | <div class="toccolours mw-collapsible mw-collapsed" style="width:900px">Пример | ||
| + | <div class="mw-collapsible-content"> | ||
| + | <TABLE STYLE="border: 0.1em dashed #2F6FAB; margin: 8px; padding: 8px" WIDTH="99%"><TR><TD> | ||
| + | Вызов метода CalculateIndividualServiceCosts | ||
| + | <syntaxhighlight lang="java" enclose="div"> | ||
| + | POST http://localhost:9000/TourSearchOwin/CalculateIndividualServiceCosts?nodeId=2147483647 HTTP/1.1 | ||
| + | Content-Type: application/json | ||
| + | { | ||
| + | "TourProgramId": 100003403, | ||
| + | "TourDate": "2018-04-16T00:00:00", | ||
| + | "TourDuration": 8, | ||
| + | "Currency": "EU", | ||
| + | "Services": [{ | ||
| + | "ServiceType": 6, | ||
| + | "Code": 155, | ||
| + | "SubCode1": 7, | ||
| + | "SubCode2": 10, | ||
| + | "Packet": 779, | ||
| + | "Partner": 10760, | ||
| + | "Day": 1, | ||
| + | "DurationInNight": 7, | ||
| + | "City": null, | ||
| + | "Country": 90, | ||
| + | "Attributes": 0, | ||
| + | "Type": 1, | ||
| + | "IsHooded": false, | ||
| + | "IsNotCalculated": false, | ||
| + | "BeginDateTimeString": "2018-04-16T00:00:00", | ||
| + | "EndDateTimeString": null, | ||
| + | "TemplateId": 12, | ||
| + | "Cost": 26, | ||
| + | "ByPax": false, | ||
| + | "QuotaStatus": { | ||
| + | "PlacesStatus": 1, | ||
| + | "FreePlaces": 0, | ||
| + | "IsFewPlaces": false | ||
| + | }, | ||
| + | "Index": null, | ||
| + | "IsRoute": null, | ||
| + | "ServiceTemplateIndex": null, | ||
| + | "RemoteId": null | ||
| + | }], | ||
| + | "Ages": [17] | ||
| + | } | ||
| + | </syntaxhighlight> | ||
| + | Возвращаемый результат метода CalculateIndividualServiceCosts (в формате JSON) | ||
| + | <syntaxhighlight lang="java" enclose="div"> | ||
| + | [{ | ||
| + | "Age": 17, | ||
| + | "Service": { | ||
| + | "ServiceType": 6, | ||
| + | "Code": 155, | ||
| + | "SubCode1": 7, | ||
| + | "SubCode2": 10, | ||
| + | "PacketId": 779, | ||
| + | "PartnerId": 10760, | ||
| + | "Day": 1, | ||
| + | "BeginTime": null, | ||
| + | "EndTime": null, | ||
| + | "DurationInNight": 7, | ||
| + | "Attributes": 0, | ||
| + | "CountryId": 90, | ||
| + | "CityId": null, | ||
| + | "Type": 1, | ||
| + | "ShowOrder": 0 | ||
| + | }, | ||
| + | "SimpleServiceCost": { | ||
| + | "Brutto": 13, | ||
| + | "Discount": 0 | ||
| + | } | ||
| + | }] | ||
| + | </syntaxhighlight> | ||
| + | </TD></TR></TABLE> | ||
| + | </div></div><br /> | ||
| − | === | + | ===Поиск рейсов из внешней системы (GetGDSFlights)=== |
| − | Метод | + | Метод производит поиск рейсов из внешней системы. |
* Формат запроса: | * Формат запроса: | ||
| − | ** ? | + | ** POST .../TourSearchOwin/GetGDSFlights? |
| − | * Принимаемые параметры: | + | |
| − | ** ''' | + | * Принимаемые параметры headers ( '''*''' – обязательный): |
| + | ** '''Content-Type *''' – application/json | ||
| + | |||
| + | * Принимаемые параметры POST запроса ( '''*''' – обязательный): | ||
| + | <font style="color:red">''Внимание!''</font> Если в туре используется перелет из GDS, то в параметр '''flightSettings''' передается ответ из секции '''flightGDSRequest''' метода API [[Мастер-Тур(15):API для отдачи цен в поисковые системы#Актуализация тура (ActualizeTour)|ActualizeTour]]. Далее для получения цены выполняем методы [[Мастер-Тур(15):API для разработки онлайн поиска и бронирования#Выгрузка информации от внешнего поставщика по перелету (RebuildFlights)|RebuidFlights]] и [[Мастер-Тур(15):API для разработки онлайн поиска и бронирования#Расчет путевки (CalculateReservation)|CalculateReservation]]. <br /> | ||
| + | ** '''flightSettings''' – информация о шаблоне услуги авиаперелета | ||
| + | *** '''templateId''' – идентификатор шаблона услуги | ||
| + | *** '''patternId''' – идентификатор паттерна услуги (внутренняя информация из программы туров) | ||
| + | *** '''serviceId''' – идентификатор класса услуги (внутренняя информация из программы туров) | ||
| + | ** '''service''' – информация об услуге авиаперелета | ||
| + | *** '''ServiceType''' – тип услуги | ||
| + | *** '''Code''' – ключ услуги | ||
| + | *** '''SubCode1''' – [[#Приложение 1: параметры услуги (ServiceType, Code, SubCode1, SubCode2)|доп. описание 1]] | ||
| + | *** '''SubCode2''' – [[#Приложение 1: параметры услуги (ServiceType, Code, SubCode1, SubCode2)|доп. описание 2]] | ||
| + | *** '''CountryId''' – страна услуги | ||
| + | *** '''CityId''' – город услуги | ||
| + | *** '''PacketId''' – пакет услуги | ||
| + | *** '''PartnerId''' – партнер услуги | ||
| + | *** '''Day''' – день предоставления услуги | ||
| + | *** '''DurationInNight''' – продолжительность услуги в ночах | ||
| + | ** '''price''' – стоимость перелета | ||
| + | ** '''quotaInfo''' – объект информация по квотам | ||
| + | *** '''status''' – статус по квотам (есть места / нет мест / под запрос) | ||
| + | *** '''freePlaces''' – количество свободных мест, если удовлетворяются условия, заданные в настройке "Мало" и включена настройка "Отображать числовое значение оставшихся мест". Иначе возвращается 0. Если в данном параметре 0, то руководствоваться следует значением, полученном в параметре '''PlacesStatus'''. | ||
| + | *** '''isFewPlaces''' – выполнены ли условия, заданные в настройке "Мало": '''true''' – если заданы условия количества мест "Мало" и данные условия выполнены, '''false''' – если не заданы условия количества мест "Мало" или они заданы, но не выполнены. | ||
| + | ** '''flightDateTimeLimitationInterval''' – | ||
| + | *** '''startLimitation''' – начало тайм-лимита | ||
| + | *** '''finishLimitation''' – объект тайм-лимита | ||
| + | **** '''dateTimeString''' – дата окончания тайм-лимита | ||
| + | **** '''serviceType''' – тип услуги | ||
| + | **** '''serviceCode''' – код услуги | ||
| + | ** '''flightSourceMode''' – тип перелета (1 – локальный, 2 – из внешний системы) | ||
| + | ** '''passengers''' – информация о пассажирах | ||
| + | *** '''IsMain''' – главный турист | ||
| + | *** '''Number''' – порядковый номер туриста | ||
| + | *** '''AgeType''' – тип туриста (0 – взрослый, 1 – ребенок, 2 – инфант) | ||
| + | *** '''MaleFemaleSex''' – пол (0 – мужской, 1 – женский) | ||
| + | *** '''FirstName''' – имя (лат) | ||
| + | *** '''LastName''' – фамилия (лат) | ||
| + | *** '''Patronymic''' – отчество (лат) | ||
| + | *** '''FirstNameRus''' – имя (рус) | ||
| + | *** '''LastNameRus''' – фамилия (рус) | ||
| + | *** '''PatronymicRus''' – отчество (рус) | ||
| + | *** '''InternationalPassportSeries''' – серия загранпаспорта | ||
| + | *** '''InternationalPassportNumber''' – номер загранпаспорта | ||
| + | *** '''InternationalPassportDateOfIssue''' – дата выдачи загранпаспорта (YYYY-MM-DDThh:mm:ssz) | ||
| + | *** '''InternationalPassportDateOfIssueString''' – дата выдачи загранпаспорта в строке (DD.MM.YYYY) | ||
| + | *** '''InternationalPassportDateOfExpiry''' – дата окончания действия загранпаспорта (YYYY-MM-DDThh:mm:ssz) | ||
| + | *** '''InternationalPassportDateOfExpiryString''' – дата окончания действия загранпаспорта в строке (DD.MM.YYYY) | ||
| + | *** '''internationalPassportByWhom''' – кем выдан загранпаспорт | ||
| + | *** '''PassportSeries''' – серия паспорта | ||
| + | *** '''PassportNumber''' – номер паспорта | ||
| + | *** '''PassportDateOfIssue''' – дата выдачи паспорта (YYYY-MM-DDThh:mm:ssz) | ||
| + | *** '''PassportDateOfIssueString''' – дата выдачи паспорта в строке (DD.MM.YYYY) | ||
| + | *** '''PassportByWhom''' – кем выдан паспорт | ||
| + | *** '''Citizenship''' – название страны | ||
| + | *** '''Phone''' – телефон | ||
| + | *** '''Email''' – e-mail | ||
| + | *** '''BirthDay''' – дата рождения (YYYY-MM-DDThh:mm:ssz) | ||
| + | *** '''BirthDayString''' – дата рождения в строковом формате (DD.MM.YYYY) | ||
| + | *** '''BirthPlace''' – место рождения | ||
| + | *** '''CitizenID''' – гражданство | ||
| + | *** '''Age''' – количество полных лет на момент окончания тура | ||
| + | ** '''tourDate''' – дата тура | ||
| + | ** '''tourCurrency''' – валюта тура | ||
| + | ** '''tourId''' – ключ программы тура | ||
| + | ** '''filterTariff''' – информация о тарифах | ||
| + | ** '''filterDeptime''' – информация о времени вылета | ||
| + | ** '''isCommission''' – признак комиссионной цены | ||
| + | ** '''baseFlightsParams''' – параметра авиаперелета | ||
| + | *** '''CityArrival''' – город прибытия | ||
| + | *** '''FlightCode''' – код авиаперелета | ||
| + | *** '''TariffKey''' – ключ тарифа | ||
| + | *** '''PartnerId''' – ключ партнера | ||
| + | ** '''isUpdated''' – информация об обновлении перелета | ||
| + | ** '''key''' – ключ запроса | ||
| + | ** '''tourDurationByDays''' – продолжительность перелета | ||
| + | ** '''langueCode''' – локализация | ||
| + | |||
* Возвращаемый результат: | * Возвращаемый результат: | ||
| − | ** '''id''' – | + | ** '''validationResult''' – информация о валидации |
| − | ** ''' | + | *** '''Errors''' – ошибки |
| + | *** '''Warnings''' – предупреждения | ||
| + | *** '''States''' – статус | ||
| + | *** '''IsValid''' – информация о результате | ||
| + | ** '''flightsStartEndPointPatterns''' – информация о начале и окончании перелета | ||
| + | *** '''fromPoint''' – информация о перелете отправления | ||
| + | **** '''country''' – страна вылета | ||
| + | ***** '''id''' – ключ | ||
| + | ***** '''description''' – описание | ||
| + | ***** '''code''' – код | ||
| + | **** '''city''' – город вылета | ||
| + | ***** '''id''' – ключ | ||
| + | ***** '''description''' – описание | ||
| + | ***** '''code''' – код | ||
| + | **** '''airport''' – аэропорт вылета | ||
| + | ***** '''id''' – ключ | ||
| + | ***** '''description''' – описание | ||
| + | ***** '''code''' – код | ||
| + | *** '''toPoint''' – информация о перелете прибытия | ||
| + | **** '''country''' – страна прилета | ||
| + | ***** '''id''' – ключ | ||
| + | ***** '''description''' – описание | ||
| + | ***** '''code''' – код | ||
| + | **** '''city''' – город прилета | ||
| + | ***** '''id''' – ключ | ||
| + | ***** '''description''' – описание | ||
| + | ***** '''code''' – код | ||
| + | **** '''airport''' – аэропорт прилета | ||
| + | ***** '''id''' – ключ | ||
| + | ***** '''description''' – описание | ||
| + | ***** '''code''' – код | ||
| + | ** '''passengersAgeInfos''' – информация о возрасте пассажиров | ||
| + | *** '''ageType''' – тип пассажира | ||
| + | *** '''count''' – количество человек | ||
| + | ** '''flightsSequencies''' – информация о перелете | ||
| + | *** '''flights''' – массив данных о перелете из внешнего поставщика | ||
| + | **** – ... | ||
| + | *** '''deltaPrice''' – разница в цене | ||
| + | **** '''amount''' – стоимость | ||
| + | **** '''currency''' – валюта | ||
| + | *** '''timeForward''' – время вперед | ||
| + | *** '''timeBackward''' – время обратно | ||
| + | *** '''hasTariffFamily''' – имеется ли семейство тарифов | ||
| + | *** '''rating''' – рейтинг | ||
| + | ** '''airTravelAdapterFilterValues''' – дополнительная информация | ||
| + | *** '''LuggageFilterValue''' – багаж | ||
| + | *** '''ClassAirTravelFilterValue''' – класс перелета | ||
| + | *** '''ConnectionsFilterValue''' – пересадки | ||
| + | *** '''SortFilterValue''' – сортировка | ||
| + | *** '''AutomaticFlightSelection''' – подбор перелета | ||
| + | ** '''tariff''' – тариф | ||
| + | ** '''minFlightTimeForward''' – минимальное время в пути туда | ||
| + | ** '''maxFlightTimeForward''' – максимальное время в пути туда | ||
| + | ** '''minFlightTimeBackward''' – минимальное время в пути обратно | ||
| + | ** '''maxFlightTimeBackward''' – максимальное время в пути обратно | ||
<div class="toccolours mw-collapsible mw-collapsed" style="width:900px">Пример | <div class="toccolours mw-collapsible mw-collapsed" style="width:900px">Пример | ||
<div class="mw-collapsible-content"> | <div class="mw-collapsible-content"> | ||
<TABLE STYLE="border: 0.1em dashed #2F6FAB; margin: 8px; padding: 8px" WIDTH="99%"><TR><TD> | <TABLE STYLE="border: 0.1em dashed #2F6FAB; margin: 8px; padding: 8px" WIDTH="99%"><TR><TD> | ||
| − | Вызов метода | + | Вызов метода GetGDSFlights |
<syntaxhighlight lang="java" enclose="div"> | <syntaxhighlight lang="java" enclose="div"> | ||
| − | http://localhost:9000/TourSearchOwin/ | + | POST http://localhost:9000/TourSearchOwin/GetGDSFlights? HTTP/1.1 |
| + | Content-Type: application/json | ||
| + | |||
| + | { | ||
| + | "flightsSource": [{ | ||
| + | "flightSettings": { | ||
| + | "templateId": 1, | ||
| + | "patternId": 0, | ||
| + | "serviceId": 0 | ||
| + | }, | ||
| + | "service": { | ||
| + | "serviceType": 1, | ||
| + | "code": 1084, | ||
| + | "subCode1": 67, | ||
| + | "subCode2": 1, | ||
| + | "countryId": 90, | ||
| + | "cityId": 35, | ||
| + | "packetId": 1037, | ||
| + | "partnerId": 12792, | ||
| + | "day": 1, | ||
| + | "durationInNight": 0 | ||
| + | }, | ||
| + | "price": 142.84, | ||
| + | "quotaInfo": { | ||
| + | "status": 4, | ||
| + | "freePlaces": 0, | ||
| + | "isFewPlaces": false | ||
| + | }, | ||
| + | "flightDateTimeLimitationInterval": { | ||
| + | "startLimitation": null, | ||
| + | "finishLimitation": { | ||
| + | "dateTimeString": "2021-01-30T21:40:00", | ||
| + | "serviceType": 3, | ||
| + | "serviceCode": 178 | ||
| + | } | ||
| + | }, | ||
| + | "flightSourceMode": 2 | ||
| + | } | ||
| + | ], | ||
| + | "passengers": [{ | ||
| + | "IsMain": true, | ||
| + | "Number": 1, | ||
| + | "AgeType": 0, | ||
| + | "MaleFemaleSex": 0, | ||
| + | "FirstName": "", | ||
| + | "LastName": "", | ||
| + | "Patronymic": "", | ||
| + | "FirstNameRus": "", | ||
| + | "LastNameRus": "", | ||
| + | "PatronymicRus": "", | ||
| + | "InternationalPassportSeries": "", | ||
| + | "InternationalPassportNumber": "", | ||
| + | "InternationalPassportDateOfIssue": "", | ||
| + | "InternationalPassportDateOfIssueString": "", | ||
| + | "InternationalPassportDateOfExpiry": "", | ||
| + | "InternationalPassportDateOfExpiryString": "", | ||
| + | "internationalPassportByWhom": "", | ||
| + | "PassportSeries": "", | ||
| + | "PassportNumber": "", | ||
| + | "PassportDateOfIssue": "", | ||
| + | "PassportDateOfIssueString": "", | ||
| + | "PassportByWhom": "", | ||
| + | "Citizenship": "", | ||
| + | "Phone": "", | ||
| + | "Email": "", | ||
| + | "BirthDay": "", | ||
| + | "BirthDayString": "", | ||
| + | "BirthPlace": "", | ||
| + | "CitizenID": "", | ||
| + | "Age": 17 | ||
| + | }, { | ||
| + | "IsMain": false, | ||
| + | "Number": 2, | ||
| + | "AgeType": 0, | ||
| + | "MaleFemaleSex": 0, | ||
| + | "FirstName": "", | ||
| + | "LastName": "", | ||
| + | "Patronymic": "", | ||
| + | "FirstNameRus": "", | ||
| + | "LastNameRus": "", | ||
| + | "PatronymicRus": "", | ||
| + | "InternationalPassportSeries": "", | ||
| + | "InternationalPassportNumber": "", | ||
| + | "InternationalPassportDateOfIssue": "", | ||
| + | "InternationalPassportDateOfIssueString": "", | ||
| + | "InternationalPassportDateOfExpiry": "", | ||
| + | "InternationalPassportDateOfExpiryString": "", | ||
| + | "internationalPassportByWhom": "", | ||
| + | "PassportSeries": "", | ||
| + | "PassportNumber": "", | ||
| + | "PassportDateOfIssue": "", | ||
| + | "PassportDateOfIssueString": "", | ||
| + | "PassportByWhom": "", | ||
| + | "Citizenship": "", | ||
| + | "Phone": "", | ||
| + | "Email": "", | ||
| + | "BirthDay": "", | ||
| + | "BirthDayString": "", | ||
| + | "BirthPlace": "", | ||
| + | "CitizenID": "", | ||
| + | "Age": 17 | ||
| + | } | ||
| + | ], | ||
| + | "tourDate": "2021-01-30T00:00:00", | ||
| + | "tourCurrency": "$", | ||
| + | "tourId": 100008958, | ||
| + | "filterTariff": {}, | ||
| + | "filterDeptime": ["all"], | ||
| + | "isCommission": true, | ||
| + | "baseFlightsParams": [{ | ||
| + | "CityArrival": 35, | ||
| + | "FlightCode": 1084, | ||
| + | "TariffKey": 67, | ||
| + | "PartnerId": 12792 | ||
| + | } | ||
| + | ], | ||
| + | "isUpdated": false, | ||
| + | "key": 0, | ||
| + | "tourDurationByDays": "11", | ||
| + | "langueCode": "ru", | ||
| + | "isCanary": "false" | ||
| + | } | ||
| + | |||
</syntaxhighlight> | </syntaxhighlight> | ||
| − | Возвращаемый результат метода | + | Возвращаемый результат метода GetGDSFlights (в формате JSON) |
<syntaxhighlight lang="java" enclose="div"> | <syntaxhighlight lang="java" enclose="div"> | ||
| + | [ | ||
{ | { | ||
| − | + | "validationResult": { | |
| − | + | "Errors": [], | |
| − | { | + | "Warnings": null, |
| − | + | "States": null, | |
| − | + | "IsValid": true | |
| + | }, | ||
| + | "flightsStartEndPointPatterns": [{ | ||
| + | "fromPoint": { | ||
| + | "country": { | ||
| + | "id": 460, | ||
| + | "description": "Россия", | ||
| + | "code": "RU" | ||
| + | }, | ||
| + | "city": { | ||
| + | "id": 1, | ||
| + | "description": "Москва", | ||
| + | "code": "MOW" | ||
| + | }, | ||
| + | "airport": { | ||
| + | "id": 52, | ||
| + | "description": "SVO4(Шереметьево-24)", | ||
| + | "code": "SVO4" | ||
| + | } | ||
| + | }, | ||
| + | "toPoint": { | ||
| + | "country": { | ||
| + | "id": 90, | ||
| + | "description": "Австрия", | ||
| + | "code": "AUS" | ||
| + | }, | ||
| + | "city": { | ||
| + | "id": 35, | ||
| + | "description": "Вена", | ||
| + | "code": "VIE" | ||
| + | }, | ||
| + | "airport": { | ||
| + | "id": 58, | ||
| + | "description": "VIE1(Vena1)", | ||
| + | "code": "VIE1" | ||
| + | } | ||
| + | }, | ||
| + | "departureDate": "2021-01-30T00:00:00", | ||
| + | "arrivalDate": "2021-01-30T23:59:59" | ||
| + | } | ||
| + | ], | ||
| + | "passengersAgeInfos": [{ | ||
| + | "ageType": 0, | ||
| + | "count": 2 | ||
| + | } | ||
| + | ], | ||
| + | "flightsSequencies": [{ | ||
| + | "flights": [{ | ||
| + | "direction": 1, | ||
| + | "commonPrice": 147, | ||
| + | "remotePriceSource": { | ||
| + | "providerId": 82, | ||
| + | "flightId": "17554452020000" | ||
| + | }, | ||
| + | "localPriceSource": { | ||
| + | "packetId": 1037, | ||
| + | "partnerId": 12792 | ||
| + | }, | ||
| + | "flightsSequenceSettings": [{ | ||
| + | "templateId": 1, | ||
| + | "patternId": 0, | ||
| + | "serviceId": 0 | ||
| + | } | ||
| + | ], | ||
| + | "segments": [{ | ||
| + | "segmentNumber": 1, | ||
| + | "depratureCity": { | ||
| + | "gdsItem": { | ||
| + | "serviceId": 4, | ||
| + | "languageId": 38, | ||
| + | "id": "524901", | ||
| + | "code": "MOW", | ||
| + | "name": "Moscow", | ||
| + | "automaticallyMappingValue": [ | ||
| + | "Moscow" | ||
| + | ], | ||
| + | "requestValue": "MOW", | ||
| + | "displayedValue": "Moscow", | ||
| + | "dependencies": [{ | ||
| + | "dictionaryId": 1, | ||
| + | "itemId": "643" | ||
| + | } | ||
| + | ], | ||
| + | "columnValues": [ | ||
| + | "Moscow", | ||
| + | "Russia" | ||
| + | ] | ||
| + | }, | ||
| + | "mtItem": { | ||
| + | "id": "1", | ||
| + | "code": "MOW", | ||
| + | "name": "Москва", | ||
| + | "automaticallyMappingValue": [ | ||
| + | "Москва", | ||
| + | "Moscow" | ||
| + | ], | ||
| + | "requestValue": "", | ||
| + | "displayedValue": "Москва", | ||
| + | "dependencies": [{ | ||
| + | "dictionaryId": 1, | ||
| + | "itemId": "460" | ||
| + | } | ||
| + | ], | ||
| + | "columnValues": [ | ||
| + | "MOW", | ||
| + | "Москва", | ||
| + | "Россия" | ||
| + | ] | ||
| + | }, | ||
| + | "mapping": { | ||
| + | "id": 5517, | ||
| + | "providerId": 82, | ||
| + | "dictionaryId": 2, | ||
| + | "providerDictionaryItemId": "524901", | ||
| + | "providerDictionaryItemName": null, | ||
| + | "mtDictionaryItemId": 1, | ||
| + | "mtDictionaryItemName": null | ||
| + | } | ||
| + | }, | ||
| + | "arrivalCity": { | ||
| + | "gdsItem": { | ||
| + | "serviceId": 4, | ||
| + | "languageId": 38, | ||
| + | "id": "2761369", | ||
| + | "code": "VIE", | ||
| + | "name": "Vienna", | ||
| + | "automaticallyMappingValue": [ | ||
| + | "Vienna" | ||
| + | ], | ||
| + | "requestValue": "VIE", | ||
| + | "displayedValue": "Vienna", | ||
| + | "dependencies": [{ | ||
| + | "dictionaryId": 1, | ||
| + | "itemId": "40" | ||
| + | } | ||
| + | ], | ||
| + | "columnValues": [ | ||
| + | "Vienna", | ||
| + | "Austria" | ||
| + | ] | ||
| + | }, | ||
| + | "mtItem": { | ||
| + | "id": "35", | ||
| + | "code": "VIE", | ||
| + | "name": "Вена", | ||
| + | "automaticallyMappingValue": [ | ||
| + | "Вена", | ||
| + | "Vienna" | ||
| + | ], | ||
| + | "requestValue": "", | ||
| + | "displayedValue": "Вена", | ||
| + | "dependencies": [{ | ||
| + | "dictionaryId": 1, | ||
| + | "itemId": "90" | ||
| + | } | ||
| + | ], | ||
| + | "columnValues": [ | ||
| + | "VIE", | ||
| + | "Вена", | ||
| + | "Австрия" | ||
| + | ] | ||
| + | }, | ||
| + | "mapping": { | ||
| + | "id": 5361, | ||
| + | "providerId": 82, | ||
| + | "dictionaryId": 2, | ||
| + | "providerDictionaryItemId": "2761369", | ||
| + | "providerDictionaryItemName": null, | ||
| + | "mtDictionaryItemId": 35, | ||
| + | "mtDictionaryItemName": null | ||
| + | } | ||
| + | }, | ||
| + | "departureAirport": { | ||
| + | "gdsItem": { | ||
| + | "serviceId": 4, | ||
| + | "languageId": 38, | ||
| + | "id": "5930", | ||
| + | "code": "VKO", | ||
| + | "name": "Moscow, Vnukovo", | ||
| + | "automaticallyMappingValue": [ | ||
| + | "VKO" | ||
| + | ], | ||
| + | "requestValue": "VKO", | ||
| + | "displayedValue": "VKO Moscow, Vnukovo", | ||
| + | "dependencies": [{ | ||
| + | "dictionaryId": 1, | ||
| + | "itemId": "643" | ||
| + | }, { | ||
| + | "dictionaryId": 2, | ||
| + | "itemId": "524901" | ||
| + | } | ||
| + | ], | ||
| + | "columnValues": [ | ||
| + | "VKO Moscow, Vnukovo", | ||
| + | "Russia, Москва" | ||
| + | ] | ||
| + | }, | ||
| + | "mtItem": { | ||
| + | "id": "59", | ||
| + | "code": "VKO", | ||
| + | "name": "Внуково", | ||
| + | "automaticallyMappingValue": [ | ||
| + | "VKO" | ||
| + | ], | ||
| + | "requestValue": "", | ||
| + | "displayedValue": "VKO Внуково", | ||
| + | "dependencies": [{ | ||
| + | "dictionaryId": 1, | ||
| + | "itemId": "460" | ||
| + | }, { | ||
| + | "dictionaryId": 2, | ||
| + | "itemId": "1" | ||
| + | } | ||
| + | ], | ||
| + | "columnValues": [ | ||
| + | "VKO", | ||
| + | "VKO Внуково", | ||
| + | "Россия, Москва" | ||
| + | ] | ||
| + | }, | ||
| + | "mapping": { | ||
| + | "id": 5734, | ||
| + | "providerId": 82, | ||
| + | "dictionaryId": 5, | ||
| + | "providerDictionaryItemId": "5930", | ||
| + | "providerDictionaryItemName": null, | ||
| + | "mtDictionaryItemId": 59, | ||
| + | "mtDictionaryItemName": null | ||
| + | } | ||
| + | }, | ||
| + | "arrivalAirport": { | ||
| + | "gdsItem": { | ||
| + | "serviceId": 4, | ||
| + | "languageId": 38, | ||
| + | "id": "6625", | ||
| + | "code": "VIE", | ||
| + | "name": "Vienna International Airport", | ||
| + | "automaticallyMappingValue": [ | ||
| + | "VIE" | ||
| + | ], | ||
| + | "requestValue": "VIE", | ||
| + | "displayedValue": "VIE Vienna International Airport", | ||
| + | "dependencies": [{ | ||
| + | "dictionaryId": 1, | ||
| + | "itemId": "40" | ||
| + | }, { | ||
| + | "dictionaryId": 2, | ||
| + | "itemId": "2761369" | ||
| + | } | ||
| + | ], | ||
| + | "columnValues": [ | ||
| + | "VIE Vienna International Airport", | ||
| + | "Austria, Вена" | ||
| + | ] | ||
| + | }, | ||
| + | "mtItem": { | ||
| + | "id": "58", | ||
| + | "code": "VIE1", | ||
| + | "name": "Vena1", | ||
| + | "automaticallyMappingValue": [ | ||
| + | "VIE1" | ||
| + | ], | ||
| + | "requestValue": "", | ||
| + | "displayedValue": "VIE1 Vena1", | ||
| + | "dependencies": [{ | ||
| + | "dictionaryId": 1, | ||
| + | "itemId": "90" | ||
| + | }, { | ||
| + | "dictionaryId": 2, | ||
| + | "itemId": "35" | ||
| + | } | ||
| + | ], | ||
| + | "columnValues": [ | ||
| + | "VIE1", | ||
| + | "VIE1 Vena1", | ||
| + | "Австрия, Вена" | ||
| + | ] | ||
| + | }, | ||
| + | "mapping": { | ||
| + | "id": 5755, | ||
| + | "providerId": 82, | ||
| + | "dictionaryId": 5, | ||
| + | "providerDictionaryItemId": "6625", | ||
| + | "providerDictionaryItemName": null, | ||
| + | "mtDictionaryItemId": 58, | ||
| + | "mtDictionaryItemName": null | ||
| + | } | ||
| + | }, | ||
| + | "airline": { | ||
| + | "gdsItem": { | ||
| + | "serviceId": 4, | ||
| + | "languageId": 38, | ||
| + | "id": "223", | ||
| + | "code": "UT", | ||
| + | "name": "UTair", | ||
| + | "automaticallyMappingValue": [ | ||
| + | "UT" | ||
| + | ], | ||
| + | "requestValue": "UT", | ||
| + | "displayedValue": "UT UTair", | ||
| + | "dependencies": [], | ||
| + | "columnValues": [ | ||
| + | "UT UTair", | ||
| + | "" | ||
| + | ] | ||
| + | }, | ||
| + | "mtItem": { | ||
| + | "id": "12", | ||
| + | "code": "E9", | ||
| + | "name": "AJT", | ||
| + | "automaticallyMappingValue": [ | ||
| + | "E9" | ||
| + | ], | ||
| + | "requestValue": "", | ||
| + | "displayedValue": "E9 AJT", | ||
| + | "dependencies": [], | ||
| + | "columnValues": [ | ||
| + | "E9", | ||
| + | "E9 AJT", | ||
| + | "" | ||
| + | ] | ||
| + | }, | ||
| + | "mapping": { | ||
| + | "id": 5831, | ||
| + | "providerId": 82, | ||
| + | "dictionaryId": 5, | ||
| + | "providerDictionaryItemId": "223", | ||
| + | "providerDictionaryItemName": null, | ||
| + | "mtDictionaryItemId": 12, | ||
| + | "mtDictionaryItemName": null | ||
| + | } | ||
| + | }, | ||
| + | "aircraft": { | ||
| + | "gdsItem": { | ||
| + | "serviceId": 4, | ||
| + | "languageId": 38, | ||
| + | "id": "42", | ||
| + | "code": "738", | ||
| + | "name": "Boeing 737", | ||
| + | "automaticallyMappingValue": [ | ||
| + | "738" | ||
| + | ], | ||
| + | "requestValue": "738", | ||
| + | "displayedValue": "738 Boeing 737", | ||
| + | "dependencies": [], | ||
| + | "columnValues": [ | ||
| + | "738 Boeing 737", | ||
| + | "" | ||
| + | ] | ||
| + | }, | ||
| + | "mtItem": { | ||
| + | "id": "24", | ||
| + | "code": "738", | ||
| + | "name": "Boeing", | ||
| + | "automaticallyMappingValue": [ | ||
| + | "738" | ||
| + | ], | ||
| + | "requestValue": "", | ||
| + | "displayedValue": "738 Boeing", | ||
| + | "dependencies": [], | ||
| + | "columnValues": [ | ||
| + | "738", | ||
| + | "738 Boeing", | ||
| + | "" | ||
| + | ] | ||
| + | }, | ||
| + | "mapping": { | ||
| + | "id": 5809, | ||
| + | "providerId": 82, | ||
| + | "dictionaryId": 5, | ||
| + | "providerDictionaryItemId": "42", | ||
| + | "providerDictionaryItemName": null, | ||
| + | "mtDictionaryItemId": 24, | ||
| + | "mtDictionaryItemName": null | ||
| + | } | ||
| + | }, | ||
| + | "tariff": { | ||
| + | "gdsItem": { | ||
| + | "id": "0", | ||
| + | "code": "P", | ||
| + | "name": "Экономический класс", | ||
| + | "automaticallyMappingValue": [], | ||
| + | "requestValue": "", | ||
| + | "displayedValue": "", | ||
| + | "dependencies": [], | ||
| + | "columnValues": [] | ||
| + | }, | ||
| + | "mtItem": null, | ||
| + | "mapping": null | ||
| + | }, | ||
| + | "flightNumber": "821", | ||
| + | "baggageRestriction": [ | ||
| + | "Взрослые - 0 мест багажа" | ||
| + | ], | ||
| + | "caryyOn": [ | ||
| + | "5 кг (40x30x20 см)" | ||
| + | ], | ||
| + | "departureDate": "2021-01-30T16:00:00", | ||
| + | "arrivalDate": "2021-01-30T17:55:00", | ||
| + | "quotaInfo": { | ||
| + | "status": 1, | ||
| + | "freePlaces": 0, | ||
| + | "isFewPlaces": false | ||
| + | }, | ||
| + | "filterLuggageValue": [ | ||
| + | "withoutLuggage" | ||
| + | ], | ||
| + | "transferValue": "withoutDirect", | ||
| + | "isLocalFlight": false, | ||
| + | "fligthTime": 235, | ||
| + | "timeLimit": "22.01.2021 18:59:00" | ||
| + | } | ||
| + | ] | ||
| + | } | ||
| + | ], | ||
| + | "deltaPrice": { | ||
| + | "amount": 4.16, | ||
| + | "currency": "$" | ||
| + | }, | ||
| + | "timeForward": 235, | ||
| + | "timeBackward": 0, | ||
| + | "hasTariffFamily": true, | ||
| + | "rating": 9.3467 | ||
| + | } | ||
| + | ], | ||
| + | "airTravelAdapterFilterValues": { | ||
| + | "LuggageFilterValue": "all", | ||
| + | "ClassAirTravelFilterValue": "economy", | ||
| + | "ConnectionsFilterValue": "all", | ||
| + | "SortFilterValue": "cheap", | ||
| + | "AutomaticFlightSelection": false | ||
| + | }, | ||
| + | "tariff": "economy", | ||
| + | "minFlightTimeForward": 170, | ||
| + | "maxFlightTimeForward": 1675, | ||
| + | "minFlightTimeBackward": 0, | ||
| + | "maxFlightTimeBackward": 0 | ||
| + | } | ||
| + | ] | ||
| + | </syntaxhighlight> | ||
| + | </TD></TR></TABLE> | ||
| + | </div></div><br /> | ||
| + | |||
| + | ===Выгрузка информации от внешнего поставщика по перелету (RebuildFlights)=== | ||
| + | <font style="color:red">''Внимание!''</font> Если в туре используется перелет из GDS, то перед этим методом вызывается [[Мастер-Тур(15):API для разработки онлайн поиска и бронирования#Поиск рейсов из внешней системы (GetGDSFlights)|GetGDSFlights]] в принимаемые параметры которого передается ответ из секции flightGDSRequest метода API [[Мастер-Тур(15):API для отдачи цен в поисковые системы#Актуализация тура (ActualizeTour)|ActualizeTour]]. Далее текущий метод [[Мастер-Тур(15):API для разработки онлайн поиска и бронирования#Выгрузка информации от внешнего поставщика по перелету (RebuildFlights)|RebuidFlights]] и далее [[Мастер-Тур(15):API для разработки онлайн поиска и бронирования#Расчет путевки (CalculateReservation)|CalculateReservation]]. <br /> | ||
| + | Метод возвращает информацию по выбранному перелету от внешнего поставщика. | ||
| + | * Формат запроса: | ||
| + | ** POST .../TourSearchOwin/RebuildFlights | ||
| + | * Принимаемые параметры headers ( '''*''' – обязательный): | ||
| + | ** '''Content-Type *''' – application/json | ||
| + | |||
| + | * Принимаемые параметры POST запроса ( '''*''' – обязательный): | ||
| + | ** '''flights''' – перелеты | ||
| + | *** '''direction''' – | ||
| + | *** '''commonPrice''' – общая стоимость перелета | ||
| + | *** '''remotePriceSource''' – данные расчета локального перелета | ||
| + | **** '''providerId''' – ID внешнего поставщика | ||
| + | **** '''flightId''' – идентификатор внешнего перелета | ||
| + | *** '''localPriceSource''' – данные расчета локального перелета | ||
| + | **** '''packetId''' – ключ пакета | ||
| + | **** '''partnerId''' – идентификатор партнера | ||
| + | *** '''flightsSequenceSettings''' – описание параметров последовательности перелетов для которых действуют замены | ||
| + | **** '''templateId''' – идентификатор шаблона услуги | ||
| + | **** '''patternId''' – идентификатор паттерна услуги | ||
| + | **** '''serviceId''' – идентификатор класса услуги | ||
| + | *** '''segments''' – сегменты авиаперелета | ||
| + | **** '''segmentNumber''' – номер сегмента | ||
| + | **** '''depratureCity''' – город отправления | ||
| + | ***** '''gdsItem''' – справочная информация внешней системы | ||
| + | ****** '''serviceId''' – идентификатор системы | ||
| + | ****** '''languageId''' – идентификатор языка | ||
| + | ****** '''id''' – идентификатор в системе внешнего поставщика | ||
| + | ****** '''code''' – код в системе внешнего поставщика | ||
| + | ****** '''name''' – имя в системе внешнего поставщика | ||
| + | ******* '''automaticallyMappingValue''' – выражение используемое для автоматического маппинга | ||
| + | ******* '''requestValue''' – значение поля справочника которое используется в запросе к внешнему поставщику | ||
| + | ****** '''displayedValue''' – значение поля справочника который используется для отображения | ||
| + | ****** '''dependencies''' – список зависимых сущностей | ||
| + | ******* '''dictionaryId''' – идентификатор справочника | ||
| + | ******* '''itemId''' – | ||
| + | ****** '''columnValues''' – наименование города и страны | ||
| + | ***** '''mtItem''' – справочная информации локальной системы | ||
| + | ****** '''id''' – идентификатор в локальной системе | ||
| + | ****** '''code''' – код в локальной системе | ||
| + | ****** '''name''' – имя в локальной системе | ||
| + | ****** '''automaticallyMappingValue''' – выражение используемое для автоматического маппинга | ||
| + | ****** '''requestValue''' – значение поля справочника которое используется в запросе к внешнему поставщику | ||
| + | ****** '''displayedValue''' – значение поля справочника который используется для отображения | ||
| + | ****** '''dependencies''' – список зависимых сущностей | ||
| + | ******* '''dictionaryId''' – идентификатор справочника | ||
| + | ******* '''itemId''' – | ||
| + | ****** '''columnValues''' – наименование страны и города | ||
| + | ***** '''mapping''' – связка | ||
| + | ****** '''id''' – Id маппинга | ||
| + | ****** '''providerId''' – Id провайдера | ||
| + | ****** '''dictionaryId''' – Id справочника | ||
| + | ****** '''providerDictionaryItemId''' – Id справочника внешнего поставщика | ||
| + | ****** '''providerDictionaryItemName''' – обозначение справочника внешнего поставщика | ||
| + | ****** '''mtDictionaryItemId''' – Id справочника МТ | ||
| + | ****** '''mtDictionaryItemName''' – обозначение справочника MT | ||
| + | **** '''arrivalCity''' – город прибытия | ||
| + | ***** '''gdsItem''' – справочная информация внешней системы | ||
| + | ****** '''serviceId''' – идентификатор системы | ||
| + | ****** '''languageId''' – идентификатор языка | ||
| + | ****** '''id''' – идентификатор в системе внешнего поставщика | ||
| + | ****** '''code''' – код в системе внешнего поставщика | ||
| + | ****** '''name''' – имя в системе внешнего поставщика | ||
| + | ******* '''automaticallyMappingValue''' – выражение используемое для автоматического маппинга | ||
| + | ******* '''requestValue''' – значение поля справочника которое используется в запросе к внешнему поставщику | ||
| + | ****** '''displayedValue''' – значение поля справочника который используется для отображения | ||
| + | ****** '''dependencies''' – список зависимых сущностей | ||
| + | ******* '''dictionaryId''' – идентификатор справочника | ||
| + | ******* '''itemId''' – | ||
| + | ****** '''columnValues''' – наименование города и страны | ||
| + | ***** '''mtItem''' – справочная информации локальной системы | ||
| + | ****** '''id''' – идентификатор в локальной системе | ||
| + | ****** '''code''' – код в локальной системе | ||
| + | ****** '''name''' – имя в локальной системе | ||
| + | ****** '''automaticallyMappingValue''' – выражение используемое для автоматического маппинга | ||
| + | ****** '''requestValue''' – значение поля справочника которое используется в запросе к внешнему поставщику | ||
| + | ****** '''displayedValue''' – значение поля справочника который используется для отображения | ||
| + | ****** '''dependencies''' – список зависимых сущностей | ||
| + | ******* '''dictionaryId''' – идентификатор справочника | ||
| + | ******* '''itemId''' – | ||
| + | ****** '''columnValues''' – наименование страны и города | ||
| + | ***** '''mapping''' – связка | ||
| + | ****** '''id''' – Id маппинга | ||
| + | ****** '''providerId''' – Id провайдера | ||
| + | ****** '''dictionaryId''' – Id справочника | ||
| + | ****** '''providerDictionaryItemId''' – Id справочника внешнего поставщика | ||
| + | ****** '''providerDictionaryItemName''' – обозначение справочника внешнего поставщика | ||
| + | ****** '''mtDictionaryItemId''' – Id справочника МТ | ||
| + | ****** '''mtDictionaryItemName''' – обозначение справочника MT | ||
| + | **** '''departureAirport''' – аэропорт вылета | ||
| + | **** '''arrivalAirport''' – аэропорт прилета | ||
| + | ***** '''gdsItem''' –справочная информация внешней системы | ||
| + | ****** '''serviceId''' – идентификатор системы | ||
| + | ****** '''languageId''' – идентификатор языка | ||
| + | ****** '''id''' – идентификатор аэропорта вылета | ||
| + | ****** '''code''' – код аэропорта вылета | ||
| + | ****** '''name''' – наименование аэропорта | ||
| + | ******* '''automaticallyMappingValue''' – выражение используемое для автоматического маппинга | ||
| + | ******* '''requestValue''' – значение поля справочника которое используется в запросе к внешнему поставщику | ||
| + | ****** '''displayedValue''' – значение поля справочника который используется для отображения | ||
| + | ****** '''dependencies''' – список зависимых сущностей | ||
| + | ******* '''dictionaryId''' – идентификатор справочника | ||
| + | ******* '''itemId''' – | ||
| + | ****** '''columnValues''' – наименование аэропорта города страны | ||
| + | ***** '''mtItem''' – справочная информации из локальной системы | ||
| + | ****** '''id''' – идентификатор аэропорта в локальной системе | ||
| + | ****** '''code''' – код аэропорта в локальной системе | ||
| + | ****** '''name''' – имя аэропорта в локальной системе | ||
| + | ****** '''automaticallyMappingValue''' – выражение используемое для автоматического маппинга | ||
| + | ****** '''requestValue''' – значение поля справочника которое используется в запросе к внешнему поставщику | ||
| + | ****** '''displayedValue''' – значение поля справочника который используется для отображения | ||
| + | ****** '''dependencies''' – список зависимых сущностей | ||
| + | ******* '''dictionaryId''' – идентификатор справочника | ||
| + | ******* '''itemId''' – | ||
| + | ****** '''columnValues''' – наименование страны и города | ||
| + | ***** '''mapping''' – связка | ||
| + | ****** '''id''' – Id маппинга аэропорта | ||
| + | ****** '''providerId''' – Id провайдера аэропорта | ||
| + | ****** '''dictionaryId''' – Id справочника аэропорта | ||
| + | ****** '''providerDictionaryItemId''' – Id справочника аэропорта внешнего поставщика | ||
| + | ****** '''providerDictionaryItemName''' – обозначение справочника аэропорта внешнего поставщика | ||
| + | ****** '''mtDictionaryItemId''' – Id справочника аэропорта МТ | ||
| + | ****** '''mtDictionaryItemName''' – обозначение справочника аэропорта MT | ||
| + | **** '''airline''' – авиакомпания | ||
| + | ***** '''gdsItem''' – справочная информация внешней системы | ||
| + | ****** '''serviceId''' – идентификатор авиакомпании внешней системы | ||
| + | ****** '''languageId''' – идентификатор языка | ||
| + | ****** '''id''' – идентификатор авиакомпании | ||
| + | ****** '''code''' – код авиакомпании | ||
| + | ****** '''name''' – наименование авиакомпании | ||
| + | ******* '''automaticallyMappingValue''' – выражение используемое для автоматического маппинга | ||
| + | ******* '''requestValue''' – значение поля справочника которое используется в запросе к внешнему поставщику | ||
| + | ****** '''displayedValue''' – значение поля справочника который используется для отображения | ||
| + | ****** '''dependencies''' – список зависимых сущностей | ||
| + | ****** '''columnValues''' – наименование авиакомпании | ||
| + | ***** '''mtItem''' – справочная информация из локальной системы | ||
| + | ****** '''id''' – идентификатор авиакомпании в локальной системе | ||
| + | ****** '''code''' – код авиакомпании в локальной системе | ||
| + | ****** '''name''' – наименование авиакомпании в локальной системе | ||
| + | ****** '''automaticallyMappingValue''' – выражение используемое для автоматического маппинга | ||
| + | ****** '''requestValue''' – значение поля справочника которое используется в запросе к внешнему поставщику | ||
| + | ****** '''displayedValue''' – значение поля справочника который используется для отображения | ||
| + | ****** '''dependencies''' – список зависимых сущностей | ||
| + | ****** '''columnValues''' – наименование авиакомпании | ||
| + | ***** '''mapping''' – связка | ||
| + | ****** '''id''' – Id маппинга авиакомпании | ||
| + | ****** '''providerId''' – Id провайдера авиакомпании | ||
| + | ****** '''dictionaryId''' – Id справочника авиакомпании | ||
| + | ****** '''providerDictionaryItemId''' – Id справочника авиакомпании внешнего поставщика | ||
| + | ****** '''providerDictionaryItemName''' – обозначение справочника авиакомпании внешнего поставщика | ||
| + | ****** '''mtDictionaryItemId''' – Id справочника авиакомпании МТ | ||
| + | ****** '''mtDictionaryItemName''' – обозначение справочника авиакомпании MT | ||
| + | **** '''aircraft''' – воздушное судно | ||
| + | ***** '''gdsItem''' – справочная информация внешней системы | ||
| + | ****** '''serviceId''' – идентификатор воздушного судна внешней системы | ||
| + | ****** '''languageId''' – идентификатор языка | ||
| + | ****** '''id''' – идентификатор воздушного судна | ||
| + | ****** '''code''' – код воздушного судна | ||
| + | ****** '''name''' – наименование воздушного судна | ||
| + | ******* '''automaticallyMappingValue''' – выражение используемое для автоматического маппинга | ||
| + | ******* '''requestValue''' – значение поля справочника которое используется в запросе к внешнему поставщику | ||
| + | ****** '''displayedValue''' – значение поля справочника который используется для отображения | ||
| + | ****** '''dependencies''' – список зависимых сущностей | ||
| + | ****** '''columnValues''' – наименование воздушного судна | ||
| + | ***** '''mtItem''' – справочная информация из локальной системы | ||
| + | ****** '''id''' – идентификатор воздушного судна в локальной системе | ||
| + | ****** '''code''' – код воздушного судна в локальной системе | ||
| + | ****** '''name''' – наименование воздушного судна в локальной системе | ||
| + | ****** '''automaticallyMappingValue''' – выражение используемое для автоматического маппинга | ||
| + | ****** '''requestValue''' – значение поля справочника которое используется в запросе к внешнему поставщику | ||
| + | ****** '''displayedValue''' – значение поля справочника который используется для отображения | ||
| + | ****** '''dependencies''' – список зависимых сущностей | ||
| + | ****** '''columnValues''' – наименование воздушного судна | ||
| + | ***** '''mapping''' – связка | ||
| + | ****** '''id''' – Id маппинга воздушного судна | ||
| + | ****** '''providerId''' – Id провайдера воздушного судна | ||
| + | ****** '''dictionaryId''' – Id справочника воздушного судна | ||
| + | ****** '''providerDictionaryItemId''' – Id справочника воздушного судна внешнего поставщика | ||
| + | ****** '''providerDictionaryItemName''' – обозначение справочника воздушного судна внешнего поставщика | ||
| + | ****** '''mtDictionaryItemId''' – Id справочника воздушного судна МТ | ||
| + | ****** '''mtDictionaryItemName''' – обозначение справочника воздушного судна MT | ||
| + | **** '''tariff''' – тариф | ||
| + | ***** '''gdsItem''' – справочная информация внешней системы | ||
| + | ****** '''id''' – идентификатор тарифа | ||
| + | ****** '''code''' – код тарифа | ||
| + | ****** '''name''' – наименование тарифа | ||
| + | ******* '''automaticallyMappingValue''' – выражение используемое для автоматического маппинга | ||
| + | ******* '''requestValue''' – значение поля справочника которое используется в запросе к внешнему поставщику | ||
| + | ****** '''displayedValue''' – значение поля справочника который используется для отображения | ||
| + | ****** '''dependencies''' – список зависимых сущностей | ||
| + | ****** '''columnValues''' – наименование тарифа | ||
| + | ***** '''mtItem''' – справочная информация из локальной системы | ||
| + | ***** '''mapping''' – связка | ||
| + | **** '''flightNumber''' – номер перелета | ||
| + | **** '''baggageRestriction''' – ограничение провоза багажа | ||
| + | **** '''caryyOncarry''' – ограничение ручной клади | ||
| + | **** '''departureDate''' – дата вылета | ||
| + | **** '''arrivalDate''' – дата прилета | ||
| + | **** '''quotaInfo''' – объект информация по квотам | ||
| + | ***** '''status''' – статус по квотам (есть места / нет мест / под запрос) | ||
| + | ***** '''freePlaces''' – количество свободных мест, если удовлетворяются условия, заданные в настройке "Мало" и включена настройка "Отображать числовое значение оставшихся мест". Иначе возвращается 0. Если в данном параметре 0, то руководствоваться следует значением, полученном в параметре PlacesStatus. | ||
| + | ***** '''isFewPlaces''' – выполнены ли условия, заданные в настройке "Мало": true – если заданы условия количества мест "Мало" и данные условия выполнены, false – если не заданы условия количества мест "Мало" или они заданы, но не выполнены. | ||
| + | ** '''tourDate''' – дата тура | ||
| + | |||
| + | * Возвращаемый результат: | ||
| + | ** '''flights''' – информация о рейсах | ||
| + | *** '''remoteFlightId''' – идентификатор внешнего перелета | ||
| + | *** '''flightsSettings''' – внутренняя информация о перелете | ||
| + | **** '''templateId''' – идентификатор шаблона услуги | ||
| + | **** '''patternId''' – идентификатор паттерна услуги | ||
| + | **** '''serviceId''' – идентификатор класса услуги | ||
| + | *** '''flightsPlains''' – планы полетов | ||
| + | **** '''DepartureCity''' – город вылета | ||
| + | ***** '''Key''' – ключ города | ||
| + | ***** '''Value''' – наименование города | ||
| + | **** '''DepartureCountry''' – страна вылета | ||
| + | ***** '''Key''' – ключ страны | ||
| + | ***** '''Value''' – наименование страны | ||
| + | **** '''ArrivalCity''' – город прибытия | ||
| + | ***** '''Key''' – ключ города | ||
| + | ***** '''Value''' – наименование города | ||
| + | **** '''ArrivalCountry''' – страна прибытия | ||
| + | ***** '''Key''' – ключ страны | ||
| + | ***** '''Value''' – наименование страны | ||
| + | **** '''DepartureAirport''' – аэропорт вылета | ||
| + | ***** '''Key''' – ключ аэропорта | ||
| + | ***** '''Value''' – наименование аэропорта | ||
| + | **** '''ArrivalAirport''' – аэропорт прилета | ||
| + | ***** '''Key''' – ключ аэропорта | ||
| + | ***** '''Value''' – наименование аэропорта | ||
| + | **** '''Airline''' – авиакомпания | ||
| + | ***** '''Id''' – идентификатор авиакомпании | ||
| + | ***** '''"Value''' – наименование авиакомпании | ||
| + | ***** '''"Key''' – ключ авиакомпании | ||
| + | **** '''Aircraft''' – воздушное судно | ||
| + | ***** '''Key''' – ключ воздушного судна | ||
| + | ***** '''Value''' – наименование воздушного судна | ||
| + | **** '''Flight''' – рейс | ||
| + | ***** '''Key''' – ключ рейса | ||
| + | ***** '''Value''' – наименование рейса | ||
| + | **** '''DepartureTime''' – время отправления | ||
| + | **** '''ArrivalTime''' – время прибытия | ||
| + | **** '''TotalTimeOfFlight''' – полное время перелета | ||
| + | **** '''FlightDetails''' – детали авиаперелета | ||
| + | ***** '''Tariff''' – информация о тарифе перелета | ||
| + | ****** '''Key''' – идентификатор | ||
| + | ****** '''Code''' – код тарифа | ||
| + | ****** '''Name''' – наименование тарифа | ||
| + | ***** '''IsCommission''' – признак, комиссионная ли услуга | ||
| + | ***** '''Cost''' – разница в стоимости с самым дешевым вариантом | ||
| + | ***** '''QuotaStatus''' – информация о квоте | ||
| + | ****** '''PlacesStatus''' – статус по квотам (есть места-1 / нет мест-2 / под запрос-4) | ||
| + | ****** '''FreePlaces''' – количество свободных мест, если удовлетворяются условия, заданные в настройке "Мало" и включена настройка "Отображать числовое значение оставшихся мест". Иначе возвращается 0. Если в данном параметре 0, то руководствоваться следует значением, полученном в параметре PlacesStatus. | ||
| + | ****** '''IsFewPlaces''' – выполнены ли условия, заданные в настройке "Мало": true – если заданы условия количества мест "Мало" и данные условия выполнены, false – если не заданы условия количества мест "Мало" или они заданы, но не выполнены. | ||
| + | ***** '''PartnerId''' – ключ партнера | ||
| + | ***** '''ByPax''' – цена за человека (true/false) | ||
| + | ***** '''Partner''' – информация о партнере | ||
| + | ****** '''Key''' – идентификатор | ||
| + | ****** '''Value''' – наименование | ||
| + | **** '''FlightSetting''' – информация о шаблоне услуги авиаперелета | ||
| + | ***** '''ServiceId''' – идентификатор класса услуги (внутренняя информация из программы туров) | ||
| + | ***** '''PatternId''' – идентификатор паттерна услуги (внутренняя информация из программы туров) | ||
| + | ***** '''FlightId''' – идентификатор внешнего перелета | ||
| + | **** '''FlightSourceMode''' – локальный или внешний перелет (внутренняя информация из программы туров) | ||
| + | **** '''Id''' – идентификатор базового шаблона услуги (внутренняя информация из программы туров) | ||
| + | **** '''SvKey''' – ключ типа услуги | ||
| + | **** '''IsSubCode1''' – признак наличия [[#Приложение 1: параметры услуги (ServiceType, Code, SubCode1, SubCode2)|доп. описания 1]] | ||
| + | **** '''IsSubCode2''' – признак наличия [[#Приложение 1: параметры услуги (ServiceType, Code, SubCode1, SubCode2)|доп. описания 2]] | ||
| + | **** '''IsPartnerBasedOn''' – признак услуга с приоритетным подбором поставщика | ||
| + | **** '''Day''' – день предоставления услуги | ||
| + | **** '''DurationInNight''' – продолжительность услуги в ночах | ||
| + | **** '''BeginDateTime''' – дата предоставления услуги | ||
| + | **** '''EndDateTime''' – дата окончания услуги | ||
| + | **** '''IsHooded''' – признак скрытая услуга | ||
| + | **** '''IsDeleted''' – признак удаляемая услуга | ||
| + | **** '''IsNotCalculate''' – признак не рассчитываемая услуга | ||
| + | **** '''PacketId''' – ключ пакета | ||
| + | **** '''Index''' – порядковый номер услуги | ||
| + | |||
| + | <div class="toccolours mw-collapsible mw-collapsed" style="width:900px">Пример | ||
| + | <div class="mw-collapsible-content"> | ||
| + | <TABLE STYLE="border: 0.1em dashed #2F6FAB; margin: 8px; padding: 8px" WIDTH="99%"><TR><TD> | ||
| + | Вызов метода RebuildFlights | ||
| + | <syntaxhighlight lang="java" enclose="div"> | ||
| + | POST http://localhost:9000/TourSearchOwin/RebuildFlights HTTP/1.1 | ||
| + | Content-Type: application/json | ||
| + | { | ||
| + | "flights": [ | ||
| + | { | ||
| + | "remotePriceSource": { | ||
| + | "providerId": 1, | ||
| + | "flightId": "111397601080000" | ||
}, | }, | ||
| − | + | "localPriceSource": { | |
| − | + | "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 | ||
| + | } | ||
| + | }, | ||
| + | "arrivalCity": { | ||
| + | "gdsItem": { | ||
| + | "id": "2761369", | ||
| + | "code": "VIE", | ||
| + | "name": "Vienna", | ||
| + | "requestValue": "VIE", | ||
| + | "displayedValue": "Vienna", | ||
| + | "dependencies": [ | ||
| + | { | ||
| + | "dictionaryId": 1, | ||
| + | "itemId": "40" | ||
| + | } | ||
| + | ] | ||
| + | }, | ||
| + | "mtItem": { | ||
| + | "id": "35", | ||
| + | "code": "VIE", | ||
| + | "name": "Вена", | ||
| + | "requestValue": "", | ||
| + | "displayedValue": "Вена", | ||
| + | "dependencies": [ | ||
| + | { | ||
| + | "dictionaryId": 1, | ||
| + | "itemId": "90" | ||
| + | } | ||
| + | ] | ||
| + | }, | ||
| + | "mapping": { | ||
| + | "id": 41, | ||
| + | "providerId": 1, | ||
| + | "dictionaryId": 2, | ||
| + | "providerDictionaryItemId": "2761369", | ||
| + | "providerDictionaryItemName": null | ||
| + | } | ||
| + | }, | ||
| + | "departureAirport": { | ||
| + | "gdsItem": { | ||
| + | "id": "5135", | ||
| + | "code": "SVO", | ||
| + | "name": "Moscow, Sheremetyevo", | ||
| + | "requestValue": "SVO", | ||
| + | "displayedValue": "SVO Moscow, Sheremetyevo", | ||
| + | "dependencies": [ | ||
| + | { | ||
| + | "dictionaryId": 1, | ||
| + | "itemId": "643" | ||
| + | }, | ||
| + | { | ||
| + | "dictionaryId": 2, | ||
| + | "itemId": "524901" | ||
| + | } | ||
| + | ] | ||
| + | }, | ||
| + | "mtItem": { | ||
| + | "id": "52", | ||
| + | "code": "SVO", | ||
| + | "name": "Шереметьево-2", | ||
| + | "requestValue": "", | ||
| + | "displayedValue": "SVO Шереметьево-2", | ||
| + | "dependencies": [ | ||
| + | { | ||
| + | "dictionaryId": 1, | ||
| + | "itemId": "460" | ||
| + | }, | ||
| + | { | ||
| + | "dictionaryId": 2, | ||
| + | "itemId": "1" | ||
| + | } | ||
| + | ] | ||
| + | }, | ||
| + | "mapping": { | ||
| + | "id": 1619, | ||
| + | "providerId": 1, | ||
| + | "dictionaryId": 5, | ||
| + | "providerDictionaryItemId": "5135", | ||
| + | "providerDictionaryItemName": null | ||
| + | } | ||
| + | }, | ||
| + | "arrivalAirport": { | ||
| + | "gdsItem": { | ||
| + | "id": "6625", | ||
| + | "code": "VIE", | ||
| + | "name": "Vienna International Airport", | ||
| + | "requestValue": "VIE", | ||
| + | "displayedValue": "VIE Vienna International Airport", | ||
| + | "dependencies": [ | ||
| + | { | ||
| + | "dictionaryId": 1, | ||
| + | "itemId": "40" | ||
| + | }, | ||
| + | { | ||
| + | "dictionaryId": 2, | ||
| + | "itemId": "2761369" | ||
| + | } | ||
| + | ] | ||
| + | }, | ||
| + | "mtItem": { | ||
| + | "id": "58", | ||
| + | "code": "VIE", | ||
| + | "name": "Vena", | ||
| + | "requestValue": "", | ||
| + | "displayedValue": "VIE Vena", | ||
| + | "dependencies": [ | ||
| + | { | ||
| + | "dictionaryId": 1, | ||
| + | "itemId": "90" | ||
| + | }, | ||
| + | { | ||
| + | "dictionaryId": 2, | ||
| + | "itemId": "35" | ||
| + | } | ||
| + | ] | ||
| + | }, | ||
| + | "mapping": { | ||
| + | "id": 259, | ||
| + | "providerId": 1, | ||
| + | "dictionaryId": 5, | ||
| + | "providerDictionaryItemId": "6625", | ||
| + | "providerDictionaryItemName": null | ||
| + | } | ||
| + | }, | ||
| + | "airline": { | ||
| + | "gdsItem": { | ||
| + | "id": "5", | ||
| + | "code": "SU", | ||
| + | "name": "Aeroflot", | ||
| + | "requestValue": "SU", | ||
| + | "displayedValue": "SU Aeroflot", | ||
| + | "dependencies": [] | ||
| + | }, | ||
| + | "mtItem": { | ||
| + | "id": "31", | ||
| + | "code": "SU", | ||
| + | "name": "Aeroflot-Russian International AirLines", | ||
| + | "requestValue": "", | ||
| + | "displayedValue": "SU Aeroflot-Russian International AirLines", | ||
| + | "dependencies": [] | ||
| + | }, | ||
| + | "mapping": { | ||
| + | "id": 265, | ||
| + | "providerId": 1, | ||
| + | "dictionaryId": 5, | ||
| + | "providerDictionaryItemId": "5", | ||
| + | "providerDictionaryItemName": null | ||
| + | } | ||
| + | }, | ||
| + | "aircraft": { | ||
| + | "gdsItem": { | ||
| + | "id": "97", | ||
| + | "code": "73H", | ||
| + | "name": "Boeing 737", | ||
| + | "requestValue": "73H", | ||
| + | "displayedValue": "73H Boeing 737", | ||
| + | "dependencies": [] | ||
| + | }, | ||
| + | "mtItem": { | ||
| + | "id": "27", | ||
| + | "code": "73H", | ||
| + | "name": "73H", | ||
| + | "requestValue": "", | ||
| + | "displayedValue": "73H 73H", | ||
| + | "dependencies": [] | ||
| + | }, | ||
| + | "mapping": { | ||
| + | "id": 323, | ||
| + | "providerId": 1, | ||
| + | "dictionaryId": 5,tour | ||
| + | "providerDictionaryItemId": "97", | ||
| + | "providerDictionaryItemName": null | ||
| + | } | ||
| + | }, | ||
| + | "tariff": { | ||
| + | "gdsItem": { | ||
| + | "id": "0", | ||
| + | "code": "N", | ||
| + | "name": "Экономический класс", | ||
| + | "requestValue": "", | ||
| + | "displayedValue": "", | ||
| + | "dependencies": [] | ||
| + | }, | ||
| + | "mtItem": null, | ||
| + | "mapping": null | ||
| + | }, | ||
| + | "flightNumber": "2184", | ||
| + | "baggageRestriction": [], | ||
| + | "departureDate": "2021-10-25T09:00:00", | ||
| + | "arrivalDate": "2021-10-25T11:00:00", | ||
| + | "quotaInfo": { | ||
| + | "status": 1, | ||
| + | "freePlaces": 0, | ||
| + | "isFewPlaces": false | ||
| + | } | ||
| + | } | ||
| + | ], | ||
| + | "commonPrice": 313 | ||
| + | } | ||
| + | ], | ||
| + | "tourDate": "2021-10-25T00:00:00" | ||
| + | } | ||
| + | </syntaxhighlight> | ||
| + | Возвращаемый результат метода RebuildFlights (в формате JSON) | ||
| + | <syntaxhighlight lang="java" enclose="div"> | ||
| + | { | ||
| + | "flights": [ | ||
| + | { | ||
| + | "remoteFlightId": "111397601080000", | ||
| + | "flightsSettings": [ | ||
| + | { | ||
| + | "templateId": 1, | ||
| + | "patternId": 0, | ||
| + | "serviceId": 0 | ||
| + | } | ||
| + | ], | ||
| + | "flightsPlains": [ | ||
| + | { | ||
| + | "DepartureCity": { | ||
| + | "Key": 1, | ||
| + | "Value": "Москва" | ||
| + | }, | ||
| + | "DepartureCountry": { | ||
| + | "Key": 460, | ||
| + | "Value": "Россия" | ||
| + | }, | ||
| + | "ArrivalCity": { | ||
| + | "Key": 35, | ||
| + | "Value": "Вена" | ||
| + | }, | ||
| + | "ArrivalCountry": { | ||
| + | "Key": 90, | ||
| + | "Value": "Австрия" | ||
| + | }, | ||
| + | "DepartureAirport": { | ||
| + | "Key": "SVO", | ||
| + | "Value": "Шереметьево-2" | ||
| + | }, | ||
| + | "ArrivalAirport": { | ||
| + | "Key": "VIE", | ||
| + | "Value": "Vena" | ||
| + | }, | ||
| + | "Airline": { | ||
| + | "Id": 31, | ||
| + | "Value": "Aeroflot-Russian International AirLines", | ||
| + | "Key": "SU" | ||
| + | }, | ||
| + | "Aircraft": { | ||
| + | "Key": "73H", | ||
| + | "Value": "73H" | ||
| + | }, | ||
| + | "Flight": { | ||
| + | "Key": 621, | ||
| + | "Value": "2184" | ||
| + | }, | ||
| + | "DepartureTime": "09:00:00", | ||
| + | "ArrivalTime": "11:00:00", | ||
| + | "TotalTimeOfFlight": null, | ||
| + | "FlightDetails": [ | ||
{ | { | ||
| − | + | "Tariff": { | |
| − | + | "Key": 113, | |
| − | + | "Code": "NSU", | |
| − | + | "Name": "Экономический класс(внешняя система)" | |
| + | }, | ||
| + | "IsCommission": false, | ||
| + | "Cost": 313, | ||
| + | "QuotaStatus": { | ||
| + | "PlacesStatus": 1, | ||
| + | "FreePlaces": 0, | ||
| + | "IsFewPlaces": false | ||
| + | }, | ||
| + | "PartnerId": 10767, | ||
| + | "ByPax": false, | ||
| + | "Partner": { | ||
| + | "Key": 0, | ||
| + | "Value": null | ||
| + | } | ||
| + | } | ||
| + | ], | ||
| + | "FlightSetting": { | ||
| + | "ServiceId": 1, | ||
| + | "PatternId": 0, | ||
| + | "FlightId": 0 | ||
| + | }, | ||
| + | "FlightSourceMode": 0, | ||
| + | "Id": 0, | ||
| + | "SvKey": 1, | ||
| + | "IsSubCode1": true, | ||
| + | "IsSubCode2": false, | ||
| + | "IsPartnerBasedOn": false, | ||
| + | "Day": 1, | ||
| + | "DurationInNight": 0, | ||
| + | "BeginDateTime": "2021-10-25T09:00:00", | ||
| + | "EndDateTime": "2021-10-25T11:00:00", | ||
| + | "IsHooded": false, | ||
| + | "IsDeleted": false, | ||
| + | "IsNotCalculate": false, | ||
| + | "PacketId": 197, | ||
| + | "Index": 0 | ||
| + | } | ||
| + | ] | ||
| + | } | ||
| + | ] | ||
| + | } | ||
| + | </syntaxhighlight> | ||
| + | </TD></TR></TABLE> | ||
| + | </div></div><br /> | ||
| + | |||
| + | ===Получение семейств тарифов авиаперелетов из внешней системы (GetGDSFlightFareFamilies)=== | ||
| + | Метод получает семейства тарифов для авиаперелетов из внешней системы. | ||
| + | * Формат запроса: | ||
| + | ** POST .../TourSearchOwin/GetGDSFlightFareFamilies? | ||
| + | |||
| + | * Принимаемые параметры headers ( '''*''' – обязательный): | ||
| + | ** '''Content-Type *''' – application/json | ||
| + | |||
| + | * Принимаемые параметры POST запроса ( '''*''' – обязательный): | ||
| + | ** '''flightId''' – ID внешнего перелета | ||
| + | ** '''providerId''' – ID внешнего провайдера | ||
| + | ** '''languageCode''' – код локализации | ||
| + | ** '''passengers''' – информация о пассажирах | ||
| + | *** '''IsMain''' – главный турист | ||
| + | *** '''Number''' – порядковый номер туриста | ||
| + | *** '''AgeType''' – тип туриста (0 – взрослый, 1 – ребенок, 2 – инфант) | ||
| + | *** '''MaleFemaleSex''' – пол (0 – мужской, 1 – женский) | ||
| + | *** '''FirstName''' – имя (лат) | ||
| + | *** '''LastName''' – фамилия (лат) | ||
| + | *** '''Patronymic''' – отчество (лат) | ||
| + | *** '''FirstNameRus''' – имя (рус) | ||
| + | *** '''LastNameRus''' – фамилия (рус) | ||
| + | *** '''PatronymicRus''' – отчество (рус) | ||
| + | *** '''InternationalPassportSeries''' – серия загранпаспорта | ||
| + | *** '''InternationalPassportNumber''' – номер загранпаспорта | ||
| + | *** '''InternationalPassportDateOfIssue''' – дата выдачи загранпаспорта (YYYY-MM-DDThh:mm:ssz) | ||
| + | *** '''InternationalPassportDateOfIssueString''' – дата выдачи загранпаспорта в строке (DD.MM.YYYY) | ||
| + | *** '''InternationalPassportDateOfExpiry''' – дата окончания действия загранпаспорта (YYYY-MM-DDThh:mm:ssz) | ||
| + | *** '''InternationalPassportDateOfExpiryString''' – дата окончания действия загранпаспорта в строке (DD.MM.YYYY) | ||
| + | *** '''internationalPassportByWhom''' – кем выдан загранпаспорт | ||
| + | *** '''PassportSeries''' – серия паспорта | ||
| + | *** '''PassportNumber''' – номер паспорта | ||
| + | *** '''PassportDateOfIssue''' – дата выдачи паспорта (YYYY-MM-DDThh:mm:ssz) | ||
| + | *** '''PassportDateOfIssueString''' – дата выдачи паспорта в строке (DD.MM.YYYY) | ||
| + | *** '''PassportByWhom''' – кем выдан паспорт | ||
| + | *** '''Citizenship''' – название страны | ||
| + | *** '''Phone''' – телефон | ||
| + | *** '''Email''' – e-mail | ||
| + | *** '''BirthDay''' – дата рождения (YYYY-MM-DDThh:mm:ssz) | ||
| + | *** '''BirthDayString''' – дата рождения в строковом формате (DD.MM.YYYY) | ||
| + | *** '''BirthPlace''' – место рождения | ||
| + | *** '''CitizenID''' – гражданство | ||
| + | *** '''Age''' – количество полных лет на момент окончания тура | ||
| + | ** '''currency''' – валюта | ||
| + | ** '''price''' – стоимость | ||
| + | ** '''param''' – параметры перелета | ||
| + | *** '''flightsSource''' – параметры перелета | ||
| + | **** '''flightSettings''' – информация о шаблоне услуги авиаперелета | ||
| + | ***** '''templateId''' – идентификатор шаблона услуги | ||
| + | ***** '''patternId''' – идентификатор паттерна услуги (внутренняя информация из программы туров) | ||
| + | ***** '''serviceId''' – идентификатор класса услуги (внутренняя информация из программы туров) | ||
| + | **** '''service''' – информация об услуге авиаперелета | ||
| + | ***** '''ServiceType''' – тип услуги | ||
| + | ***** '''Code''' – ключ услуги | ||
| + | ***** '''SubCode1''' – [[#Приложение 1: параметры услуги (ServiceType, Code, SubCode1, SubCode2)|доп. описание 1]] | ||
| + | ***** '''SubCode2''' – [[#Приложение 1: параметры услуги (ServiceType, Code, SubCode1, SubCode2)|доп. описание 2]] | ||
| + | ***** '''CountryId''' – страна услуги | ||
| + | ***** '''CityId''' – город услуги | ||
| + | ***** '''PacketId''' – пакет услуги | ||
| + | ***** '''PartnerId''' – партнер услуги | ||
| + | ***** '''Day''' – день предоставления услуги | ||
| + | ***** '''DurationInNight''' – продолжительность услуги в ночах | ||
| + | **** '''price''' – стоимость перелета | ||
| + | **** '''quotaInfo''' – объект информация по квотам | ||
| + | ***** '''status''' – статус по квотам (есть места / нет мест / под запрос) | ||
| + | ***** '''freePlaces''' – количество свободных мест, если удовлетворяются условия, заданные в настройке "Мало" и включена настройка "Отображать числовое значение оставшихся мест". Иначе возвращается 0. Если в данном параметре 0, то руководствоваться следует значением, полученном в параметре '''PlacesStatus'''. | ||
| + | ***** '''isFewPlaces''' – выполнены ли условия, заданные в настройке "Мало": '''true''' – если заданы условия количества мест "Мало" и данные условия выполнены, '''false''' – если не заданы условия количества мест "Мало" или они заданы, но не выполнены. | ||
| + | **** '''flightDateTimeLimitationInterval''' – | ||
| + | ***** '''startLimitation''' – начало тайм-лимита | ||
| + | ***** '''finishLimitation''' – объект тайм-лимита | ||
| + | ****** '''dateTimeString''' – дата окончания тайм-лимита | ||
| + | ****** '''serviceType''' – тип услуги | ||
| + | ****** '''serviceCode''' – код услуги | ||
| + | **** '''flightSourceMode''' – тип перелета (1 – локальный, 2 – из внешний системы) | ||
| + | *** '''passengers''' – информация о пассажирах | ||
| + | **** '''IsMain''' – главный турист | ||
| + | **** '''Number''' – порядковый номер туриста | ||
| + | **** '''AgeType''' – тип туриста (0 – взрослый, 1 – ребенок, 2 – инфант) | ||
| + | **** '''MaleFemaleSex''' – пол (0 – мужской, 1 – женский) | ||
| + | **** '''FirstName''' – имя (лат) | ||
| + | **** '''LastName''' – фамилия (лат) | ||
| + | **** '''Patronymic''' – отчество (лат) | ||
| + | **** '''FirstNameRus''' – имя (рус) | ||
| + | **** '''LastNameRus''' – фамилия (рус) | ||
| + | **** '''PatronymicRus''' – отчество (рус) | ||
| + | **** '''InternationalPassportSeries''' – серия загранпаспорта | ||
| + | **** '''InternationalPassportNumber''' – номер загранпаспорта | ||
| + | **** '''InternationalPassportDateOfIssue''' – дата выдачи загранпаспорта (YYYY-MM-DDThh:mm:ssz) | ||
| + | **** '''InternationalPassportDateOfIssueString''' – дата выдачи загранпаспорта в строковом формате (DD.MM.YYYY) | ||
| + | **** '''InternationalPassportDateOfExpiry''' – дата окончания действия загранпаспорта (YYYY-MM-DDThh:mm:ssz) | ||
| + | **** '''InternationalPassportDateOfExpiryString''' – дата окончания действия загранпаспорта в строковом формате (DD.MM.YYYY) | ||
| + | **** '''internationalPassportByWhom''' – кем выдан загранпаспорт | ||
| + | **** '''PassportSeries''' – серия паспорта | ||
| + | **** '''PassportNumber''' – номер паспорта | ||
| + | **** '''PassportDateOfIssue''' – дата выдачи паспорта (YYYY-MM-DDThh:mm:ssz) | ||
| + | **** '''PassportDateOfIssueString''' – дата выдачи паспорта в строковом формате (DD.MM.YYYY) | ||
| + | **** '''PassportByWhom''' – кем выдан паспорт | ||
| + | **** '''Citizenship''' – название страны | ||
| + | **** '''Phone''' – телефон | ||
| + | **** '''Email''' – e-mail | ||
| + | **** '''BirthDay''' – дата рождения (YYYY-MM-DDThh:mm:ssz) | ||
| + | **** '''BirthDayString''' – дата рождения в строковом формате (DD.MM.YYYY) | ||
| + | **** '''BirthPlace''' – место рождения | ||
| + | **** '''CitizenID''' – гражданство | ||
| + | **** '''Age''' – количество полных лет на момент окончания тура | ||
| + | *** '''tourDate''' – дата тура | ||
| + | *** '''tourCurrency''' – валюта тура | ||
| + | *** '''tourId''' – ключ программы тура | ||
| + | *** '''filterTariff''' – информация о тарифах | ||
| + | *** '''filterDeptime''' – информация о времени вылета | ||
| + | *** '''isCommission''' – признак комиссионной цены | ||
| + | *** '''baseFlightsParams''' – параметра авиаперелета | ||
| + | **** '''CityArrival''' – город прибытия | ||
| + | **** '''FlightCode''' – код авиаперелета | ||
| + | **** '''TariffKey''' – ключ тарифа | ||
| + | **** '''PartnerId''' – ключ партнера | ||
| + | *** '''isUpdated''' – информация об обновлении перелета | ||
| + | *** '''key''' – ключ запроса | ||
| + | *** '''tourDurationByDays''' – продолжительность перелета | ||
| + | *** '''langueCode''' – локализация | ||
| + | |||
| + | * Возвращаемый результат: | ||
| + | ** '''validationResult''' – информация о валидации | ||
| + | *** '''Errors''' – ошибки | ||
| + | *** '''Warnings''' – предупреждения | ||
| + | *** '''States''' – статус | ||
| + | *** '''IsValid''' – информация о результате | ||
| + | ** '''tariffSequencies''' – информация тарифах | ||
| + | *** '''flightId''' – идентификатор перелета | ||
| + | *** '''universalParametrsSequence''' – параметры тарифов | ||
| + | **** '''universalParametrs''' – массив параметров | ||
| + | ***** '''code''' – описание параметра тарифа | ||
| + | ***** '''priority''' – приоритет показа | ||
| + | ***** '''needToPay''' – нужна ли доплата | ||
| + | ***** '''shortDescriptions''' – краткое описание | ||
| + | ****** '''code''' – код | ||
| + | ****** '''value''' – значение | ||
| + | *** '''price''' – стоимость | ||
| + | *** '''deltaPrice''' – разница в цене | ||
| + | *** '''timeLimit''' – тайм-лимит | ||
| + | *** '''segments''' – сегменты | ||
| + | *** '''depAirportCode''' – код аэропорта отправления | ||
| + | *** '''depCityCode''' – код города отправления | ||
| + | *** '''arrAirportCode''' – код аэропорта прибытия | ||
| + | *** '''arrCityCode''' – код города прибытия | ||
| + | |||
| + | |||
| + | <div class="toccolours mw-collapsible mw-collapsed" style="width:900px">Пример | ||
| + | <div class="mw-collapsible-content"> | ||
| + | <TABLE STYLE="border: 0.1em dashed #2F6FAB; margin: 8px; padding: 8px" WIDTH="99%"><TR><TD> | ||
| + | Вызов метода GetGDSFlightFareFamilies | ||
| + | <syntaxhighlight lang="java" enclose="div"> | ||
| + | POST http://localhost:9000/TourSearchOwin/GetGDSFlightFareFamilies? HTTP/1.1 | ||
| + | Content-Type: application/json | ||
| + | |||
| + | { | ||
| + | "flightId": "17554943020000", | ||
| + | "providerId": 82, | ||
| + | "languageCode": "ru", | ||
| + | "passengers": [{ | ||
| + | "IsMain": true, | ||
| + | "Number": 1, | ||
| + | "AgeType": 0, | ||
| + | "MaleFemaleSex": 0, | ||
| + | "FirstName": "", | ||
| + | "LastName": "", | ||
| + | "Patronymic": "", | ||
| + | "FirstNameRus": "", | ||
| + | "LastNameRus": "", | ||
| + | "PatronymicRus": "", | ||
| + | "InternationalPassportSeries": "", | ||
| + | "InternationalPassportNumber": "", | ||
| + | "InternationalPassportDateOfIssue": "", | ||
| + | "InternationalPassportDateOfIssueString": "", | ||
| + | "InternationalPassportDateOfExpiry": "", | ||
| + | "InternationalPassportDateOfExpiryString": "", | ||
| + | "internationalPassportByWhom": "", | ||
| + | "PassportSeries": "", | ||
| + | "PassportNumber": "", | ||
| + | "PassportDateOfIssue": "", | ||
| + | "PassportDateOfIssueString": "", | ||
| + | "PassportByWhom": "", | ||
| + | "Citizenship": "", | ||
| + | "Phone": "", | ||
| + | "Email": "", | ||
| + | "BirthDay": "", | ||
| + | "BirthDayString": "", | ||
| + | "BirthPlace": "", | ||
| + | "CitizenID": "", | ||
| + | "Age": 17 | ||
| + | }, { | ||
| + | "IsMain": false, | ||
| + | "Number": 2, | ||
| + | "AgeType": 0, | ||
| + | "MaleFemaleSex": 0, | ||
| + | "FirstName": "", | ||
| + | "LastName": "", | ||
| + | "Patronymic": "", | ||
| + | "FirstNameRus": "", | ||
| + | "LastNameRus": "", | ||
| + | "PatronymicRus": "", | ||
| + | "InternationalPassportSeries": "", | ||
| + | "InternationalPassportNumber": "", | ||
| + | "InternationalPassportDateOfIssue": "", | ||
| + | "InternationalPassportDateOfIssueString": "", | ||
| + | "InternationalPassportDateOfExpiry": "", | ||
| + | "InternationalPassportDateOfExpiryString": "", | ||
| + | "internationalPassportByWhom": "", | ||
| + | "PassportSeries": "", | ||
| + | "PassportNumber": "", | ||
| + | "PassportDateOfIssue": "", | ||
| + | "PassportDateOfIssueString": "", | ||
| + | "PassportByWhom": "", | ||
| + | "Citizenship": "", | ||
| + | "Phone": "", | ||
| + | "Email": "", | ||
| + | "BirthDay": "", | ||
| + | "BirthDayString": "", | ||
| + | "BirthPlace": "", | ||
| + | "CitizenID": "", | ||
| + | "Age": 17 | ||
| + | } | ||
| + | ], | ||
| + | "currency": "$", | ||
| + | "price": 147, | ||
| + | "param": { | ||
| + | "flightsSource": [{ | ||
| + | "flightSettings": { | ||
| + | "templateId": 1, | ||
| + | "patternId": 0, | ||
| + | "serviceId": 0 | ||
| + | }, | ||
| + | "service": { | ||
| + | "serviceType": 1, | ||
| + | "code": 1084, | ||
| + | "subCode1": 67, | ||
| + | "subCode2": 1, | ||
| + | "countryId": 90, | ||
| + | "cityId": 35, | ||
| + | "packetId": 1037, | ||
| + | "partnerId": 12792, | ||
| + | "day": 1, | ||
| + | "durationInNight": 0 | ||
| + | }, | ||
| + | "price": 146.44, | ||
| + | "quotaInfo": { | ||
| + | "status": 4, | ||
| + | "freePlaces": 0, | ||
| + | "isFewPlaces": false | ||
| + | }, | ||
| + | "flightDateTimeLimitationInterval": { | ||
| + | "startLimitation": null, | ||
| + | "finishLimitation": { | ||
| + | "dateTimeString": "2021-01-30T21:40:00", | ||
| + | "serviceType": 3, | ||
| + | "serviceCode": 178 | ||
| + | } | ||
| + | }, | ||
| + | "flightSourceMode": 2 | ||
| + | } | ||
| + | ], | ||
| + | "passengers": [{ | ||
| + | "IsMain": true, | ||
| + | "Number": 1, | ||
| + | "AgeType": 0, | ||
| + | "MaleFemaleSex": 0, | ||
| + | "FirstName": "", | ||
| + | "LastName": "", | ||
| + | "Patronymic": "", | ||
| + | "FirstNameRus": "", | ||
| + | "LastNameRus": "", | ||
| + | "PatronymicRus": "", | ||
| + | "InternationalPassportSeries": "", | ||
| + | "InternationalPassportNumber": "", | ||
| + | "InternationalPassportDateOfIssue": "", | ||
| + | "InternationalPassportDateOfIssueString": "", | ||
| + | "InternationalPassportDateOfExpiry": "", | ||
| + | "InternationalPassportDateOfExpiryString": "", | ||
| + | "internationalPassportByWhom": "", | ||
| + | "PassportSeries": "", | ||
| + | "PassportNumber": "", | ||
| + | "PassportDateOfIssue": "", | ||
| + | "PassportDateOfIssueString": "", | ||
| + | "PassportByWhom": "", | ||
| + | "Citizenship": "", | ||
| + | "Phone": "", | ||
| + | "Email": "", | ||
| + | "BirthDay": "", | ||
| + | "BirthDayString": "", | ||
| + | "BirthPlace": "", | ||
| + | "CitizenID": "", | ||
| + | "Age": 17 | ||
| + | }, { | ||
| + | "IsMain": false, | ||
| + | "Number": 2, | ||
| + | "AgeType": 0, | ||
| + | "MaleFemaleSex": 0, | ||
| + | "FirstName": "", | ||
| + | "LastName": "", | ||
| + | "Patronymic": "", | ||
| + | "FirstNameRus": "", | ||
| + | "LastNameRus": "", | ||
| + | "PatronymicRus": "", | ||
| + | "InternationalPassportSeries": "", | ||
| + | "InternationalPassportNumber": "", | ||
| + | "InternationalPassportDateOfIssue": "", | ||
| + | "InternationalPassportDateOfIssueString": "", | ||
| + | "InternationalPassportDateOfExpiry": "", | ||
| + | "InternationalPassportDateOfExpiryString": "", | ||
| + | "internationalPassportByWhom": "", | ||
| + | "PassportSeries": "", | ||
| + | "PassportNumber": "", | ||
| + | "PassportDateOfIssue": "", | ||
| + | "PassportDateOfIssueString": "", | ||
| + | "PassportByWhom": "", | ||
| + | "Citizenship": "", | ||
| + | "Phone": "", | ||
| + | "Email": "", | ||
| + | "BirthDay": "", | ||
| + | "BirthDayString": "", | ||
| + | "BirthPlace": "", | ||
| + | "CitizenID": "", | ||
| + | "Age": 17 | ||
| + | } | ||
| + | ], | ||
| + | "tourDate": "2021-01-30T00:00:00", | ||
| + | "tourCurrency": "$", | ||
| + | "tourId": 100008958, | ||
| + | "filterTariff": {}, | ||
| + | "filterDeptime": ["all"], | ||
| + | "isCommission": true, | ||
| + | "baseFlightsParams": [{ | ||
| + | "CityArrival": 35, | ||
| + | "FlightCode": 1084, | ||
| + | "TariffKey": 67, | ||
| + | "PartnerId": 12792 | ||
| + | } | ||
| + | ], | ||
| + | "isUpdated": false, | ||
| + | "key": 0, | ||
| + | "tourDurationByDays": "11", | ||
| + | "langueCode": "ru" | ||
| + | } | ||
| + | } | ||
| + | |||
| + | </syntaxhighlight> | ||
| + | Возвращаемый результат метода GetGDSFlightFareFamilies (в формате JSON) | ||
| + | <syntaxhighlight lang="java" enclose="div"> | ||
| + | [ | ||
| + | { | ||
| + | "validationResult": { | ||
| + | "Errors": [], | ||
| + | "Warnings": null, | ||
| + | "States": null, | ||
| + | "IsValid": true | ||
| + | }, | ||
| + | "tariffSequencies": [{ | ||
| + | "flightId": "17554961000000", | ||
| + | "universalParametrsSequence": [{ | ||
| + | "universalParametrs": [{ | ||
| + | "code": "description", | ||
| + | "priority": 0, | ||
| + | "needToPay": "Free", | ||
| + | "shortDescriptions": [{ | ||
| + | "code": "RU", | ||
| + | "value": "Минимум" | ||
| + | } | ||
| + | ] | ||
| + | }, { | ||
| + | "code": "carry_on", | ||
| + | "priority": 1, | ||
| + | "needToPay": "Free", | ||
| + | "shortDescriptions": [{ | ||
| + | "code": "RU", | ||
| + | "value": "5 кг (40x30x20 см)" | ||
| + | } | ||
| + | ] | ||
| + | }, { | ||
| + | "code": "carry_on", | ||
| + | "priority": 2, | ||
| + | "needToPay": "Charge", | ||
| + | "shortDescriptions": [{ | ||