availability
متد GetByFromDateAndToDate
کاربرد این متد برای زمانی است که شما می خواهید اطلاعات را در سیستم خود Cache کنید و سپس درخواست های availability را از Cache خود پاسخ دهید.
این متد به تفکیق هر شب تعداد اتاق موجود و قیمت و قوانین را خروجی می دهد.
به دلایلی که در ادامه شرح داده خواهد شد، اطلاعاتی که توسط این متد خروجی داده می شود همیشه درست نیست و فقط در مواردی که نیاز شما بدست آوردن یک دید کلی از نرخ و موجودی هتل با پذیرش مقداری انحراف در تعداد اتاق های موجود می باشد می توان از این متد استفاده کرد. بنابراین اکیدا پیشنهاد می گردد اگر ساختار نرم افزار شما اجازه می دهد به جای این متد از متد GetCheckinAndCheckoutCompositions استفاده نمایید.
تامین کنندگان در سیستم رزرواسیون سپهر قابلیت تعریف کردن قوانینی را دارند که در نتیجه تعریف شدن آن قوانین، تاریخ ورود و خروج در موضوع availability اهمیت و حساسیت خاص خود را پیدا می کند. بدین معنی که علاوه بر بحث موجود بودن یا نبودن اتاق، تاریخ ورود و خروج هم بر اینکه آیا امکان رزرو اتاق وجود دارد یا خیر تاثیر می گذارد. به عنوان مثال ممکن است سیستم سپهر برای تاریخ ورود 5 شهریور و تاریخ خروج 8 شهریور به شما عدم موجودی جواب دهد ولی برای تاریخ ورود 5 شهریور و تاریخ خروج 9 شهریور به شما تایید رزرو را بدهد. در صورتی که این متد بدون در نظر گرفتن قوانین، تعداد اتاق موجود در هر شب را خروجی میدهد.
همچنین سیستم رزرواسیون سپهر در زمان رزرو به شماره اتاق حساس می باشد، بدین معنی که فرض کنیم در تاریخ امشب اتاق 201 و برای تاریخ فردا شب اتاق 202 موجود باشد. در صورتی که شما درخواست رزرو تاریخ ورود امروز و خروج پس فردا را انتخاب نمایید، سیستم رزرواسیون سپهر اجازه رزرو به شما نمی دهد. فقط زمانی اجازه رزرو داده می شود که یا اتاق 201 برای کل بازه تاریخی درخواستی شما موجود باشد یا اتاق 202 برای کل آن بازه تاریخی موجود باشد. در صورتی که این متد (یعنی GetByFromDateAndToDate) این منطق را نقض می کند و در زمان خروجی دادن تعداد اتاق های موجود، بررسی میکند که در هر شب چند عدد اتاق موجود هست و به شما آن عدد را خروجی میدهد.
API Endpoint
POST https://{SupplierWebsiteUrl}/api/Partners/Hotel/Availability/V4/GetByFromDateAndToDate
Request Parameters
Usernamestring
required
نام کاربری
در صورتی که شما یک موتور جستجو هستید و قصد فروش نداشته و فقط می خواهید اطلاعات هتل های عمومی را بدست آورید، نام کاربری را public ارسال نمایید.
Passwordstring
required
رمز عبور به صورت MD5 شده
FromDatestring
required
تاریخ شروع
با فرمت yyyy-MM-dd و به صورت میلادی
ToDatestring
required
تاریخ پایان
با فرمت yyyy-MM-dd و به صورت میلادی
Sample Request
{
"Username": "testdev1",
"Password": "25f9e794323b453885f5181f1b624d0b",
"FromDate": "2026-05-22",
"ToDate": "2026-05-25"
}
Response Parameters
CurrencyCodestring
این فیلد مشخص می کند که نرخ های برگشتی بر اساس چه ارزی می باشد.
مقدار آن بستگی به این دارد که ارز کاربر شما در سایت تامین کننده چه چیزی تعیین شده باشد. مثلا اگر کاربر شما به صورت ریالی باشد مقدار آن IRR و اگر دلاری باشد مقدار آن USD خواهد بود.
HotelListComplex type
لیست هتل های قابل رزرو
HotelList.SepehrGlobalIdnumber
شناسه منحصر به فرد مربوط به این هتل در تمام سایت های سپهری
HotelList.Namestring
نام هتل
HotelList.StayDateListComplex type
لیست تاریخ های ورود
HotelList.StayDateList.Datestring
تاریخ اقامت به صورت میلادی و با فرمت yyyy-MM-dd
HotelList.StayDateList.RoomTypeListComplex type
لیست انواع اتاق موجود روی این هتل
HotelList.StayDateList.RoomTypeList.SepehrGlobalIdnumber
شناسه منحصر به فرد مربوط به این نوع اتاق در تمام سایت های سپهری
HotelList.StayDateList.RoomTypeList.Namestring
عنوان نوع اتاق
HotelList.StayDateList.RoomTypeList.AdultCapacitynumber
تعداد گنجایش بزرگسال
HotelList.StayDateList.RoomTypeList.ChildCapacitynumber
تعداد گنجایش کودک که بدون تخت و به صورت رایگان در این نوع اتاق پذیرش می گردد.
در صورتی که تعداد کودک رایگان درخواستی شما بیشتر از گنجایش کودک رایگان اتاق باشد، سیستم تفاوت تعداد کودک درخواستی شما با تعداد گنجایش کودک اتاق را به عنوان بزرگسال در نظر خواهد گرفت. در این حالت اگر اتاق گنجایش اضافه بابت بزرگسال داشته باشد، بدون مشکلی می توان رزرو را صادر کرد. اما اگر تعداد گنجایش بزرگسال اتاق هم جوابگوی تعداد میهمان درخواستی نباشد، رزرو با استفاده از تخت اضافه قابل انجام است. البته با این شرط که اتاق ظرفیت تخت اضافه داشته باشد (رجوع به فیلد ExtrabedCapacity) جهت استفاده از تخت اضافه کافی است که مبلغ آن را در زمان فراخوانی متدهای Lock و Book به فیلد TotalPayable اضافه کرد.
مثال: یک نوع اتاق دارای AdultCapacity با مقدار 2 و ChildCapacity با مقدار 1 و ChildAge با مقدار 5 می باشد
- در صورتی که رزرو شما دارای دو بزرگسال و یک کودک زیر 5 سال باشد، آنگاه بدون نیاز به تخت اضافه می توان اقدام به رزرو نمود.
- در صورتی که رزرو شما دارای یک بزرگسال و دو کودک زیر 5 سال باشد، آنگاه بدون نیاز به تخت اضافه می توان اقدام به رزرو نمود.
- در صورتی که رزرو شما دارای دو بزرگسال و دو کودک زیر 5 سال باشد، انگاه باید مبلغ یک تخته اضافه را به مبلغ رزرو اضافه نمود.
HotelList.StayDateList.RoomTypeList.ChildAgenumber
سن قابل قبول برای پذیرش یک میهمان به عنوان کودک.
بنابراین:
- در صورتی که سن کودک بیش از مقدار این فیلد باشد
- و همچنین رزرو اتاق نیاز به تخت اضافه داشته باشد. (زمانی رزرو اتاق نیاز به استفاده از تخت اضافه دارد که از تمام ظرفیت AdultCapacity استفاده شده باشد و جایی برای مسافران باقی مانده روی AdultCapacity نباشد.)
- آنگاه باید در زمان فراخوانی متدهای Lock و Book، با اضافه کردن نرخ تخت اضافه به مجموع فیلد TotalPayable، درخواست تخت اضافه نمود.
مثال: یک نوع اتاق دارای AdultCapacity با مقدار 2 و ChildCapacity با مقدار 1 و ChildAge با مقدار 5 می باشد.
- در صورتی که رزرو شما دارای دو بزرگسال و یک کودک چهار ساله باشد، انگاه بدون نیاز به تخت اضافه می توان اقدام به رزرو نمود.
- در صورتی که رزرو شما دارای دو بزرگسال و یک کودک شش ساله باشد، انگاه باید یک تخت اضافه به رزرو اضافه نمود.
- در صورتی که رزرو شما دارای دو بزرگسال و یک کودک شش ساله و یک کودک چهار ساله باشد، باید تنها یک عدد تخت اضافه به رزرو اضافه نمود.
- در صورتی که رزرو شما دارای یک بزرگسال و یک کودک شش ساله باشد، آنگاه بدون نیاز به تخت اضافه می توان اقدام به رزرو نمود.
HotelList.StayDateList.RoomTypeList.AvailableRoomCountnumber
تعداد اتاق موجود
در صورتی 4 باب اتاق یا بیشتر موجود باشد، ماکزیمم عدد 4 خروجی داده می شود.
HotelList.StayDateList.RoomTypeList.HasCheckinLimitboolean
این فیلد مشخص می کند که این نوع اتاق در این تاریخ آیا محدودیت ورود دارد یا خیر.
در صورتی که اتاق دارای محدودیت ورود باشد، نمی توان رزروی گرفت که تاریخ ورود آن معادل مقدار مشخص شده در فیلد Date باشد.
HotelList.StayDateList.RoomTypeList.HasCheckoutLimitboolean
این فیلد مشخص می کند که این نوع اتاق در این تاریخ آیا محدودیت خروج دارد یا خیر.
در صورتی که اتاق دارای محدودیت خروج باشد، نمی توان رزروی گرفت که تاریخ خروج آن معادل مقدار مشخص شده در فیلد Date باشد.
HotelList.StayDateList.RoomTypeList.MinimumStaynumber
این فیلد مشخص کننده حداقل مدت اقامت قابل قبول برای رزروهایی است که در این تاریخ ورود دارند.
به عنوان مثال اگر مقدار این فیلد به عنوان حداقل مدت اقامت 3 شب باشد، نمی توان رزروی گرفت که ورود آن در تاریخ فیلد Date بوده و طول مدت اقامت یک شب یا دو شب باشد.
در صورتی که محدودیتی وجود نداشته باشد، مقدار این فیلد صفر خواهد بود.
HotelList.StayDateList.RoomTypeList.MaximumStaynumber
این فیلد مشخص کننده حداکثر مدت اقامت قابل قبول برای رزروهایی است که در این تاریخ ورود دارند.
به عنوان مثال اگر مقدار این فیلد به عنوان حداکثر مدت اقامت 5 شب باشد، نمی توان رزروی گرفت که ورود آن در تاریخ فیلد Date بوده و طول مدت اقامت شش شب یا هفت شب باشد.
در صورتی که محدودیتی وجود نداشته باشد، مقدار این فیلد صفر خواهد بود.
HotelList.StayDateList.RoomTypeList.BoardTypeListComplex type
لیست انواع بورد که روی یک نوع اتاق قابل رزرو گرفتن می باشد
HotelList.StayDateList.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.StayDateList.RoomTypeList.BoardTypeList.ExtrabedCapacitynumber
تعداد گنجایش تخت اضافه این نوع اتاق در این بازه تاریخی
در صورتی که تعداد مسافر بزرگسال بیش از ظرفیت AdultCapacity باشد، می توان با انتخاب تخت اضافه مسافران بیشتری را در اتاق اسکان داد.
HotelList.StayDateList.RoomTypeList.BoardTypeList.Room_BoardPrice_TaxIncludednumber
نرخ بورد این نوع اتاق برای یک شب (بدون کسر کمیسیون و با احتساب مالیات)
مقدار این فیلد جهت نمایش در سایت شما به مسافر کاربرد دارد. به این صورت که می توانید مقدار این فیلد را به عنوان مبلغ اولیه (قبل از اعمال شدن تخفیف) به مسافر نمایش دهید
HotelList.StayDateList.RoomTypeList.BoardTypeList.Room_NetPrice_TaxIncludednumber
نرخ نهایی این نوع اتاق برای یک شب (بعد از کسر کمیسیون و با احتساب مالیات)
مقدار این فیلد جهت نمایش در سایت شما به مسافر کاربرد دارد. به این صورت که می توانید مقدار این فیلد را به عنوان مبلغ نهایی (بعد از اعمال شدن تخفیف) به مسافر نمایش دهید
HotelList.StayDateList.RoomTypeList.BoardTypeList.Extrabed_BoardPrice_TaxIncludednumber
نرخ بورد یک عدد تخت اضافه برای یک شب (بدون کسر کمیسیون و با احتساب مالیات)
مقدار این فیلد جهت نمایش در سایت شما به مسافر کاربرد دارد. به این صورت که می توانید مقدار این فیلد را به عنوان مبلغ اولیه (قبل از اعمال شدن تخفیف) به مسافر نمایش دهید
HotelList.StayDateList.RoomTypeList.BoardTypeList.Extrabed_NetPrice_TaxIncludednumber
نرخ نهایی یک عدد تخت اضافه برای یک شب (بعد از کسر کمیسیون و با احتساب مالیات)
مقدار این فیلد جهت نمایش در سایت شما به مسافر کاربرد دارد. به این صورت که می توانید مقدار این فیلد را به عنوان مبلغ نهایی (بعد از اعمال شدن تخفیف) به مسافر نمایش دهید
HotelList.AmenityListComplex type
لیست خدمات ارائه شده روی این هتل
HotelList.AmenityList.SepehrGlobalIdnumber
شناسه منحصر به فرد مربوط به این خدمت در تمام سایت های سپهری
HotelList.AmenityList.Namestring
عنوان خدمت
HotelList.AmenityList.CountingMethodstring
این پارامتر نحوه محاسبه هزینه خدمات را مشخص میکند و میتواند یکی از مقادیر زیر را داشته باشد:
PerGuest
در این حالت، هزینه خدمت صرفاً بر اساس تعداد میهمانها محاسبه میشود. تاریخ مبنای محاسبه، تاریخ ورود (Check-in) میهمان به هتل خواهد بود.
PerGuestPerNight
در این حالت، هزینه خدمت بر اساس حاصلضرب تعداد میهمانها در تعداد شبهای اقامت محاسبه میشود.
لازم به توجه است که قیمت خدمات ممکن است در هر شب متفاوت باشد. بنابراین، برای محاسبه مبلغ نهایی، باید تعداد میهمانها را در قیمت همان شب (که در خروجی وبسرویس ارائه میشود) ضرب کرده و سپس مجموع مبالغ تمام شبها را محاسبه نمایید تا مبلغ دقیق نهایی به دست آید.
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": "هتل صحرا تستی",
"StayDateList": [
{
"Date": "2026-05-22",
"RoomTypeList": [
{
"SepehrGlobalId": 5009,
"Name": "دو تخته",
"AdultCapacity": 2,
"ChildCapacity": 1,
"ChildAge": 5,
"AvailableRoomCount": 4,
"HasCheckinLimit": false,
"HasCheckoutLimit": false,
"MinimumStay": 0,
"MaximumStay": 0,
"BoardTypeList": [
{
"Code": "BB",
"ExtrabedCapacity": 0,
"Room_BoardPrice_TaxIncluded": 3000000.0,
"Room_NetPrice_TaxIncluded": 3000000.0,
"Extrabed_BoardPrice_TaxIncluded": 0.0,
"Extrabed_NetPrice_TaxIncluded": 0.0
}
]
}
],
"AmenityList": []
}
// ... بیشتر تاریخها (2026-05-23, 2026-05-24, 2026-05-25)
]
},
{
"SepehrGlobalId": 104,
"Name": "هتل خارجی تستی",
"StayDateList": [
{
"Date": "2026-05-22",
"RoomTypeList": [
{
"SepehrGlobalId": 8235,
"Name": "سه تخته",
"AdultCapacity": 3,
"ChildCapacity": 2,
"ChildAge": 5,
"AvailableRoomCount": 4,
"HasCheckinLimit": false,
"HasCheckoutLimit": false,
"MinimumStay": 0,
"MaximumStay": 0,
"BoardTypeList": [
{
"Code": "RO",
"ExtrabedCapacity": 2,
"Room_BoardPrice_TaxIncluded": 16000000.0,
"Room_NetPrice_TaxIncluded": 15680000.0,
"Extrabed_BoardPrice_TaxIncluded": 5000000.0,
"Extrabed_NetPrice_TaxIncluded": 4750000.0
}
]
},
{
"SepehrGlobalId": 8236,
"Name": "سوئیت چهار تخته",
"AdultCapacity": 4,
"ChildCapacity": 0,
"ChildAge": 5,
"AvailableRoomCount": 4,
"HasCheckinLimit": false,
"HasCheckoutLimit": false,
"MinimumStay": 0,
"MaximumStay": 0,
"BoardTypeList": [
{
"Code": "UA",
"ExtrabedCapacity": 1,
"Room_BoardPrice_TaxIncluded": 56000000.0,
"Room_NetPrice_TaxIncluded": 56000000.0,
"Extrabed_BoardPrice_TaxIncluded": 25000000.0,
"Extrabed_NetPrice_TaxIncluded": 25000000.0
}
]
}
],
"AmenityList": [
{
"SepehrGlobalId": 100,
"Name": "استقبال فرودگاهی",
"CountingMethod": "PerGuest",
"RateDetail": {
"GuestAgeRangeStart": 3,
"GuestAgeRangeEnd": 120,
"BoardPrice_TaxIncluded": 0.0,
"NetPrice_TaxExcluded": 0.0,
"NetPrice_TaxIncluded": 0.0
}
},
{
"SepehrGlobalId": 102,
"Name": "استخر",
"CountingMethod": "PerGuestPerNight",
"RateDetail": {
"GuestAgeRangeStart": 3,
"GuestAgeRangeEnd": 120,
"BoardPrice_TaxIncluded": 0.0,
"NetPrice_TaxExcluded": 0.0,
"NetPrice_TaxIncluded": 0.0
}
},
{
"SepehrGlobalId": 103,
"Name": "بیمه مسافرتی",
"CountingMethod": "PerGuest",
"RateDetail": {
"GuestAgeRangeStart": 3,
"GuestAgeRangeEnd": 120,
"BoardPrice_TaxIncluded": 50000000.0,
"NetPrice_TaxExcluded": 50000000.0,
"NetPrice_TaxIncluded": 50000000.0
}
}
]
}
// ... بیشتر تاریخها (2026-05-23, 2026-05-24, 2026-05-25)
]
},
{
"SepehrGlobalId": 101,
"Name": "هتل کوهستان تستی",
"StayDateList": [
{
"Date": "2026-05-22",
"RoomTypeList": [
{
"SepehrGlobalId": 5001,
"Name": "یک تخته استاندارد",
"AdultCapacity": 1,
"ChildCapacity": 0,
"ChildAge": 5,
"AvailableRoomCount": 4,
"HasCheckinLimit": false,
"HasCheckoutLimit": false,
"MinimumStay": 0,
"MaximumStay": 0,
"BoardTypeList": [
{
"Code": "BB",
"ExtrabedCapacity": 1,
"Room_BoardPrice_TaxIncluded": 4360000.0,
"Room_NetPrice_TaxIncluded": 3924000.0,
"Extrabed_BoardPrice_TaxIncluded": 1090000.0,
"Extrabed_NetPrice_TaxIncluded": 981000.0
}
]
}
// ... بیشتر نوع اتاقها
],
"AmenityList": [
{
"SepehrGlobalId": 102,
"Name": "استخر روباز",
"CountingMethod": "PerGuestPerNight",
"RateDetail": {
"GuestAgeRangeStart": 3,
"GuestAgeRangeEnd": 120,
"BoardPrice_TaxIncluded": 5450000.0,
"NetPrice_TaxExcluded": 5000000.0,
"NetPrice_TaxIncluded": 5450000.0
}
},
{
"SepehrGlobalId": 100,
"Name": "استقبال فرودگاهی",
"CountingMethod": "PerGuestPerNight",
"RateDetail": {
"GuestAgeRangeStart": 3,
"GuestAgeRangeEnd": 120,
"BoardPrice_TaxIncluded": 0.0,
"NetPrice_TaxExcluded": 0.0,
"NetPrice_TaxIncluded": 0.0
}
},
{
"SepehrGlobalId": 103,
"Name": "بیمه مسافرتی",
"CountingMethod": "PerGuest",
"RateDetail": {
"GuestAgeRangeStart": 3,
"GuestAgeRangeEnd": 120,
"BoardPrice_TaxIncluded": 8720000.0,
"NetPrice_TaxExcluded": 8000000.0,
"NetPrice_TaxIncluded": 8720000.0
}
}
]
}
// ... بیشتر تاریخها (2026-05-23, 2026-05-24, 2026-05-25)
]
}
]
}