API Сервис Ostrovok — различия между версиями
[досмотренная версия] | [досмотренная версия] |
Belyaeva (обсуждение | вклад) |
Biryukov (обсуждение | вклад) (→Установка и настройка) |
||
(не показаны 3 промежуточные версии 2 участников) | |||
Строка 3: | Строка 3: | ||
Сервис позволяет получать информацию об отелях, типах питания, вариантах размещения, бронирования, аннуляции и получения статусов заявок.<br /> | Сервис позволяет получать информацию об отелях, типах питания, вариантах размещения, бронирования, аннуляции и получения статусов заявок.<br /> | ||
Для работы сервиса необходимо установить службу Windows.<br /> | Для работы сервиса необходимо установить службу 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> | ||
==Описание методов== | ==Описание методов== |
Текущая версия на 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 GET http://localhost:7700/ostrovok/v1/hotels
Возвращаемый результат метода hotels {
"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",
]
}
]
}
|
Получение информации об отеле по его ключу (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")
Вызов метода hotels GET http://localhost:7700/ostrovok/v1/hotels/4646
Возвращаемый результат метода hotels {
"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",
]
}
]
}
|
Получение информации о типах питания (Meals)
Метод возвращает список типов питания в формате ndjson в сжатом виде.
- Формат запроса:
- GET .../ostrovok/v1/meals
- Принимаемые параметры: отсутствуют
- Возвращаемый результат:
- id * – идентификатор типа питания
- name * – наименование типа питания
Вызов метода meals GET http://localhost:7700/ostrovok/v1/meals
Возвращаемый результат метода meals {
"id": "1",
"name": "Full Board"
},
{
"id": "2",
"name": "All Inclusive"
}
|
Получение информации о типах размещений по отелям или региону с учетом цен (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 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"
]
}
Возвращаемый результат метода search {
"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"
}
]
}
]
}
|
Получение информации о вариантах размещений по конкретному отелю (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 – количество мест
Вызов метода search 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"
]
}
Возвращаемый результат метода search {
"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"
}
]
}
]
}
|
Бронирование (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 * – статус заявки (принята, аннулирована, ожидает)
Вызов метода book 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."
}
Возвращаемый результат метода book {
"reservation_id": "155234",
"client_reference_id": "ca115bce-5746-4418-9bba-7715d3751dc9",
"status": "pending"
}
|
Получение статуса заявки (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 – количество мест
Вызов метода status POST http://localhost:7700/ostrovok/v1/status
{
"client_reference_id": " ca115bce-5746-4418-9bba-7715d3751dc9"
}
Возвращаемый результат метода status {
"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"
}
|
Аннуляция заявки (Cancel)
Метод аннулирует заявку.
- Формат запроса:
- POST .../ostrovok/v1/cancel
- Принимаемые параметры:
- reservation_id – идентификатор заявки в базе данных
- client_reference_id * – идентификатор заявки, назначенный провайдером
- Возвращаемый результат:
- reservation_id * – идентификатор заявки в базе данных
- client_reference_id * – идентификатор заявки, назначенный провайдером
- status * – статус заявки (принята, аннулирована, ожидает)
Вызов метода cancel POST http://localhost:7700/ostrovok/v1/cancel
{
"client_reference_id": " ca115bce-5746-4418-9bba-7715d3751dc9"
}
Возвращаемый результат метода cancel {
"reservation_id": "155234",
"client_reference_id": "ca115bce-5746-4418-9bba-7715d3751dc9",
"status": "cancelled"
}
|