Skip to main content

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โ€‹

FieldTypeDescription
rentalsbooleanTrue when the supplier offers equipment rentals.
experiencesbooleanTrue when the supplier offers guided experiences / scheduled activities.
storebooleanTrue when the supplier sells store products (merchandise, accessories, etc.).
servicesbooleanTrue when the supplier offers workshop / servicing jobs.
enabled_modulesstring[]Convenience array of just the enabled module names, in canonical order.
bookable_modulesstring[]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:

ModuleAffected 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.

  1. At login / startup, call GET /supplier/modules once and cache the result.
  2. 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).
  3. 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();
}