اتصال به Travel API در پنج دقیقه
این صفحه شما را از صفر تا دریافت اولین پاسخ احرازهویتشده پیش میبرد. اتصال به Travel API با یک فراخوانی برای ساخت نشست شروع میشود و از آن به بعد، همهٔ درخواستها با شناسهٔ نشستی که برمیگردد ارسال میشوند.
همهٔ درخواستها به یک آدرس پایهٔ REST فرستاده میشوند. آدرس محیط عملیاتی https://api.simorghapi.com/api است. سندباکس (محیط تست) همان درخواستها را بدون خرجشدن پول واقعی اجرا میکند و آدرسش https://demo.simorghapi.com/api است. همهٔ مثالهای این صفحه روی محیط عملیاتی هستند.
پیش از شروع#
به سه چیز نیاز دارید که همگی همراه حساب کاربریتان صادر میشوند:
- شناسهٔ دفتر (Office Id)، مثلاً
OFC-4821. - یک نام کاربری برای همان دفتر.
- رمز عبور متناظر با آن.
رمز عبور را فقط سمت سرور نگه دارید. هرگز آن را داخل مرورگر یا اپلیکیشن موبایل قرار ندهید.
گام ۱: ساخت نشست#
اطلاعات ورود را به Authenticate/CreateSession بفرستید. در پاسخ یک SessionId میگیرید. همین شناسه همهٔ فراخوانیهای بعدی را احراز هویت میکند؛ پس آن را ذخیره کنید و دوباره به کار ببرید.
curl -X POST https://api.simorghapi.com/api/Authenticate/CreateSession \
-H "Content-Type: application/json" \
-d '{
"OfficeId": "OFC-4821",
"UserName": "jane.doe",
"Password": "your-password"
}'const res = await fetch("https://api.simorghapi.com/api/Authenticate/CreateSession", {
method: "POST",
headers: { "Content-Type": "application/json" },
body: JSON.stringify({
OfficeId: "OFC-4821",
UserName: "jane.doe",
Password: "your-password"
})
});
const data = await res.json();
const sessionId = data.SessionId;import requests
res = requests.post(
"https://api.simorghapi.com/api/Authenticate/CreateSession",
json={
"OfficeId": "OFC-4821",
"UserName": "jane.doe",
"Password": "your-password",
},
)
session_id = res.json()["SessionId"]پاسخ موفق چنین شکلی دارد:
{
"Success": true,
"SessionId": "8f3c81d2-4a5b-4c6d-9e0f-1a2b3c4d5e6f",
"Error": null
}اگر اطلاعات ورود اشتباه باشد، Success: false و یک شناسهٔ خطا مثل Err0101003 برمیگردد. فهرست کامل خطاها در صفحهٔ خطاها آمده است.
گام ۲: ارسال اولین درخواست احرازهویتشده#
حالا از نشست استفاده کنید. موجودی کیف پول را از Common/CreditBalance بخوانید. SessionId را در بدنهٔ JSON بگذارید؛ دقیقاً همانطور که برای پرواز، هتل و تفریحات هم این کار را میکنید.
curl -X POST https://api.simorghapi.com/api/Common/CreditBalance \
-H "Content-Type: application/json" \
-d '{ "SessionId": "8f3c81d2-4a5b-4c6d-9e0f-1a2b3c4d5e6f" }'const res = await fetch("https://api.simorghapi.com/api/Common/CreditBalance", {
method: "POST",
headers: { "Content-Type": "application/json" },
body: JSON.stringify({
SessionId: "8f3c81d2-4a5b-4c6d-9e0f-1a2b3c4d5e6f"
})
});
const balance = await res.json();import requests
res = requests.post(
"https://api.simorghapi.com/api/Common/CreditBalance",
json={"SessionId": "8f3c81d2-4a5b-4c6d-9e0f-1a2b3c4d5e6f"},
)
print(res.json())پاسخ، موجودی قابل خرج را گزارش میکند؛ مبالغ بلوکهشده از قبل از آن کسر شدهاند:
{
"Success": true,
"Balance": 4820.50,
"Currency": "USD",
"Error": null
}یک رفتوبرگشت کامل همین است: احراز هویت کردید و بعد با نشست، یک اندپوینت محافظتشده را فراخواندید.
Err0101001 برمیگرداند، یعنی نشست دیگر معتبر نیست. یک نشست جدید بسازید و درخواست را یک بار دیگر تکرار کنید.
قدم بعدی#
حالا الگویی را که همهٔ اندپوینتها از آن پیروی میکنند در دست دارید: یک بار احراز هویت کنید و بعد SessionId را همراه هر درخواست بفرستید. از اینجا محصولی را که روی آن کار میکنید انتخاب کنید.
- پرواز: جستوجوی نرخهای لحظهای، اعتبارسنجی مجدد، رزرو و صدور بلیت.
- هتل: جستوجوی ظرفیت، اعتبارسنجی نرخ و تأیید رزرو.
- تفریحات: مرور کاتالوگ، بررسی ظرفیت و رزرو.
راهنماهای نوار کناری هر کدام از این مسیرها را از ابتدا تا انتها توضیح میدهند. اگر تا تکمیل این صفحات به مرجع کامل قدیمی در یک صفحه نیاز دارید، مستندات قدیمی را ببینید.