Мастер-Тур(15):API для разработки онлайн поиска и бронирования — различия между версиями
| [досмотренная версия] | [досмотренная версия] |
Biryukov (обсуждение | вклад) |
Biryukov (обсуждение | вклад) (→Установка) |
||
| (не показано 315 промежуточных версий 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'' | ||
==Список методов== | ==Список методов== | ||
| Строка 20: | Строка 21: | ||
[[Файл:mb_273.png|1000px|Последовательность вызова методов сервиса]] | [[Файл:mb_273.png|1000px|Последовательность вызова методов сервиса]] | ||
| − | + | ===Информация о состоянии службы поиска (statusCache)=== | |
| − | === | + | Метод выводит информацию о состоянии службы поиска при ее загрузке. |
| − | Метод | ||
* Формат запроса: | * Формат запроса: | ||
| − | ** .../TourSearchOwin/ | + | ** 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="toccolours mw-collapsible mw-collapsed" style="width:900px">Пример | ||
| Строка 56: | Строка 43: | ||
Вызов метода Settings | Вызов метода Settings | ||
<syntaxhighlight lang="java" enclose="div"> | <syntaxhighlight lang="java" enclose="div"> | ||
| − | http://localhost:9000/TourSearchOwin/ | + | GET http://localhost:9000/TourSearchOwin/statusCache |
</syntaxhighlight> | </syntaxhighlight> | ||
| − | Возвращаемый результат метода | + | Возвращаемый результат метода statusCache (в формате JSON) |
<syntaxhighlight lang="java" enclose="div"> | <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"> |
| − | </syntaxhighlight> | + | POST http://localhost:9000/TourSearchOwin/Token HTTP/1.1 |
| − | </TD></TR></TABLE> | + | 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 /> | </div></div><br /> | ||
| − | ===Выгрузка | + | ===Выгрузка настроек службы поиска (Settings)=== |
| − | Метод | + | Метод производит выгрузку настроек службы поиска. |
* Формат запроса: | * Формат запроса: | ||
| − | ** .../TourSearchOwin/ | + | ** GET .../TourSearchOwin/Settings? |
* Принимаемые параметры: | * Принимаемые параметры: | ||
** нет принимаемых параметров | ** нет принимаемых параметров | ||
* Возвращаемый результат: | * Возвращаемый результат: | ||
| − | ** ''' | + | ** '''ChildAgesSetting''' – регулируется настройкой [[Мастер-Тур(15):Программа туров. Настройки|максимальный возраст ребенка]] (массив возрастов, при которых турист будет считаться ребенком |
| − | ** ''' | + | ** '''DurationSetting''' – регулируется настройкой [[Мастер-Тур(15):Программа туров. Настройки|максимальная продолжительность тура]] (массив продолжительностей, доступных в фильтрах для поиска) |
| − | ** ''' | + | ** '''RoundServiceSetting''' – признак округления цены (количество знаков после запятой) |
| − | ** ''' | + | ** '''CacheReady''' – статус готовности службы поиска к работе (true/false) |
| − | ** ''' | + | ** '''EnableFiterTree''' – устаревшая настройка, будет убрана (по умолчанию всегда false) |
| − | ** ''' | + | ** '''EnableActualFilters''' – включены ли актуальные фильтры (true/false) |
| − | ** ''' | + | ** '''CorrectLicense''' – проверка лицензии (true/false) |
| − | + | ** '''CorrectLicenseMessage''' – сообщение, если проверка лицензии не прошла | |
| + | ** '''IsCorrectUser''' – проверка наличия пользователя в таблице ''Userlist'', под которым запущена служба поиска (true/false) | ||
| + | ** '''IsShowCitizenAuthTourist''' – настройка запрашивать гражданство при регистрации частного лица (true/false) | ||
| + | ** '''IsShowFewCountPlaces''' – настройка отображения числового значения оставшихся мест, когда достигнуто значение «Мало» (true/false) | ||
| + | ** '''IsShowBusTransferPlaces''' – использовать фильтр наличие мест на автобусный переезд в поиске (true/false) | ||
| + | ** '''UseBusSeatChecks''' – план рассадки автобусного переезда (0 – не отображать, 1 – отображать без проверки, 2 – отображать с проверкой) | ||
| + | ** '''UseTransferSeatChecks''' – план рассадки трансфера (0 – не отображать, 1 – отображать без проверки, 2 – отображать с проверкой) | ||
| + | ** '''IsShowFiltersByCity''' – отображать фильтр по городам на главной странице поиска (true/false) | ||
| + | ** '''CheckRealCourses''' – включена ли проверка курсов реальных валют при поиске (true/false) | ||
| + | ** '''CommonImagesFolderPath''' – путь к папке для хранения изображений | ||
| + | ** '''UseApplyFiltersButton''' – отображать кнопку «Применить фильтры» (true/false) | ||
| + | ** '''AutoSearchFiltersTimeout''' – задержка между выбором дополнительных фильтров и выводом результатов (в секундах) | ||
| + | ** '''UseFastSearchAlgoritm''' – использовать быстрый алгоритм поиска (true/false) | ||
| + | ** '''MaxSearchDatesCountClient''' – максимальное количество дат, которое будет обрабатываться в клиенте поиска | ||
| + | ** '''MaxDurationsCountClient''' – максимальное количество продолжительностей, которое будет обрабатываться в клиенте поиска | ||
| + | ** '''UseHotelCategoryGlobalCodeInDopFilter''' – использовать глобальные коды категорий отелей в поиске | ||
| + | ** '''UsePansionGlobalCodeInDopFilter''' – использовать глобальные коды питаний в поиске | ||
| + | ** '''CheckTouristDataInBasket''' – проверять корректность данных туристов | ||
| + | ** '''SimpleRegistration''' – упрощенная регистрация частного лица | ||
| + | ** '''ShowHotelImagesInSearch''' – показывать описание и изображения отелей в поиске | ||
| + | ** '''CacheReadyMessage''' – сообщение о готовности службы поиска или службы расчета актуальных фильтров. Варианты возвращаемых значений: | ||
| + | *** ''<add key="enableActualFilters" value="true" />'' - CacheReady: true = CacheReadyMessage: "Кеш инициализирован"; CacheReady: false = CacheReadyMessage: "Кеш еще не инициализирован" | ||
| + | *** ''<add key="enableActualFilters" value="false" />'' - Служба актуальных фильтров недоступна (выключена, неверно указана ссылка на нее и т.п.) CacheReadyMessage: "Служба актуальных фильтров недоступна"; Служба актуальных фильтров доступна но не готова - CacheReadyMessage: "Кеш службы актуальных фильтров не инициализирован"; Служба актуальных фильтров готова, а основная служба не готова - CacheReadyMessage: "Кеш ещё не инициализирован"; Служба актуальных фильтров готова, и основная служба готова - CacheReadyMessage: "Кеш ещё инициализирован". | ||
| + | ** '''nodeId''' – уникальный идентификатор узла в кластере балансировки нагрузки [[Мастер-Тур(15):Балансировщик нагрузки HaProxy|HaProxy]] | ||
| + | ** '''FullPaymentPeriod''' – полная оплата с даты бронирования (может быть null) | ||
| + | ** '''FullPaymentCheckin''' – полная оплата до даты заезда (может быть null) | ||
| + | ** '''PrePaymentPeriod''' – предоплата с даты бронирования (может быть null) | ||
| + | ** '''PrePaymentCheckin''' – предоплата до даты заезда (может быть null) | ||
| + | ** '''PrePaymentCu"''' – значение предоплаты в y.e. (может быть null) | ||
| + | ** '''PrePaymentPercent''' – значение предоплаты в процентах (может быть null) | ||
<div class="toccolours mw-collapsible mw-collapsed" style="width:900px">Пример | <div class="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> | ||
| − | Вызов метода | + | Вызов метода Settings |
<syntaxhighlight lang="java" enclose="div"> | <syntaxhighlight lang="java" enclose="div"> | ||
| − | http://localhost:9000/TourSearchOwin/ | + | GET http://localhost:9000/TourSearchOwin/Settings |
</syntaxhighlight> | </syntaxhighlight> | ||
| − | Возвращаемый результат метода | + | Возвращаемый результат метода Settings (в формате JSON) |
<syntaxhighlight lang="java" enclose="div"> | <syntaxhighlight lang="java" enclose="div"> | ||
| − | [ | + | { |
| − | + | "ChildAgesSetting": [ | |
| − | " | + | 1, |
| − | + | 2, | |
| − | + | 3, | |
| − | + | 4, | |
| − | + | 5, | |
| − | + | 6, | |
| − | + | 7, | |
| − | + | 8, | |
| − | + | 9, | |
| − | + | 10, | |
| − | + | 11, | |
| − | + | 12, | |
| − | + | 13, | |
| − | + | 14, | |
| − | + | 15, | |
| − | + | 16 | |
| − | + | ], | |
| − | + | "DurationSetting": [ | |
| − | + | 1, | |
| − | + | 2, | |
| − | + | 3, | |
| − | + | 4, | |
| − | + | 5, | |
| − | + | 6, | |
| − | + | 7, | |
| − | + | 8, | |
| − | + | 9, | |
| + | 10, | ||
| + | 11, | ||
| + | 12, | ||
| + | 13, | ||
| + | 14, | ||
| + | 15, | ||
| + | 16, | ||
| + | 17, | ||
| + | 18, | ||
| + | 19, | ||
| + | 20 | ||
| + | ], | ||
| + | "RoundServiceSetting": 2, | ||
| + | "CacheReady": true, | ||
| + | "EnableFiterTree": false, | ||
| + | "EnableActualFilters": true, | ||
| + | "CorrectLicense": true, | ||
| + | "CorrectLicenseMessage": "0deb1f882da1ec6301c961780507a180", | ||
| + | "IsCorrectUser": true, | ||
| + | "IsShowCitizenAuthTourist": true, | ||
| + | "IsShowFewCountPlaces": true, | ||
| + | "IsShowBusTransferPlaces": true, | ||
| + | "UseBusSeatChecks": 1, | ||
| + | "UseTransferSeatChecks": 2, | ||
| + | "IsShowFiltersByCity": true, | ||
| + | "CheckRealCourses": true, | ||
| + | "CommonImagesFolderPath": "\\\\server\\Icons", | ||
| + | "UseApplyFiltersButton": false, | ||
| + | "AutoSearchFiltersTimeout": 1, | ||
| + | "UseFastSearchAlgoritm": true, | ||
| + | "MaxSearchDatesCountClient": 10, | ||
| + | "MaxDurationsCountClient": 14 | ||
| + | "UseHotelCategoryGlobalCodeInDopFilter": false | ||
| + | "UsePansionGlobalCodeInDopFilter": false | ||
| + | "CheckTouristDataInBasket": true | ||
| + | "SimpleRegistration": false | ||
| + | "ShowHotelImagesInSearch": true | ||
| + | "CacheReadyMessage": "Кеш инициализирован" | ||
| + | "nodeId": 2147483647, | ||
| + | "FullPaymentPeriod": null, | ||
| + | "FullPaymentCheckin": 5, | ||
| + | "PrePaymentPeriod": null, | ||
| + | "PrePaymentCheckin": 10, | ||
| + | "PrePaymentPercent": 50.0, | ||
| + | "PrePaymentCu": null | ||
| + | } | ||
</syntaxhighlight> | </syntaxhighlight> | ||
</TD></TR></TABLE> | </TD></TR></TABLE> | ||
</div></div><br /> | </div></div><br /> | ||
| − | ===Выгрузка | + | ===Выгрузка списка валют в онлайне (Currency)=== |
| − | Метод | + | Метод возвращает список используемых валют. |
* Формат запроса: | * Формат запроса: | ||
| − | ** .../TourSearchOwin/ | + | ** GET .../TourSearchOwin/Currency |
* Принимаемые параметры: | * Принимаемые параметры: | ||
** нет принимаемых параметров | ** нет принимаемых параметров | ||
* Возвращаемый результат: | * Возвращаемый результат: | ||
| − | + | ** '''Code''' – код валюты | |
| − | ** '''Code''' – код | + | ** '''Name''' – наименование валюты |
| − | ** '''Name''' – наименование | + | ** '''IsMain''' – признак валюты «Главная» |
| − | + | ** '''IsNational''' – признак валюты «Национальная» | |
| − | + | ** '''IsoCode''' – ISO код валюты | |
| − | + | ** '''IsShowInSearch''' – признак показывать ли валюту в поиске | |
| − | ** ''' | + | ** '''Symbol''' – символ валюты (обрабатывается с 15.7) |
| − | ** ''' | + | ** '''Key''' – идентификатор валюты |
| − | ** ''' | + | |
| − | |||
| − | ** ''' | ||
| − | |||
| − | ** ''' | ||
| − | |||
| − | ** ''' | ||
| − | |||
<div class="toccolours mw-collapsible mw-collapsed" style="width:900px">Пример | <div class="toccolours mw-collapsible mw-collapsed" style="width:900px">Пример | ||
<div class="mw-collapsible-content"> | <div class="mw-collapsible-content"> | ||
<TABLE STYLE="border: 0.1em dashed #2F6FAB; margin: 8px; padding: 8px" WIDTH="99%"><TR><TD> | <TABLE STYLE="border: 0.1em dashed #2F6FAB; margin: 8px; padding: 8px" WIDTH="99%"><TR><TD> | ||
| − | Вызов метода | + | Вызов метода Currency |
<syntaxhighlight lang="java" enclose="div"> | <syntaxhighlight lang="java" enclose="div"> | ||
| − | http://localhost:9000/TourSearchOwin/ | + | GET http://localhost:9000/TourSearchOwin/Currency |
</syntaxhighlight> | </syntaxhighlight> | ||
| − | Возвращаемый результат метода | + | Возвращаемый результат метода Currency (в формате JSON) |
<syntaxhighlight lang="java" enclose="div"> | <syntaxhighlight lang="java" enclose="div"> | ||
[ | [ | ||
{ | { | ||
| − | " | + | "Code": "EU", |
| − | " | + | "Name": "Euro", |
| − | " | + | "IsMain": false, |
| − | " | + | "IsNational": false, |
| − | " | + | "IsoCode": "EUR", |
| − | " | + | "IsShowInSearch": true, |
| − | " | + | "Symbol": "€", |
| − | " | + | "Key": 2 |
| − | " | + | }, |
| − | " | + | { |
| − | " | + | "Code": "рб", |
| − | " | + | "Name": "Рубль", |
| − | + | "IsMain": false, | |
| − | " | + | "IsNational": true, |
| − | " | + | "IsoCode": "RUR", |
| − | " | + | "IsShowInSearch": true, |
| + | "Symbol": "₽", | ||
| + | "Key": 14 | ||
}, | }, | ||
{ | { | ||
| − | + | "Code": "$", | |
| − | "Code": " | + | "Name": "US Dollar", |
| − | "Name": " | + | "IsMain": true, |
| − | + | "IsNational": false, | |
| − | " | + | "IsoCode": "USD", |
| − | " | + | "IsShowInSearch": true, |
| − | + | "Symbol": "$", | |
| − | + | "Key": 1 | |
| − | " | ||
| − | |||
| − | " | ||
| − | " | ||
| − | |||
| − | " | ||
| − | |||
| − | |||
} | } | ||
] | ] | ||
| Строка 258: | Строка 327: | ||
</div></div><br /> | </div></div><br /> | ||
| − | ===Выгрузка | + | |
| − | Метод | + | ===Выгрузка курсов валют (CurrencyRates) начиная с 15.7=== |
| + | Полный аналог метода [[Мастер-Тур(15):API для отдачи цен в поисковые системы#Выгрузка курсов валют (GetCurrencyRates)|Выгрузка курсов валют (GetCurrencyRates)]]<br /> | ||
| + | Метод возвращает список курсов валют, актуальных на дату запроса. Курсы отображаются только для тех валют, которые отмечены в справочнике признаком ''Отображать в онлайне'' | ||
* Формат запроса: | * Формат запроса: | ||
| − | ** .../TourSearchOwin/ | + | ** 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="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> | ||
| − | Вызов метода | + | Вызов метода CurrencyRates |
<syntaxhighlight lang="java" enclose="div"> | <syntaxhighlight lang="java" enclose="div"> | ||
| − | http://localhost:9000/TourSearchOwin/ | + | http://localhost:9000/TourSearchOwin/CurrencyRates?dateFrom=18.09.2024&dateTo=19.09.2024 |
</syntaxhighlight> | </syntaxhighlight> | ||
| − | Возвращаемый результат метода | + | Возвращаемый результат метода CurrencyRates (в формате JSON) |
<syntaxhighlight lang="java" enclose="div"> | <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" | |
| − | + | }, | |
| − | ] | + | { |
| − | </syntaxhighlight> | + | "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> | </TD></TR></TABLE> | ||
</div></div><br /> | </div></div><br /> | ||
| − | ===Выгрузка списка | + | ===Выгрузка списка всех валют (getAllCurrencies)=== |
| − | Метод | + | Метод возвращает список всех валют. |
* Формат запроса: | * Формат запроса: | ||
| − | ** .../TourSearchOwin/ | + | ** GET .../TourSearchOwin/AllCurencies/getAllCurrencies |
| − | * Принимаемые параметры | + | * Принимаемые параметры: |
| − | ** | + | ** нет принимаемых параметров |
| − | |||
* Возвращаемый результат: | * Возвращаемый результат: | ||
| − | ** '''Name''' – | + | ** '''Code''' – код валюты |
| − | ** ''' | + | ** '''Name''' – наименование валюты |
| − | ** ''' | + | ** '''IsMain''' – признак валюты «Главная» |
| + | ** '''IsNational''' – признак валюты «Национальная» | ||
| + | ** '''IsoCode''' – ISO код валюты | ||
| + | ** '''IsShowInSearch''' – признак показывать ли валюту в поиске | ||
| + | ** '''Symbol''' – символ валюты (обрабатывается с 15.7) | ||
| + | ** '''Key''' – идентификатор валюты | ||
<div class="toccolours mw-collapsible mw-collapsed" style="width:900px">Пример | <div class="toccolours mw-collapsible mw-collapsed" style="width:900px">Пример | ||
<div class="mw-collapsible-content"> | <div class="mw-collapsible-content"> | ||
<TABLE STYLE="border: 0.1em dashed #2F6FAB; margin: 8px; padding: 8px" WIDTH="99%"><TR><TD> | <TABLE STYLE="border: 0.1em dashed #2F6FAB; margin: 8px; padding: 8px" WIDTH="99%"><TR><TD> | ||
| − | Вызов метода | + | Вызов метода getAllCurrencies |
<syntaxhighlight lang="java" enclose="div"> | <syntaxhighlight lang="java" enclose="div"> | ||
| − | http://localhost:9000/TourSearchOwin/ | + | GET http://localhost:9000/TourSearchOwin/AllCurencies/getAllCurrencies |
</syntaxhighlight> | </syntaxhighlight> | ||
| − | Возвращаемый результат метода | + | Возвращаемый результат метода getAllCurrencies (в формате JSON) |
<syntaxhighlight lang="java" enclose="div"> | <syntaxhighlight lang="java" enclose="div"> | ||
[ | [ | ||
{ | { | ||
| − | "Name": " | + | "Code": "EU", |
| − | " | + | "Name": "Euro", |
| − | " | + | "IsMain": false, |
| + | "IsNational": false, | ||
| + | "IsoCode": "EUR", | ||
| + | "IsShowInSearch": true, | ||
| + | "Symbol": "€", | ||
| + | "Key": 2 | ||
}, | }, | ||
{ | { | ||
| − | "Name": " | + | "Code": "рб", |
| − | " | + | "Name": "Рубль", |
| − | " | + | "IsMain": false, |
| + | "IsNational": true, | ||
| + | "IsoCode": "RUR", | ||
| + | "IsShowInSearch": true, | ||
| + | "Symbol": "₽", | ||
| + | "Key": 14 | ||
}, | }, | ||
{ | { | ||
| − | "Name": " | + | "Code": "$", |
| − | " | + | "Name": "US Dollar", |
| − | " | + | "IsMain": true, |
| − | } | + | "IsNational": false, |
| + | "IsoCode": "USD", | ||
| + | "IsShowInSearch": true, | ||
| + | "Symbol": "$", | ||
| + | "Key": 1 | ||
| + | }, | ||
| + | { | ||
| + | "Code": "гр", | ||
| + | "Name": "Гривна", | ||
| + | "IsMain": false, | ||
| + | "IsNational": false, | ||
| + | "IsoCode": "UAH", | ||
| + | "IsShowInSearch": true, | ||
| + | "Symbol": "₴", | ||
| + | "Key": 6 | ||
| + | } | ||
] | ] | ||
</syntaxhighlight> | </syntaxhighlight> | ||
| Строка 337: | Строка 455: | ||
</div></div><br /> | </div></div><br /> | ||
| − | === | + | |
| − | Метод возвращает | + | ===Получение сконвертированных цен (convertFilterPrice)=== |
| + | Метод возвращает сконвертированные цен для допфильтра ''Цена'' (используется в canary) | ||
* Формат запроса: | * Формат запроса: | ||
| − | ** .../TourSearchOwin/ | + | ** GET .../TourSearchOwin/AllCurencies/convertFilterPrice |
* Принимаемые параметры ( '''*''' – обязательный): | * Принимаемые параметры ( '''*''' – обязательный): | ||
| − | ** ''' | + | ** '''SourceRateKey *''' – ключ исходной валюты конвертации |
| − | ** ''' | + | ** '''TargetRateKey *''' – ключ валюты, в которую будет произведена конвертация |
| − | ** ''' | + | ** '''MinPrice *''' – значение минимальной цены, которое будет участвовать в конвертации |
| − | ** ''' | + | ** '''MaxPrice *''' – значение максимальной цены, которое будет участвовать в конвертации |
* Возвращаемый результат: | * Возвращаемый результат: | ||
| − | ** ''' | + | ** '''m_Item1''' – сконвертированная минимальная цена |
| − | ** ''' | + | ** '''m_Item12''' – сконвертированная максимальная цена |
<div class="toccolours mw-collapsible mw-collapsed" style="width:900px">Пример | <div class="toccolours mw-collapsible mw-collapsed" style="width:900px">Пример | ||
<div class="mw-collapsible-content"> | <div class="mw-collapsible-content"> | ||
<TABLE STYLE="border: 0.1em dashed #2F6FAB; margin: 8px; padding: 8px" WIDTH="99%"><TR><TD> | <TABLE STYLE="border: 0.1em dashed #2F6FAB; margin: 8px; padding: 8px" WIDTH="99%"><TR><TD> | ||
| − | Вызов метода | + | Вызов метода convertFilterPrice |
<syntaxhighlight lang="java" enclose="div"> | <syntaxhighlight lang="java" enclose="div"> | ||
| − | http://localhost:9000/TourSearchOwin/ | + | GET http://localhost:9000/TourSearchOwin/AllCurencies/convertFilterPrice?SourceRateKey=2&TargetRateKey=1&MinPrice=10&MaxPrice=200 |
</syntaxhighlight> | </syntaxhighlight> | ||
| − | Возвращаемый результат метода | + | Возвращаемый результат метода convertFilterPrice (в формате JSON) |
<syntaxhighlight lang="java" enclose="div"> | <syntaxhighlight lang="java" enclose="div"> | ||
| − | + | { | |
| − | + | "m_Item1": 12.035142616440004814057046576, | |
| − | + | "m_Item2": 240.70285232880009628114093152 | |
| − | + | } | |
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
</syntaxhighlight> | </syntaxhighlight> | ||
</TD></TR></TABLE> | </TD></TR></TABLE> | ||
</div></div><br /> | </div></div><br /> | ||
| − | ===Выгрузка | + | ===Выгрузка квотируемых услуг системы (QuotedServices)=== |
| − | Метод | + | Метод производит выгрузку услуг с признаком «Квотируемая» |
* Формат запроса: | * Формат запроса: | ||
| − | ** .../TourSearchOwin/ | + | ** GET .../TourSearchOwin/QuotedServices |
| − | * Принимаемые параметры | + | * Принимаемые параметры: |
| − | ** | + | ** нет принимаемых параметров |
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
* Возвращаемый результат: | * Возвращаемый результат: | ||
| − | ** '''Key''' – идентификатор | + | ** '''Key''' – идентификатор услуги |
| − | ** '''Name''' – | + | ** '''Code''' – код услуги |
| − | ** ''' | + | ** '''Name''' – наименование услуги (русский) |
| + | ** '''NameLat''' – наименование услуги (английский) | ||
| + | ** '''IsDuration''' – наличие продолжительности у услуги | ||
| + | ** '''IsCity''' – наличие города у услуги | ||
| + | ** '''IsSubCode1''' – признак наличия [[#Приложение 1: параметры услуги (ServiceType, Code, SubCode1, SubCode2)|SubCode1]] у услуги | ||
| + | ** '''IsSubCode2''' – признак наличия [[#Приложение 1: параметры услуги (ServiceType, Code, SubCode1, SubCode2)|SubCode2]] у услуги | ||
| + | ** '''Quoted''' – признак квотируемости услуги | ||
| + | ** '''CheckGeoPoint''' – наличие геоточек у услуги | ||
| + | ** '''IsRoute''' – признак маршрутной услуги | ||
| + | ** '''IsPartnerBasedOn''' – признак сопоставления партнера услуги в зависимости от отеля | ||
| + | ** '''Control''' – идентификатор статуса услуги | ||
<div class="toccolours mw-collapsible mw-collapsed" style="width:900px">Пример | <div class="toccolours mw-collapsible mw-collapsed" style="width:900px">Пример | ||
<div class="mw-collapsible-content"> | <div class="mw-collapsible-content"> | ||
<TABLE STYLE="border: 0.1em dashed #2F6FAB; margin: 8px; padding: 8px" WIDTH="99%"><TR><TD> | <TABLE STYLE="border: 0.1em dashed #2F6FAB; margin: 8px; padding: 8px" WIDTH="99%"><TR><TD> | ||
| − | Вызов метода | + | Вызов метода QuotedServices |
<syntaxhighlight lang="java" enclose="div"> | <syntaxhighlight lang="java" enclose="div"> | ||
| − | http://localhost:9000/TourSearchOwin/ | + | GET http://localhost:9000/TourSearchOwin/QuotedServices |
</syntaxhighlight> | </syntaxhighlight> | ||
| − | Возвращаемый результат метода | + | Возвращаемый результат метода QuotedServices (в формате JSON) |
<syntaxhighlight lang="java" enclose="div"> | <syntaxhighlight lang="java" enclose="div"> | ||
[ | [ | ||
{ | { | ||
| − | "Key": | + | "Key": 1, |
| − | "Name": " | + | "Code": "А_П", |
| − | " | + | "Name": "Авиаперелет", |
| + | "NameLat": "Flight", | ||
| + | "IsDuration": false, | ||
| + | "IsCity": true, | ||
| + | "IsSubCode1": true, | ||
| + | "IsSubCode2": false, | ||
| + | "Quoted": true, | ||
| + | "CheckGeoPoint": true, | ||
| + | "IsRoute": true, | ||
| + | "IsPartnerBasedOn": false, | ||
| + | "Control": 1 | ||
}, | }, | ||
{ | { | ||
| − | "Key": | + | "Key": 3, |
| − | "Name": " | + | "Code": "HOTEL", |
| − | " | + | "Name": "Отель/Круиз", |
| − | + | "NameLat": "Hotel/Cruise", | |
| − | + | "IsDuration": true, | |
| − | " | + | "IsCity": true, |
| − | " | + | "IsSubCode1": true, |
| − | " | + | "IsSubCode2": true, |
| + | "Quoted": true, | ||
| + | "CheckGeoPoint": true, | ||
| + | "IsRoute": true, | ||
| + | "IsPartnerBasedOn": false, | ||
| + | "Control": 1 | ||
} | } | ||
] | ] | ||
| Строка 423: | Строка 552: | ||
</div></div><br /> | </div></div><br /> | ||
| − | ===Выгрузка актуальных | + | ===Выгрузка актуальных городов отправления (departureCities)=== |
| − | Метод производит выгрузку доступных | + | Метод производит выгрузку всех доступных городов отправления для поискового запроса. |
* Формат запроса: | * Формат запроса: | ||
| − | ** .../TourSearchOwin/ | + | ** GET .../TourSearchOwin/departureCities? |
| − | * Принимаемые параметры | + | * Принимаемые параметры: |
| − | ** | + | ** нет принимаемых параметров |
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
* Возвращаемый результат: | * Возвращаемый результат: | ||
| − | ** | + | ** '''Key''' – идентификатор города |
| + | ** '''Name''' – название города | ||
<div class="toccolours mw-collapsible mw-collapsed" style="width:900px">Пример | <div class="toccolours mw-collapsible mw-collapsed" style="width:900px">Пример | ||
<div class="mw-collapsible-content"> | <div class="mw-collapsible-content"> | ||
<TABLE STYLE="border: 0.1em dashed #2F6FAB; margin: 8px; padding: 8px" WIDTH="99%"><TR><TD> | <TABLE STYLE="border: 0.1em dashed #2F6FAB; margin: 8px; padding: 8px" WIDTH="99%"><TR><TD> | ||
| − | Вызов метода | + | Вызов метода departureCities |
<syntaxhighlight lang="java" enclose="div"> | <syntaxhighlight lang="java" enclose="div"> | ||
| − | http://localhost:9000/TourSearchOwin/ | + | GET http://localhost:9000/TourSearchOwin/departureCities |
</syntaxhighlight> | </syntaxhighlight> | ||
| − | Возвращаемый результат метода | + | Возвращаемый результат метода departureCities (в формате JSON) |
<syntaxhighlight lang="java" enclose="div"> | <syntaxhighlight lang="java" enclose="div"> | ||
[ | [ | ||
| − | + | { | |
| − | + | "Key": -1, | |
| − | + | "Name": "Без перелета" | |
| − | + | }, | |
| − | + | { | |
| − | + | "Key": 312, | |
| − | + | "Name": "Астрахань" | |
| − | + | }, | |
| + | { | ||
| + | "Key": 1, | ||
| + | "Name": "Москва" | ||
| + | } | ||
] | ] | ||
</syntaxhighlight> | </syntaxhighlight> | ||
| Строка 461: | Строка 589: | ||
</div></div><br /> | </div></div><br /> | ||
| − | ===Выгрузка актуальных | + | ===Выгрузка актуальных стран (Destination)=== |
| − | Метод производит выгрузку доступных | + | Метод производит выгрузку всех доступных направлений туроператора. |
* Формат запроса: | * Формат запроса: | ||
| − | ** .../TourSearchOwin/ | + | ** GET .../TourSearchOwin/Destination? |
* Принимаемые параметры ( '''*''' – обязательный): | * Принимаемые параметры ( '''*''' – обязательный): | ||
| − | ** ''' | + | ** '''departureCities *''' – идентификатор города(ов) отправления (из контроллера [[#Выгрузка актуальных городов отправления (departureCities)|''.../TourSearchOwin/departureCities?'']]) |
| − | + | ** '''type''' – настройка easySearchFilter (0/не указано - настройка выключена, 1 - настройка включена) | |
| − | + | ** '''term''' – фильтрация результатов по контекстному поиску (по умолчанию параметр пустой) | |
| − | |||
| − | |||
| − | |||
| − | ** ''' | ||
| − | ** '''term | ||
* Возвращаемый результат: | * Возвращаемый результат: | ||
| − | ** массив | + | ** '''Name''' – название страны |
| + | ** '''Key''' – идентификатор страны | ||
| + | ** '''DestinationType''' – тип результата (внутренний параметр, не изменяемый, всегда возвращается значение = 1) | ||
| + | ** '''IsExist''' – не используется | ||
| + | ** '''Data''' – массив данных для контекстного поиска | ||
| + | *** '''CityKey''' – код города | ||
| + | *** '''CityName''' – Название | ||
| + | *** '''HotelKey''' – код отеля | ||
| + | *** '''HotelName''' – название отеля | ||
| + | *** '''ResortKey''' – код курорта | ||
| + | *** '''ResortName''' – название курорта | ||
| + | |||
<div class="toccolours mw-collapsible mw-collapsed" style="width:900px">Пример | <div class="toccolours mw-collapsible mw-collapsed" style="width:900px">Пример | ||
<div class="mw-collapsible-content"> | <div class="mw-collapsible-content"> | ||
<TABLE STYLE="border: 0.1em dashed #2F6FAB; margin: 8px; padding: 8px" WIDTH="99%"><TR><TD> | <TABLE STYLE="border: 0.1em dashed #2F6FAB; margin: 8px; padding: 8px" WIDTH="99%"><TR><TD> | ||
| − | Вызов метода | + | Вызов метода Destination |
<syntaxhighlight lang="java" enclose="div"> | <syntaxhighlight lang="java" enclose="div"> | ||
| − | http://localhost:9000/TourSearchOwin/ | + | |
| + | GET http://localhost:9000/TourSearchOwin/Destination?departureCities=1 | ||
</syntaxhighlight> | </syntaxhighlight> | ||
| − | Возвращаемый результат метода | + | Возвращаемый результат метода Destination (в формате JSON) |
<syntaxhighlight lang="java" enclose="div"> | <syntaxhighlight lang="java" enclose="div"> | ||
[ | [ | ||
| − | + | { | |
| − | + | "Data": null, | |
| − | + | "DestinationType": 1, | |
| − | + | "IsExist": false, | |
| − | + | "Key": 90, | |
| − | + | "Name": "Австрия" | |
| + | |||
| + | |||
| + | }, | ||
| + | { | ||
| + | "Data": null, | ||
| + | "DestinationType": 1, | ||
| + | "IsExist": false, | ||
| + | "Key": 53, | ||
| + | "Name": "Тайланд" | ||
| + | |||
| + | |||
| + | }, | ||
| + | { | ||
| + | "Data": null, | ||
| + | "DestinationType": 1, | ||
| + | "IsExist": false, | ||
| + | "Key": 460, | ||
| + | "Name": "Россия" | ||
| + | |||
| + | |||
| + | } | ||
] | ] | ||
| + | GET http://localhost:9000/TourSearchOwin/Destination?departureCities=1&type=1 | ||
</syntaxhighlight> | </syntaxhighlight> | ||
| − | </TD></TR></TABLE> | + | Возвращаемый результат метода Destination (в формате JSON) с включенной настройкой easySearchFilter |
| − | </div></div><br /> | + | <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> | ||
| + | </TD></TR></TABLE> | ||
| + | </div></div><br /> | ||
| − | === | + | ===Выгрузка актуальных городов (ActualizeCities)=== |
| − | + | Метод возвращает список всех доступных городов по определенному городу отправления и стране прибытия. | |
* Формат запроса: | * Формат запроса: | ||
| − | ** .../TourSearchOwin/ | + | ** GET .../TourSearchOwin/ActualizeCities? |
* Принимаемые параметры ( '''*''' – обязательный): | * Принимаемые параметры ( '''*''' – обязательный): | ||
| − | ** ''' | + | ** '''cityKeys *''' – идентификатор города(ов) отправления (полученный из метода ''.../TourSearchOwin/departureCities?'') |
| − | ** ''' | + | ** '''Key *''' – идентификатор страны прибытия (полученный из метода ''.../TourSearchOwin/Destination?'') |
| − | + | ** '''term''' – фильтрация результатов по контекстному поиску (по умолчанию параметр пустой) | |
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | ** ''' | ||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
* Возвращаемый результат: | * Возвращаемый результат: | ||
| − | + | ** '''Key''' – идентификатор города | |
| − | + | ** '''Name''' – название города | |
| − | + | ||
| − | + | <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> | |
| − | + | Вызов метода ActualizeCities | |
| − | + | <syntaxhighlight lang="java" enclose="div"> | |
| − | + | GET http://localhost:9000/TourSearchOwin/ActualizeCities?cityKeys=1&Key=90 | |
| − | + | </syntaxhighlight> | |
| − | + | Возвращаемый результат метода ActualizeCities (в формате JSON) | |
| − | + | <syntaxhighlight lang="java" enclose="div"> | |
| − | + | [ | |
| − | + | { | |
| − | + | "Key": -1, | |
| − | + | "Name": "Все" | |
| − | + | }, | |
| − | + | { | |
| − | + | "Key": 35, | |
| − | + | "Name": "Вена" | |
| − | + | }, | |
| − | + | { | |
| − | + | "Key": 440, | |
| − | + | "Name": "Зельден" | |
| − | + | } | |
| − | + | ] | |
| − | + | </syntaxhighlight> | |
| − | + | </TD></TR></TABLE> | |
| − | + | </div></div><br /> | |
| + | |||
| + | ===Выгрузка актуальных типов туров (ActualizeTourType)=== | ||
| + | Метод возвращает список типов туров по определенному городу отправления, стране и городу прибытия. | ||
| + | * Формат запроса: | ||
| + | ** GET .../TourSearchOwin/ActualizeTourType? | ||
| + | * Принимаемые параметры ( '''*''' – обязательный): | ||
| + | ** '''departureCityKeys *''' – идентификатор города(ов) отправления (полученный из метода ''.../TourSearchOwin/departureCities?'') | ||
| + | ** '''Key *''' – идентификатор страны прибытия (полученный из метода ''.../TourSearchOwin/Destination?'') | ||
| + | ** '''Type *''' – тип результата (внутренний параметр, не изменяемый, всегда указывать значение = 1) | ||
| + | ** '''destinationCity *''' – идентификатор города(ов) прибытия (полученный из метода ''.../TourSearchOwin/ActualizeCities?''), по умолчанию передается ''-1'', то есть все города в рамках данной страны | ||
| + | ** '''terms''' – фильтрация результатов по контекстному поиску (по умолчанию параметр пустой) | ||
| + | * Возвращаемый результат: | ||
| + | ** '''Key''' – идентификатор типа тура | ||
| + | ** '''Name''' – название типа тура | ||
| + | ** '''ParentId''' – идентификатор группы, к которой относится данный тип тура (если тип тура не относится к группе, то возвращается ''null'') | ||
| + | |||
| + | <div class="toccolours mw- | ||
{ | { | ||
"DepartureCity": { | "DepartureCity": { | ||
| − | "Key": | + | "Key": 1, |
| − | "Value": " | + | "Value": "Москва" |
}, | }, | ||
"DepartureCountry": { | "DepartureCountry": { | ||
| − | "Key": | + | "Key": 460, |
| − | "Value": " | + | "Value": "Россия" |
}, | }, | ||
"ArrivalCity": { | "ArrivalCity": { | ||
| − | "Key": | + | "Key": 35, |
| − | "Value": " | + | "Value": "Вена" |
}, | }, | ||
"ArrivalCountry": { | "ArrivalCountry": { | ||
| − | "Key": | + | "Key": 90, |
| − | "Value": " | + | "Value": "Австрия" |
}, | }, | ||
"DepartureAirport": { | "DepartureAirport": { | ||
| + | "Key": "SVO4", | ||
| + | "Value": "Шереметьево-24" | ||
| + | }, | ||
| + | "ArrivalAirport": { | ||
"Key": "VIE1", | "Key": "VIE1", | ||
"Value": "Vena1" | "Value": "Vena1" | ||
| − | |||
| − | |||
| − | |||
| − | |||
}, | }, | ||
"Airline": { | "Airline": { | ||
| − | "Key": " | + | "Key": "BA7", |
| − | "Value": " | + | "Value": "BRITISH AIRWAYS" |
}, | }, | ||
"Aircraft": { | "Aircraft": { | ||
| − | "Key": " | + | "Key": "319", |
| − | "Value": " | + | "Value": "AIRBUS " |
}, | }, | ||
"Flight": { | "Flight": { | ||
| − | "Key": | + | "Key": 882, |
| − | "Value": " | + | "Value": "4444" |
}, | }, | ||
| − | "DepartureTime": " | + | "DepartureTime": "10:00:00", |
| − | "ArrivalTime": " | + | "ArrivalTime": "12:00:00", |
| − | "EndDateTime": "2018-02- | + | "EndDateTime": "2018-02-25T12:00:00", |
"FlightDetails": [ { | "FlightDetails": [ { | ||
"Tariff": { | "Tariff": { | ||
| Строка 1016: | Строка 1378: | ||
"Name": "Экономический класс" | "Name": "Экономический класс" | ||
}, | }, | ||
| − | "Cost": | + | "Cost": 10, |
"QuotaStatus": { | "QuotaStatus": { | ||
"PlacesStatus": 4, | "PlacesStatus": 4, | ||
"FreePlaces": 0, | "FreePlaces": 0, | ||
| − | " | + | "IsFewPlaces": false |
}, | }, | ||
| − | "PartnerId": | + | "PartnerId": 12668, |
"ByPax": true, | "ByPax": true, | ||
"Partner": { | "Partner": { | ||
| Строка 1030: | Строка 1392: | ||
}], | }], | ||
"FlightSetting": { | "FlightSetting": { | ||
| − | "ServiceId": | + | "ServiceId": 3, |
| − | "PatternId": | + | "PatternId": 13, |
| − | "FlightId": | + | "FlightId": 13 |
}, | }, | ||
"FlightSourceMode": 1, | "FlightSourceMode": 1, | ||
| − | "Id": | + | "Id": 3, |
"SvKey": 1, | "SvKey": 1, | ||
"IsSubCode1": true, | "IsSubCode1": true, | ||
"IsSubCode2": false, | "IsSubCode2": false, | ||
"IsPartnerBasedOn": false, | "IsPartnerBasedOn": false, | ||
| − | "Day": | + | "Day": 1, |
"DurationInNight": 0, | "DurationInNight": 0, | ||
| − | "BeginDateTime": "2018-02- | + | "BeginDateTime": "2018-02-25T10:00:00", |
"IsHooded": false, | "IsHooded": false, | ||
"IsDeleted": false, | "IsDeleted": false, | ||
"IsNotCalculate": false, | "IsNotCalculate": false, | ||
"PacketId": 779, | "PacketId": 779, | ||
| − | "Index": | + | "Index": 0 |
| − | } | + | }, |
| − | + | { | |
| − | + | "Hotel": { | |
| − | + | "Key": 709, | |
| − | + | "Value": "Am Brilliantengrund" | |
| − | + | }, | |
| − | + | "City": { | |
| − | " | + | "Key": 35, |
| − | "Key": | + | "Value": "Вена" |
| − | "Value": " | ||
}, | }, | ||
| − | " | + | "Stars": { |
| − | " | + | "Key": -1, |
| − | " | + | "Value": null |
| − | "Key": | + | }, |
| − | "Value": " | + | "Resort": { |
| + | "Key": -1, | ||
| + | "Value": null | ||
| + | }, | ||
| + | "ImageURL": "", | ||
| + | "Http": null, | ||
| + | "Description": "", | ||
| + | "Country": { | ||
| + | "Key": 90, | ||
| + | "Value": "Австрия" | ||
| + | }, | ||
| + | "HotelDetails": [ { | ||
| + | "HotelRoom": 46463, | ||
| + | "Room": { | ||
| + | "Key": 129, | ||
| + | "Value": "DBL" | ||
}, | }, | ||
| − | " | + | "RoomCategory": { |
| − | "Key": | + | "Key": 3493, |
| − | "Value": "" | + | "Value": "Cosy" |
}, | }, | ||
| − | " | + | "AccomodationType": { |
| − | + | "Key": 1256, | |
| − | + | "Value": "2+1_K", | |
| − | + | "AdultCount": 2, | |
| − | + | "ChildCount": 1 | |
| − | " | ||
| − | " | ||
}, | }, | ||
| − | "PartnerId": | + | "Pansion": { |
| − | "ByPax": | + | "Key": 4, |
| + | "Value": "Завтрак" | ||
| + | }, | ||
| + | "AbsolutePenalties": null, | ||
| + | "Cost": 19.47, | ||
| + | "QuotaStatus": { | ||
| + | "PlacesStatus": 4, | ||
| + | "FreePlaces": 0, | ||
| + | "IsFewPlaces": false | ||
| + | }, | ||
| + | "PartnerId": 12667, | ||
| + | "ByPax": false, | ||
"Partner": { | "Partner": { | ||
| − | "Key": | + | "Key": 12667, |
| − | "Value": | + | "Value": "Партнер-покупатель1" |
} | } | ||
}], | }], | ||
| − | " | + | "HotelTypes": [ { |
| − | + | "Key": 5, | |
| − | "Id": | + | "Value": "Рекомендуемые" |
| − | "SvKey": | + | }], |
| + | "Id": 1, | ||
| + | "SvKey": 3, | ||
"IsSubCode1": true, | "IsSubCode1": true, | ||
"IsSubCode2": true, | "IsSubCode2": true, | ||
| Строка 1093: | Строка 1480: | ||
"Day": 1, | "Day": 1, | ||
"DurationInNight": 3, | "DurationInNight": 3, | ||
| − | "BeginDateTime": "2018-02- | + | "BeginDateTime": "2018-02-25T12:00:00", |
| − | "EndDateTime": "2018-02- | + | "EndDateTime": "2018-02-28T12:00:00", |
"IsHooded": false, | "IsHooded": false, | ||
| − | "IsDeleted": | + | "IsDeleted": false, |
| − | "IsNotCalculate": | + | "IsNotCalculate": false, |
| − | "PacketId": | + | "PacketId": 779, |
| − | "Index": | + | "Index": 1 |
| − | } | + | }, |
| − | + | { | |
| − | " | + | "DepartureCity": { |
| − | " | + | "Key": 35, |
| − | "Key": | + | "Value": "Вена" |
| − | "Value": " | + | }, |
| + | "DepartureCountry": { | ||
| + | "Key": 90, | ||
| + | "Value": "Австрия" | ||
| + | }, | ||
| + | "ArrivalCity": { | ||
| + | "Key": 1, | ||
| + | "Value": "Москва" | ||
| + | }, | ||
| + | "ArrivalCountry": { | ||
| + | "Key": 460, | ||
| + | "Value": "Россия" | ||
}, | }, | ||
| − | " | + | "DepartureAirport": { |
| − | + | "Key": "VIE1", | |
| − | "Key": | + | "Value": "Vena1" |
| − | "Value": " | ||
}, | }, | ||
| − | " | + | "ArrivalAirport": { |
| − | " | + | "Key": "DME", |
| − | " | + | "Value": "Домодедово" |
| − | + | }, | |
| − | + | "Airline": { | |
| − | + | "Key": "7U", | |
| − | + | "Value": "Авиаэнерго" | |
| − | + | }, | |
| − | + | "Aircraft": { | |
| − | + | "Key": "727", | |
| − | " | + | "Value": "Boeing" |
| − | + | }, | |
| − | "Cost": | + | "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": { | "QuotaStatus": { | ||
| − | "PlacesStatus": | + | "PlacesStatus": 4, |
"FreePlaces": 0, | "FreePlaces": 0, | ||
| − | " | + | "IsFewPlaces": false |
}, | }, | ||
| − | "PartnerId": | + | "PartnerId": 10760, |
"ByPax": true, | "ByPax": true, | ||
"Partner": { | "Partner": { | ||
| Строка 1137: | Строка 1547: | ||
} | } | ||
}], | }], | ||
| − | " | + | "FlightSetting": { |
| − | " | + | "ServiceId": 4, |
| − | "Id": | + | "PatternId": 5, |
| − | "SvKey": | + | "FlightId": 4 |
| − | "IsSubCode1": true, | + | }, |
| + | "FlightSourceMode": 1, | ||
| + | "Id": 4, | ||
| + | "SvKey": 1, | ||
| + | "IsSubCode1": true, | ||
"IsSubCode2": false, | "IsSubCode2": false, | ||
| − | "IsPartnerBasedOn": | + | "IsPartnerBasedOn": false, |
| − | "Day": | + | "Day": 4, |
"DurationInNight": 0, | "DurationInNight": 0, | ||
| − | "BeginDateTime": "2018-02- | + | "BeginDateTime": "2018-02-28T00:00:00", |
| − | |||
"IsHooded": false, | "IsHooded": false, | ||
| − | "IsDeleted": | + | "IsDeleted": false, |
| − | "IsNotCalculate": | + | "IsNotCalculate": false, |
"PacketId": 779, | "PacketId": 779, | ||
| − | "Index": | + | "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, | "PartnerId": 12668, | ||
| − | " | + | "ByPax": true, |
| − | " | + | "Partner": { |
| − | "Day": 1, | + | "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" |
| − | + | }, | |
| − | "SubCode1": | + | "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 |
| − | "Type": " | + | }, |
| + | "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"} | |
| − | "Type": " | + | ], |
| − | } | + | "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": 705, | + | "Key": 23, |
| − | "Country": { | + | "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, | "key": 90, | ||
"name": "Австрия", | "name": "Австрия", | ||
| Строка 1764: | Строка 2288: | ||
</div></div><br /> | </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 включительно=== | ||
| + | Метод производит выгрузку транспортного плана. | ||
* Формат запроса: | * Формат запроса: | ||
| − | ** .../TourSearchOwin/ | + | ** 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''' – ключ зоны | |
| − | *** '''Key''' – | + | *** '''TransportKey''' – ключ из справочника транспорт |
| − | *** ''' | + | *** '''Row''' – количество рядов |
| − | ** ''' | + | *** '''AreaNumber''' – номер уровня |
| − | *** ''' | + | *** '''Name''' – название уровня |
| − | *** '''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": | |