Skip to main content

Product Bundles

Product bundles allow you to group multiple products together and sell them as a package, optionally with discounts. A bundle can also be a combo (mixed bundle) that pairs rentals with an experience behind "pick one" choice groups โ€” see Mixed bundles (combos).

Read-Only API

The Bundles API is currently read-only. Bundles are created and managed through the EquipDash dashboard. The API allows you to retrieve bundle information for display in your applications.

Key Conceptsโ€‹

Bundle Pricing Typesโ€‹

TypeDescription
calculatedPrice is sum of individual product prices (with any item discounts applied)
flatBundle has a fixed price regardless of item prices
ratesWhole-bundle prices for selected rate categories

Item Discountsโ€‹

Each item in a bundle can have its own discount:

Discount TypeDescription
percentagePercentage off the item's regular price
flatFixed amount off the item's price

Bookabilityโ€‹

A bundle is considered bookable when:

  • It has at least 2 items
  • All items are available for the requested dates

Mixed bundles (combos)โ€‹

A bundle can pair rentals with an experience in one bookable combo. The per-item item_type is then product or experience, items sharing a choice_group are "pick one" alternatives, the rental half can carry a duration-tiered discount (discount_tiers), and the whole combo can take a single flat security hold (security_deposit_type: "flat"). A bundle containing both rentals and experiences creates a mixed booking. Full field reference and a worked example are in Get bundle โ†’ Mixed bundles.

Common Use Casesโ€‹

Display Available Bundlesโ€‹

Fetch bundles to display on your website or app:

curl "https://app.equipdash.com/api/v1/bundles?status=active" \
-H "Authorization: Bearer YOUR_API_KEY"

Get Bundle Details for Bookingโ€‹

Before adding a bundle to a booking, retrieve its full details:

curl "https://app.equipdash.com/api/v1/bundles/123" \
-H "Authorization: Bearer YOUR_API_KEY"

API Endpointsโ€‹

MethodEndpointDescription
GET/v1/bundlesList bundles
GET/v1/bundles/{id}Get bundle
GET/v1/bundles/{id}/availabilityAvailability โ€” bookable count, per-item stock + advisory warnings
POST/v1/bundles/{id}/price-previewPrice preview โ€” live combo total, no booking created
Read-Only API

You cannot create or edit bundles via the API โ€” bundles are managed in the EquipDash dashboard. price-preview is a POST only because it accepts a selection body; it never creates or changes anything.

Required Scopesโ€‹

ScopeOperations
products:readList bundles, get bundle details, price preview

Prices by rate typeโ€‹

When pricing.type is rates, pricing.rate_prices lists the offered rate category IDs, labels, prices, and seat_weight. pricing.rate_price_basis is once, hour, or day. Bundles with experiences charge once; rental-only bundles can charge by duration.

Send rate_counts as a map of rate category ID to count, for example {"1": 2, "2": 1}. These counts apply to every selected experience and to gear configured for each person. Choose departures through the existing schedules map and rental lengths through durations. Use each bundle's offered IDs rather than assuming labels or IDs.

A combo rate counts as one sale unit and reserves the number of people in seat_weight. Gear uses quantity_basis (person or booking) and an optional rate_category_id; a null category applies to everyone. Unavailable items or incompatible experience rates reject the whole booking.