مستندات

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

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

ظرفیت و قیمت

ظرفیت هر تفریح به زمان وابسته است. ابتدا تاریخ‌های قابل‌رزرو یک نوع محصول را بخوانید و سپس سانس‌ها و قیمت هر مسافر را برای تاریخ انتخابی. تاریخ‌ها و ساعت‌های گذشته، بر اساس منطقهٔ زمانی محلی همان تفریح، از قبل حذف شده‌اند.

خواندن ظرفیت#

GET/v3/HAPI/activities/product-types/{id}/availability

به اسکوپ activities:read نیاز دارد. {id} شناسهٔ apt_ یک نوع محصول است.

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

نامنوعتوضیح
datestringاختیاری، با قالب YYYY-MM-DD. بدون آن تاریخ‌های قابل‌رزرو را می‌گیرید و با آن، سانس‌ها و نرخ‌های همان تاریخ را.

پاسخ: تاریخ‌های قابل‌رزرو#

{
  "object": "activity_availability",
  "product_type_id": "apt_88213",
  "timezone": "Asia/Tbilisi",
  "dates": [
    { "date": "2026-11-14" },
    { "date": "2026-11-15" }
  ]
}

پاسخ: یک تاریخ مشخص#

{
  "object": "activity_availability",
  "product_type_id": "apt_88213",
  "date": "2026-11-14",
  "weekday": "Saturday",
  "timezone": "Asia/Tbilisi",
  "available": true,
  "capacity": [
    { "category": "adult", "quantity": 12 },
    { "category": "child", "quantity": 12 }
  ],
  "timeslots": [
    { "start_time": "09:00" },
    { "start_time": "14:00" }
  ],
  "rates": [
    { "category": "adult",  "price": { "amount": "29.00", "currency": "USD" } },
    { "category": "child",  "price": { "amount": "19.00", "currency": "USD" } },
    { "category": "senior", "price": { "amount": "24.00", "currency": "USD" } }
  ],
  "booking_options": {
    "per_booking": [
      {
        "id": "46db421e-5727-46fc-9f2c-10679e026582",
        "name": "Flight number", "name_translated": "Flight number",
        "description": "As shown on your ticket", "required": true, "add_on": false,
        "input_type": 14, "input_type_name": "flight_number",
        "format_regex": "^[A-Z0-9][A-Z0-9][0-9]{0,4}$",
        "valid_from": null, "valid_to": null
      }
    ],
    "per_pax": [
      {
        "id": "543f0e45-bdfe-4dc7-af73-e7fd5eda8246",
        "name": "Pickup zone", "required": true, "add_on": true,
        "input_type": 1, "input_type_name": "list",
        "items": [
          { "label": "Zone 1", "value": "zone_1", "price": { "amount": "10.00", "currency": "USD" } },
          { "label": "Zone 2", "value": "zone_2", "price": { "amount": "15.00", "currency": "USD" } }
        ]
      }
    ]
  }
}
از اساس به زمان حساس است. تاریخ‌ها و سانس‌هایی که گذشته‌اند، نسبت به منطقهٔ زمانی محلی تفریح حذف می‌شوند؛ پس هر سانسی که می‌بینید قابل‌رزرو است. قیمت‌ها برای هر مسافر و به دلار آمریکا (USD) هستند. مقدار 0 در quantityـِ capacity یعنی ظرفیت آن گروه مسافر در این تاریخ تمام شده است؛ تفریح‌هایی که ورود آزاد (بدون سانس) دارند، فهرست timeslots خالی برمی‌گردانند.

گزینه‌های رزرو#

بعضی تفریحات هنگام رزرو اطلاعات بیشتری لازم دارند؛ مثل شمارهٔ پرواز، منطقهٔ ترانسفر، نام مسافران یا یک مدرک بارگذاری‌شده. این موارد زیر booking_options برمی‌گردند و به دو دسته تقسیم می‌شوند:

  • per_booking: یک بار برای کل رزرو پاسخ داده می‌شود.
  • per_pax: یک بار برای هر مسافر پاسخ داده می‌شود (بزرگسالان، سپس کودکان، سپس سالمندان، به همین ترتیب).

هر گزینه این فیلدها را دارد:

فیلدمعنا
idشناسهٔ گزینه؛ هنگام رزرو آن را به‌عنوان id پاسخ برگردانید.
name / name_translatedبرچسبی که به مهمان نمایش می‌دهید.
description / description_translatedمتن راهنما.
requiredاگر true باشد، رزرو بدون پاسخ به این گزینه رد می‌شود.
add_onیک گزینهٔ اضافهٔ پولی که در صفحهٔ محصول نمایش داده می‌شود.
input_type / input_type_nameنوع فیلد؛ جدول زیر را ببینید.
format_regexالگوی اختیاری برای اعتبارسنجی مقدار در سمت کلاینت.
valid_from / valid_toبازهٔ تاریخی که گزینه در آن اعمال می‌شود (یا null).
priceهزینهٔ اضافهٔ ثابت و اختیاری برای انتخاب این گزینه.
itemsبرای نوع‌های فهرستی: گزینه‌های قابل‌انتخاب به شکل { label, value, price }.

مقادیر input_type

#name#name
1list8image
2list_multiple9address
3number10time
4string11datetime
5boolean12country
6date13phone
7file14flight_number
قیمت گزینه‌های اضافه. price هر گزینه و items[].price هر آیتم فهرست، یک هزینهٔ اضافه به ازای هر انتخاب و به دلار آمریکا (USD) است که مهمان علاوه بر نرخ بلیت می‌پردازد. این قیمتِ نهایی برای مشتری است (هر مارک‌آپ مربوط از قبل در آن لحاظ شده است). گزینه‌هایی که price ندارند، صرفاً اطلاعاتی‌اند (مثل شمارهٔ پرواز) و هزینه‌ای ندارند.
گزینه‌های الزامی کنترل می‌شوند. اگر تفریح گزینهٔ required داشته باشد و آن را نفرستید (یا برای یکی از مسافران نفرستید)، رزرو با خطای 422 و پیامی که نام گزینهٔ جاافتاده را می‌گوید رد می‌شود و هیچ چیزی نگه داشته نمی‌شود. برای رزرو، به همهٔ گزینه‌های required پاسخ دهید.

پاسخ‌ها را هنگام ایجاد رزرو زیر options بفرستید.

ویرایش این صفحه در گیت‌هابمشکلی دیدید؟ از پنل ← پشتیبانی خبرمان کنید.