Retrieve a list of products
GET /api/search/products/{searchText}
Success: 200 OK
- Products: Operator (
FOH) - Features: Front of House Generic Access (
FOHGENERIC)
Overview
Finds products whose code or description contains the text you supply, and returns each with its classification and any translated descriptions. Use it to build a product picker or to resolve a product code a user has typed.
One term is matched as a substring against both the product code and the description, so
searching swim returns products coded SWIM01 as well as anything described as "Swimming". The
match is case-insensitive and there is no fuzzy matching, so a misspelling returns nothing.
Results are capped at 100 and there is no paging. The cap is applied after sorting by description, so a broad search silently returns the first hundred alphabetically and gives no signal that more exist. Narrow the search rather than trying to page it.
No match returns 200 with an empty array. Every product matching the text is returned regardless
of whether it is sellable, on sale at a site, or bookable online — this is a lookup, not an
availability check.
Endpoint
GET {base_url}/api/search/products/{searchText}
{base_url} is the environment URL issued to your integration. See Authenticating with Gladstone APIs.
Path parameters
| Name | Type | Required | Description |
|---|---|---|---|
searchText | string | Yes | The text to look for in the product code or description. Trimmed before use; empty or whitespace-only fails with 400 and Search Text cannot be empty, and anything over 255 characters fails with Search Text cannot be more than 255 characters. Matched as a substring anywhere in either field, case-insensitively — there is no way to request an exact or prefix match. |
Sample request
curl -X GET '{base_url}/api/search/products/{searchText}' \
-H 'Authorization: Bearer {accessToken}' \
-H 'X-Use-SSO: true'Response fields
| Field | Type | Description |
|---|---|---|
[].id | string | The product code — a short string, not a number, and the value other endpoints take when they ask for a product. It is one of the two fields searchText is matched against. |
[].description | string | The product's untranslated description, in the tenant's base language. It is the other field searchText matches on, and the sort key for the result set. Use translations in preference where you have a culture to render for. |
[].resourceInd | string | What kind of thing the product is, as a name rather than a number: StandardProduct for an ordinary sale line, StandardResource or DensityResource for products tied to a bookable resource. A product with no value stored is reported as StandardProduct. |
[].typeInd | string | How the product is paid for, as a name rather than a number: Retail for a normal priced item, SmartCardCredit or CashlessCredit for products that top up a stored balance instead of selling goods. A product with no value stored is reported as Retail. |
[].translations | array of object | Culture-specific text for the product. Unlike most configuration endpoints this returns every translated property, not just the description, so inspect type on each entry rather than assuming they are all the same. Returned as an empty array, never null, when the product has no translations. |
[].translations[].type | string | Which property of the product this entry translates — description and whatever else the tenant has configured for products. Filter on it before using text, or you risk showing the wrong field. |
[].translations[].culture | string | The culture this entry applies to. Match it against the locale you are rendering for and fall back to the untranslated field when there is no entry. |
[].translations[].text | string | The translated value of the property named in type, for the culture in culture. It replaces that property for display rather than supplementing it. |
Sample response
[
{
"id": "string",
"description": "string",
"resourceInd": "string",
"typeInd": "string",
"translations": [
{
"type": "string",
"culture": "string",
"text": "string"
}
]
}
]Errors
| Status | Meaning | When |
|---|---|---|
400 | Bad request | searchText is empty or whitespace only — body Search Text cannot be empty — or longer than 255 characters, body Search Text cannot be more than 255 characters. The body is the plain message, not JSON. |
500 | Internal server error | An unexpected server-side failure during the search, with an empty body. |