object: "product". Every field on every response is documented below.
Example
Identifiers
Always
"product". Lets you distinguish object types when piping mixed responses through generic handlers.Stable UUID. Generated by Awardee on
POST. Use this for all subsequent reads, updates, and deletes.Operator-facing product name. Free-form. Not required to be unique. Defaults to an empty string on
POST if omitted — set one for any product you want to recognize in the dashboard.GS1 Global Trade Item Number. Always GTIN-14, left-padded with zeros. On write, the input must be exactly 8, 12, 13, or 14 digits — GTIN-8, GTIN-12 (UPC-A), GTIN-13 (EAN-13), or GTIN-14. Any other length is rejected with Pass
400 invalid_payload. Input is normalized to GTIN-14 before storage.null to clear, or omit on PATCH to leave untouched.Free-form description. Operator-facing only — not rendered to scanning consumers.
Destination
The routing target for GS1 scans of this product’s GTIN. Always present as an object; the inner fields are mutually exclusive — exactly one of
chatbot, page, knowledge_base, or url is non-null when type is set.Status
One of
unconfigured, active, inactive, archived.| Value | Meaning |
|---|---|
unconfigured | No destination set. Default on create. |
active | Live. GTIN scans route to the destination. |
inactive | Paused. Row remains, scans show a “paused” screen. |
archived | Soft-deleted. Hidden from list views. |
Metadata
Free-form JSON object (
Record<string, unknown>). Returned verbatim. Use it for integration-owned fields that don’t deserve a column — vintage, ABV, internal SKU codes, feature flags, anything.Replaces wholesale on PATCH. Defaults to {} on create.Stats
Lifetime count of resolved GS1 scans for this product. Increments on every
product.scanned event. Read-only.ISO 8601 timestamp of the most recent resolved scan, or
null if never scanned. Read-only.Timestamps
When the row was inserted. ISO 8601.
When the row last changed. ISO 8601. Updates on every
PATCH and on internal mutations (e.g. scan stamps).Properties
Products support a satellite key/value list — list withGET /products/{id}/properties, replace as a set with PUT /products/{id}/properties. Each property has its own shape:
Property name. Free-form; case-sensitive. Operator-defined.
Property value, always serialized as a string. Convert client-side if you need typed values.
Display order. Awardee stores properties as a sorted list —
PUT preserves the order you send.
