List Products
The whole product dictionary, unpaginated — a handful of documents that the filter pickers and the product admin both read on load.
Cached under one key for everyone: no query params, and the answer never varies by caller. Every write in this router drops the tag, so the TTL is only the backstop for a change made outside the API.
GET
/api/v1/productsAuthorization
AuthorizationBearer token · headerrequiredor
AuthorizationOAuth2 access token · headerrequiredResponses
200Successful Response
successbooleandefault: true
dataProduct[] | anyShow propertiesHide properties
Any of:
Product[]
Array of
Productidstringrequiredschema_versionintegerdefault: 1
namestringrequiredanalytics_keystring | anyShow propertiesHide properties
Any of:
string
stringany
anydictionariesobjectsubtopics_by_topicobjectcreated_atstring<date-time>updated_atstring<date-time>any
anymessagestring | anyShow propertiesHide properties
Any of:
string
stringany
anyerrorsstring[] | anyShow propertiesHide properties
Any of:
string[]
Array of
stringstringany
anyRequest
curl -X GET "/api/v1/products" \
-H "Authorization: Bearer YOUR_TOKEN"const response = await fetch("/api/v1/products", {
method: "GET",
headers: {
"Authorization": "Bearer YOUR_TOKEN"
}
});import requests
response = requests.get(
"/api/v1/products",
headers={
"Authorization": "Bearer YOUR_TOKEN"
},
)Response
{
"success": true,
"data": [
{
"id": "string",
"schema_version": 1,
"name": "string",
"analytics_key": "string",
"dictionaries": {
"property1": [
"string"
],
"property2": [
"string"
]
},
"subtopics_by_topic": {
"property1": [
"string"
],
"property2": [
"string"
]
},
"created_at": "2019-08-24T14:15:22Z",
"updated_at": "2019-08-24T14:15:22Z"
}
],
"message": "string",
"errors": [
"string"
]
}