ავთენტიფიკაცია
წვდომა ხორციელდება HMS-ის მიერ განსაზღვრული პარტნიორის ანგარიშით. პარტნიორის ანგარიში იღებს apiKey და apiSecret მნიშვნელობებს, ხოლო HMS განსაზღვრავს, რომელ სასტუმროებზე აქვს მას წვდომის უფლება. შესვლის ენდპოინტი ამ მონაცემების სანაცვლოდ გასცემს სასტუმროზე მიბმულ ტოკენს.
შესვლა და ტოკენი#
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"
}| ველი | აღწერა |
|---|---|
apiKey | პარტნიორის გასაღები. შეიცავს base64 სიმბოლოებს, ამიტომ ფორმის ტანში URL-კოდირებული უნდა იყოს (+ → %2B, = → %3D). HTTP ბიბლიოთეკები ამას ავტომატურად აკეთებს. |
apiSecret | საიდუმლო გასაღები. შეინახეთ მხოლოდ სერვერის მხარეს; არასოდეს ჩასვათ იგი ბრაუზერის ან მობილური აპლიკაციის კოდში. |
hotelCode | სასტუმროს HMS ID. თუ პარტნიორს ამ სასტუმროზე წვდომის უფლება არ აქვს, ბრუნდება hotel_permission_is_not_found. |
hotelSeoUrl | სასტუმროს SEO მისამართი. hotelCode ველის ნაცვლად მას მხოლოდ HMS-ის საკუთარი დაჯავშნის სისტემა იყენებს; მესამე მხარის ინტეგრაციები აგზავნის hotelCode. |
Bearer სათაური#
შესვლის გარდა ყველა ენდპოინტი ტოკენს Authorization სათაურში ელოდება:
GET /external/currencies HTTP/1.1
Host: test.hms.gen.tr
Authorization: Bearer eyJlbmREYXRlIjp7ImRhdGUiOiIyMDI2LTA5LTE1IDEwOjI0OjMxLjAwMDAwMCIs…თუ სათაური აკლია, არასწორი ფორმატისაა (Bearer პრეფიქსის გარეშე) ან ტოკენი უცნობია, API აბრუნებს 401 სტატუსს:
{
"success": false,
"error": "Authentication required"
}ტოკენის მოქმედების ვადა და განახლება#
- ტოკენი 7 დღე მოქმედებს. განაახლეთ იგი ვადის გასვლამდე ხელახლა შესვლით; შესვლა იაფი ოპერაციაა და ერთი და იმავე სასტუმროსთვის შეგიძლიათ გაიმეოროთ.
- ნუ ეცდებით ტოკენის გარჩევას. მიუხედავად იმისა, რომ ის base64-ით კოდირებული სტრუქტურაა, მისი ფორმატი გარანტირებული არ არის; შეინახეთ და გადაეცით იგი როგორც გაუმჭვირვალე სტრიქონი.
- თუ
401მიიღეთ, კიდევ ერთხელ შედით და გაიმეორეთ მოთხოვნა; მეორე401ნიშნავს, რომ გასაღებების წყვილი ან სასტუმროზე წვდომის უფლება შეიცვალა.
სასტუმროს კონტექსტი#
ტოკენი ერთ სასტუმროზეა მიბმული. ენდპოინტების hotelID პარამეტრი ამ სასტუმროს უნდა ემთხვეოდეს; სხვა სასტუმროს მოთხოვნა წვდომის შეცდომას ან ცარიელ შედეგს დააბრუნებს. რამდენიმე სასტუმროს ინტეგრაციისას ყოველი სასტუმროსთვის ცალკე ტოკენი მიიღეთ და ქეშში სასტუმროების მიხედვით შეინახეთ.
შესვლის შეცდომები#
| message | მნიშვნელობა |
|---|---|
partner_is_not_found | გასაღებების წყვილი apiKey / apiSecret არ ემთხვევა. შეამოწმეთ გასაღებები და URL-კოდირება. |
hotel_is_not_found | hotelSeoUrl მნიშვნელობით სასტუმრო ვერ მოიძებნა. |
hotel_permission_is_not_found | პარტნიორს ამ სასტუმროზე წვდომის უფლება არ აქვს ან უფლება არააქტიურია. მიმართეთ HMS-ის მხარდაჭერას. |
ეს შეცდომები ბრუნდება HTTP 200 სტატუსით, success: false და token: null მნიშვნელობებით.