Autentikasi
Akses diberikan melalui akun mitra yang ditetapkan oleh HMS. Akun mitra menerima apiKey dan apiSecret, dan HMS menentukan hotel mana saja yang boleh diakses. Endpoint login menukar kredensial ini dengan token yang terikat ke hotel.
Login dan 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"
}| Field | Deskripsi |
|---|---|
apiKey | Kunci mitra. Berisi karakter base64, sehingga harus di-URL-encode dalam body form (+ → %2B, = → %3D). Library HTTP melakukannya secara otomatis. |
apiSecret | Kunci rahasia. Simpan hanya di sisi server; jangan pernah menyertakannya di browser atau aplikasi seluler. |
hotelCode | ID HMS hotel. Jika mitra tidak memiliki otorisasi untuk hotel tersebut, hotel_permission_is_not_found dikembalikan. |
hotelSeoUrl | Slug SEO hotel. Digunakan sebagai pengganti hotelCode hanya oleh booking engine milik HMS sendiri; integrasi pihak ketiga mengirim hotelCode. |
Header Bearer#
Setiap endpoint selain login mengharapkan token di header Authorization:
GET /external/currencies HTTP/1.1
Host: test.hms.gen.tr
Authorization: Bearer eyJlbmREYXRlIjp7ImRhdGUiOiIyMDI2LTA5LTE1IDEwOjI0OjMxLjAwMDAwMCIs…Jika header tidak ada, formatnya salah (tanpa awalan Bearer), atau token tidak dikenal, API mengembalikan 401:
{
"success": false,
"error": "Authentication required"
}Masa berlaku dan pembaruan token#
- Token berlaku selama 7 hari. Perbarui dengan login ulang sebelum kedaluwarsa; login adalah operasi ringan dan dapat diulang untuk hotel yang sama.
- Jangan mengurai token. Meskipun berupa struktur yang di-encode dengan base64, formatnya tidak dijamin; simpan dan teruskan sebagai string opaque.
- Jika mendapat
401, login sekali lagi lalu ulangi permintaan;401kedua berarti pasangan kunci atau otorisasi hotel telah berubah.
Konteks hotel#
Setiap token terikat ke satu hotel. Parameter hotelID pada endpoint harus sama dengan hotel tersebut; permintaan untuk hotel lain menghasilkan error otorisasi atau hasil kosong. Untuk integrasi multi-hotel, dapatkan token terpisah untuk setiap hotel dan simpan di cache per hotel.
Error login#
| message | Arti |
|---|---|
partner_is_not_found | Pasangan apiKey / apiSecret tidak cocok. Periksa kunci dan URL encoding-nya. |
hotel_is_not_found | Tidak ada hotel yang cocok dengan hotelSeoUrl. |
hotel_permission_is_not_found | Mitra tidak memiliki otorisasi untuk hotel ini, atau otorisasinya tidak aktif. Hubungi dukungan HMS. |
Error ini dikembalikan sebagai HTTP 200 dengan success: false dan token: null.