availability
متد GetCheckinAndCheckoutCompositions
کاربرد این متد برای زمانی است که شما می خواهید اطلاعات را در سیستم خود Cache کنید و سپس درخواست های availability را از Cache خود پاسخ دهید.
روش کار این متد بدین صورت می باشد که برای هر تاریخی که شما به عنوان CheckinDate به آن ارسال نمایید، تمام حالت های ممکن و قابل رزرو تاریخ Checkin و Checkout را تا 20 روز آینده محاسبه کرده و اطلاعات قیمت و تعداد اتاق موجود را برای هر ترکیب برگشت خواهد داد.
استفاده از این روش به جای متد SearchByCityAndDate پیچیدگی پیاده سازی بیشتری دارد ولی در صورتی که سایت شما تعداد زیادی کاربر داشته باشد، از نظر منابع و سرعت پاسخگویی به درخواست های availability کاربران، به شدت بهبود حاصل می گردد.
تامین کنندگان در سیستم رزرواسیون سپهر قابلیت تعریف کردن قوانینی را دارند که در نتیجه تعریف شدن آن قوانین، تاریخ ورود و خروج در موضوع availability اهمیت و حساسیت خاص خود را پیدا می کند . بدین معنی که علاوه بر بحث موجود بودن یا نبودن اتاق، تاریخ ورود و خروج هم بر اینکه آیا امکان رزرو اتاق وجود دارد یا خیر تاثیر می گذارد. به عنوان مثال ممکن است سیستم سپهر برای تاریخ ورود 5 شهریور و تاریخ خروج 8 شهریور به شما عدم موجودی جواب دهد ولی برای تاریخ ورود 5 شهریور و تاریخ خروج 9 شهریور به شما تایید رزرو را بدهد.
با توجه به اینکه تجربه نشان داده است تغییرات ظرفیت و نرخ روی تاریخ های نزدیک (مثلا سه روز آینده) خیلی بیشتر از تغییرات روی تاریخ های دورتر می باشد، بهینه ترین حالت این است که شما تاریخ های نزدیک را زود به زودتر از تاریخ های دورتر دریافت و به روزرسانی نمایید.
این متد فقط هتل ها یا انواع اتاقی را خروجی میدهد که در سیستم سپهر صحت قراداد تامین کننده با هتل مورد بررسی قرار گرفته باشد. بنابراین ممکن است خروجی این متد با هتل هایی که سایت تامین کننده مشاهده می گردد یکسان نباشد.
API Endpoint
POST https://{SupplierWebsiteUrl}/api/Partners/Hotel/Availability/V4/GetCheckinAndCheckoutCompositions
Request Parameters
Usernamestring
required
نام کاربری
در صورتی که شما یک موتور جستجو هستید و قصد فروش نداشته و فقط می خواهید اطلاعات هتل های عمومی را بدست آورید، نام کاربری را public ارسال نمایید.
Passwordstring
required
رمز عبور به صورت MD5 شده
CheckinDatestring
required
تاریخ ورود
با فرمت yyyy-MM-dd و به صورت میلادی
Sample Request
{
"Username": "testdev1",
"Password": "25f9e794323b453885f5181f1b624d0b",
"CheckinDate": "2026-05-22"
}
Response Parameters
CurrencyCodestring
این فیلد مشخص می کند که نرخ های برگشتی بر اساس چه ارزی می باشد.
مقدار آن بستگی به این دارد که ارز کاربر شما در سایت تامین کننده چه چیزی تعیین شده باشد. مثلا اگر کاربر شما به صورت ریالی باشد مقدار آن IRR و اگر دلاری باشد مقدار آن USD خواهد بود.
HotelListComplex type
لیست هتل های قابل رزرو
HotelList.SepehrGlobalIdnumber
شناسه منحصر به فرد مربوط به این هتل در تمام سایت های سپهری
HotelList.Namestring
نام هتل
HotelList.DateRangeListComplex type
ترکیب حالت تاریخ ورود و خروج های مختلف
HotelList.DateRangeList.CheckinDatestring
تاریخ ورود به صورت میلادی و با فرمت yyyy-MM-dd
HotelList.DateRangeList.CheckoutDatestring
تاریخ خروج به صورت میلادی و با فرمت yyyy-MM-dd
HotelList.DateRangeList.RoomTypeListComplex type
لیست انواع اتاق موجود روی این هتل
HotelList.DateRangeList.RoomTypeList.SepehrGlobalIdnumber
شناسه منحصر به فرد مربوط به این نوع اتاق در تمام سایت های سپهری
HotelList.DateRangeList.RoomTypeList.Namestring
عنوان نوع اتاق
HotelList.DateRangeList.RoomTypeList.AdultCapacitynumber
تعداد گنجایش بزرگسال
HotelList.DateRangeList.RoomTypeList.ChildCapacitynumber
تعداد گنجایش کودک که بدون تخت و به صورت رایگان در این نوع اتاق پذیرش می گردد.
در صورتی که تعداد کودک رایگان درخواستی شما بیشتر از گنجایش کودک رایگان اتاق باشد، سیستم تفاوت تعداد کودک درخواستی شما با تعداد گنجایش کودک اتاق را به عنوان بزرگسال در نظر خواهد گرفت. در این حالت اگر اتاق گنجایش اضافه بابت بزرگسال داشته باشد، بدون مشکلی می توان رزرو را صادر کرد. اما اگر تعداد گنجایش بزرگسال اتاق هم جوابگوی تعداد میهمان درخواستی نباشد، رزرو با استفاده از تخت اضافه قابل انجام است. البته با این شرط که اتاق ظرفیت تخت اضافه داشته باشد (رجوع به فیلد ExtrabedCapacity) جهت استفاده از تخت اضافه کافی است که مبلغ آن را در زمان فراخوانی متدهای Lock و Book به فیلد TotalPayable اضافه کرد.
مثال: یک نوع اتاق دارای AdultCapacity با مقدار 2 و ChildCapacity با مقدار 1 و ChildAge با مقدار 5 می باشد
- در صورتی که رزرو شما دارای دو بزرگسال و یک کودک زیر 5 سال باشد، آنگاه بدون نیاز به تخت اضافه می توان اقدام به رزرو نمود.
- در صورتی که رزرو شما دارای یک بزرگسال و دو کودک زیر 5 سال باشد، آنگاه بدون نیاز به تخت اضافه می توان اقدام به رزرو نمود.
- در صورتی که رزرو شما دارای دو بزرگسال و دو کودک زیر 5 سال باشد، انگاه باید مبلغ یک تخته اضافه را به مبلغ رزرو اضافه نمود.
HotelList.DateRangeList.RoomTypeList.ChildAgenumber
سن قابل قبول برای پذیرش یک میهمان به عنوان کودک.
بنابراین
- در صورتی که سن کودک بیش از مقدار این فیلد باشد
- و همچنین رزرو اتاق نیاز به تخت اضافه داشته باشد. (زمانی رزرو اتاق نیاز به استفاده از تخت اضافه دارد که از تمام ظرفیت AdultCapacity استفاده شده باشد و جایی برای مسافران باقی مانده روی AdultCapacity نباشد.)
- آنگاه باید در زمان فراخوانی متدهای Lock و Book، با اضافه کردن نرخ تخت اضافه به مجموع فیلد TotalPayable، درخواست تخت اضافه نمود.
مثال: یک نوع اتاق دارای AdultCapacity با مقدار 2 و ChildCapacity با مقدار 1 و ChildAge با مقدار 5 می باشد.
- در صورتی که رزرو شما دارای دو بزرگسال و یک کودک چهار ساله باشد، انگاه بدون نیاز به تخت اضافه می توان اقدام به رزرو نمود.
- در صورتی که رزرو شما دارای دو بزرگسال و یک کودک شش ساله باشد، انگاه باید یک تخت اضافه به رزرو اضافه نمود.
- در صورتی که رزرو شما دارای دو بزرگسال و یک کودک شش ساله و یک کودک چهار ساله باشد، باید تنها یک عدد تخت اضافه به رزرو اضافه نمود.
- در صورتی که رزرو شما دارای یک بزرگسال و یک کودک شش ساله باشد، آنگاه بدون نیاز به تخت اضافه می توان اقدام به رزرو نمود.
HotelList.DateRangeList.RoomTypeList.AvailableRoomCountnumber
تعداد اتاق موجود
در صورتی 4 باب اتاق یا بیشتر موجود باشد، ماکزیمم عدد 4 خروجی داده می شود.
HotelList.DateRangeList.RoomTypeList.BoardTypeListcomplex type
لیست انواع بورد که روی یک نوع اتاق قابل رزرو گرفتن می باشد
HotelList.DateRangeList.RoomTypeList.BoardTypeList.Codestring
کد نوع بورد که یکی از موارد زیر می باشد:
RO
مخفف Room Only و به معنی اسکان تک و بدون هیچ وعده غذایی می باشد.
SC
مخفف Self Catering می باشد و بیشتر در هتل آپارتمان ها تعریف می شود.
BB
مخفف Bed & Breakfast و به معنی اقامت با صبحانه می باشد
HB
مخفف Half Board و به معنی اقامت به همراه صبحانه و ناهار می باشد.
BD
به معنی اقامت به همراه صبحانه و شام می باشد.
BS
به معنی اقامت به همراه صبحانه و یک وعده غذایی دیگر به انتخاب مسافر (یا ناهار یا شام) می باشد.
FC
به معنی Full Board و اقامت به همراه صبحانه و ناهار و شام به صورت منوی بسته می باشد.
FB
به معنی Full Board و اقامت به همراه صبحانه و ناهار و شام به صورت منوی انتخابی می باشد.
FF
به معنی Full Board و اقامت به همراه صبحانه و ناهار و شام به صورت منوی بوفه می باشد.
AI
مخفف All Inclusive و از نظر ارائه میان وعده های غذایی بالاتر از FB می باشد.
UA
مخفف Ultra All Inclusive می باشد
HotelList.DateRangeList.RoomTypeList.BoardTypeList.ExtrabedCapacitynumber
تعداد گنجایش تخت اضافه این نوع اتاق در این بازه تاریخی
در صورتی که تعداد مسافر بزرگسال بیش از ظرفیت AdultCapacity باشد، می توان با انتخاب تخت اضافه مسافران بیشتری را در اتاق اسکان داد.
HotelList.DateRangeList.RoomTypeList.BoardTypeList.RateDetailListComplex type
جزییات نرخ بر اساس هر شب
HotelList.DateRangeList.RoomTypeList.BoardTypeList.RateDetailList.Datestring
تاریخ نرخ به صورت میلادی و با فرمت yyyy-MM-dd
HotelList.DateRangeList.RoomTypeList.BoardTypeList.RateDetailList.Room_BoardPrice_TaxIncludednumber
نرخ بورد این نوع اتاق برای یک شب (بدون کسر کمیسیون و با احتساب مالیات)
مقدار این فیلد جهت نمایش در سایت شما به مسافر کاربرد دارد. به این صورت که می توانید مقدار این فیلد را به عنوان مبلغ اولیه (قبل از اعمال شدن تخفیف) به مسافر نمایش دهید
HotelList.DateRangeList.RoomTypeList.BoardTypeList.RateDetailList.Room_NetPrice_TaxExcludednumber
نرخ نهایی این نوع اتاق برای یک شب (بعد از کسر کمیسیون و بدون احتساب مالیات)
مقدار این فیلد جهت بخش مالی مجموعه شما کاربرد دارد. به این صورت که می توانید مقدار این فیلد را به عنوان خالص خرید در سیستم معاملات فصلی ثبت نمایید
HotelList.DateRangeList.RoomTypeList.BoardTypeList.RateDetailList.Room_NetPrice_TaxIncludednumber
نرخ نهایی این نوع اتاق برای یک شب (بعد از کسر کمیسیون و با احتساب مالیات)
مقدار این فیلد جهت نمایش در سایت شما به مسافر کاربرد دارد. به این صورت که می توانید مقدار این فیلد را به عنوان مبلغ نهایی (بعد از اعمال شدن تخفیف) به مسافر نمایش دهید
همچنین از مقدار این فیلد در زمان فراخوانی متدهای Lock و Book استفاده می شود. متدهای ذکر شده پارامتری به عنوان TotalPayable دریافت می کنند که مقدار آن از این فیلد بدست می آید.
HotelList.DateRangeList.RoomTypeList.BoardTypeList.RateDetailList.Extrabed_BoardPrice_TaxIncludednumber
نرخ بورد یک عدد تخت اضافه برای یک شب (بدون کسر کمیسیون و با احتساب مالیات)
مقدار این فیلد جهت نمایش در سایت شما به مسافر کاربرد دارد. به این صورت که می توانید مقدار این فیلد را به عنوان مبلغ اولیه (قبل از اعمال شدن تخفیف) به مسافر نمایش دهید
برای بدست آوردن مجموع، باید مقدار این فیلد را ضربدر تعداد تخت اضافه مورد نیاز نمایید
HotelList.DateRangeList.RoomTypeList.BoardTypeList.RateDetailList.Extrabed_NetPrice_TaxExcludednumber
نرخ یک عدد تخت اضافه برای یک شب (بعد از کسر کمیسیون و بدون احتساب مالیات)
مقدار این فیلد جهت بخش مالی مجموعه شما کاربرد دارد. به این صورت که می توانید مقدار این فیلد را به عنوان خالص خرید در سیستم معاملات فصلی ثبت نمایید
برای بدست آوردن مجموع، باید مقدار این فیلد را ضربدر تعداد تخت اضافه مورد نیاز نمایید
HotelList.DateRangeList.RoomTypeList.BoardTypeList.RateDetailList.Extrabed_NetPrice_TaxIncludednumber
نرخ نهایی یک عدد تخت اضافه برای یک شب (بعد از کسر کمیسیون و با احتساب مالیات)
مقدار این فیلد جهت نمایش در سایت شما به مسافر کاربرد دارد. به این صورت که می توانید مقدار این فیلد را به عنوان مبلغ نهایی (بعد از اعمال شدن تخفیف) به مسافر نمایش دهید
برای بدست آوردن مجموع، باید مقدار این فیلد را ضربدر تعداد تخت اضافه مورد نیاز نمایید
در صورت تمایل به رزرو تخت اضافه، می بایست در زمان فراخوانی متدهای Lock و Book، مقدار این فیلد را به مقدار پارامتر TotalPayable اضافه نموده و درخواست خود را ارسال نمایید.
HotelList.AmenityListComplex type
لیست خدمات ارائه شده روی این هتل
HotelList.AmenityList.SepehrGlobalIdnumber
شناسه منحصر به فرد مربوط به این خدمت در تمام سایت های سپهری
HotelList.AmenityList.Namestring
عنوان خدمت
HotelList.AmenityList.RateDetailListcomplex type
جزییات نرخ بر اساس هر شب
HotelList.AmenityList.RateDetailList.Datestring
تاریخ نرخ به صورت میلادی و با فرمت yyyy-MM-dd
HotelList.AmenityList.RateDetailList.GuestAgeRangeStartnumber
حداقل سن میهمان (بر حسب سال) که این خدمت برای آن قابل ارائه است.
HotelList.AmenityList.RateDetailList.GuestAgeRangeEndnumber
حداکثر سن میهمان (بر حسب سال) که این خدمت برای آن قابل ارائه است.
HotelList.AmenityList.RateDetailList.BoardPrice_TaxIncludeddecimal
نرخ بورد یک عدد از این خدمت برای یک شب (بدون کسر کمیسیون و با احتساب مالیات)
مقدار این فیلد جهت نمایش در سایت شما به مسافر کاربرد دارد. به این صورت که می توانید مقدار این فیلد را به عنوان مبلغ اولیه (قبل از اعمال شدن تخفیف) به مسافر نمایش دهید
HotelList.AmenityList.RateDetailList.NetPrice_TaxExcludeddecimal
نرخ نهایی یک عدد خدمت برای یک شب (بعد از کسر کمیسیون و بدون احتساب مالیات)
مقدار این فیلد جهت بخش مالی مجموعه شما کاربرد دارد. به این صورت که می توانید مقدار این فیلد را به عنوان خالص خرید در سیستم معاملات فصلی ثبت نمایید
HotelList.AmenityList.RateDetailList.NetPrice_TaxIncludeddecimal
نرخ نهایی یک عدد خدمت برای یک شب (بعد از کسر کمیسیون و با احتساب مالیات)
مقدار این فیلد جهت نمایش در سایت شما به مسافر کاربرد دارد. به این صورت که می توانید مقدار این فیلد را به عنوان مبلغ نهایی (بعد از اعمال شدن تخفیف) به مسافر نمایش دهید
برای بدست آوردن مجموع، باید مقدار این فیلد را ضربدر تعداد میهمان هایی که سن آنها در بازه GuestAgeRangeStart و GuestAgeRangeEnd قرار میگیرد نمایید. همچنین این مجموع را باید به ازای هر آیتم که در لیست RateDetailList دارید (یعنی برای هر شب یا همان Date) اینکار را انجام دهید و مجموعه همه آیتم ها را با هم مجددا جمع نمایید.
همچنین از مقدار این فیلد در زمان فراخوانی متدهای Lock و Book استفاده می شود. متدهای ذکر شده پارامتری به عنوان TotalPayable دریافت می کنند که مقدار آن از این فیلد بدست می آید.
Sample Response
{
"HotelList": [{
"SepehrGlobalId": 102,
"Name": "هتل صحرا تستي",
"DateRangeList": [{
"CheckinDate": "2026-05-22",
"CheckoutDate": "2026-05-23",
"RoomTypeList": [{
"SepehrGlobalId": 5009,
"Name": "دو تخته",
"AdultCapacity": 2,
"ChildCapacity": 1,
"ChildAge": 5,
"AvailableRoomCount": 4,
"BoardTypeList": [{
"Code": "BB",
"ExtrabedCapacity": 0,
"RateDetailList": [{
"Date": "2026-05-22",
"Room_BoardPrice_TaxIncluded": 3000000.0,
"Room_NetPrice_TaxExcluded": 3000000.00,
"Room_NetPrice_TaxIncluded": 3000000.0,
"Extrabed_BoardPrice_TaxIncluded": 0.0,
"Extrabed_NetPrice_TaxExcluded": 0.00,
"Extrabed_NetPrice_TaxIncluded": 0.0
}
]
}
]
}
],
"AmenityList": []
}, {
"CheckinDate": "2026-05-22",
"CheckoutDate": "2026-05-24",
"RoomTypeList": [{
"SepehrGlobalId": 5009,
"Name": "دو تخته",
"AdultCapacity": 2,
"ChildCapacity": 1,
"ChildAge": 5,
"AvailableRoomCount": 4,
"BoardTypeList": [{
"Code": "BB",
"ExtrabedCapacity": 0,
"RateDetailList": [{
"Date": "2026-05-22",
"Room_BoardPrice_TaxIncluded": 3000000.0,
"Room_NetPrice_TaxExcluded": 3000000.00,
"Room_NetPrice_TaxIncluded": 3000000.0,
"Extrabed_BoardPrice_TaxIncluded": 0.0,
"Extrabed_NetPrice_TaxExcluded": 0.00,
"Extrabed_NetPrice_TaxIncluded": 0.0
}, {
"Date": "2026-05-23",
"Room_BoardPrice_TaxIncluded": 3000000.0,
"Room_NetPrice_TaxExcluded": 3000000.00,
"Room_NetPrice_TaxIncluded": 3000000.0,
"Extrabed_BoardPrice_TaxIncluded": 0.0,
"Extrabed_NetPrice_TaxExcluded": 0.00,
"Extrabed_NetPrice_TaxIncluded": 0.0
}
]
}
]
}
],
"AmenityList": []
}
// ... بیشتر ترکیبات تاریخ Checkin/Checkout تا 20 روز آینده
],
"AmenityList": []
}
]
}