API رزرو هتل
API رزرو هتل، ظرفیت زنده و نرخ اتاقها را برای یک مقصد و بازهٔ تاریخ جستوجو میکند.
دسترسی نیازمند مجوز hotel_availability
این اندپوینت دو حالت دارد. با ارسال CityId فهرست هتلهای یک مکان را میگیرید و با ارسال HotelId یک هتل را باز میکنید و نرخ اتاقهایش را میبینید. دقیقاً یکی از این دو را بفرستید.
/Hotel/HotelAvailability همان فیلدهای اصلی را میگیرد و پاسخی با همین ساختار برمیگرداند. یکپارچهسازیهای جدید باید از v2 استفاده کنند.
پارامترهای مسیر#
ندارد.
پارامترهای کوئری#
ندارد.
پارامترهای بدنه#
| نام | نوع | الزامی | پیشفرض | توضیح |
|---|---|---|---|---|
SessionId | string | الزامی | - | شناسهٔ نشست شما. |
CheckIn | string | الزامی | - | تاریخ ورود، با قالب YYYY-MM-DD. |
CheckOut | string | الزامی | - | تاریخ خروج، با قالب YYYY-MM-DD. باید بعد از CheckIn باشد. |
CityId | integer | یکی از دو | - | مقدار external_id مکان از جستوجوی مکان. حالت شهر. |
HotelId | integer | یکی از دو | - | یک هتل مشخص. حالت هتل. در این حالت CityId را null بفرستید. |
Page | integer | اختیاری | 1 | شمارهٔ صفحه، از ۱ شروع میشود. |
PageSize | integer | اختیاری | - | تعداد نتایج در هر صفحه، از ۱ تا ۲۰۰. |
Sort | string | اختیاری | - | کلید مرتبسازی، مثلاً price. مرتبسازیهای موجود در Meta برگردانده میشوند. |
Filters | object | اختیاری | - | فیلترها به شکل { "key": [ids] } که با AND ترکیب میشوند. توضیح در ادامه. |
Map | object | اختیاری | - | محدودهٔ نمای نقشه، برای محدود کردن نتایج به یک ناحیه. |
lang | string | اختیاری | - | زبان محتوا، مثلاً ar. |
فیلترها#
فیلترها را بهصورت آرایهای از شناسهها زیر کلیدهای نامدار بفرستید؛ مثلاً { "class": [4,5], "mealplan": ["breakfast_included"] }. شرطها با AND ترکیب میشوند. هر جستوجو مجموعهٔ کامل کلیدهای فیلتر و شناسههای قابل انتخاب هر کدام را، همراه با تعداد زندهٔ نتایج (count)، در Meta.AvailableFilters برمیگرداند. رابط فیلتر را برای نتایج فعلی از روی همین داده بسازید.
درخواست: فهرست هتلهای یک شهر#
curl -X POST https://api.simorghapi.com/api/v2/Hotel/HotelAvailability \
-H "Content-Type: application/json" \
-d '{
"SessionId": "8f3c81d2-4a5b-4c6d-9e0f-1a2b3c4d5e6f",
"CheckIn": "2026-10-15",
"CheckOut": "2026-10-16",
"CityId": 11111111456928,
"Occupancies": [ { "AdultCount": 2, "ChildCount": 0 } ],
"Filters": { "class": [4, 5], "mealplan": ["breakfast_included"] },
"Sort": "price",
"Page": 1
}'const res = await fetch("https://api.simorghapi.com/api/v2/Hotel/HotelAvailability", {
method: "POST",
headers: { "Content-Type": "application/json" },
body: JSON.stringify({
SessionId: "8f3c81d2-4a5b-4c6d-9e0f-1a2b3c4d5e6f",
CheckIn: "2026-10-15",
CheckOut: "2026-10-16",
CityId: 11111111456928,
Occupancies: [ { AdultCount: 2, ChildCount: 0 } ],
Filters: { class: [4, 5], mealplan: ["breakfast_included"] },
Sort: "price",
Page: 1
})
});
const data = await res.json();import requests
res = requests.post(
"https://api.simorghapi.com/api/v2/Hotel/HotelAvailability",
json={
"SessionId": "8f3c81d2-4a5b-4c6d-9e0f-1a2b3c4d5e6f",
"CheckIn": "2026-10-15",
"CheckOut": "2026-10-16",
"CityId": 11111111456928,
"Occupancies": [{"AdultCount": 2, "ChildCount": 0}],
"Filters": {"class": [4, 5], "mealplan": ["breakfast_included"]},
"Sort": "price",
"Page": 1,
},
)
data = res.json()درخواست: باز کردن یک هتل#
CityId را null بگذارید و HotelId را بفرستید. پاسخ بهجای فهرست هتلها، نرخ اتاقهای همان هتل را برمیگرداند.
POST /api/v2/Hotel/HotelAvailability
{
"SessionId": "8f3c81d2-4a5b-4c6d-9e0f-1a2b3c4d5e6f",
"CheckIn": "2026-10-15",
"CheckOut": "2026-10-16",
"CityId": null,
"HotelId": 7825691,
"Occupancies": [ { "AdultCount": 2 } ]
}پاسخ#
نتایج در PricedItineraries برمیگردند. در حالت شهر هر عضو یک هتل است و در حالت هتل هر عضو یک نرخ اتاق قابل رزرو است که FareSourceCode دارد.
| فیلد | نوع | توضیح |
|---|---|---|
PricedItineraries | array of object | هتلها، یا در حالت هتل، نرخ اتاقها. جزئیات در ادامه. |
Meta | object | صفحهبندی، بازهٔ قیمت و مرتبسازیها و فیلترهای موجود برای این جستوجو. |
FareSourceCode را نگه دارید.
در حالت هتل، نرخ اتاقی که مسافر انتخاب میکند یک FareSourceCode دارد. اعتبارسنجی و رزرو با همین کد انجام میشود.
خطاها#
| کد | معنا | راهحل |
|---|---|---|
Err0201003 | دقیقاً یکی از CityId یا HotelId ارسال نشده است. | یکی را بفرستید و دیگری را null بگذارید. |
Err0106001 | یکی از فیلدهای تاریخ یا ترکیب اتاق ارسال نشده یا نامعتبر است. | فیلدی را که در پیام خطا آمده اصلاح کنید. |