احراز هویت

دسترسی از طریق یک حساب شریک تجاری فراهم می‌شود که 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
پاسخ · 200
{
    "success": true,
    "hotelCode": "1000",
    "token": "eyJlbmREYXRlIjp7ImRhdGUiOiIyMDI2LTA5LTE1IDEwOjI0OjMxLjAwMDAwMCIs…",
    "hotelSeoUrl": "demo-otel"
}
فیلدتوضیح
apiKeyکلید شریک تجاری. شامل نویسه‌های base64 است، بنابراین در بدنه فرم باید URL-encode شود (+%2B، =%3D). کتابخانه‌های HTTP این کار را خودکار انجام می‌دهند.
apiSecretکلید محرمانه. آن را فقط سمت سرور نگه دارید و هرگز در کد مرورگر یا اپلیکیشن موبایل قرار ندهید.
hotelCodeشناسه هتل در HMS. اگر شریک تجاری برای این هتل مجوز نداشته باشد، hotel_permission_is_not_found برگردانده می‌شود.
hotelSeoUrlنامک SEO هتل. فقط موتور رزرو خود HMS به‌جای hotelCode از آن استفاده می‌کند؛ یکپارچه‌سازی‌های شخص ثالث hotelCode را ارسال می‌کنند.

هدر Bearer#

همه اندپوینت‌ها به‌جز لاگین، توکن را در هدر Authorization دریافت می‌کنند:

درخواست
GET /external/currencies HTTP/1.1
Host: test.hms.gen.tr
Authorization: Bearer eyJlbmREYXRlIjp7ImRhdGUiOiIyMDI2LTA5LTE1IDEwOjI0OjMxLjAwMDAwMCIs…

اگر هدر ارسال نشود، قالب نادرستی داشته باشد (بدون پیشوند Bearer) یا توکن ناشناخته باشد، API کد 401 برمی‌گرداند:

401 Unauthorized
{
    "success": false,
    "error": "Authentication required"
}

مدت اعتبار و تمدید توکن#

  • توکن 7 روز معتبر است. پیش از انقضا با لاگین دوباره آن را تمدید کنید؛ لاگین سبک است و می‌توان آن را برای همان هتل تکرار کرد.
  • توکن را تجزیه نکنید. اگرچه ساختاری کدگذاری‌شده با base64 دارد، قالب آن تضمین‌شده نیست؛ آن را به‌صورت یک رشته مبهم (opaque) ذخیره و ارسال کنید.
  • در صورت دریافت 401، یک بار دیگر لاگین کنید و درخواست را تکرار کنید؛ 401 دوم یعنی جفت کلید یا مجوز هتل تغییر کرده است.

وابستگی به هتل#

هر توکن به یک هتل وابسته است. پارامتر hotelID در اندپوینت‌ها باید با همان هتل یکسان باشد؛ درخواست برای هتل دیگر به خطای مجوز یا نتیجه خالی منجر می‌شود. در یکپارچه‌سازی‌های چندهتلی، برای هر هتل توکن جداگانه بگیرید و آن را به تفکیک هتل کش کنید.

خطاهای لاگین#

messageمعنا
partner_is_not_foundجفت apiKey / apiSecret مطابقت نداشت. کلیدها و URL-encoding آن‌ها را بررسی کنید.
hotel_is_not_foundهیچ هتلی با hotelSeoUrl مطابقت نداشت.
hotel_permission_is_not_foundشریک تجاری برای این هتل مجوز ندارد یا مجوز غیرفعال است. با پشتیبانی HMS تماس بگیرید.

این خطاها با HTTP 200 و همراه با success: false و token: null برمی‌گردند.

آخرین به‌روزرسانی: 21 سپتامبر 2026اشتباهی دیدید؟ به ما اطلاع دهید