Skip to main content
#P1798

GET /b2c/v1/online/accommodation/get_min_prices


Get Accommodation Minimum Prices

این اندپوینت حداقل قیمت (Minimum Price) اقامتگاه‌ها را در بازه‌ای از تاریخ ارائه می‌دهد. داده‌ها از چند سرویس خارجی شامل AirPlus، Sepehr، Tport و SnappTrip واکشی می‌شوند. نتایج هر اقامتگاه به‌صورت cache شده در Redis با TTL دینامیک نگهداری می‌شود تا بار API کاهش پیدا کند.



Endpoint Info

URL: /b2c/v1/online/accommodation/get_min_prices
Method: GET
Controller: V1OnlineController@getAccommodationMinPrices
Service: LibBaseService::getAccommodationMinPrices
Auth: Public (No JWT Required)

Query Parameters

Parameter Type Required Description
checkin_date string (YYYY-MM-DD) تاریخ ورود به اقامتگاه.
checkout_date string (YYYY-MM-DD) تاریخ خروج از اقامتگاه.
branch integer شناسه‌ی شعبه برای context فراخوانی AirPlus API.
accommodations[] array of integers لیست شناسه‌های اقامتگاه‌هایی که باید نرخ حداقل‌شان محاسبه شود.

Response Structure

Key Description
Status وضعیت درخواست، true در صورت موفقیت
Time زمان پاسخ UNIX timestamp
Data آبجکتی از اقامتگاه‌ها که کلید آن ID اقامتگاه است. برای هر مورد، `min_price` و `min_original_price` بر اساس مجموع روزهای اقامت محاسبه شده است.

Example Response (Success)

{
  "Status": true,
  "Time": 1733743200,
  "Data": {
    "2137": {
      "id": 2137,
      "min_price": 4800000,
      "min_original_price": 5500000
    },
    "2652": {
      "id": 2652,
      "min_price": 3600000,
      "min_original_price": 4100000
    }
  }
}

Example Response (Error)

{
  "status": false,
  "time": 1733743300,
  "error": {
    "code": 1002,
    "message": "Invalid accommodations parameter.",
    "trace": [ ... ]
  },
  "support": {
    "phone": "021-91016838 in 121",
    "email": "ict@airplus.app",
    "panel": "helpdesk.airplus.app"
  }
}

Logic Flow

درخواست chứa query شامل checkin_date، checkout_date، branch و IDs
Normalize Dates
محاسبه تعداد روز اقامت (diff)، همچنین تولید تاریخ‌های next Tuesday → next Wednesday برای تست قیمت‌ها.
Determine Active Providers
بررسی وضعیت APIهای فعال در جدول application_interface برای سرویس‌های tport، sepehr_hotel، snapptrip_hotel.
Iterate accommodations
برای هر شناسه اقامتگاه → بررسی cache Redis. در نبود cache، شروع واکشی از همه providerها.
External API Calls
  • TportApi::get_hotel_room_price: بر اساس mapped id و بازه تاریخی.
  • SepehrApi::search_by_city_and_date: بر اساس IATA شهر یا استان.
  • AirPlusApi::search: منبع داخلی hub.
  • SnappTripApi::get_hotel_availability_calendar.
Compute Min Prices
محاسبه کمترین مقدار نهایی و اصل بین همه نتایج موجود minNetPrice = min(Tport, Sepehr, AirPlus, SnappTrip)
Cache to Redis
کلید accommodations:min_price:{id} با TTL وابسته به درجه هتل (۵ستاره تا ۷روزه)
Return JSON Result
لیست اقامتگاه‌ها با فیلدهای min_price و min_original_price ضربدر تعداد روزها.

Expiration (Redis TTL Rules)

Hotel Rating Expiration (seconds) Comment
5 stars 21600 (6 hours) High-traffic, frequent updates
4 stars 43200 (12 hours) Medium update cycle
3 stars 172800 (2 days) Stable pricing
Others 604800 (7 days) Low-traffic accommodation
No price (fallback) 86400 (1 day) در صورت عدم دریافت قیمت فعال از سرویس