Authenticatie
Toegang verloopt via een partneraccount dat HMS aanmaakt. Een partneraccount krijgt een apiKey en een apiSecret, en HMS bepaalt voor welke hotels het account geautoriseerd is. Het login-endpoint wisselt deze gegevens in voor een token dat aan één hotel gebonden is.
Login en 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"
}| Veld | Beschrijving |
|---|---|
apiKey | Partnersleutel. Bevat base64-tekens en moet daarom in een formulierbody URL-gecodeerd worden (+ → %2B, = → %3D). HTTP-bibliotheken doen dit voor je. |
apiSecret | Geheime sleutel. Bewaar deze alleen aan de serverkant; neem hem nooit op in een browser- of mobiele app. |
hotelCode | De HMS-ID van het hotel. Is de partner niet geautoriseerd voor het hotel, dan krijg je hotel_permission_is_not_found terug. |
hotelSeoUrl | De SEO-slug van het hotel. Wordt alleen door de eigen boekingsmodule van HMS gebruikt in plaats van hotelCode; integraties van derden sturen hotelCode. |
Bearer-header#
Elk endpoint behalve de login verwacht het token in de header Authorization:
GET /external/currencies HTTP/1.1
Host: test.hms.gen.tr
Authorization: Bearer eyJlbmREYXRlIjp7ImRhdGUiOiIyMDI2LTA5LTE1IDEwOjI0OjMxLjAwMDAwMCIs…Ontbreekt de header, klopt de opbouw niet (geen voorvoegsel Bearer) of is het token onbekend, dan geeft de API 401 terug:
{
"success": false,
"error": "Authentication required"
}Geldigheid en vernieuwing van het token#
- Het token is 7 dagen geldig. Vernieuw het door opnieuw in te loggen voordat het verloopt; inloggen is goedkoop en kan voor hetzelfde hotel herhaald worden.
- Ontleed het token niet. Het is weliswaar een base64-gecodeerde structuur, maar het formaat is niet gegarandeerd; bewaar het en stuur het door als ondoorzichtige string.
- Krijg je een
401, log dan nog één keer in en probeer het verzoek opnieuw; een tweede401betekent dat het sleutelpaar of de autorisatie voor het hotel is gewijzigd.
Hotelcontext#
Een token is gebonden aan één hotel. De parameter hotelID van de endpoints moet met dat hotel overeenkomen; vraag je een ander hotel op, dan krijg je een autorisatiefout of lege resultaten. Haal bij integraties voor meerdere hotels per hotel een apart token op en cache het per hotel.
Loginfouten#
| message | Betekenis |
|---|---|
partner_is_not_found | Het paar apiKey / apiSecret komt niet overeen. Controleer de sleutels en de URL-codering. |
hotel_is_not_found | Er is geen hotel gevonden voor hotelSeoUrl. |
hotel_permission_is_not_found | De partner is niet geautoriseerd voor dit hotel, of de autorisatie is inactief. Neem contact op met HMS-support. |
Deze fouten komen terug als HTTP 200 met success: false en token: null.