When to use
- The agent has a GTIN (or scanned barcode) and needs product detail.
- The agent received a GTIN from
local-product-searchand wants the full product record.
Two ways in
REST (recommended for agents)
ProductOut schema: product_name, brand, manufacturer,
image_url, description, net_content, GPC taxonomy, dimensions, weight,
country_of_origin, data quality signals (confidence_score, field_confidence),
ownership state (is_claimed, claim_verification_status).
GS1 Digital Link (consumer page or linkset)
Qualifier paths
/01/{gtin}/10/{batch}— resolve with batch/lot identifier/01/{gtin}/21/{serial}— resolve with serial number?linkType=gs1:pip/gs1:warranty/gs1:recallStatus— specific link types
The safety block
The JSON and JSON-LD representations of /01/{gtin} (and any qualifier path
under it) always carry a safety object. It is the per-scan safety verdict,
evaluated from the same gate a human scanning the same URI is stopped by, so a
machine and a person cannot be given different answers.
recallStatus — three values, and they are not interchangeable
indeterminate exists because the absence of a recall record has two very
different causes — “we looked and there is nothing” and “we have nothing to look
in” — and until it existed both were reported as none. Sources are polled
independently (FDA, FSIS, CPSC, Health Canada), so one dark feed degrades only
the products it regulates; a product whose category we have not classified is
treated as governed by all of them.
The key is never omitted. An absent field is indistinguishable from a resolver
that does not implement it, so “unknown” is a value rather than a silence.
GET /pip/{gtin}/recall/ is the human-readable counterpart and renders the same
three states — including an explicit “recall status unconfirmed” page, which
names the sources that could not be checked. Accept: text/markdown returns it
as structured markdown with the same recallStatus value.
gs1:recallStatus in the linkset is a link relation, not a verdict: it is
advertised when there is an open recall to read. Its absence is not a clearance
— read safety.recallStatus for the answer.
What’s NOT in the response
Certifications, allergens, and recall data live in separate APIs. Use:check-recallsfor recall/safety notice status/certifications/api/v1/...for product certifications
Related skills
check-recalls— active recalls for this GTINcompare-products— diff two GTINs side-by-sidelocal-product-search— find where to buy this GTIN near you