مستندات

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

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

شروع سریع HAPI v3

HAPI v3 یک REST API تمیز و منبع‌محور برای پرواز، هتل و تفریحات است. یک بار با اعتبارنامهٔ کلاینت خود احراز هویت می‌کنید، یک توکن دسترسی از نوع Bearer می‌گیرید و آن را همراه هر درخواست می‌فرستید.

همهٔ اندپوینت‌ها زیر یک آدرس پایه قرار دارند:

https://api.simorghapi.com/v3/HAPI

هر دو محیط آدرس پایهٔ یکسانی دارند. اینکه درخواست شما به سندباکس می‌رود یا به موجودی واقعی، با اعتبارنامه‌ای که استفاده می‌کنید تعیین می‌شود، نه با آدرس سرور. اعتبارنامه‌های تست با cid_test_ و اعتبارنامه‌های عملیاتی با cid_live_ شروع می‌شوند.

۱. اعتبارنامه‌هایتان را بگیرید#

حساب شما یک کلاینت OAuth2 دارد:

مقدارنمونهتوضیح
client_idcid_test_9f3c81d24a5b4c6d9e0f1a2bشناسهٔ عمومی کلاینت شما.
client_secretsk_test_…کلید محرمانه. آن را فقط سمت سرور نگه دارید؛ فقط یک بار نمایش داده می‌شود.

۲. توکن دسترسی بگیرید#

با گرنت client-credentials، اعتبارنامه‌ها را با یک توکن Bearer کوتاه‌عمر عوض کنید.

POST/v3/HAPI/auth/tokens
curl -X POST https://api.simorghapi.com/v3/HAPI/auth/tokens \
  -H "Content-Type: application/json" \
  -d '{
    "grant_type": "client_credentials",
    "client_id": "cid_test_9f3c81d24a5b4c6d9e0f1a2b",
    "client_secret": "sk_test_your_secret"
  }'
const res = await fetch("https://api.simorghapi.com/v3/HAPI/auth/tokens", {
  method: "POST",
  headers: { "Content-Type": "application/json" },
  body: JSON.stringify({
    grant_type: "client_credentials",
    client_id: "cid_test_9f3c81d24a5b4c6d9e0f1a2b",
    client_secret: "sk_test_your_secret"
  })
});

const { access_token } = await res.json();
import requests

res = requests.post(
    "https://api.simorghapi.com/v3/HAPI/auth/tokens",
    json={
        "grant_type": "client_credentials",
        "client_id": "cid_test_9f3c81d24a5b4c6d9e0f1a2b",
        "client_secret": "sk_test_your_secret",
    },
)

access_token = res.json()["access_token"]

پاسخ شامل توکن و مدت اعتبار آن است:

{
  "access_token": "hat_test_OJ5zqfaOpqsd9NmDisioHBQr1A4UTu56…",
  "token_type": "Bearer",
  "expires_in": 3600,
  "expires_at": "2026-08-27T17:36:36+00:00",
  "scope": "flights:read flights:write hotels:read hotels:write activities:read activities:write wallet:read",
  "environment": "test"
}

۳. یک درخواست احرازشده بفرستید#

توکن را به‌صورت Bearer در هدر Authorization قرار دهید. همهٔ اندپوینت‌ها به‌جز اندپوینت دریافت توکن به آن نیاز دارند. در این مثال توکن را بررسی (introspect) می‌کنیم تا ببینیم به چه کسی تعلق دارد:

GET/v3/HAPI/auth/introspect
curl https://api.simorghapi.com/v3/HAPI/auth/introspect \
  -H "Authorization: Bearer $ACCESS_TOKEN"
{
  "active": true,
  "client_id": "cid_test_9f3c81d24a5b4c6d9e0f1a2b",
  "environment": "test",
  "office": { "id": "off_2", "name": "Your Office (sandbox)" },
  "scopes": ["flights:read", "flights:write", "wallet:read"],
  "token_type": "Bearer",
  "expires_at": "2026-08-27T17:36:36+00:00"
}
توکن‌ها کوتاه‌عمرند. هر توکن دسترسی یک ساعت اعتبار دارد. پس از انقضا، درخواست‌ها خطای 401 expired_token برمی‌گردانند؛ توکن تازه بگیرید و درخواست را دوباره بفرستید. به‌جای ساختن توکن برای هر درخواست، آن را کش کنید و تا نزدیک انقضا دوباره به کار ببرید.

قدم‌های بعدی#

حالا الگویی را که همهٔ اندپوینت‌ها از آن پیروی می‌کنند می‌شناسید: توکن بگیرید و آن را به‌صورت Bearer بفرستید. از اینجا:

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