Supplier Modules
Each EquipDash supplier can independently enable or disable the three core
modules โ Rentals, Experiences, and Store โ from their settings
pages. When a module is disabled, every endpoint that touches that module
returns 403 module_disabled.
This endpoint lets your integration find out which modules a supplier has enabled, so you can hide or surface features accordingly.
Endpointโ
GET /v1/supplier/modules
Authenticationโ
Requires a valid API key. No specific scope is required โ this endpoint is designed to be one of the first calls a new integration makes (mobile app, widget, third-party tool) so it can adjust its UI before knowing which module-specific scopes it needs.
Responseโ
Success (200 OK)โ
{
"data": {
"rentals": true,
"experiences": false,
"store": true,
"services": false,
"enabled_modules": ["rentals", "store"],
"bookable_modules": ["store"]
},
"meta": {
"request_id": "req_abc123",
"timestamp": "2026-04-15T03:14:15Z"
}
}
Response fieldsโ
| Field | Type | Description |
|---|---|---|
rentals | boolean | True when the supplier offers equipment rentals. |
experiences | boolean | True when the supplier offers guided experiences / scheduled activities. |
store | boolean | True when the supplier sells store products (merchandise, accessories, etc.). |
services | boolean | True when the supplier offers workshop / servicing jobs. |
enabled_modules | string[] | Convenience array of just the enabled module names, in canonical order. |
bookable_modules | string[] | Subset of enabled_modules with something a customer can actually book. Currently this only filters rentals: a supplier can keep the rentals module on purely to manage an internal fleet with no product listed for rent, in which case rentals appears in enabled_modules but not here. Use this array for booking and dashboard surfaces; use enabled_modules for management surfaces (product lists, settings). |
A supplier always has at least one module enabled โ EquipDash blocks
disabling the last remaining module โ so enabled_modules is never empty
for a valid supplier (bookable_modules can be, in the edge case above).
How module flags affect other endpointsโ
When a module is disabled, the endpoints below return
403 module_disabled:
| Module | Affected endpoint groups |
|---|---|
rentals | /products/*, /product-categories/*, /workshop/*, /bundles/* |
experiences | /experiences/*, /experience-categories/* |
store | /store-products/*, /store-categories/* |
/bookings/*, /customers/*, /staff/*, /payments/*, /reports/*,
/settings/*, /availability/*, and /supplier/modules itself are
always available regardless of module state โ even a store-only
supplier can still create bookings and view reports.
See Error Codes โ module_disabled
for the response shape.
Recommended integration patternโ
- At login / startup, call
GET /supplier/modulesonce and cache the result. - Re-fetch when the user explicitly refreshes, or when any other API
call returns
403 module_disabled(the supplier toggled it after your cache was warmed). - Hide UI for disabled modules. Show a friendly message ("This business does not offer experiences") if the user reaches a feature for a disabled module from a deep link or stale cache.
const modules = await fetch('/v1/supplier/modules', {
headers: { Authorization: `Bearer ${apiKey}` }
}).then(r => r.json()).then(r => r.data);
if (!modules.experiences) {
hideExperiencesTab();
}