Bundles Tools
These tools are only advertised when the supplier has the Rentals module enabled. See Per-supplier tool filtering.
View product bundles (pre-configured packages of rental products) and check their availability for specific dates.
Required scope: products:read
Read tools use products:read. Creating or changing a bundle requires bundles:write.
Tools Overviewโ
| Tool | Description | Read-only? |
|---|---|---|
list_bundles | List product bundles with optional search | Yes |
get_bundle | Get full details of a bundle including items and pricing | Yes |
check_bundle_availability | Check if a bundle is available for specific dates | Yes |
create_bundle | Create a bundle with its included items and pricing | No |
list_bundlesโ
List product bundles/packages with optional search. Returns bundle details with items and pricing.
Parametersโ
| Name | Type | Required | Description |
|---|---|---|---|
search | string | No | Search by bundle name |
limit | integer | No | Number of results (default 10) |
get_bundleโ
Get detailed information about a product bundle including its component items and pricing.
Parametersโ
| Name | Type | Required | Description |
|---|---|---|---|
bundle_id | integer | Yes | The bundle ID |
check_bundle_availabilityโ
Check if a product bundle is available for specific dates. All items in the bundle must be available for the bundle to be considered available.
Parametersโ
| Name | Type | Required | Description |
|---|---|---|---|
bundle_id | integer | Yes | The bundle ID |
start_date | string | Yes | Start date for the period |
end_date | string | Yes | End date for the period |
create_bundleโ
Create a "combo" โ a product bundle. A bundle can mix rentals, experiences, and store products (shop add-ons) in the same combo. Pass items[] to add them in one call, or add them later in the bundle editor. The bundle and all supplied items save together. An invalid item or discount returns an error without saving a partial bundle. After creating, call get_bundle to read back the choice-group names and bundle item IDs needed to book it.
Required scope: bundles:write
Parametersโ
| Name | Type | Required | Description |
|---|---|---|---|
name | string | Yes | Bundle name |
description | string | No | Optional description |
pricing_type | string | No | fixed (one flat combo price) or discount (default โ calculated from the items with the per-item rental discounts applied) |
fixed_price | number | No | Required if pricing_type=fixed |
security_deposit_type | string | No | inherit (default โ add up each item's own hold) or flat (one combined hold for the whole combo; set security_deposit_amount) |
security_deposit_amount | number | No | The single flat combo hold amount. Only used when security_deposit_type=flat |
cancellation_policy_id | integer | No | Optional per-combo cancellation policy override. Leave unset to apply the most rigid policy across the combo's items |
items | array | No | The rentals, experiences, and store products in this combo (see below) |
items[] objectโ
| Name | Type | Required | Description |
|---|---|---|---|
item_type | string | No | product (a rental), experience (a tour), or store_product (a shop add-on, always full price). Defaults to product when product_id is given, experience when experience_id is given, store_product when store_product_id is given |
product_id | integer | Conditional | The rental product ID (when item_type=product) |
variation_id | integer | No | Pin the rental to one of its own variations. Omit to let the customer pick |
experience_id | integer | Conditional | The experience ID (when item_type=experience) |
rate_category_id | integer | No | Pin the experience to one of its own prices. A rate the experience does not sell is refused |
store_product_id | integer | Conditional | The store product (shop add-on) ID (when item_type=store_product). Store products are always full price |
quantity | integer | No | How many of this item the combo includes. Default 1 |
choice_group | string | No | Items sharing the same non-empty choice_group are "pick one" alternatives โ the customer chooses exactly one at checkout (e.g. group watercraft for two jet skis) |
choice_label | string | No | Friendly label shown for this option in its choice group (e.g. "SeaDoo GTI 130") |
discount_percent | number | No | Percent off this included item, from 0 to 100. Applies for every rental length. Required rental charges are added after this discount. |
discount_tiers | object | No | Rentals only. Duration-tiered discount as hours โ percent off, e.g. {"2":20,"4":15} = 2 hours gets 20% off, 4 hours gets 15% off. Experiences and store products are always full price |
allowed_durations | array | No | Rentals only. The durations in hours the customer can pick for this rental, e.g. [2, 4]. Fractional values mean minutes: 0.5 = 30 minutes, 2.5 = 2 hours 30 minutes |
Returnsโ
{
"success": true,
"message": "Bundle 'Weekend Adventure Pack' created with 3 item(s).",
"bundle": { "id": 42, "name": "Weekend Adventure Pack", "item_count": 3, "has_experiences": false }
}
Relatedโ
- Product Bundles REST API - REST API endpoints for bundles
- Products Tools - Individual product management
- Bookings Tools - Create bookings with bundles