Autentificare
Accesul se acordă printr-un cont de partener definit de HMS. Un cont de partener primește un apiKey și un apiSecret, iar HMS stabilește la ce hoteluri are acces. Endpointul de login schimbă aceste credențiale pe un token legat de hotel.
Login și 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"
}| Câmp | Descriere |
|---|---|
apiKey | Cheia de partener. Conține caractere base64, deci trebuie codificată URL într-un corp de formular (+ → %2B, = → %3D). Bibliotecile HTTP fac asta automat. |
apiSecret | Cheia secretă. Păstrați-o exclusiv pe server; nu o includeți niciodată într-o aplicație de browser sau de mobil. |
hotelCode | ID-ul HMS al hotelului. Dacă partenerul nu este autorizat pentru hotel, se returnează hotel_permission_is_not_found. |
hotelSeoUrl | Slugul SEO al hotelului. Folosit în locul lui hotelCode doar de motorul de rezervări propriu al HMS; integrările terțe trimit hotelCode. |
Antetul Bearer#
Toate endpointurile, cu excepția loginului, așteaptă tokenul în antetul Authorization:
GET /external/currencies HTTP/1.1
Host: test.hms.gen.tr
Authorization: Bearer eyJlbmREYXRlIjp7ImRhdGUiOiIyMDI2LTA5LTE1IDEwOjI0OjMxLjAwMDAwMCIs…Dacă antetul lipsește, este malformat (fără prefixul Bearer) sau tokenul este necunoscut, API-ul returnează 401:
{
"success": false,
"error": "Authentication required"
}Valabilitatea și reînnoirea tokenului#
- Tokenul este valabil 7 zile. Reînnoiți-l făcând din nou login înainte să expire; loginul este o operațiune ieftină și poate fi repetat pentru același hotel.
- Nu parsați tokenul. Deși este o structură codificată base64, formatul său nu este garantat; stocați-l și transmiteți-l ca șir opac.
- La un
401, faceți încă o dată login și reîncercați cererea; un al doilea401înseamnă că s-au schimbat perechea de chei sau autorizarea pentru hotel.
Contextul hotelului#
Un token este legat de un singur hotel. Parametrul hotelID al endpointurilor trebuie să corespundă acelui hotel; o cerere pentru alt hotel duce la o eroare de autorizare sau la rezultate goale. Pentru integrările cu mai multe hoteluri, obțineți câte un token separat pentru fiecare hotel și păstrați-l în cache per hotel.
Erori de login#
| message | Semnificație |
|---|---|
partner_is_not_found | Perechea apiKey / apiSecret nu corespunde. Verificați cheile și codificarea URL. |
hotel_is_not_found | Niciun hotel nu corespunde lui hotelSeoUrl. |
hotel_permission_is_not_found | Partenerul nu este autorizat pentru acest hotel sau autorizarea este inactivă. Contactați echipa de asistență HMS. |
Aceste erori vin cu HTTP 200, cu success: false și token: null.