#P1797
GET /b2c/v1/online/accommodation/list
List Accommodation Items
این اندپوینت فهرستی از اقامتگاهها (هتلها) را بر اساس شهر، IATA، یا شناسهی مستقیم هتل بازیابی میکند. امکان اعمال فیلترهای متنوع شامل ستاره، نوع، نام، سرویسدهندهها و محدودهی تاریخی رزرو وجود دارد. در صورت انتخاب only_charters=true، نتایج محدود به هتلهای دارای چارتر فعال در بازهی دادهشده خواهند بود.
Endpoint Info
URL:
/b2c/v1/online/accommodation/listMethod: GET
Controller:
V1OnlineController@listAccommodationService Layer:
LibBaseService::listAccommodation()Auth: Public Access (No JWT Required)
Query Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
| type | string | ✅ | نوع جستجو: یکی از مقادیر city، iata یا accommodation. |
| value | string|integer | ✅ | مقدار مرتبط با نوع؛ مثلاً نام شهر، کد IATA، یا شناسه هتل. |
| checkin_date | date | ✅ | تاریخ ورود. |
| checkout_date | date | ✅ | تاریخ خروج. |
| branch | integer | ✅ | شناسهی شعبه برای چک چارترهای فعال. |
| filters[only_charters] | boolean | ❌ | اگر true باشد فقط هتلهایی که چارتر فعال دارند بازگردانده میشوند. |
| filters[stars][] | array | ❌ | لیست تعداد ستارههای مد نظر (مثلاً [3,4,5]). |
| filters[types][] | array | ❌ | انواع اقامتگاه شامل hotel، apartment، guesthouse و ... |
| filters[name] | string | ❌ | جستجو بر اساس بخشی از نام فارسی هتل. |
| filters[services][] | array | ❌ | لیست سرویسدهندهها (مثلاً snapptrip، sepehr، tport، airplus). |
| paginate[length] | integer | ❌ | تعداد رکورد در هر صفحه (پیشفرض 30). |
| paginate[start] | integer | ❌ | شماره شروع ایندکس صفحه (پیشفرض 0). |
Response Structure
| Key | Description |
|---|---|
| Status | وضعیت پاسخ (true در صورت موفقیت). |
| Time | Timestamp زمان پاسخ. |
| Search | اطلاعات شناساییشده برای نوع جستجو (شهر، کشور، یا هتل). |
| Data | لیست اقامتگاهها در قالب AccommodationListResource. |
| Table | اطلاعات مربوط به صفحهبندی (total, per_page, current_page, last_page, از، تا، next_page). |
Example Response (Success)
{
"Status": true,
"Time": 1733742000,
"Search": {
"city": {
"id": 396,
"title": {"fa": "مشهد", "en": "Mashhad"},
"country": {"fa": "ایران", "en": "Iran"},
"category": {"title": "شهر"}
}
},
"Data": [
{
"id": 2652,
"fa_title": "اکسلسیور کیش",
"en_title": "Excelsior Kish Hotel",
"rate": 5,
"type": "hotel",
"city": "مشهد",
"priority": 0,
"mapping": {"airplus": true, "snapptrip": true}
}
],
"Table": {
"total": 250,
"per_page": 30,
"current_page": 1,
"last_page": 9,
"from": 1,
"to": 30,
"next_page": 2
}
}
Example Response (Error)
{
"status": false,
"time": 1733742053,
"error": {
"code": 1002,
"message": "Invalid city or date format.",
"trace": [ ... ]
},
"support": {
"phone": "021-91016838 in 121",
"email": "ict@airplus.app",
"panel": "helpdesk.airplus.app"
}
}
Technical Flow (Logic Overview)
ورودی درخواست شامل type، value، filters و paginate
↓
Validate Pagination
اگر پارامتر paginate وجود نداشته یا کامل نیست، مقدار پیشفرض (length=30, start=0) ست میشود.
اگر پارامتر paginate وجود نداشته یا کامل نیست، مقدار پیشفرض (length=30, start=0) ست میشود.
↓
Determine Search Mode
بسته به
بسته به
type، داده از جدولهای cities، states، countries یا hotels واکشی میشود.↓
Build Filter Query
روی جدول
روی جدول
hotels با join بر روی mapping_accommodations انجام میشود.↓
Filter Logic
- ستارهها (rate)
- نوع اقامتگاه (type)
- نام جزئی (fa_title LIKE '%name%')
- وجود چارتر فعال بین تاریخهای واردشده.
- ستارهها (rate)
- نوع اقامتگاه (type)
- نام جزئی (fa_title LIKE '%name%')
- وجود چارتر فعال بین تاریخهای واردشده.
↓
Paginate & Return
پاسخ شامل Search (محل جغرافیایی) + Data (Resource List) + Table meta.
پاسخ شامل Search (محل جغرافیایی) + Data (Resource List) + Table meta.