Аутентификация

Доступ предоставляется через аккаунт партнёра, который создаёт HMS. Аккаунт партнёра получает apiKey и apiSecret, а HMS определяет, к каким отелям у него есть доступ. Эндпоинт входа обменивает эти учётные данные на токен, привязанный к отелю.

Вход и токен#

Запрос
POST /external/public/login HTTP/1.1
Host: test.hms.gen.tr
Content-Type: application/x-www-form-urlencoded

apiKey=5y94tLmALIKDyUVdEPlAAjg5xWGQNgQtnALlV4%2BAm7Q%3D&apiSecret=a143d640…&hotelCode=1000
Ответ · 200
{
    "success": true,
    "hotelCode": "1000",
    "token": "eyJlbmREYXRlIjp7ImRhdGUiOiIyMDI2LTA5LTE1IDEwOjI0OjMxLjAwMDAwMCIs…",
    "hotelSeoUrl": "demo-otel"
}
ПолеОписание
apiKeyКлюч партнёра. Содержит символы base64, поэтому в теле формы его нужно кодировать для URL (+%2B, =%3D). HTTP-библиотеки делают это сами.
apiSecretСекретный ключ. Храните его только на сервере и никогда не включайте в код браузерного или мобильного приложения.
hotelCodeID отеля в HMS. Если у партнёра нет доступа к отелю, возвращается hotel_permission_is_not_found.
hotelSeoUrlSEO-адрес отеля. Вместо hotelCode его использует только собственный модуль бронирования HMS; сторонние интеграции передают hotelCode.

Заголовок Bearer#

Все эндпоинты, кроме входа, ожидают токен в заголовке Authorization:

Запрос
GET /external/currencies HTTP/1.1
Host: test.hms.gen.tr
Authorization: Bearer eyJlbmREYXRlIjp7ImRhdGUiOiIyMDI2LTA5LTE1IDEwOjI0OjMxLjAwMDAwMCIs…

Если заголовок отсутствует, имеет неверный формат (нет префикса Bearer) или токен неизвестен, API возвращает 401:

401 Unauthorized
{
    "success": false,
    "error": "Authentication required"
}

Срок действия и обновление токена#

  • Токен действует 7 дней. Обновляйте его, повторно выполняя вход до истечения срока: вход — дешёвая операция, и для одного и того же отеля его можно повторять.
  • Не разбирайте токен. Хотя это структура в кодировке base64, её формат не гарантируется; храните и передавайте токен как непрозрачную строку.
  • При ответе 401 выполните вход ещё раз и повторите запрос; повторный 401 означает, что изменилась пара ключей или доступ к отелю.

Привязка к отелю#

Токен привязан к одному отелю. Параметр hotelID в эндпоинтах должен совпадать с этим отелем; запрос к другому отелю вернёт ошибку доступа или пустой результат. Если интеграция работает с несколькими отелями, получайте отдельный токен для каждого отеля и кешируйте их по отелям.

Ошибки входа#

messageЗначение
partner_is_not_foundПара apiKey / apiSecret не совпала. Проверьте ключи и их URL-кодирование.
hotel_is_not_foundНе найден отель по hotelSeoUrl.
hotel_permission_is_not_foundУ партнёра нет доступа к этому отелю, или доступ неактивен. Обратитесь в поддержку HMS.

Эти ошибки возвращаются с HTTP 200, success: false и token: null.

Последнее обновление:: 21 сентября 2026 г.Нашли ошибку? Напишите нам