Запросы и ответы
На этой странице описаны форматы тела запроса, обёртка ответа, пагинация, форматы дат и сумм, а также то, как интерпретировать коды состояния HTTP.
Тело запроса#
Эндпоинты используют один из двух форматов тела. Какой именно, указано на странице эндпоинта в справочнике.
| Формат | Content-Type | Где используется |
|---|---|---|
| Поля формы | application/x-www-form-urlencoded или multipart/form-data | Вход, список номеров, проверка купона, страны |
| JSON | application/json | Передача бронирования (BookingPushRQ), запуск оплаты |
| Строка запроса | — | Все эндпоинты GET |
Поля-массивы в теле формы повторяются с квадратными скобками: childAges[]=7&childAges[]=12. Тело в JSON должно быть в кодировке UTF-8.
Обёртка ответа#
Ответы приходят в JSON. Большинство из них содержат поле success; списки возвращаются с полями count и items:
{
"success": true,
"count": 3,
"items": [
{
"id": 1,
"titleCode": "TRY",
"symbol": "₺",
"price": 1
},
{
"id": 2,
"titleCode": "EUR",
"symbol": "€",
"price": 47.85000000000000142108547152020037174224853515625
}
]
}Если не пройдена проверка бизнес-логики, возвращается success: false и описание ошибки в одном из двух видов:
{
"success": false,
"message": "online_cupon_is_not_found"
}{
"success": false,
"errorMessage": "Invalid parameters.",
"errorCode": 10022
}Исключения: эндпоинт контактных данных возвращает объект без обёртки, а передача бронирования — объект BookingPushRS. Оба варианта приведены в справочнике.
Коды состояния HTTP#
| Код | Когда | Что делать |
|---|---|---|
| 200 | Запрос обработан (успех или ошибка бизнес-логики) | Проверьте success, message / errorCode. |
| 401 | Токен отсутствует, имеет неверный формат или неизвестен | Выполните вход заново; см. Аутентификация. |
| 404 | Параметр пути не соответствует ни одной записи (например, /hotel/{hotelID}/…, /payment/type/{paymentType}) | Проверьте ID. |
| 405 | Неверный HTTP-метод | Используйте метод, указанный в справочнике (страны и список номеров — POST). |
| 500 | Непредвиденная ошибка сервера | Повторите запрос через небольшую паузу; если ошибка сохраняется, обратитесь в поддержку и приложите запрос. |
Пагинация#
Эндпоинты-списки (/external/currencies, /external/languages, /external/online/social/media, /external/stock/packages) разбиваются на страницы по номеру страницы:
| Параметр | Описание | По умолчанию |
|---|---|---|
limit | Записей на странице. | 20 |
page | Номер страницы, начиная с 1. | 1 |
offset | Сколько записей пропустить. Если задан, page игнорируется. | — |
order | Поле сортировки; для сортировки по убыванию добавьте префикс - (-id). Допустимые поля указаны для каждого эндпоинта. | — |
count — общее число записей; список исчерпан, когда page × limit ≥ count.
Даты, время и суммы#
| Тип | Формат | Пример |
|---|---|---|
| Дата в запросе | YYYY-MM-DD | 2026-08-18 |
| Дата доступности | YYYY-MM-DD или YYYY-MM-DDTHH:MM:SS | 2026-08-18T12:00:00 |
| Дата цены за ночь (ответ) | DD.MM.YYYY (поле tarih) | 18.08.2026 |
| Интервал дня доступности (ответ) | YYYY-MM-DD HH:MM:SS, с 12:00 до 12:00 следующего дня | 2026-08-18 12:00:00 |
| Сумма | Строка с двумя знаками после точки | "965.00" |
| Валюта | ISO 4217; берётся из настроек онлайн-канала отеля | TRY |
| Часовой пояс | Часовой пояс отеля | Europe/Istanbul |
Дата выезда не входит в проживание: с 18 по 20 августа — это две ночи. Не складывайте суммы как float; используйте библиотеку для десятичных чисел или целые значения в минимальных единицах валюты.
Язык#
Список номеров принимает поле language (ISO 639-1: tr, en, de…) и возвращает названия номеров, заголовки характеристик и сообщения об ошибках на этом языке. Список пакетов ожидает languageID; ID можно получить в эндпоинте Языки.