مستندات

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

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

API رزرو هتل

API رزرو هتل، ظرفیت زنده و نرخ اتاق‌ها را برای یک مقصد و بازهٔ تاریخ جست‌وجو می‌کند.

POST/v2/Hotel/HotelAvailability

دسترسی نیازمند مجوز hotel_availability

این اندپوینت دو حالت دارد. با ارسال CityId فهرست هتل‌های یک مکان را می‌گیرید و با ارسال HotelId یک هتل را باز می‌کنید و نرخ اتاق‌هایش را می‌بینید. دقیقاً یکی از این دو را بفرستید.

دو نسخه. مسیر v2 بالا، مسیر پیشنهادی است. مسیر v1 یعنی /Hotel/HotelAvailability همان فیلدهای اصلی را می‌گیرد و پاسخی با همین ساختار برمی‌گرداند. یکپارچه‌سازی‌های جدید باید از v2 استفاده کنند.

پارامترهای مسیر#

ندارد.

پارامترهای کوئری#

ندارد.

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

نامنوعالزامیپیش‌فرضتوضیح
SessionIdstringالزامی-شناسهٔ نشست شما.
CheckInstringالزامی-تاریخ ورود، با قالب YYYY-MM-DD.
CheckOutstringالزامی-تاریخ خروج، با قالب YYYY-MM-DD. باید بعد از CheckIn باشد.
CityIdintegerیکی از دو-مقدار external_id مکان از جست‌وجوی مکان. حالت شهر.
HotelIdintegerیکی از دو-یک هتل مشخص. حالت هتل. در این حالت CityId را null بفرستید.
Pageintegerاختیاری1شمارهٔ صفحه، از ۱ شروع می‌شود.
PageSizeintegerاختیاری-تعداد نتایج در هر صفحه، از ۱ تا ۲۰۰.
Sortstringاختیاری-کلید مرتب‌سازی، مثلاً price. مرتب‌سازی‌های موجود در Meta برگردانده می‌شوند.
Filtersobjectاختیاری-فیلترها به شکل { "key": [ids] } که با AND ترکیب می‌شوند. توضیح در ادامه.
Mapobjectاختیاری-محدودهٔ نمای نقشه، برای محدود کردن نتایج به یک ناحیه.
langstringاختیاری-زبان محتوا، مثلاً ar.
Occupancies array of object، الزامی

برای هر اتاق یک عضو. دست‌کم یک عضو لازم است.

نامنوعالزامیتوضیح
AdultCountintegerالزامیتعداد بزرگسالان اتاق، از ۱ تا ۸.
ChildCountintegerاختیاریتعداد کودکان اتاق، از ۰ تا ۶.
ChildAgesarray of integerاختیاریسن هر کودک در روز خروج، از ۰ تا ۱۷. برای هر کودک یک سن.

فیلترها#

فیلترها را به‌صورت آرایه‌ای از شناسه‌ها زیر کلیدهای نام‌دار بفرستید؛ مثلاً { "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 دارد.

فیلدنوعتوضیح
PricedItinerariesarray of objectهتل‌ها، یا در حالت هتل، نرخ اتاق‌ها. جزئیات در ادامه.
Metaobjectصفحه‌بندی، بازهٔ قیمت و مرتب‌سازی‌ها و فیلترهای موجود برای این جست‌وجو.
PricedItineraries[] object
فیلدنوعتوضیح
HotelIdintegerشناسهٔ هتل. آن را در حالت هتل باز کنید.
HotelNamestringنام هتل.
NetRatenumberنرخ کل اقامت، به دلار آمریکا.
Currencystringهمیشه USD.
NonRefundablebooleanآیا نرخ غیرقابل استرداد است.
FreeCancellationbooleanآیا لغو رایگان دارد.
MealPlanstringنوع پذیرایی (بُرد)، مثلاً فقط اتاق یا با صبحانه.
FareSourceCodestringدر حالت هتل، کدی که با آن نرخ را اعتبارسنجی و رزرو می‌کنید.
Hotelobjectمشخصات هتل: نام، درجه، موقعیت، تصاویر.
Roomobjectدر حالت هتل: نام، تخت‌ها، متراژ، توضیحات، امکانات و تصاویر اتاق.
FareSourceCode را نگه دارید. در حالت هتل، نرخ اتاقی که مسافر انتخاب می‌کند یک FareSourceCode دارد. اعتبارسنجی و رزرو با همین کد انجام می‌شود.

خطاها#

کدمعناراه‌حل
Err0201003دقیقاً یکی از CityId یا HotelId ارسال نشده است.یکی را بفرستید و دیگری را null بگذارید.
Err0106001یکی از فیلدهای تاریخ یا ترکیب اتاق ارسال نشده یا نامعتبر است.فیلدی را که در پیام خطا آمده اصلاح کنید.
ویرایش این صفحه در گیت‌هابمشکلی دیدید؟ از پنل ← پشتیبانی خبرمان کنید.