Update a product
Update editable fields on a claimed product. The caller must be an OWNER, MANAGER, or EDITOR of the organization that owns the GTIN. Only explicitly provided (non-null) fields are updated.
Authorizations
Path Parameters
GTIN barcode (8, 12, 13, or 14 digits, with or without separators). Normalized to GTIN-14 for lookup.
Body
Partial-update payload for PATCH /products/{gtin}.
Every field is optional. Only fields explicitly set in the request are
written; passing null leaves the existing value unchanged. Use the
Stripe-style metadata semantics from
:class:apps.core.api.metadata.MetadataWriteMixin for the metadata
map (empty-string values delete keys; {} clears everything).
Developer-attached key/value data. Send {} or null to clear. Empty-string values delete that key. Omitted keys are preserved.
Display name as marketed on the packaging. Omit or send null to leave unchanged.
255Brand name. Looked up by name (case-insensitive) under the caller's organization; a new Brand is created when no match exists. Omit or send null to leave unchanged.
255Long-form product description. Omit or send null to leave unchanged.
Manufacturer name. Looked up by name (case-insensitive); a new Manufacturer is created when no match exists. Omit or send null to leave unchanged.
255ISO 3166-1 alpha-2 country code where the product is made. Omit or send null to leave unchanged.
2Free-text net content as printed on the package (e.g. 340g). Omit or send null to leave unchanged.
100Directions or instructions for use. Omit or send null to leave unchanged.
Absolute URL of the brand's canonical product page. Omit or send null to leave unchanged.
2048ISO 639-1 language code identifying the product's primary language. Omit or send null to leave unchanged.
10URL-safe 22-character shortuuid encoding of the row's UUID primary key. Stable across the row's lifetime; suitable for sharing in URLs, log lines, and external SDK clients. Accepted on input as either the shortuuid form or the canonical UUID form (xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx).
22^[23456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz]{22}$Raw ingredient list text (the verbatim text from the package). When provided, the parser splits the text into spans and matches each span to a Substance record. Omit to skip ingredient parsing.
Response
OK
Canonical product record returned by the GTIN repository.
Combines the core trade-item fields, GDSN dimension/weight pairs, GS1
Global Product Classification (GPC) codes, and the Stripe-style
metadata map. Crowd-sourced contributions are folded into this
shape only after they pass the confidence-promotion threshold.
Internal product identifier (UUID). Stable for the lifetime of the GTIN.
22^[23456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz]{22}$Normalized GTIN-14 (zero-padded). Stable across the catalog regardless of input format.
14^\d{14}$Display name of the product as marketed on the packaging.
True when the GTIN has been claimed by a brand owner (i.e. the linked Brand belongs to an Organization).
Provenance of the canonical record (e.g. crowd_sourced, open_food_facts, claimed once a brand owner takes ownership).
crowd_sourced, claimed, imported, ai_extracted, brand_site_crawl, gtin1_authoritative, external_api, open_food_facts, usda_fdc, fda_ndc, affiliate_feed, datakick, common_crawl_wdc Aggregate confidence score across all canonical fields, derived from contribution agreement.
0 <= x <= 1Per-field confidence map, e.g. {"product_name": 0.95, "brand": 0.9}. Each value is in the range 0.0 - 1.0.
California AB 660 readiness summary, computed on read by scanning the stored free-text fields (product_name, description, net_content, usage_instructions) for the same banned phrases the registration API rejects. See C-2892 for the rule; the response shape is stable so a future federal date-label rule can be reported in the federal slot.
{
"ca_ab660": "compliant",
"federal": "unknown",
"notes": []
}{
"ca_ab660": "non_compliant",
"federal": "unknown",
"notes": ["description: 'sell by'"]
}Developer-attached key/value data attached to this object. Up to 50 keys; key max 40 chars, value max 500 chars.
Brand name resolved from the linked Brand record. Empty string when the GTIN is not yet associated with a brand.
Manufacturer name resolved from the linked Manufacturer record. Empty string when no manufacturer is on file.
Long-form description of the product. May be empty.
Absolute URL of the primary product image. Empty string when the product has no hero image.
ISO 3166-1 alpha-2 country code identifying where the product was made. Empty string when unknown.
2Free-text net content as printed on the package (e.g. 340g, 12 x 330ml). Use net_content_value + net_content_uom for the structured pair.
Structured numeric net content (e.g. 340 for 340g). Null when no structured value has been parsed.
UN/CEFACT unit code paired with net_content_value. Null when no structured value has been parsed; expect the empty string on legacy records pending a backfill.
MLT, CLT, LTR, GRM, KGM, ONZ, LBR, PTI, QTI, GLL, EA URL-safe 22-character shortuuid encoding of the row's UUID primary key. Stable across the row's lifetime; suitable for sharing in URLs, log lines, and external SDK clients. Accepted on input as either the shortuuid form or the canonical UUID form (xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx).
22^[23456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz]{22}$Verification tier for the GTIN ownership claim. Null when the GTIN has never been claimed; set automatically to unverified on initial claim and upgraded by external verification signals.
unverified, prefix_matched, verified, disputed, rejected Product length in the unit specified by length_uom. Null when the dimension is unknown.
UN/CEFACT recommendation 20/21 unit code for the paired dimension (e.g. CMT centimetre, MMT millimetre, MTR metre). Empty string when the dimension is unknown.
10Product width in the unit specified by width_uom. Null when the dimension is unknown.
UN/CEFACT recommendation 20/21 unit code for the paired dimension (e.g. CMT centimetre, MMT millimetre, MTR metre). Empty string when the dimension is unknown.
10Product height in the unit specified by height_uom. Null when the dimension is unknown.
UN/CEFACT recommendation 20/21 unit code for the paired dimension (e.g. CMT centimetre, MMT millimetre, MTR metre). Empty string when the dimension is unknown.
10Product depth in the unit specified by depth_uom. Null when the dimension is unknown.
UN/CEFACT recommendation 20/21 unit code for the paired dimension (e.g. CMT centimetre, MMT millimetre, MTR metre). Empty string when the dimension is unknown.
10Gross weight (product + packaging) in the unit specified by gross_weight_uom. Null when unknown.
UN/CEFACT recommendation 20/21 unit code for the paired weight (e.g. GRM gram, KGM kilogram, LBR pound, ONZ ounce). Empty string when the weight is unknown.
10Net weight (product only, excluding packaging) in the unit specified by net_weight_uom. Null when unknown.
UN/CEFACT recommendation 20/21 unit code for the paired weight (e.g. GRM gram, KGM kilogram, LBR pound, ONZ ounce). Empty string when the weight is unknown.
10GS1 Global Product Classification 8-digit brick code (the most specific level). Empty string when the product has not been classified.
8^(\d{8})?$GS1 Global Product Classification class code (parent of brick). Empty string when unclassified.
8^(\d{8})?$GS1 Global Product Classification family code (parent of class). Empty string when unclassified.
8^(\d{8})?$GS1 Global Product Classification segment code (top-level category). Empty string when unclassified.
8^(\d{8})?$