مستندات

جست‌وجو در مستندات

نام اندپوینت، موضوع یا کلیدواژه را بنویسید

احراز هویت

HAPI v3 از گرنت client-credentials در OAuth2 استفاده می‌کند. یک client_id و client_secret را با یک توکن دسترسی Bearer کوتاه‌عمر عوض می‌کنید و سپس آن توکن را در همهٔ درخواست‌ها می‌فرستید.

هیچ کلید API بلندمدتی روی شبکه جابه‌جا نمی‌شود. توکن دسترسی تنها اعتبارنامه‌ای است که یک درخواست با خود دارد و پس از یک ساعت منقضی می‌شود؛ بنابراین اگر توکنی لو برود، مدت زیادی قابل سوءاستفاده نیست.

اعتبارنامه‌های شما#

مقدارنمونهتوضیح
client_idcid_live_… / cid_test_…شناسهٔ عمومی کلاینت. پیشوند آن محیط را مشخص می‌کند.
client_secretsk_live_… / sk_test_…کلید محرمانه. هرگز آن را از مرورگر یا اپ موبایل نفرستید؛ فقط روی سرور خودتان نگهش دارید.

دریافت توکن#

POST/v3/HAPI/auth/tokens

پارامترهای بدنه#

نامنوعالزامیتوضیح
grant_typestringالزامیباید client_credentials باشد.
client_idstringالزامیشناسهٔ کلاینت شما.
client_secretstringالزامیکلید محرمانهٔ کلاینت شما.
scopestringاختیاریاسکوپ‌های جداشده با فاصله برای محدودکردن توکن. پیش‌فرض: همهٔ اسکوپ‌هایی که کلاینت دارد.

اعتبارنامه‌ها را می‌توانید در بدنهٔ JSON بفرستید یا به‌صورت HTTP Basic auth (client_id به‌عنوان نام کاربری و client_secret به‌عنوان رمز عبور):

curl -X POST https://api.simorghapi.com/v3/HAPI/auth/tokens \
  -u "cid_live_…:sk_live_…" \
  -H "Content-Type: application/json" \
  -d '{ "grant_type": "client_credentials" }'

پاسخ#

{
  "access_token": "hat_live_…",
  "token_type": "Bearer",
  "expires_in": 3600,
  "expires_at": "2026-08-27T17:36:36+00:00",
  "scope": "flights:read flights:write wallet:read",
  "environment": "live"
}
فیلدتوضیح
access_tokenتوکن Bearer که باید در همهٔ درخواست‌ها بفرستید.
token_typeهمیشه Bearer.
expires_inتعداد ثانیه تا انقضای توکن (3600).
expires_atزمان دقیق انقضا، با قالب RFC 3339 و منطقهٔ زمانی UTC.
scopeاسکوپ‌های اعطاشده به این توکن، جداشده با فاصله.
environmenttest یا live، بر اساس اعتبارنامه.

استفاده از توکن#

توکن را در هدر Authorization بفرستید:

Authorization: Bearer hat_live_…

بررسی توکن (Introspect)#

ببینید یک توکن به کدام دفتر، کدام محیط و کدام اسکوپ‌ها نگاشت می‌شود.

GET/v3/HAPI/auth/introspect
{
  "active": true,
  "client_id": "cid_live_…",
  "environment": "live",
  "office": { "id": "off_2", "name": "Your Office" },
  "scopes": ["flights:read", "flights:write", "wallet:read"],
  "token_type": "Bearer",
  "expires_at": "2026-08-27T17:36:36+00:00"
}

اسکوپ‌ها#

هر توکن به مجموعه‌ای از اسکوپ‌ها محدود است. اندپوینت‌های خواندنی به اسکوپ :read محصول خودشان نیاز دارند و اندپوینت‌هایی که پول جابه‌جا می‌کنند یا رزرو می‌سازند به :write. درخواستی که اسکوپ لازم را نداشته باشد، خطای 403 insufficient_scope می‌گیرد.

اسکوپدسترسی
flights:readجست‌وجوی پرواز، خواندن پیشنهادها، خواندن سفارش‌ها.
flights:writeایجاد سفارش، صدور بلیت، لغو، استرداد.
hotels:read / hotels:writeهمین تقسیم‌بندی برای هتل.
activities:read / activities:writeهمین تقسیم‌بندی برای تفریحات.
wallet:readخواندن موجودی دفتر شما.

محیط‌ها#

اعتبارنامهٔ test روی یک کیف پول سندباکس کار می‌کند: جست‌وجوها واقعی‌اند، اما رزروها هرگز پول واقعی جابه‌جا نمی‌کنند. اعتبارنامهٔ live روی موجودی واقعی دفتر شما کار می‌کند. چون محیط بخشی از اعتبارنامه است، هرگز لازم نیست آدرس سرور را عوض کنید؛ فقط با کلاینت متناظر احراز هویت می‌کنید.

خطاهای احراز هویت#

وضعیتکدمعنا
400missing_credentialsclient_id / client_secret ارسال نشده است.
400unsupported_grant_typeمقدار grant_type برابر client_credentials نبود.
401invalid_clientشناسه یا کلید محرمانهٔ کلاینت اشتباه است.
401missing_authorizationدرخواست توکن Bearer ندارد.
401invalid_tokenتوکن ناشناخته است.
401expired_tokenتوکن منقضی شده است؛ توکن تازه بگیرید.
403insufficient_scopeتوکن اسکوپ موردنیاز اندپوینت را ندارد.

ساختار کامل پاسخ خطا را در مرجع خطاها ببینید.

ویرایش این صفحه در گیت‌هابمشکلی دیدید؟ از پنل ← پشتیبانی خبرمان کنید.