API Сервис Ostrovok — различия между версиями

Материал из Megatec
Перейти к: навигация, поиск
[непроверенная версия][досмотренная версия]
(Новая страница: «==Введение== Сервис отдает запросы посредством API. Сервис позволяет получать информацию о…»)
 
 
(не показано 13 промежуточных версий 1 участника)
Строка 1: Строка 1:
 
==Введение==
 
==Введение==
Сервис отдает запросы посредством API.
+
Сервис отдает запросы посредством API.<br />
Сервис позволяет получать информацию об отелях, типах питания, вариантах размещения, бронирования, аннуляции и получения статусов заявок.
+
Сервис позволяет получать информацию об отелях, типах питания, вариантах размещения, бронирования, аннуляции и получения статусов заявок.<br />
Для работы сервиса необходимо установить службу Windows.
+
Для работы сервиса необходимо установить службу Windows.<br />
  
 
==Описание методов==
 
==Описание методов==
===Получение информации обо всех отелях===
+
===Получение информации обо всех отелях (Hotels)===
Метод возвращает список отелей в формате ndjson в сжатом виде. Формат каждого отеля в результате идентичен результату запроса одного отеля..<br />
+
Метод возвращает список отелей в формате ndjson в сжатом виде. Формат каждого отеля в результате идентичен результату запроса одного отеля.<br />
 
* Формат запроса:
 
* Формат запроса:
 
** GET .../ostrovok/v1/hotels
 
** GET .../ostrovok/v1/hotels
Строка 16: Строка 16:
 
** '''region_id''' – идентификатор региона отеля
 
** '''region_id''' – идентификатор региона отеля
 
** '''geo_coordinates *''' – координаты отеля
 
** '''geo_coordinates *''' – координаты отеля
** '''atitude *''' – широта, 35.346193
+
** '''atitude *''' – широта (например, 35.346193)
** '''longitude *''' – долгота, 33.191205
+
** '''longitude *''' – долгота (например, 33.191205)
** '''address *''' – адрес отеля, «Bademli Sok. No: 1, Alsancak, Cyprus»
+
** '''address *''' – адрес отеля
 
** '''postal_code''' – почтовый индекс
 
** '''postal_code''' – почтовый индекс
 
** '''contacts''' – контактная информация
 
** '''contacts''' – контактная информация
Строка 31: Строка 31:
 
** '''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''' – время выезда, 12:00
+
** '''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»)
 
** '''description''' – описание комнаты
 
** '''description''' – описание комнаты
 
** '''occupancy''' – максимальное количество человек
 
** '''occupancy''' – максимальное количество человек
Строка 45: Строка 45:
 
** '''bed_groups''' – список групп размещений
 
** '''bed_groups''' – список групп размещений
 
** '''id *''' – идентификатор размещения
 
** '''id *''' – идентификатор размещения
** '''name''' – наименование размещения, «double + twin»
+
** '''name''' – наименование размещения (например, «double + twin»)
 
** '''bed_types''' – список вариантов спальных мест
 
** '''bed_types''' – список вариантов спальных мест
** '''name *''' – наименование, «double»
+
** '''name *''' – наименование (например, «double»)
 
** '''quantity''' – количество мест
 
** '''quantity''' – количество мест
 
** '''images''' – список фотографий комнаты, аналогично с фотографиями отеля
 
** '''images''' – список фотографий комнаты, аналогично с фотографиями отеля
** '''category''' – категория фотографии, «Ванная комната»
+
** '''category''' – категория фотографии (например, «Ванная комната»)
** '''url *''' – путь к файлу фотографии amenities [
+
** '''url *''' – путь к файлу фотографии amenities (список наименований удобств, "shower", "tv", "soundproofing")
** '''amenities''' – список наименований удобств, "shower", "tv", "soundproofing"
 
  
 
<div class="toccolours mw-collapsible mw-collapsed" style="width:900px">Пример
 
<div class="toccolours mw-collapsible mw-collapsed" style="width:900px">Пример
Строка 59: Строка 58:
 
Вызов метода hotels
 
Вызов метода hotels
 
<syntaxhighlight lang="java" enclose="div">
 
<syntaxhighlight lang="java" enclose="div">
GET http://localhost:7700/ostrovok/v1/hotels HTTP/1.1
+
GET http://localhost:7700/ostrovok/v1/hotels  
 
</syntaxhighlight>
 
</syntaxhighlight>
 
Возвращаемый результат метода hotels
 
Возвращаемый результат метода hotels
Строка 125: Строка 124:
 
         }
 
         }
 
     ]
 
     ]
 +
}
 +
 +
</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:52, 31 мая 2024

Введение

Сервис отдает запросы посредством API.
Сервис позволяет получать информацию об отелях, типах питания, вариантах размещения, бронирования, аннуляции и получения статусов заявок.
Для работы сервиса необходимо установить службу Windows.

Описание методов

Получение информации обо всех отелях (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"
}