Autentifikasiya
Çıxış HMS tərəfindən yaradılan partnyor hesabı ilə verilir. Partnyor hesabı apiKey və apiSecret alır, hansı otellərə çıxışı olacağını isə HMS müəyyən edir. Giriş son nöqtəsi bu məlumatları otelə bağlı tokenlə dəyişir.
Giriş və 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"
}| Sahə | Təsvir |
|---|---|
apiKey | Partnyor açarı. Base64 simvolları ehtiva etdiyi üçün forma gövdəsində URL-kodlaşdırılmalıdır (+ → %2B, = → %3D). HTTP kitabxanaları bunu sizin əvəzinizə edir. |
apiSecret | Gizli açar. Yalnız server tərəfində saxlayın; heç vaxt brauzerə və ya mobil tətbiqə yerləşdirməyin. |
hotelCode | Otelin HMS ID-si. Partnyorun bu otel üçün səlahiyyəti yoxdursa, hotel_permission_is_not_found qaytarılır. |
hotelSeoUrl | Otelin SEO ünvanı (slug). hotelCode əvəzinə yalnız HMS-in öz rezervasiya mühərriki istifadə edir; üçüncü tərəf inteqrasiyaları hotelCode göndərir. |
Bearer başlığı#
Girişdən başqa bütün son nöqtələr tokeni Authorization başlığında gözləyir:
GET /external/currencies HTTP/1.1
Host: test.hms.gen.tr
Authorization: Bearer eyJlbmREYXRlIjp7ImRhdGUiOiIyMDI2LTA5LTE1IDEwOjI0OjMxLjAwMDAwMCIs…Başlıq yoxdursa, düzgün formatda deyilsə (Bearer prefiksi yoxdur) və ya token naməlumdursa, API 401 qaytarır:
{
"success": false,
"error": "Authentication required"
}Tokenin etibarlılıq müddəti və yenilənməsi#
- Token 7 gün etibarlıdır. Müddəti bitməzdən əvvəl yenidən daxil olaraq onu yeniləyin; giriş yüngül əməliyyatdır və eyni otel üçün təkrarlana bilər.
- Tokeni təhlil etməyin. Base64 ilə kodlaşdırılmış struktur olsa da, formatına zəmanət verilmir; onu qeyri-şəffaf sətir kimi saxlayın və ötürün.
401aldıqda bir dəfə yenidən daxil olun və sorğunu təkrarlayın; ikinci401açar cütünün və ya otel səlahiyyətinin dəyişdiyini bildirir.
Otel konteksti#
Token yalnız bir otelə bağlıdır. Son nöqtələrdəki hotelID parametri həmin otellə üst-üstə düşməlidir; başqa otel üçün sorğu səlahiyyət xətası və ya boş nəticə ilə qayıdır. Çox otelli inteqrasiyalarda hər otel üçün ayrıca token alın və onu otel üzrə keşləyin.
Giriş xətaları#
| message | Mənası |
|---|---|
partner_is_not_found | apiKey / apiSecret cütü uyğun gəlmədi. Açarları və URL-kodlaşdırmanı yoxlayın. |
hotel_is_not_found | hotelSeoUrl üzrə otel tapılmadı. |
hotel_permission_is_not_found | Partnyorun bu otel üçün səlahiyyəti yoxdur və ya səlahiyyət aktiv deyil. HMS dəstək xidmətinə müraciət edin. |
Bu xətalar HTTP 200 ilə, success: false və token: null dəyərləri ilə qayıdır.