List Store Products
Returns all products available in the ecommerce store for the current location. Supports filtering by tag, product type (time passes), and selected plans.
Authentication
No authentication required for public product listing.
Query Parameters
Customer profile ID to personalise available products. Defaults to 0.
Filter by product tag. URL-encoded.
Filter to a specific product by ID.
When true, returns only time-pass products.
Array of plan IDs to filter products compatible with specific plans.
Comma-separated list of field paths to include in the response. When provided, only the
specified fields are returned — useful for reducing payload size. Supports nested paths
using dot notation. Example: _shape=Products.Name,Products.Price,Products.PriceFormatted.
Response
Returns an object with a Products array. Each product has the following fields:
Identity
| Field | Type | Description |
|---|
Id | number | Unique identifier for the product |
UniqueId | string | GUID identifier |
Core
| Field | Type | Description |
|---|
Name | string | Display name of the product |
Description | string | Product description (may contain HTML) |
Tags | string | Comma-separated tags |
DisplayOrder | number | Sort order for display |
SystemProductType | number | Internal product type identifier |
Visible | boolean | Whether the product is visible in the store |
Pricing
| Field | Type | Description |
|---|
Price | number | Price amount |
PriceFormatted | string | Locale-formatted price string |
ProductCurrencyCode | string | ISO currency code |
Currency | Currency | Currency object (nested) |
TaxRate | number? | Applicable tax rate |
Billing
| Field | Type | Description |
|---|
Quantity | number | Default quantity |
RegularCharge | boolean | Whether this is a recurring charge |
AlwaysRecurrent | boolean | Always billed as recurring |
AlwaysOneOff | boolean | Always billed as one-off |
InvoiceCoworker | boolean | Whether to invoice the coworker |
Stock
| Field | Type | Description |
|---|
TrackStock | boolean | Whether stock tracking is enabled |
CurrentStock | number? | Current available stock |
AllowNegativeStock | boolean | Whether negative stock is allowed |
Business
| Field | Type | Description |
|---|
BusinessId | number | Business identifier |
BusinessName | string | Business name |
BusinessWebAddress | string | Business web address |
HasTimePasses | boolean | Whether the product has associated time passes |
Timestamps (from base)
| Field | Type | Description |
|---|
CreatedOn | string | Record creation timestamp (local) |
UpdatedOn | string | Record last-update timestamp (local) |
CreatedOnUtc | string | Record creation timestamp (UTC) |
UpdatedOnUtc | string | Record last-update timestamp (UTC) |
Examples
Fetch all store products
GET /api/public/store/products?profileId=0
Fetch time passes only
GET /api/public/store/products?profileId=0&onlyTimePasses=true
TypeScript Integration
import endpoints from '@/api/endpoints'
const { resource: store } = useTypedData(
httpClient,
endpoints.products.products({
profileId: 0,
tag: 'day-pass',
}),
)
// store.Products