Authentifizierung
Der Zugriff erfolgt über ein von HMS eingerichtetes Partnerkonto. Ein Partnerkonto erhält einen apiKey und ein apiSecret, und HMS legt fest, auf welche Hotels es zugreifen darf. Der Anmelde-Endpunkt tauscht diese Zugangsdaten gegen ein hotelgebundenes Token.
Anmeldung und Token#
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{
"success": true,
"hotelCode": "1000",
"token": "eyJlbmREYXRlIjp7ImRhdGUiOiIyMDI2LTA5LTE1IDEwOjI0OjMxLjAwMDAwMCIs…",
"hotelSeoUrl": "demo-otel"
}| Feld | Beschreibung |
|---|---|
apiKey | Partnerschlüssel. Enthält Base64-Zeichen und muss daher in einem Formular-Body URL-kodiert werden (+ → %2B, = → %3D). HTTP-Bibliotheken erledigen das automatisch. |
apiSecret | Geheimer Schlüssel. Nur serverseitig aufbewahren; niemals in einer Browser- oder Mobil-App ausliefern. |
hotelCode | Die HMS-ID des Hotels. Ist der Partner für das Hotel nicht berechtigt, wird hotel_permission_is_not_found zurückgegeben. |
hotelSeoUrl | Der SEO-Slug des Hotels. Wird nur von der HMS-eigenen Buchungsmaschine anstelle von hotelCode verwendet; Integrationen von Drittanbietern senden hotelCode. |
Bearer-Header#
Jeder Endpunkt außer der Anmeldung erwartet das Token im Authorization-Header:
GET /external/currencies HTTP/1.1
Host: test.hms.gen.tr
Authorization: Bearer eyJlbmREYXRlIjp7ImRhdGUiOiIyMDI2LTA5LTE1IDEwOjI0OjMxLjAwMDAwMCIs…Fehlt der Header, ist er fehlerhaft (ohne Bearer-Präfix) oder ist das Token unbekannt, antwortet die API mit 401:
{
"success": false,
"error": "Authentication required"
}Gültigkeitsdauer und Erneuerung des Tokens#
- Das Token ist 7 Tage gültig. Erneuern Sie es vor Ablauf durch eine erneute Anmeldung; die Anmeldung ist unaufwendig und kann für dasselbe Hotel beliebig wiederholt werden.
- Parsen Sie das Token nicht. Auch wenn es sich um eine Base64-kodierte Struktur handelt, ist das Format nicht garantiert; speichern und übergeben Sie es als opaken String.
- Melden Sie sich bei einem
401einmal neu an und wiederholen Sie die Anfrage; ein zweites401bedeutet, dass sich das Schlüsselpaar oder die Hotelberechtigung geändert hat.
Hotelkontext#
Ein Token ist an genau ein Hotel gebunden. Der Parameter hotelID der Endpunkte muss mit diesem Hotel übereinstimmen; Anfragen für ein anderes Hotel führen zu einem Berechtigungsfehler oder leeren Ergebnissen. Holen Sie bei Integrationen mit mehreren Hotels für jedes Hotel ein eigenes Token und speichern Sie es pro Hotel zwischen.
Anmeldefehler#
| message | Bedeutung |
|---|---|
partner_is_not_found | Das Paar aus apiKey und apiSecret stimmt nicht überein. Prüfen Sie die Schlüssel und die URL-Kodierung. |
hotel_is_not_found | Zu hotelSeoUrl wurde kein Hotel gefunden. |
hotel_permission_is_not_found | Der Partner ist für dieses Hotel nicht berechtigt oder die Berechtigung ist inaktiv. Wenden Sie sich an den HMS-Support. |
Diese Fehler kommen als HTTP 200 mit success: false und token: null zurück.