API Сервис Ostrovok — различия между версиями
[непроверенная версия] | [досмотренная версия] |
Aefremov (обсуждение | вклад) (→Получение информации обо всех отелях) |
Biryukov (обсуждение | вклад) (→Установка и настройка) |
||
(не показано 16 промежуточных версий 4 участников) | |||
Строка 1: | Строка 1: | ||
==Введение== | ==Введение== | ||
− | Сервис отдает запросы посредством API. | + | Сервис отдает запросы посредством API.<br /> |
− | Сервис позволяет получать информацию об отелях, типах питания, вариантах размещения, бронирования, аннуляции и получения статусов заявок. | + | Сервис позволяет получать информацию об отелях, типах питания, вариантах размещения, бронирования, аннуляции и получения статусов заявок.<br /> |
− | Для работы сервиса необходимо установить службу Windows. | + | Для работы сервиса необходимо установить службу Windows.<br /> |
+ | |||
+ | ==Установка и настройка== | ||
+ | Перед установкой API необходимо настроить конфигурационный файл appsettings.json. | ||
+ | * Подключение к базе данных ПК «Мастер-Interlook»: | ||
+ | <syntaxhighlight lang="java" enclose="div"> | ||
+ | { | ||
+ | "ConnectionParameters": { | ||
+ | "databaseType": 1, - тип используемой базы данных, 1 - MSSQL, 2 - PostgreSQL (пока не реализовано) | ||
+ | "server": "", - адрес SQL сервера | ||
+ | "database": "", - название БД Interlook | ||
+ | "user": "", - логин пользователя | ||
+ | "password": "", - пароль пользователя | ||
+ | "appName": "MegatecInterlookGDSService" - название приложения при подключении к SQL-серверу | ||
+ | }, | ||
+ | </syntaxhighlight> | ||
+ | |||
+ | * Подключение к сервису бронирования: | ||
+ | <syntaxhighlight lang="java" enclose="div"> | ||
+ | "BookingServiceUrl": "", - адрес BookingService | ||
+ | "ServiceType": 0, - режим работы сервиса с ограничением отображения информации с Swagger. 0 - без ограничений доступны все методы сервиса, 1 - режим работы с поисковыми системами, 2 - режим поиска для разработки собственного интернет-магазина, | ||
+ | </syntaxhighlight> | ||
+ | |||
+ | * Параметры загрузки сервиса: | ||
+ | <syntaxhighlight lang="java" enclose="div"> | ||
+ | "Cache": { | ||
+ | "ParallelismDegree": 20, - степень параллелизма при инициализации кэша сервиса. Рекомендуемое значение - 80-90% от общего количества ядер процессора | ||
+ | "CalculationParallelizmDegree": 90, - параллелизм при обработке запросов поиска | ||
+ | "CacheUpdateTime": 90, - периодичность обновления кэша в секундах. | ||
+ | // developer settings, costs cache - "[days before now for ckeck(in\out) costs]" or "[date from-date to]" | ||
+ | // example: "7" - price date end, checkin end and checkout end greater than today minus 7 days | ||
+ | // example: "20.03.2023-30.04.2023" - the price action date interval crosses the date interval from 20.03.2023 to 30.04.2023 | ||
+ | // example: "20.03.2023" - the price action date interval crosses the date 20.03.2023 | ||
+ | "CostsRestrictions": "7" | ||
+ | }, | ||
+ | </syntaxhighlight> | ||
+ | |||
+ | * Ограничители для запросов поиска: | ||
+ | <syntaxhighlight lang="java" enclose="div"> | ||
+ | "Restrictions": { | ||
+ | "MaxRooms": 0, - максимальное количество комнат в запросе (0 - без ограничений) | ||
+ | "MaxAdults": 0, - максимальное количество взрослых в запросе (0 - без ограничений) | ||
+ | "MaxChildren": 0, - максимальное количество детей в запросе (0 - без ограничений) | ||
+ | "WithAddressOnly": false, - метод hotels при значении false отдаёт информацию по всем отелям, при значении true - только отели с заполненным адресом расположения. | ||
+ | "QuotaTypes": [ 1 ], - ограничение по наличию мест. Возможные варианты: [0,1,2] 0 - отели под запрос, 1 - отели на гарантии, 2 - отели на стопе. В параметре перечисляются те значения, которые надо отображать. | ||
+ | "CPDateFromDaysEarlierShow": 1, - сколько дней в результатах поиска добавлять к дате наступления штрафных санкций | ||
+ | "IsAlwaysConfirmed": false, - автоматическое подтверждение бронирования, новой заявке по умолчанию ставится статус confirmed, независимо от наличия свободных мест по услугам. | ||
+ | "IsAddHotsWithCosts": false, - учитывать ли добавочные услуги при поиске. Относится к дополнительным услугам типа Новогодних ужинов с типом услуги "With costs" | ||
+ | "NearestHotelsDistance": 3, - определяет расстояние для обнаружения ближайших отелей к выбранному в поиске, км | ||
+ | </syntaxhighlight> | ||
+ | |||
+ | * Ограничение количества "тяжелых запросов" в единицу времени. Запросы, вышедшие за ограничители, получат сообщение о превышении количества запросов в единицу времени: | ||
+ | <syntaxhighlight lang="java" enclose="div"> | ||
+ | "SearchRequest": { | ||
+ | "HotelsCount": 100, - минимальное количество ключей отелей в запросе | ||
+ | "TimeWindow": 0, - промежуток времени в секундах, за который принимаем несколько "тяжелых" запросов | ||
+ | "MaxRequests": 0 - количество "тяжелых" запросов в течении интервала в параметре "TimeWindow" | ||
+ | } | ||
+ | }, | ||
+ | </syntaxhighlight> | ||
+ | |||
+ | * Логирование работы сервиса: | ||
+ | <syntaxhighlight lang="java" enclose="div"> | ||
+ | "Logger": { | ||
+ | "EnableConsole": false, - вывод логов в консоль, при работе в режиме "приложение" | ||
+ | "EnableFile": true, - запись логов в файл | ||
+ | "FilePath": "", - расположение файла логов. | ||
+ | "MaxLogFileSize": 10, // МБ - максимальный размер файла логов | ||
+ | "MaxOldLogFilesCount": 30 - максимальное количество файлов логов. При превышении начинают перезаписываться. | ||
+ | "EnableLogService": false, - запись логов через сервис логирования | ||
+ | "LogServiceAddress": "", - адрес сервиса логирования | ||
+ | }, | ||
+ | </syntaxhighlight> | ||
+ | |||
+ | * Параметры подключения к сервису: | ||
+ | <syntaxhighlight lang="java" enclose="div"> | ||
+ | "Install": { | ||
+ | "ServiceName": "MegatecInterlookGDSService", - название службы при работе в режиме "служба" | ||
+ | "ServiceAddress": [ "http://*:7700" ], - адрес/порт, на котором работает сервис | ||
+ | "IPAddress": "IPAddress.IPv6Any" - служебный параметр сервиса, другие значения на текущий момент не используются | ||
+ | }, | ||
+ | |||
+ | "AllowedHosts": "*" - определяет доступность сервиса из внешних сетей, * - любые | ||
+ | </syntaxhighlight> | ||
==Описание методов== | ==Описание методов== | ||
− | ===Получение информации обо всех отелях=== | + | ===Получение информации обо всех отелях (Hotels)=== |
− | Метод возвращает список отелей в формате ndjson в сжатом виде. Формат каждого отеля в результате идентичен результату запроса одного отеля | + | Метод возвращает список отелей в формате ndjson в сжатом виде. Формат каждого отеля в результате идентичен результату запроса одного отеля.<br /> |
* Формат запроса: | * Формат запроса: | ||
** GET .../ostrovok/v1/hotels | ** GET .../ostrovok/v1/hotels | ||
Строка 16: | Строка 99: | ||
** '''region_id''' – идентификатор региона отеля | ** '''region_id''' – идентификатор региона отеля | ||
** '''geo_coordinates *''' – координаты отеля | ** '''geo_coordinates *''' – координаты отеля | ||
− | ** '''atitude *''' – широта, 35.346193 | + | ** '''atitude *''' – широта (например, 35.346193) |
− | ** '''longitude *''' – долгота, 33.191205 | + | ** '''longitude *''' – долгота (например, 33.191205) |
− | ** '''address *''' – адрес отеля | + | ** '''address *''' – адрес отеля |
** '''postal_code''' – почтовый индекс | ** '''postal_code''' – почтовый индекс | ||
** '''contacts''' – контактная информация | ** '''contacts''' – контактная информация | ||
Строка 31: | Строка 114: | ||
** '''important_info''' – важная информация по отелю для гостей | ** '''important_info''' – важная информация по отелю для гостей | ||
** '''check_in_instructions''' – информация по заезду | ** '''check_in_instructions''' – информация по заезду | ||
− | ** '''check_in_time''' – время заезда, 14:00 | + | ** '''check_in_time''' – время заезда (например, 14:00) |
− | ** '''check_in_before_time''' – время окончания заезда, 18:00 | + | ** '''check_in_before_time''' – время окончания заезда (например, 18:00) |
− | ** '''check_out_time''' – время выезда | + | ** '''check_out_time''' – время выезда |
** '''images''' – список фотографий отеля | ** '''images''' – список фотографий отеля | ||
− | ** '''category''' – категория фотографии | + | ** '''category''' – категория фотографии |
** '''url *''' – сетевой путь к файлу фотографии (например, https://www.test.com/almond/almond-holiday-village-mp-500x249.jpgImage) | ** '''url *''' – сетевой путь к файлу фотографии (например, https://www.test.com/almond/almond-holiday-village-mp-500x249.jpgImage) | ||
− | ** '''amenities''' – список наименований удобств, "Beach/pool towels", "Airport transportation" | + | ** '''amenities''' – список наименований удобств (например, "Beach/pool towels", "Airport transportation") |
** '''rooms''' – список комнат | ** '''rooms''' – список комнат | ||
** '''name *''' – наименование комнаты (тип) (например, «Deluxe Room») | ** '''name *''' – наименование комнаты (тип) (например, «Deluxe Room») | ||
Строка 50: | Строка 133: | ||
** '''quantity''' – количество мест | ** '''quantity''' – количество мест | ||
** '''images''' – список фотографий комнаты, аналогично с фотографиями отеля | ** '''images''' – список фотографий комнаты, аналогично с фотографиями отеля | ||
− | ** '''category''' – категория фотографии, «Ванная комната» | + | ** '''category''' – категория фотографии (например, «Ванная комната») |
** '''url *''' – путь к файлу фотографии amenities (список наименований удобств, "shower", "tv", "soundproofing") | ** '''url *''' – путь к файлу фотографии amenities (список наименований удобств, "shower", "tv", "soundproofing") | ||
Строка 58: | Строка 141: | ||
Вызов метода hotels | Вызов метода hotels | ||
<syntaxhighlight lang="java" enclose="div"> | <syntaxhighlight lang="java" enclose="div"> | ||
− | GET http://localhost:7700/ostrovok/v1/hotels | + | GET http://localhost:7700/ostrovok/v1/hotels |
</syntaxhighlight> | </syntaxhighlight> | ||
Возвращаемый результат метода hotels | Возвращаемый результат метода hotels | ||
Строка 124: | Строка 207: | ||
} | } | ||
] | ] | ||
+ | } | ||
+ | |||
+ | </syntaxhighlight> | ||
+ | </TD></TR></TABLE> | ||
+ | </div></div><br /> | ||
+ | |||
+ | ===Получение информации об отеле по его ключу (Hotels)=== | ||
+ | Метод возвращает информацию по отелю по ключу отеля в формате ndjson в сжатом виде. Формат каждого отеля в результате идентичен результату запроса одного отеля..<br /> | ||
+ | * Формат запроса: | ||
+ | ** GET .../ostrovok/v1/hotels/hotel_id | ||
+ | * Принимаемые параметры: | ||
+ | ** '''hotel_id *''' – идентификатор отеля (ключ) | ||
+ | * Возвращаемый результат: | ||
+ | ** '''id *''' – идентификатор отеля | ||
+ | ** '''name *''' – название отеля | ||
+ | ** '''description''' – описание отеля | ||
+ | ** '''region_id''' – идентификатор региона отеля | ||
+ | ** '''geo_coordinates *''' – координаты отеля | ||
+ | ** '''atitude *''' – широта (например, 35.346193) | ||
+ | ** '''longitude *''' – долгота (например, 33.191205) | ||
+ | ** '''address *''' – адрес отеля (например, «Bademli Sok. No: 1, Alsancak, Cyprus») | ||
+ | ** '''postal_code''' – почтовый индекс | ||
+ | ** '''contacts''' – контактная информация | ||
+ | ** '''phone''' – телефонный номер | ||
+ | ** '''email''' – адрес электронной почты | ||
+ | ** '''webpage''' – сайт | ||
+ | ** '''currency''' – валюта | ||
+ | ** '''stars''' – звездность отеля | ||
+ | ** '''rating_certificate_info''' – подтверждение рейтинга (звездности) отеля | ||
+ | ** '''id''' – номер документа | ||
+ | ** '''expiration_date *''' – срок действия | ||
+ | ** '''important_info''' – важная информация по отелю для гостей | ||
+ | ** '''check_in_instructions''' – информация по заезду | ||
+ | ** '''check_in_time''' – время заезда (например, 14:00) | ||
+ | ** '''check_in_before_time''' – время окончания заезда (например, 18:00) | ||
+ | ** '''check_out_time''' – время выезда (например, 12:00) | ||
+ | ** '''images''' – список фотографий отеля | ||
+ | ** '''category''' – категория фотографии | ||
+ | ** '''url *''' – сетевой путь к файлу фотографии (например, https://www.test.com/almond/almond-holiday-village-mp-500x249.jpgImage) | ||
+ | ** '''amenities''' – список наименований удобств (например, "Beach/pool towels", "Airport transportation") | ||
+ | ** '''rooms''' – список комнат | ||
+ | ** '''name *''' – наименование комнаты (тип) (например, «Deluxe Room») | ||
+ | ** '''description''' – описание комнаты | ||
+ | ** '''occupancy''' – максимальное количество человек | ||
+ | ** '''area''' – площадь комнаты | ||
+ | ** '''bed_groups''' – список групп размещений | ||
+ | ** '''id *''' – идентификатор размещения | ||
+ | ** '''name''' – наименование размещения (например, «double + twin») | ||
+ | ** '''bed_types''' – список вариантов спальных мест | ||
+ | ** '''name *''' – наименование (например, «double») | ||
+ | ** '''quantity''' – количество мест | ||
+ | ** '''images''' – список фотографий комнаты, аналогично с фотографиями отеля | ||
+ | ** '''category''' – категория фотографии (например, «Ванная комната») | ||
+ | ** '''url *''' – путь к файлу фотографии amenities (список наименований удобств, "shower", "tv", "soundproofing") | ||
+ | |||
+ | <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> | ||
+ | Вызов метода hotels | ||
+ | <syntaxhighlight lang="java" enclose="div"> | ||
+ | GET http://localhost:7700/ostrovok/v1/hotels/4646 | ||
+ | </syntaxhighlight> | ||
+ | Возвращаемый результат метода hotels | ||
+ | <syntaxhighlight lang="java" enclose="div"> | ||
+ | { | ||
+ | "id": "4646", | ||
+ | "name": "Chinar", | ||
+ | "region_id": "5", | ||
+ | "geo_coordinates": { | ||
+ | "latitude": 42.50503279113125, | ||
+ | "longitude": 24.71027970314026 | ||
+ | }, | ||
+ | "address": "Bademli Sok. No: 1, Alsancak, Cyprus", | ||
+ | "stars": 3, | ||
+ | "images": [ | ||
+ | { | ||
+ | "category": "General", | ||
+ | "url": "https://b2b.solvex.bg/web/files/hotels/4646/hotel_images/dbl.jpg" | ||
+ | }, | ||
+ | { | ||
+ | "category": "General", | ||
+ | "url": "https://b2b.solvex.bg/web/files/hotels/4646/hotel_images/deluxe apt 1.jpg" | ||
+ | }, | ||
+ | ], | ||
+ | "amenities": [ | ||
+ | "restaurant", | ||
+ | "lobby bar", | ||
+ | "conference hall", | ||
+ | "SPA center", | ||
+ | "Wi-Fi", | ||
+ | "a computer room" | ||
+ | ], | ||
+ | "rooms": [ | ||
+ | { | ||
+ | "name": "DOUBLE ROOM", | ||
+ | "amenities": [ | ||
+ | "2 separate beds / one double bed", | ||
+ | "air conditioning", | ||
+ | "cable TV", | ||
+ | "Wi-Fi", | ||
+ | "direct dial telephone" | ||
+ | ] | ||
+ | }, | ||
+ | { | ||
+ | "name": "VIP APARTMENT", | ||
+ | "amenities": [ | ||
+ | "living room and one bedroom", | ||
+ | "air conditioning", | ||
+ | "cable TV", | ||
+ | "Wi-Fi", | ||
+ | "direct dial telephone", | ||
+ | "mini bar", | ||
+ | ] | ||
+ | }, | ||
+ | { | ||
+ | "name": "1-BEDROOM APARTMENT", | ||
+ | "amenities": [ | ||
+ | "living room and one bedroom", | ||
+ | "air conditioning", | ||
+ | "cable TV", | ||
+ | "Wi-Fi", | ||
+ | "direct dial telephone", | ||
+ | "mini bar", | ||
+ | ] | ||
+ | } | ||
+ | ] | ||
+ | } | ||
+ | |||
+ | </syntaxhighlight> | ||
+ | </TD></TR></TABLE> | ||
+ | </div></div><br /> | ||
+ | |||
+ | ===Получение информации о типах питания (Meals)=== | ||
+ | Метод возвращает список типов питания в формате ndjson в сжатом виде.<br /> | ||
+ | * Формат запроса: | ||
+ | ** GET .../ostrovok/v1/meals | ||
+ | * Принимаемые параметры: отсутствуют | ||
+ | * Возвращаемый результат: | ||
+ | ** '''id *''' – идентификатор типа питания | ||
+ | ** '''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> | ||
+ | Вызов метода meals | ||
+ | <syntaxhighlight lang="java" enclose="div"> | ||
+ | GET http://localhost:7700/ostrovok/v1/meals | ||
+ | </syntaxhighlight> | ||
+ | Возвращаемый результат метода meals | ||
+ | <syntaxhighlight lang="java" enclose="div"> | ||
+ | { | ||
+ | "id": "1", | ||
+ | "name": "Full Board" | ||
+ | }, | ||
+ | { | ||
+ | "id": "2", | ||
+ | "name": "All Inclusive" | ||
+ | } | ||
+ | |||
+ | </syntaxhighlight> | ||
+ | </TD></TR></TABLE> | ||
+ | </div></div><br /> | ||
+ | |||
+ | ===Получение информации о типах размещений по отелям или региону с учетом цен (Search)=== | ||
+ | Метод возвращает список типов размещений по отелям или региону с учетом цен.<br /> | ||
+ | * Формат запроса: | ||
+ | ** POST .../ostrovok/v1/search | ||
+ | * Принимаемые параметры: | ||
+ | ** '''check_in *''' – дата планируемого заезда | ||
+ | ** '''check_out *''' – дата выезда | ||
+ | ** '''residency *''' – страна (рынок) | ||
+ | ** '''guests_groups *''' – список групп гостей для отбора размещений | ||
+ | *** '''adults''' – взрослых | ||
+ | *** '''children_ages''' – список возрастов детей | ||
+ | ** '''region_id''' – ключ региона (город) | ||
+ | ** '''hotel_ids''' – ключи отелей, если заданы, то ключ региона не учитывается | ||
+ | * Возвращаемый результат: | ||
+ | ** '''hotel_id *''' – идентификатор отеля | ||
+ | ** '''rates''' – список вариантов размещения | ||
+ | *** '''id *''' – идентификатор размещения, формируется сервисом | ||
+ | *** '''price *''' – цена | ||
+ | *** '''commission''' – комиссия | ||
+ | *** '''payment_type *''' – тип платежа (предоплата или по заезду) | ||
+ | *** '''currency *''' – валюта | ||
+ | *** '''meals''' – список типов питания | ||
+ | **** '''id *''' – идентификатор питания | ||
+ | **** '''name *''' – наименование питания, | ||
+ | *** '''cancellation_policies''' – список штрафов | ||
+ | **** '''from *''' – начало действия штрафа | ||
+ | **** '''amount *''' – величина штрафа | ||
+ | *** '''rooms *''' – список комнат | ||
+ | **** '''id *''' – идентификатор, генерируемый системой | ||
+ | **** '''name *''' – наименование комнаты (например, «Deluxe Room») | ||
+ | **** '''bed_groups – список групп размещений | ||
+ | ***** '''id *''' – идентификатор размещения | ||
+ | ***** '''name''' – наименование размещения (например, «double + twin») | ||
+ | ***** '''bed_types''' – список вариантов спальных мест | ||
+ | ****** '''name *''' – наименование (например, «double») | ||
+ | ****** '''quantity''' – количество мест | ||
+ | |||
+ | <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> | ||
+ | Вызов метода search | ||
+ | <syntaxhighlight lang="java" enclose="div"> | ||
+ | POST http://localhost:7700/ostrovok/v1/search | ||
+ | { | ||
+ | "check_in": "2023-06-01", | ||
+ | "check_out": "2023-06-07", | ||
+ | "residency": "BG", | ||
+ | "guests_groups": [ | ||
+ | { | ||
+ | "adults": 2 | ||
+ | }, | ||
+ | { | ||
+ | "adults": 1 | ||
+ | } | ||
+ | ], | ||
+ | "hotel_ids": [ | ||
+ | "2967" | ||
+ | ] | ||
+ | } | ||
+ | </syntaxhighlight> | ||
+ | Возвращаемый результат метода search | ||
+ | <syntaxhighlight lang="java" enclose="div"> | ||
+ | { | ||
+ | "hotel_id": "2967", | ||
+ | "rates": [ | ||
+ | { | ||
+ | "id": "iNiyYHLAH4p8wJj3wRAskxepfDvz1xZUtXv5tk", | ||
+ | "price": 991.0, | ||
+ | "payment_type": "prepay", | ||
+ | "currency": "EU", | ||
+ | "meals": [ | ||
+ | { | ||
+ | "id": "4", | ||
+ | "name": "Half Board" | ||
+ | } | ||
+ | ], | ||
+ | "cancellation_policies": [ | ||
+ | { | ||
+ | "from": "2023-06-01T00:00:00Z", | ||
+ | "amount": 514.0 | ||
+ | } | ||
+ | ], | ||
+ | "rooms": [ | ||
+ | { | ||
+ | "id": "BDSDaaah", | ||
+ | "name": "Double Room Standard" | ||
+ | }, | ||
+ | { | ||
+ | "id": "gX2NoxW1W8", | ||
+ | "name": "SGL Standard-A Sea View" | ||
+ | } | ||
+ | ] | ||
+ | }, | ||
+ | { | ||
+ | "id": "vwJTArRmsEX8H8yYwtYNdxExixCz1DZTQXJgLd", | ||
+ | "price": 961.0, | ||
+ | "payment_type": "prepay", | ||
+ | "currency": "EU", | ||
+ | "meals": [ | ||
+ | { | ||
+ | "id": "2", | ||
+ | "name": "All Inclusive" | ||
+ | } | ||
+ | ], | ||
+ | "cancellation_policies": [ | ||
+ | { | ||
+ | "from": "2023-06-01T00:00:00Z", | ||
+ | "amount": 634.0 | ||
+ | } | ||
+ | ], | ||
+ | "rooms": [ | ||
+ | { | ||
+ | "id": "RpTXa6oM", | ||
+ | "name": "Double Room Standard" | ||
+ | }, | ||
+ | { | ||
+ | "id": "zMp6r6xWdkC", | ||
+ | "name": "SGL Standard-A City View" | ||
+ | } | ||
+ | ] | ||
+ | }, | ||
+ | { | ||
+ | "id": "vwJTArRmsEX8H8yYwtYNdxExixCz1DZTQXJgLd", | ||
+ | "price": 1141.0, | ||
+ | "payment_type": "prepay", | ||
+ | "currency": "EU", | ||
+ | "meals": [ | ||
+ | { | ||
+ | "id": "2", | ||
+ | "name": "All Inclusive" | ||
+ | } | ||
+ | ], | ||
+ | "cancellation_policies": [ | ||
+ | { | ||
+ | "from": "2023-06-01T00:00:00Z", | ||
+ | "amount": 634.0 | ||
+ | } | ||
+ | ], | ||
+ | "rooms": [ | ||
+ | { | ||
+ | "id": "RpTXa6oM", | ||
+ | "name": "Double Room Standard" | ||
+ | }, | ||
+ | { | ||
+ | "id": "RposoDW108", | ||
+ | "name": "SGL Standard-A Standard" | ||
+ | } | ||
+ | ] | ||
+ | }, | ||
+ | { | ||
+ | "id": "iN8TmwL3HExiwCUAsL3wWDEDiDC4kxIyLx8PRW", | ||
+ | "price": 1561.0, | ||
+ | "payment_type": "prepay", | ||
+ | "currency": "EU", | ||
+ | "meals": [ | ||
+ | { | ||
+ | "id": "2", | ||
+ | "name": "All Inclusive" | ||
+ | } | ||
+ | ], | ||
+ | "cancellation_policies": [ | ||
+ | { | ||
+ | "from": "2023-06-01T00:00:00Z", | ||
+ | "amount": 874.0 | ||
+ | } | ||
+ | ], | ||
+ | "rooms": [ | ||
+ | { | ||
+ | "id": "nDUpoo6V", | ||
+ | "name": "Double Room Sea View" | ||
+ | }, | ||
+ | { | ||
+ | "id": "gD6r2pdW18", | ||
+ | "name": "SGL Standard-A Sea View" | ||
+ | } | ||
+ | ] | ||
+ | } | ||
+ | ] | ||
+ | } | ||
+ | |||
+ | </syntaxhighlight> | ||
+ | </TD></TR></TABLE> | ||
+ | </div></div><br /> | ||
+ | |||
+ | ===Получение информации о вариантах размещений по конкретному отелю (Search)=== | ||
+ | Метод возвращает список типов размещений по отелям или региону с учетом цен.<br /> | ||
+ | * Формат запроса: | ||
+ | ** POST .../ostrovok/v1/search/hotel_id | ||
+ | * Принимаемые параметры: | ||
+ | ** '''hotel_id *''' – ключ отеля | ||
+ | ** '''check_in *''' – дата планируемого заезда | ||
+ | ** '''check_out *''' – дата выезда | ||
+ | ** '''guests_groups *''' – список групп гостей для отбора размещений | ||
+ | *** '''adults''' – взрослых | ||
+ | *** '''children_ages''' – список возрастов детей | ||
+ | |||
+ | * Возвращаемый результат: | ||
+ | ** '''hotel_id *''' – идентификатор отеля | ||
+ | ** '''rates''' – список вариантов размещения | ||
+ | *** '''id *''' – идентификатор размещения, формируется сервисом | ||
+ | *** '''price *''' – цена | ||
+ | *** '''commission''' – комиссия | ||
+ | *** '''payment_type *''' – тип платежа (предоплата или по заезду) | ||
+ | *** '''currency *''' – валюта | ||
+ | *** '''meals''' – список типов питания | ||
+ | **** '''id *''' – идентификатор питания | ||
+ | **** '''name *''' – наименование питания | ||
+ | *** '''cancellation_policies''' – список штрафов | ||
+ | **** '''from *''' – начало действия штрафа | ||
+ | **** '''amount *''' – величина штрафа | ||
+ | *** '''rooms *''' – список комнат | ||
+ | **** '''id *''' – идентификатор, генерируемый системой | ||
+ | **** '''name *''' – наименование комнаты (например, «Deluxe Room») | ||
+ | **** '''bed_groups – список групп размещений | ||
+ | ***** '''id *''' – идентификатор размещения | ||
+ | ***** '''name''' – наименование размещения (например, «double + twin») | ||
+ | ***** '''bed_types''' – список вариантов спальных мест | ||
+ | ****** '''name *''' – наименование (например, «double») | ||
+ | ****** '''quantity''' – количество мест | ||
+ | |||
+ | <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> | ||
+ | Вызов метода search | ||
+ | <syntaxhighlight lang="java" enclose="div"> | ||
+ | POST http://localhost:7700/ostrovok/v1/search/2967 | ||
+ | { | ||
+ | "hotel_id": 2967 | ||
+ | "check_in": "2023-06-01", | ||
+ | "check_out": "2023-06-07", | ||
+ | "residency": "BG", | ||
+ | "guests_groups": [ | ||
+ | { | ||
+ | "adults": 2 | ||
+ | }, | ||
+ | { | ||
+ | "adults": 1 | ||
+ | } | ||
+ | ], | ||
+ | "hotel_ids": [ | ||
+ | "2967" | ||
+ | ] | ||
+ | } | ||
+ | </syntaxhighlight> | ||
+ | Возвращаемый результат метода search | ||
+ | <syntaxhighlight lang="java" enclose="div"> | ||
+ | { | ||
+ | "hotel_id": "2967", | ||
+ | "rates": [ | ||
+ | { | ||
+ | "id": "iNiyYHLAH4p8wJj3wRAskxepfDvz1xZUtXv5tk", | ||
+ | "price": 991.0, | ||
+ | "payment_type": "prepay", | ||
+ | "currency": "EU", | ||
+ | "meals": [ | ||
+ | { | ||
+ | "id": "4", | ||
+ | "name": "Half Board" | ||
+ | } | ||
+ | ], | ||
+ | "cancellation_policies": [ | ||
+ | { | ||
+ | "from": "2023-06-01T00:00:00Z", | ||
+ | "amount": 514.0 | ||
+ | } | ||
+ | ], | ||
+ | "rooms": [ | ||
+ | { | ||
+ | "id": "BDSDaaah", | ||
+ | "name": "Double Room Standard" | ||
+ | }, | ||
+ | { | ||
+ | "id": "gX2NoxW1W8", | ||
+ | "name": "SGL Standard-A Sea View" | ||
+ | } | ||
+ | ] | ||
+ | }, | ||
+ | { | ||
+ | "id": "vwJTArRmsEX8H8yYwtYNdxExixCz1DZTQXJgLd", | ||
+ | "price": 961.0, | ||
+ | "payment_type": "prepay", | ||
+ | "currency": "EU", | ||
+ | "meals": [ | ||
+ | { | ||
+ | "id": "2", | ||
+ | "name": "All Inclusive" | ||
+ | } | ||
+ | ], | ||
+ | "cancellation_policies": [ | ||
+ | { | ||
+ | "from": "2023-06-01T00:00:00Z", | ||
+ | "amount": 634.0 | ||
+ | } | ||
+ | ], | ||
+ | "rooms": [ | ||
+ | { | ||
+ | "id": "RpTXa6oM", | ||
+ | "name": "Double Room Standard" | ||
+ | }, | ||
+ | { | ||
+ | "id": "zMp6r6xWdkC", | ||
+ | "name": "SGL Standard-A City View" | ||
+ | } | ||
+ | ] | ||
+ | }, | ||
+ | { | ||
+ | "id": "vwJTArRmsEX8H8yYwtYNdxExixCz1DZTQXJgLd", | ||
+ | "price": 1141.0, | ||
+ | "payment_type": "prepay", | ||
+ | "currency": "EU", | ||
+ | "meals": [ | ||
+ | { | ||
+ | "id": "2", | ||
+ | "name": "All Inclusive" | ||
+ | } | ||
+ | ], | ||
+ | "cancellation_policies": [ | ||
+ | { | ||
+ | "from": "2023-06-01T00:00:00Z", | ||
+ | "amount": 634.0 | ||
+ | } | ||
+ | ], | ||
+ | "rooms": [ | ||
+ | { | ||
+ | "id": "RpTXa6oM", | ||
+ | "name": "Double Room Standard" | ||
+ | }, | ||
+ | { | ||
+ | "id": "RposoDW108", | ||
+ | "name": "SGL Standard-A Standard" | ||
+ | } | ||
+ | ] | ||
+ | }, | ||
+ | { | ||
+ | "id": "iN8TmwL3HExiwCUAsL3wWDEDiDC4kxIyLx8PRW", | ||
+ | "price": 1561.0, | ||
+ | "payment_type": "prepay", | ||
+ | "currency": "EU", | ||
+ | "meals": [ | ||
+ | { | ||
+ | "id": "2", | ||
+ | "name": "All Inclusive" | ||
+ | } | ||
+ | ], | ||
+ | "cancellation_policies": [ | ||
+ | { | ||
+ | "from": "2023-06-01T00:00:00Z", | ||
+ | "amount": 874.0 | ||
+ | } | ||
+ | ], | ||
+ | "rooms": [ | ||
+ | { | ||
+ | "id": "nDUpoo6V", | ||
+ | "name": "Double Room Sea View" | ||
+ | }, | ||
+ | { | ||
+ | "id": "gD6r2pdW18", | ||
+ | "name": "SGL Standard-A Sea View" | ||
+ | } | ||
+ | ] | ||
+ | } | ||
+ | ] | ||
+ | } | ||
+ | |||
+ | </syntaxhighlight> | ||
+ | </TD></TR></TABLE> | ||
+ | </div></div><br /> | ||
+ | |||
+ | ===Бронирование (Book)=== | ||
+ | Метод возвращает список типов размещений по отелям или региону с учетом цен.<br /> | ||
+ | * Формат запроса: | ||
+ | ** POST .../ostrovok/v1/book | ||
+ | * Принимаемые параметры: | ||
+ | ** '''hotel_id *''' – ключ отеля | ||
+ | ** '''rate_id *''' – идентификатор размещения из результатов запроса search | ||
+ | ** '''client_reference_id *''' – ключ бронирования, сгенерированный провайдером | ||
+ | ** '''reservation_holder *''' – лицо, бронирующее номер | ||
+ | *** '''first_name *''' – имя | ||
+ | *** '''last_name *''' – фамилия | ||
+ | ** '''contact_info *''' – контактные данные бронирующего | ||
+ | *** '''email *''' – электронная почта | ||
+ | *** '''phone *''' – телефон | ||
+ | ** '''price *''' – цена, по которой бронируют | ||
+ | ** '''rooms *''' – список, комнаты из результата search, выбранные для бронирования | ||
+ | ** '''id *''' – идентификатор комнаты из результатов search | ||
+ | ** '''guests *''' – список гостей – параметры туристов в комнате | ||
+ | *** '''first_name *''' – имя гостя | ||
+ | *** '''last_name *''' – фамилия гостя | ||
+ | *** '''is_child *''' – ребенок или нет | ||
+ | ** '''comments''' – комментарии к заезду | ||
+ | |||
+ | * Возвращаемый результат: | ||
+ | ** '''reservation_id *''' – идентификатор заявки в базе данных | ||
+ | ** '''client_reference_id *''' – идентификатор заявки, назначенный провайдером | ||
+ | ** '''status *''' – статус заявки (принята, аннулирована, ожидает) | ||
+ | |||
+ | <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> | ||
+ | Вызов метода book | ||
+ | <syntaxhighlight lang="java" enclose="div"> | ||
+ | POST http://localhost:7700/ostrovok/v1/book | ||
+ | { | ||
+ | "hotel_id": "4456", | ||
+ | "rate_id": "8HiymNB3w4XCw8TmwBms1DeXinDKXQVDFFaa", | ||
+ | "client_reference_id": "ca115bce-5746-4418-9bba-7715d3751dc9", | ||
+ | "reservation_holder": { | ||
+ | "first_name": "Tomas", | ||
+ | "last_name": "Smith", | ||
+ | "is_child": false | ||
+ | }, | ||
+ | "contact_info": { | ||
+ | "email": "support@emergingtravel.com", | ||
+ | "phone": "+74992156525" | ||
+ | }, | ||
+ | "price": 488.9, | ||
+ | "rooms": [ | ||
+ | { | ||
+ | "id": "IfpatDCi8w", | ||
+ | "guests": [ | ||
+ | { | ||
+ | "first_name": "Maxim", | ||
+ | "last_name": "Ivanov", | ||
+ | "is_child": false | ||
+ | }, | ||
+ | { | ||
+ | "first_name": "Igor", | ||
+ | "last_name": "Petrov", | ||
+ | "is_child": false | ||
+ | } | ||
+ | ] | ||
+ | }, | ||
+ | { | ||
+ | "id": "ZfD6WDiJwK", | ||
+ | "guests": [ | ||
+ | { | ||
+ | "first_name": "Ivan", | ||
+ | "last_name": "Vasiliev", | ||
+ | "is_child": false | ||
+ | } | ||
+ | ] | ||
+ | } | ||
+ | ], | ||
+ | "comments": "Non-smoking room, first floor." | ||
+ | } | ||
+ | |||
+ | |||
+ | </syntaxhighlight> | ||
+ | Возвращаемый результат метода book | ||
+ | <syntaxhighlight lang="java" enclose="div"> | ||
+ | { | ||
+ | "reservation_id": "155234", | ||
+ | "client_reference_id": "ca115bce-5746-4418-9bba-7715d3751dc9", | ||
+ | "status": "pending" | ||
+ | } | ||
+ | |||
+ | </syntaxhighlight> | ||
+ | </TD></TR></TABLE> | ||
+ | </div></div><br /> | ||
+ | |||
+ | ===Получение статуса заявки (Status)=== | ||
+ | Метод возвращает статус заявки.<br /> | ||
+ | * Формат запроса: | ||
+ | ** POST .../ostrovok/v1/status | ||
+ | * Принимаемые параметры: | ||
+ | ** '''reservation_id''' – идентификатор заявки в базе данных | ||
+ | ** '''client_reference_id *''' – идентификатор заявки, назначенный провайдером | ||
+ | |||
+ | * Возвращаемый результат: | ||
+ | ** '''reservation_id *''' – идентификатор заявки в базе данных | ||
+ | ** '''client_reference_id *''' – идентификатор заявки, назначенный провайдером | ||
+ | ** '''status *''' – статус заявки (принята, аннулирована, ожидает) | ||
+ | ** '''check_in *''' – дата планируемого заезда | ||
+ | ** '''check_out *''' – дата выезда | ||
+ | ** '''reservation_holder *''' – лицо, бронирующее номер | ||
+ | *** '''first_name *''' – имя | ||
+ | *** '''last_name *''' – фамилия | ||
+ | ** '''contact_info *''' – контактные данные бронирующего | ||
+ | *** '''email *''' – электронная почта | ||
+ | *** '''phone *''' – телефон | ||
+ | ** '''hotel_id *''' – ключ отеля | ||
+ | ** '''hotel_name *''' – название отеля | ||
+ | ** '''rate''' – вариант размещения | ||
+ | *** '''id *''' – идентификатор размещения, формируется сервисом | ||
+ | *** '''price *''' – цена | ||
+ | *** '''commission''' – комиссия | ||
+ | *** '''payment_type *''' – тип платежа (предоплата или по заезду) | ||
+ | *** '''currency *''' – валюта | ||
+ | *** '''meals - список типов питания в формате: | ||
+ | **** '''id *''' – идентификатор питания | ||
+ | **** '''name *''' – наименование питания | ||
+ | *** '''cancellation_policies''' – список штрафов | ||
+ | **** '''from *''' – начало действия штрафа | ||
+ | **** '''amount *''' – величина штрафа | ||
+ | *** '''rooms *''' – список комнат | ||
+ | **** '''id *''' – идентификатор, генерируемый системой | ||
+ | **** '''name *''' – наименование комнаты (тип) (например, «Deluxe Room») | ||
+ | **** '''bed_groups''' – список групп размещений | ||
+ | ***** '''id *''' – идентификатор размещения | ||
+ | ***** '''name''' – наименование размещения (например, «double + twin») | ||
+ | ***** '''bed_types''' – список вариантов спальных мест | ||
+ | ****** '''name *''' – наименование (например, «double») | ||
+ | ****** '''quantity''' – количество мест | ||
+ | |||
+ | <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> | ||
+ | Вызов метода status | ||
+ | <syntaxhighlight lang="java" enclose="div"> | ||
+ | POST http://localhost:7700/ostrovok/v1/status | ||
+ | { | ||
+ | "client_reference_id": " ca115bce-5746-4418-9bba-7715d3751dc9" | ||
+ | } | ||
+ | </syntaxhighlight> | ||
+ | Возвращаемый результат метода status | ||
+ | <syntaxhighlight lang="java" enclose="div"> | ||
+ | { | ||
+ | "reservation_id": "559257", | ||
+ | "client_reference_id": "3029455", | ||
+ | "status": "pending", | ||
+ | "check_in": "2023-07-27T00:00:00", | ||
+ | "check_out": "2023-08-06T00:00:00", | ||
+ | "hotel_id": "2866", | ||
+ | "hotel_name": "Vejen" | ||
+ | } | ||
+ | |||
+ | </syntaxhighlight> | ||
+ | </TD></TR></TABLE> | ||
+ | </div></div><br /> | ||
+ | |||
+ | ===Аннуляция заявки (Cancel)=== | ||
+ | Метод аннулирует заявку.<br /> | ||
+ | * Формат запроса: | ||
+ | ** POST .../ostrovok/v1/cancel | ||
+ | * Принимаемые параметры: | ||
+ | ** '''reservation_id''' – идентификатор заявки в базе данных | ||
+ | ** '''client_reference_id *''' – идентификатор заявки, назначенный провайдером | ||
+ | |||
+ | * Возвращаемый результат: | ||
+ | ** '''reservation_id *''' – идентификатор заявки в базе данных | ||
+ | ** '''client_reference_id *''' – идентификатор заявки, назначенный провайдером | ||
+ | ** '''status *''' – статус заявки (принята, аннулирована, ожидает) | ||
+ | |||
+ | <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> | ||
+ | Вызов метода cancel | ||
+ | <syntaxhighlight lang="java" enclose="div"> | ||
+ | POST http://localhost:7700/ostrovok/v1/cancel | ||
+ | { | ||
+ | "client_reference_id": " ca115bce-5746-4418-9bba-7715d3751dc9" | ||
+ | } | ||
+ | |||
+ | </syntaxhighlight> | ||
+ | Возвращаемый результат метода cancel | ||
+ | <syntaxhighlight lang="java" enclose="div"> | ||
+ | { | ||
+ | "reservation_id": "155234", | ||
+ | "client_reference_id": "ca115bce-5746-4418-9bba-7715d3751dc9", | ||
+ | "status": "cancelled" | ||
} | } | ||
Текущая версия на 14:29, 25 ноября 2024
Содержание
[убрать]- 1 Введение
- 2 Установка и настройка
- 3 Описание методов
- 3.1 Получение информации обо всех отелях (Hotels)
- 3.2 Получение информации об отеле по его ключу (Hotels)
- 3.3 Получение информации о типах питания (Meals)
- 3.4 Получение информации о типах размещений по отелям или региону с учетом цен (Search)
- 3.5 Получение информации о вариантах размещений по конкретному отелю (Search)
- 3.6 Бронирование (Book)
- 3.7 Получение статуса заявки (Status)
- 3.8 Аннуляция заявки (Cancel)
Введение
Сервис отдает запросы посредством API.
Сервис позволяет получать информацию об отелях, типах питания, вариантах размещения, бронирования, аннуляции и получения статусов заявок.
Для работы сервиса необходимо установить службу Windows.
Установка и настройка
Перед установкой API необходимо настроить конфигурационный файл appsettings.json.
- Подключение к базе данных ПК «Мастер-Interlook»:
{
"ConnectionParameters": {
"databaseType": 1, - тип используемой базы данных, 1 - MSSQL, 2 - PostgreSQL (пока не реализовано)
"server": "", - адрес SQL сервера
"database": "", - название БД Interlook
"user": "", - логин пользователя
"password": "", - пароль пользователя
"appName": "MegatecInterlookGDSService" - название приложения при подключении к SQL-серверу
},
- Подключение к сервису бронирования:
"BookingServiceUrl": "", - адрес BookingService
"ServiceType": 0, - режим работы сервиса с ограничением отображения информации с Swagger. 0 - без ограничений доступны все методы сервиса, 1 - режим работы с поисковыми системами, 2 - режим поиска для разработки собственного интернет-магазина,
- Параметры загрузки сервиса:
"Cache": {
"ParallelismDegree": 20, - степень параллелизма при инициализации кэша сервиса. Рекомендуемое значение - 80-90% от общего количества ядер процессора
"CalculationParallelizmDegree": 90, - параллелизм при обработке запросов поиска
"CacheUpdateTime": 90, - периодичность обновления кэша в секундах.
// developer settings, costs cache - "[days before now for ckeck(in\out) costs]" or "[date from-date to]"
// example: "7" - price date end, checkin end and checkout end greater than today minus 7 days
// example: "20.03.2023-30.04.2023" - the price action date interval crosses the date interval from 20.03.2023 to 30.04.2023
// example: "20.03.2023" - the price action date interval crosses the date 20.03.2023
"CostsRestrictions": "7"
},
- Ограничители для запросов поиска:
"Restrictions": {
"MaxRooms": 0, - максимальное количество комнат в запросе (0 - без ограничений)
"MaxAdults": 0, - максимальное количество взрослых в запросе (0 - без ограничений)
"MaxChildren": 0, - максимальное количество детей в запросе (0 - без ограничений)
"WithAddressOnly": false, - метод hotels при значении false отдаёт информацию по всем отелям, при значении true - только отели с заполненным адресом расположения.
"QuotaTypes": [ 1 ], - ограничение по наличию мест. Возможные варианты: [0,1,2] 0 - отели под запрос, 1 - отели на гарантии, 2 - отели на стопе. В параметре перечисляются те значения, которые надо отображать.
"CPDateFromDaysEarlierShow": 1, - сколько дней в результатах поиска добавлять к дате наступления штрафных санкций
"IsAlwaysConfirmed": false, - автоматическое подтверждение бронирования, новой заявке по умолчанию ставится статус confirmed, независимо от наличия свободных мест по услугам.
"IsAddHotsWithCosts": false, - учитывать ли добавочные услуги при поиске. Относится к дополнительным услугам типа Новогодних ужинов с типом услуги "With costs"
"NearestHotelsDistance": 3, - определяет расстояние для обнаружения ближайших отелей к выбранному в поиске, км
- Ограничение количества "тяжелых запросов" в единицу времени. Запросы, вышедшие за ограничители, получат сообщение о превышении количества запросов в единицу времени:
"SearchRequest": {
"HotelsCount": 100, - минимальное количество ключей отелей в запросе
"TimeWindow": 0, - промежуток времени в секундах, за который принимаем несколько "тяжелых" запросов
"MaxRequests": 0 - количество "тяжелых" запросов в течении интервала в параметре "TimeWindow"
}
},
- Логирование работы сервиса:
"Logger": {
"EnableConsole": false, - вывод логов в консоль, при работе в режиме "приложение"
"EnableFile": true, - запись логов в файл
"FilePath": "", - расположение файла логов.
"MaxLogFileSize": 10, // МБ - максимальный размер файла логов
"MaxOldLogFilesCount": 30 - максимальное количество файлов логов. При превышении начинают перезаписываться.
"EnableLogService": false, - запись логов через сервис логирования
"LogServiceAddress": "", - адрес сервиса логирования
},
- Параметры подключения к сервису:
"Install": {
"ServiceName": "MegatecInterlookGDSService", - название службы при работе в режиме "служба"
"ServiceAddress": [ "http://*:7700" ], - адрес/порт, на котором работает сервис
"IPAddress": "IPAddress.IPv6Any" - служебный параметр сервиса, другие значения на текущий момент не используются
},
"AllowedHosts": "*" - определяет доступность сервиса из внешних сетей, * - любые
Описание методов
Получение информации обо всех отелях (Hotels)
Метод возвращает список отелей в формате ndjson в сжатом виде. Формат каждого отеля в результате идентичен результату запроса одного отеля.
- Формат запроса:
- GET .../ostrovok/v1/hotels
- Принимаемые параметры: отсутствуют
- Возвращаемый результат:
- id * – идентификатор отеля
- name * – название отеля
- description – описание отеля
- region_id – идентификатор региона отеля
- geo_coordinates * – координаты отеля
- atitude * – широта (например, 35.346193)
- longitude * – долгота (например, 33.191205)
- address * – адрес отеля
- postal_code – почтовый индекс
- contacts – контактная информация
- phone – телефонный номер
- email – адрес электронной почты
- webpage – сайт
- currency – валюта
- stars – звездность отеля
- rating_certificate_info – подтверждение рейтинга (звездности) отеля
- id – номер документа
- expiration_date * – срок действия
- important_info – важная информация по отелю для гостей
- check_in_instructions – информация по заезду
- check_in_time – время заезда (например, 14:00)
- check_in_before_time – время окончания заезда (например, 18:00)
- check_out_time – время выезда
- images – список фотографий отеля
- category – категория фотографии
- url * – сетевой путь к файлу фотографии (например, https://www.test.com/almond/almond-holiday-village-mp-500x249.jpgImage)
- amenities – список наименований удобств (например, "Beach/pool towels", "Airport transportation")
- rooms – список комнат
- name * – наименование комнаты (тип) (например, «Deluxe Room»)
- description – описание комнаты
- occupancy – максимальное количество человек
- area – площадь комнаты
- bed_groups – список групп размещений
- id * – идентификатор размещения
- name – наименование размещения (например, «double + twin»)
- bed_types – список вариантов спальных мест
- name * – наименование (например, «double»)
- quantity – количество мест
- images – список фотографий комнаты, аналогично с фотографиями отеля
- category – категория фотографии (например, «Ванная комната»)
- url * – путь к файлу фотографии amenities (список наименований удобств, "shower", "tv", "soundproofing")
Получение информации об отеле по его ключу (Hotels)
Метод возвращает информацию по отелю по ключу отеля в формате ndjson в сжатом виде. Формат каждого отеля в результате идентичен результату запроса одного отеля..
- Формат запроса:
- GET .../ostrovok/v1/hotels/hotel_id
- Принимаемые параметры:
- hotel_id * – идентификатор отеля (ключ)
- Возвращаемый результат:
- id * – идентификатор отеля
- name * – название отеля
- description – описание отеля
- region_id – идентификатор региона отеля
- geo_coordinates * – координаты отеля
- atitude * – широта (например, 35.346193)
- longitude * – долгота (например, 33.191205)
- address * – адрес отеля (например, «Bademli Sok. No: 1, Alsancak, Cyprus»)
- postal_code – почтовый индекс
- contacts – контактная информация
- phone – телефонный номер
- email – адрес электронной почты
- webpage – сайт
- currency – валюта
- stars – звездность отеля
- rating_certificate_info – подтверждение рейтинга (звездности) отеля
- id – номер документа
- expiration_date * – срок действия
- important_info – важная информация по отелю для гостей
- check_in_instructions – информация по заезду
- check_in_time – время заезда (например, 14:00)
- check_in_before_time – время окончания заезда (например, 18:00)
- check_out_time – время выезда (например, 12:00)
- images – список фотографий отеля
- category – категория фотографии
- url * – сетевой путь к файлу фотографии (например, https://www.test.com/almond/almond-holiday-village-mp-500x249.jpgImage)
- amenities – список наименований удобств (например, "Beach/pool towels", "Airport transportation")
- rooms – список комнат
- name * – наименование комнаты (тип) (например, «Deluxe Room»)
- description – описание комнаты
- occupancy – максимальное количество человек
- area – площадь комнаты
- bed_groups – список групп размещений
- id * – идентификатор размещения
- name – наименование размещения (например, «double + twin»)
- bed_types – список вариантов спальных мест
- name * – наименование (например, «double»)
- quantity – количество мест
- images – список фотографий комнаты, аналогично с фотографиями отеля
- category – категория фотографии (например, «Ванная комната»)
- url * – путь к файлу фотографии amenities (список наименований удобств, "shower", "tv", "soundproofing")
Получение информации о типах питания (Meals)
Метод возвращает список типов питания в формате ndjson в сжатом виде.
- Формат запроса:
- GET .../ostrovok/v1/meals
- Принимаемые параметры: отсутствуют
- Возвращаемый результат:
- id * – идентификатор типа питания
- name * – наименование типа питания
Получение информации о типах размещений по отелям или региону с учетом цен (Search)
Метод возвращает список типов размещений по отелям или региону с учетом цен.
- Формат запроса:
- POST .../ostrovok/v1/search
- Принимаемые параметры:
- check_in * – дата планируемого заезда
- check_out * – дата выезда
- residency * – страна (рынок)
- guests_groups * – список групп гостей для отбора размещений
- adults – взрослых
- children_ages – список возрастов детей
- region_id – ключ региона (город)
- hotel_ids – ключи отелей, если заданы, то ключ региона не учитывается
- Возвращаемый результат:
- hotel_id * – идентификатор отеля
- rates – список вариантов размещения
- id * – идентификатор размещения, формируется сервисом
- price * – цена
- commission – комиссия
- payment_type * – тип платежа (предоплата или по заезду)
- currency * – валюта
- meals – список типов питания
- id * – идентификатор питания
- name * – наименование питания,
- cancellation_policies – список штрафов
- from * – начало действия штрафа
- amount * – величина штрафа
- rooms * – список комнат
- id * – идентификатор, генерируемый системой
- name * – наименование комнаты (например, «Deluxe Room»)
- bed_groups – список групп размещений
- id * – идентификатор размещения
- name – наименование размещения (например, «double + twin»)
- bed_types – список вариантов спальных мест
- name * – наименование (например, «double»)
- quantity – количество мест
Получение информации о вариантах размещений по конкретному отелю (Search)
Метод возвращает список типов размещений по отелям или региону с учетом цен.
- Формат запроса:
- POST .../ostrovok/v1/search/hotel_id
- Принимаемые параметры:
- hotel_id * – ключ отеля
- check_in * – дата планируемого заезда
- check_out * – дата выезда
- guests_groups * – список групп гостей для отбора размещений
- adults – взрослых
- children_ages – список возрастов детей
- Возвращаемый результат:
- hotel_id * – идентификатор отеля
- rates – список вариантов размещения
- id * – идентификатор размещения, формируется сервисом
- price * – цена
- commission – комиссия
- payment_type * – тип платежа (предоплата или по заезду)
- currency * – валюта
- meals – список типов питания
- id * – идентификатор питания
- name * – наименование питания
- cancellation_policies – список штрафов
- from * – начало действия штрафа
- amount * – величина штрафа
- rooms * – список комнат
- id * – идентификатор, генерируемый системой
- name * – наименование комнаты (например, «Deluxe Room»)
- bed_groups – список групп размещений
- id * – идентификатор размещения
- name – наименование размещения (например, «double + twin»)
- bed_types – список вариантов спальных мест
- name * – наименование (например, «double»)
- quantity – количество мест
Бронирование (Book)
Метод возвращает список типов размещений по отелям или региону с учетом цен.
- Формат запроса:
- POST .../ostrovok/v1/book
- Принимаемые параметры:
- hotel_id * – ключ отеля
- rate_id * – идентификатор размещения из результатов запроса search
- client_reference_id * – ключ бронирования, сгенерированный провайдером
- reservation_holder * – лицо, бронирующее номер
- first_name * – имя
- last_name * – фамилия
- contact_info * – контактные данные бронирующего
- email * – электронная почта
- phone * – телефон
- price * – цена, по которой бронируют
- rooms * – список, комнаты из результата search, выбранные для бронирования
- id * – идентификатор комнаты из результатов search
- guests * – список гостей – параметры туристов в комнате
- first_name * – имя гостя
- last_name * – фамилия гостя
- is_child * – ребенок или нет
- comments – комментарии к заезду
- Возвращаемый результат:
- reservation_id * – идентификатор заявки в базе данных
- client_reference_id * – идентификатор заявки, назначенный провайдером
- status * – статус заявки (принята, аннулирована, ожидает)
Получение статуса заявки (Status)
Метод возвращает статус заявки.
- Формат запроса:
- POST .../ostrovok/v1/status
- Принимаемые параметры:
- reservation_id – идентификатор заявки в базе данных
- client_reference_id * – идентификатор заявки, назначенный провайдером
- Возвращаемый результат:
- reservation_id * – идентификатор заявки в базе данных
- client_reference_id * – идентификатор заявки, назначенный провайдером
- status * – статус заявки (принята, аннулирована, ожидает)
- check_in * – дата планируемого заезда
- check_out * – дата выезда
- reservation_holder * – лицо, бронирующее номер
- first_name * – имя
- last_name * – фамилия
- contact_info * – контактные данные бронирующего
- email * – электронная почта
- phone * – телефон
- hotel_id * – ключ отеля
- hotel_name * – название отеля
- rate – вариант размещения
- id * – идентификатор размещения, формируется сервисом
- price * – цена
- commission – комиссия
- payment_type * – тип платежа (предоплата или по заезду)
- currency * – валюта
- meals - список типов питания в формате:
- id * – идентификатор питания
- name * – наименование питания
- cancellation_policies – список штрафов
- from * – начало действия штрафа
- amount * – величина штрафа
- rooms * – список комнат
- id * – идентификатор, генерируемый системой
- name * – наименование комнаты (тип) (например, «Deluxe Room»)
- bed_groups – список групп размещений
- id * – идентификатор размещения
- name – наименование размещения (например, «double + twin»)
- bed_types – список вариантов спальных мест
- name * – наименование (например, «double»)
- quantity – количество мест
Аннуляция заявки (Cancel)
Метод аннулирует заявку.
- Формат запроса:
- POST .../ostrovok/v1/cancel
- Принимаемые параметры:
- reservation_id – идентификатор заявки в базе данных
- client_reference_id * – идентификатор заявки, назначенный провайдером
- Возвращаемый результат:
- reservation_id * – идентификатор заявки в базе данных
- client_reference_id * – идентификатор заявки, назначенный провайдером
- status * – статус заявки (принята, аннулирована, ожидает)