List and fetch products
GET /api/v1/public/products returns a paged envelope:
data (not items) and the total is totalCount. pageSize is capped at 200. Optional filters: status (active, draft, archived, requiresAttention) and purpose (standard, onDemand, internal).
Each product carries its identifiers (skuList, productNumber), its structure (schemaId, primaryTypeId, traitIds, channelCodes), and a convenience roleValues block with the resolved name, description, brand, customerProductId, and primaryImageUrl — enough to render a product card without touching the schema.
GET /api/v1/public/products/{id}— one product.GET /api/v1/public/products/search?q=...— full-text over name, description, brand, and SKU; same paged envelope.
Interpreting attribute values
A product’s detailed attribute values are keyed by attribute-definition id. To know what each one means, read the schema’s attribute definitions:1
List schemas
GET /api/v1/public/schemas returns each schema with its kind (master, standard, …), any standardCode / standardVersion, and counts of types, traits, and attributes.2
Read the product types
GET /api/v1/public/schemas/{id}/types lists the product types — what kind of thing each product is, and which traits it’s built from.3
Read the attribute definitions
GET /api/v1/public/schemas/{id}/attributes returns each definition’s code, labels, dataType, scope, role, and unit. Match a value’s definition id here to learn its type and meaning.dataType tells you the JSON shape of the value (text, number, boolean, enum, multiEnum, …) and scope tells you whether it lives on the product or a variant. See Core concepts for the full data-type mapping.
Schemas for shared industry standards (ETIM, eCl@ss) are readable by any tenant, so you can resolve standard classifications even for classes you didn’t create.
Full field reference
Every field of every response is documented in the interactive API reference — with a playground to try calls against your own tenant.