Kimlik doğrulama
Erişim, HMS tarafından tanımlanan iş ortağı (partner) hesabıyla sağlanır. İş ortağı hesabına apiKey ve apiSecret verilir ve hangi otellere erişebileceği HMS tarafında yetkilendirilir. Giriş uç noktası bu bilgiler karşılığında otele bağlı bir token döner.
Giriş ve 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"
}| Alan | Açıklama |
|---|---|
apiKey | İş ortağı anahtarı. Base64 karakterleri içerir; form gövdesinde URL kodlaması gerekir (+ → %2B, = → %3D). HTTP kütüphaneleri bunu kendiliğinden yapar. |
apiSecret | Gizli anahtar. Yalnızca sunucu tarafında saklayın; tarayıcıya veya mobil uygulamaya koymayın. |
hotelCode | Otelin HMS kimliği. İş ortağının bu otel için yetkisi yoksa hotel_permission_is_not_found döner. |
hotelSeoUrl | Otelin SEO adresi. Yalnızca HMS’nin kendi rezervasyon motoru için hotelCode yerine kullanılır; üçüncü taraf entegrasyonlar hotelCode gönderir. |
Bearer başlığı#
Giriş dışındaki tüm uç noktalar token’ı Authorization başlığında bekler:
GET /external/currencies HTTP/1.1
Host: test.hms.gen.tr
Authorization: Bearer eyJlbmREYXRlIjp7ImRhdGUiOiIyMDI2LTA5LTE1IDEwOjI0OjMxLjAwMDAwMCIs…Başlık yoksa, biçimi bozuksa (Bearer öneki eksik) ya da token tanınmıyorsa 401 döner:
{
"success": false,
"error": "Authentication required"
}Token süresi ve yenileme#
- Token 7 gün geçerlidir. Süre dolmadan yeniden giriş yaparak yenileyin; giriş isteği ucuzdur ve aynı otel için tekrar çağrılabilir.
- Token’ı ayrıştırmayın. İçeriği base64 kodlu bir yapı olsa da biçimi garanti edilmez; opak string olarak saklayın ve iletin.
401aldığınızda bir kez yeniden giriş yapıp isteği tekrarlayın; yine401ise anahtar çifti veya otel yetkisi değişmiştir.
Otel bağlamı#
Token tek bir otele bağlıdır. Uç noktalardaki hotelID parametresi bu otelle aynı olmalıdır; farklı otel için istek atmak yetki hatasına veya boş sonuca yol açar. Birden fazla oteli olan bir entegrasyonda her otel için ayrı token alın ve otel bazında saklayın.
Giriş hataları#
| message | Anlamı |
|---|---|
partner_is_not_found | apiKey / apiSecret çifti eşleşmedi. Anahtarları ve URL kodlamasını kontrol edin. |
hotel_is_not_found | hotelSeoUrl ile otel bulunamadı. |
hotel_permission_is_not_found | İş ortağının bu otel için yetkisi yok veya yetki pasif. HMS destek ile görüşün. |
Bu hatalar HTTP 200 ile, success: false ve token: null alanlarıyla döner.