Products API
All endpoints in this section require the supplier to have the Rentals
module enabled. Calls return 403 module_disabled
when it is off. The Bundles, Workshop, and Product Categories endpoint groups
are gated the same way. Check GET /supplier/modules
before relying on these endpoints.
Products represent the rental items in your inventory - the equipment, gear, and items that customers can rent.
What is a Product?โ
A product is a rentable item in your catalog. Products include:
- Basic info: Name, SKU, descriptions
- Pricing: Rate structure, intervals, seasonal pricing
- Inventory: Stock levels, variations (sizes, colors)
- Constraints: Minimum/maximum rental periods, buffer times
- Organization: Categories for grouping
Product Structureโ
Product
โโโ Category (optional)
โโโ Variations[] (sizes, colors, models)
โ โโโ Inventory (stock per variation)
โโโ PricingRules[] (seasonal/tiered pricing)
โโโ Images[]
โโโ AssignedWaivers[]
Key Conceptsโ
Variationsโ
Products can have variations for different sizes, colors, or models:
| Product | Variations |
|---|---|
| Mountain Bike | Small, Medium, Large |
| Wetsuit | XS, S, M, L, XL |
| Tent | 2-Person, 4-Person, 6-Person |
Each variation tracks its own inventory independently.
Pricing Structuresโ
| Structure | Description | Example |
|---|---|---|
flat | Fixed price per interval | $50/day |
schedule | Price varies by duration tiers | $50/day for 1-2 days, $40/day for 3+ days |
Pricing Applies Toโ
| Setting | Description |
|---|---|
yearRound | Same pricing applies all year |
seasonal | Different pricing for different seasons |
Inventory Trackingโ
When enabled, the system tracks:
- Total stock: How many units you own
- Available stock: Units not currently rented
- Reserved: Units in confirmed bookings
Keep Selling When Sold Outโ
A product can opt in to keep taking bookings after its on-hand stock is gone. This suits a shop that can buy, borrow, or rent in a few extra units at short notice and would rather take the booking than turn the customer away. Bookings past stock are accepted and flagged, so the shop knows how many extra units to source.
| Field | Type | Description |
|---|---|---|
allow_shortage | boolean | Whether this product may keep taking bookings after on-hand stock reaches zero. Default false |
max_shortage | integer|null | How many units past on-hand stock may be sold for any overlapping window. Minimum 1. When allow_shortage is true and this is null, the allowance is 1 unit. Ignored entirely when allow_shortage is false |
How the allowance behaves:
- One shared budget for the whole product, not per variation. Selling 2 units past stock on one option leaves nothing for the other options.
- It is a running budget per overlapping window. Bookings already flagged short over the same dates draw it down, and a cancellation frees it again.
- Kits never use it. A product with linked contents is refused up front when one of its parts is sold out, even if that part allows shortage itself.
- Rentals only. Experiences do not use the allowance at all.
Where this shows up in the API:
- Availability responses report
available_quantity(units physically on hand) alongsidebookable_quantity(what may actually be sold). - Each rental line on a booking reports
shortage_quantityโ how many units of that line were sold past on-hand stock. See Get Booking.
How customers bookโ
| Field | Type | Description |
|---|---|---|
booking_mode | string | instant (default): an online booking is confirmed on the spot. request: every online booking arrives as a booking request the business approves first |
A bundle is a request when any product in it is set to request. Bookings made through the API or
by staff are not affected: the business making the booking is the approval.
Product Statusโ
| Status | Description |
|---|---|
active | Available for booking |
draft | Not yet published |
disabled | Temporarily unavailable |
API Endpointsโ
| Method | Endpoint | Description | Scope Required |
|---|---|---|---|
GET | /v1/products | List all products with filtering | products:read |
GET | /v1/products/{id} | Get a single product with full details | products:read |
POST | /v1/products | Create a new product | products:write |
PATCH | /v1/products/{id} | Update an existing product | products:write |
DELETE | /v1/products/{id} | Delete a product | products:write |
Variationsโ
| Method | Endpoint | Description | Scope Required |
|---|---|---|---|
GET | /v1/products/{id}/variations | List product variations | products:read |
POST | /v1/products/{id}/variations | Create a variation | products:write |
Common Use Casesโ
Syncing Products with E-commerceโ
Sync your rental inventory with your online store:
curl "https://app.equipdash.com/api/v1/products?status=active" \
-H "Authorization: Bearer YOUR_API_KEY"
Checking Stock Availabilityโ
Get product details including current stock levels:
curl "https://app.equipdash.com/api/v1/products/123" \
-H "Authorization: Bearer YOUR_API_KEY"
Updating Pricesโ
Update product pricing via the API:
curl -X PATCH "https://app.equipdash.com/api/v1/products/123" \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{"price": 55.00}'
Related Resourcesโ
- Product Bundles - Group products into packages with discounts
- Bookings - Bookings contain products
- Categories - Organize products into categories
- Waivers - Waivers can be assigned to products
- Webhooks - Get notified when products change